如何在 GCP 云功能中加载本地资产?

fgr*_*nus 3 go google-cloud-platform google-cloud-functions

我正在 Golang 中构建一个小型 GCP 云函数,该函数在通过 HTTP 调用时返回生成的 PNG 文件。我在 Google Cloud Console 中通过 ZIP-Upload 部署了我的代码。目前它被正确调用并且代码被编译等。但是在我的代码中我必须加载几个本地文件 - 一个字体和一个 .png 图像。我将它们捆绑在我上传的 ZIP 中,并且这些文件在 GCP 的 Source-View 中可见。所有文件(图像、字体和 go 文件)都在同一目录中。

调用云函数时,日志声明如下:

2019/01/21 14:59:31 open /english.png: no such file or directory
Run Code Online (Sandbox Code Playgroud)

我试图改变我构建文件路径的方式。我已经静态使用了 /german.png,使用了多次尝试动态构建路径。

我不是 100% 确定这是否是要走的路,但这是我第一次尝试“无服务器”,我愿意以“正确”的方式完成它。

import "github.com/fogleman/gg"


func main() {
    ex, err := os.Executable()
    if err != nil {
        panic(err)
    }
    executableDir := filepath.Dir(ex)

    img, err :=gg.LoadPNG(path.Join(executableDir, "./english.png"))
    if err != nil {
        log.Fatal(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

目前,在我所做的任何尝试中都找不到该文件。也许图像“部署”到的路径与我尝试过的路径不同 - 我在文档中没有找到任何说明。我显然希望它能够正确加载。

Nun*_*ces 5

根据文档,对于 Go 1.13 ,截至今天(2020 年 7 月),源代码位于该./serverless_function_source_code目录中。

一个很好的参考是buildpack