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 nodebrew uninstall node 的自制软件删除了节点,然后通过自制软件brew install n 安装了n,然后使用n 15.6.0 安装了v15.6.0【参考方案6】:

它与权限无关。它一定是别的东西。也许谷歌设置了云功能应该有多大的限制。

【讨论】:

【参考方案7】:

我今天遇到了类似的问题。事实证明,在一个函数中,我使用的 timeoutSeconds 超过了 here 指定的最大值 540。

【讨论】:

以上是关于GCP 云功能 - 在构建/部署期间获取存储源时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Cloud Build 在 GCP 上部署功能?

gcp 云函数 pub/sub 主题死信

如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)

“一键部署” GCP 功能

如何在谷歌云构建中访问 git 标签?

Spring Boot GCP:将 PubSub 应用程序部署到 App Engine 标准环境时出现“Google 凭据”异常