如果我使用bazel来构建依赖于protobuf的golang无服务器功能,那么bazel将使protobuf生成的go代码在我指定的导入路径中可用。
用于go的Google云功能需要使用go模块。
如何将bazel创建的虚拟导入路径添加到go.mod文件中?部署到Google Cloud的功能失败,因为无法解析虚拟导入。 (G云要求我上传go源代码,AWS lambdas允许我上传二进制文件,这可以正常工作。)
我猜我将要么必须使用AWS lambda,要么使用无服务器容器,要么编写一个将原生成的代码的输出复制到我的源目录中的genrule,但是我想避免这种丑陋。 / p>
答案 0 :(得分:0)
我在Google on Go和Google Cloud Functions工作。
我看到一些使用Cloud Functions的选项:
go mod vendor
并抓住了生成的代码(以您选择的任意路径),它将创建一个包含所有依赖项的vendor
目录。不过,“云功能”构建器更喜欢go.mod
而不是vendor
。因此,您必须.gcloudignore
go.mod
和go.sum
文件,以确保在部署代码时它们不会被上传。 https://cloud.google.com/functions/docs/writing/specifying-dependencies-go有更多信息。