GCP 云功能 - 在构建/部署期间获取存储源时出错
Posted
技术标签:
【中文标题】GCP 云功能 - 在构建/部署期间获取存储源时出错【英文标题】:GCP Cloud Function - ERROR fetching storage source during build/deploy 【发布时间】:2021-02-02 20:07:33 【问题描述】:在构建部署功能时遇到问题。当尝试以编程方式部署该函数时,我在构建器日志中得到以下输出(错误)。
2020-10-20T02:22:12.155866856Z starting build "1fc13f51-28b6-4052-9a79-d5d0bef9ed5c"
I
2020-10-20T02:22:12.156015831Z FETCHSOURCE I
2020-10-20T02:22:12.156031384Z Fetching storage object: gs://gcf-sources-629360234120-us-central1/$FUNCTIONNAME-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655 I
2020-10-20T02:22:16.698838385Z Copying gs://gcf-sources-629360234120-us-central1/$FUNCTIONNAME-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655... I
2020-10-20T02:22:16.848908949Z / [0 files][ 0.0 B/ 7.6 KiB]
/ [1 files][ 7.6 KiB/ 7.6 KiB]
I
2020-10-20T02:22:16.848965618Z Operation completed over 1 objects/7.6 KiB. I
2020-10-20T02:22:17.848654342Z replace /workspace/pb/__init__.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL I
2020-10-20T02:22:17.848694354Z (EOF or read error, treating as "[N]one" ...) I
2020-10-20T02:22:17.848697209Z Archive: /tmp/source-archive.zip I
2020-10-20T02:22:17.848698273Z inflating: /workspace/main.py I
2020-10-20T02:22:17.848699274Z creating: /workspace/pb/ I
2020-10-20T02:22:17.848700378Z inflating: /workspace/pb/__init__.py I
2020-10-20T02:22:17.848701376Z inflating: /workspace/pb/$FILENAME.py I
2020-10-20T02:22:17.848702578Z inflating: /workspace/requirements.txt I
2020-10-20T02:22:18.477862579Z Fetching storage object: gs://gcf-sources-629360234120-us-central1/$FUNCTIONNAME-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655 I
2020-10-20T02:22:21.795484700Z Copying gs://gcf-sources-629360234120-us-central1/$FUNCTIONNAME-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655... I
2020-10-20T02:22:21.937040057Z / [0 files][ 0.0 B/ 7.6 KiB]
/ [1 files][ 7.6 KiB/ 7.6 KiB]
I
2020-10-20T02:22:21.937094331Z Operation completed over 1 objects/7.6 KiB. I
2020-10-20T02:22:22.934311112Z replace /workspace/main.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL I
2020-10-20T02:22:22.934315945Z (EOF or read error, treating as "[N]one" ...) I
2020-10-20T02:22:22.934318352Z Archive: /tmp/source-archive.zip I
2020-10-20T02:22:23.569955715Z Fetching storage object: gs://gcf-sources-629360234120-us-central1/$FUNCTIONNAME-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655 I
2020-10-20T02:22:26.802351633Z Copying gs://gcf-sources-629360234120-us-central1/$FUNCTIONNAME-63f501f1-a8d2-4837-b992-1173ced83036/version-1/function-source.zip#1603160527600655... I
2020-10-20T02:22:26.867398009Z / [0 files][ 0.0 B/ 7.6 KiB]
/ [1 files][ 7.6 KiB/ 7.6 KiB]
I
2020-10-20T02:22:26.867408400Z Operation completed over 1 objects/7.6 KiB. I
2020-10-20T02:22:27.863532350Z replace /workspace/main.py? [y]es, [n]o, [A]ll, [N]one, [r]ename: NULL I
2020-10-20T02:22:27.863536996Z (EOF or read error, treating as "[N]one" ...) I
2020-10-20T02:22:27.863538973Z Archive: /tmp/source-archive.zip I
2020-10-20T02:22:27.995306558Z ERROR I
2020-10-20T02:22:27.995310537Z ERROR: error fetching storage source: generic::unknown: retry budget exhausted (3 attempts): fetching gcs source: unpacking source from gcs: source fetch container exited with non-zero status: 1 I
令人困惑的是,如果我从 UI 部署该功能,它可以正常构建/部署。这让我认为这是围绕构建器/代理的某种 IAM/权限。但是,我比较迷茫。任何提示/想法?谢谢!
【问题讨论】:
您好@bruce 确实,这似乎是一个权限问题,考虑到您可以通过 UI。通过命令部署时,通常是服务帐户代理将构建和部署应用程序。考虑到这一点,您能否查看此文档here 并获取有关服务帐户的更多详细信息?这样,您将能够在部署应用程序时检查正在使用的那些,然后确认它们是否与您的帐户具有相同的权限。 谢谢,@gso_gabriel -- 服务帐户确实有一些特别之处。而且,我正在通过 terraform 部署其他所有内容。我已经通过gcloud
命令在额外的部署步骤中部署特定资源来解决问题......但是,是的,我应该花时间整理权限。
已经有一段时间了——但是,IIRC(从几个月前开始),它是使用 Cloud Build 能够构建/部署该功能的权限。
【参考方案1】:
经过一天的故障排除后出现相同的错误消息,我终于找到了办法。
我注意到我已将node@15
安装在我的电脑上 和node@12
用于firebase 功能。
我需要做的就是
在我的电脑上安装node@12
取消链接前一个节点(即node@15
)和
链接到新安装的node@12
。
轰隆隆!已上传。
【讨论】:
这个答案应该被接受。我将 Node@15 更改为 Node@12。取消链接node15,链接node12然后它就可以完美地工作了。 @TruongHieu 我很高兴它有帮助:-) 我想补充一点,我使用 Firebase 函数,它也对我有用。是的!!!谢谢你:) 因此您可以使用n
降级您的版本和LTS 版本$ npm install -g n $ n lts
太棒了,我自己永远也想不通!【参考方案2】:
我在新启动的 Firebase 项目中部署云功能时遇到了同样的问题。我的本地节点版本是 15
对于在 Mac 上为降级节点而苦苦挣扎的初学者(如我),您可以使用以下命令:
sudo npm install -g n
sudo n 12
【讨论】:
【参考方案3】:作为Prodigy mentioned,一定有什么东西破坏了最新的Node v15.6.0(或另一个最近的)中的云功能部署。
今天与firebase deploy
有同样的问题。通过回滚到 Node 12 来解决(我相信任何其他更新的版本都可以很好地工作)。
【讨论】:
我遇到了完全相同的问题,您的解决方案帮助了我。谢谢【参考方案4】:我可以确认问题是节点更新到 15.6.0 时出现的。 运行 Manjaro,更新我的操作系统,回滚到节点 12(使用 nvm)解决了这个问题!
【讨论】:
同样如此。我在使用node:latest
作为容器的 Gitlab 构建中遇到了这个问题。原来是15.6.0。我搬到了node:10.23.1
,它工作了。【参考方案5】:
即使将 nodejs 降级到 15.5.1 版也对我有用。 GC 功能绝对不喜欢 15.6.0 版本
【讨论】:
这就是我的解决方案!!!我最终通过带有brew unlink node
和brew uninstall node
的自制软件删除了节点,然后通过自制软件brew install n
安装了n
,然后使用n 15.6.0
安装了v15.6.0【参考方案6】:
它与权限无关。它一定是别的东西。也许谷歌设置了云功能应该有多大的限制。
【讨论】:
【参考方案7】:我今天遇到了类似的问题。事实证明,在一个函数中,我使用的 timeoutSeconds
超过了 here 指定的最大值 540。
【讨论】:
以上是关于GCP 云功能 - 在构建/部署期间获取存储源时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)
Spring Boot GCP:将 PubSub 应用程序部署到 App Engine 标准环境时出现“Google 凭据”异常