为了账号安全,请及时绑定邮箱和手机立即绑定

如何在私有存储库中使用带有依赖项的 Go 运行 Google Cloud Function?

如何在私有存储库中使用带有依赖项的 Go 运行 Google Cloud Function?

Go
杨魅力 2022-06-01 16:52:08
我正在尝试将本教程中的 Go 示例改编为在私有存储库中使用依赖项的内容。以下是 Cloud Function 示例代码:package helloworldimport (    "context"    "log"    "github.com/kurtpeek/my-private-repo/mypackage")// PubSubMessage is the payload of a Pub/Sub event.type PubSubMessage struct {    Data []byte `json:"data"`}// HelloPubSub2 consumes a Pub/Sub message.func HelloPubSub2(ctx context.Context, m PubSubMessage) error {    name := string(m.Data)    if name == "" {        name = "World"    }    log.Printf("Hello, %s!", name)    log.Println(mypackage.SayHello())    return nil}在SayHello()私人回购中定义github.com/kurtpeek/my-private-repo为package mypackage// SayHello says hellofunc SayHello() string {    return "Hello, world!"}如果不调用mypackage.SayHello(),Cloud Function 将按预期部署和运行。我也可以在跑步HelloPubSub2后main.go跑步git config url."git@github.com".insteadOf "https://github.com"并将我的 SSH 密钥添加到存储库(参见这篇Medium 文章)。但是,如果我尝试使用mypackage.SayHello(),我会收到以下错误:无法读取“ https://github.com ”的用户名这是完整的终端输出:> gcloud functions deploy HelloPubSub2 --runtime go113 --trigger-topic mytopicCreated .gcloudignore file. See `gcloud topic gcloudignore` for details.WARNING: Function created with limited-access IAM policy. To enable unauthorized access consider "gcloud alpha functions add-iam-policy-binding HelloPubSub2 --member=allUsers --role=roles/cloudfunctions.invoker"Deploying function (may take a while - up to 2 minutes)...failed.                                              部署此 Cloud Function 的最佳方式是什么?我应该运行go mod vendor然后更改依赖项以引用vendor/目录吗?(不过,这似乎每次都做起来很麻烦)。
查看完整描述

1 回答

?
largeQ

TA贡献2039条经验 获得超8个赞

我在此处以及尝试使用 go modules 在 Go 1.11 中部署 Google 云功能时遇到了答案(由从事此产品工作的 Google 工程师提供)。关键是gcloud functions deploy只将运行它的目录的内容复制到 Cloud Function 的“上下文”中,因此该vendor/目录必须在该目录中。同时,我注意到packagecannot be main,所以我采取了一些不寻常的步骤,go.mod从 repo 的根目录中删除并在目录中运行go mod initand 。现在它起作用了:go mod vendorhelloworld


gcloud functions deploy HelloPubSub2 --runtime go113 --trigger-topic mytopic

Deploying function (may take a while - up to 2 minutes)...done.                                                         

availableMemoryMb: 256

entryPoint: HelloPubSub2

eventTrigger:

...


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号