Tag*_*gas 4 firebase google-cloud-platform google-cloud-functions google-secret-manager
我有一个带有谷歌云功能的 Firebase 项目,如下所示:
export const myFun = functions.region("europe-west1")
.runWith({ timeoutSeconds: 10, secrets: ['MY_SECRET'] })
.https.onCall((data, context) => {/*doStuff()*/});
Run Code Online (Sandbox Code Playgroud)
该函数使用 MY_SECRET 访问数据库。当我从本地计算机构建并部署此功能到谷歌云时,一切都工作得很好。我可以访问它并从数据库中获取结果,一切都很好。
不过,我设置了一个 github 操作来为我将此功能部署到云端。为此,我设置了一个服务帐户作为 github 秘密,这样我就可以npx firebase-tools deploy在 github 操作中运行。这一直有效,直到我将其添加secrets: ['MY_SECRET']到云功能中。
在本地我仍然可以成功部署,但是github操作失败:
Error: Failed to validate secret versions:
- FirebaseError HTTP Error: 403, Permission 'secretmanager.versions.get' denied for resource 'projects/my-project/secrets/MY_SECRET/versions/latest' (or it may not exist).
Run Code Online (Sandbox Code Playgroud)
我确保秘密确实存在于正确的谷歌云项目中,并且我在 github 中使用的服务帐户确实具有 role Secret Manager Secret Accessor ,但我仍然收到错误。
但我注意到的一件事是,当我转到浏览器中的秘密管理器并单击我的秘密时,我看到:
Resource ID projects/123456789/secrets/MY_SECRET
错误说projects/my-project/secrets/MY_SECRET/versions/latest
因此,在构建步骤中,使用项目名称,并且在秘密管理器中我看到项目 ID。不确定这是否相关,只是我注意到的......
为什么这不起作用?我尝试了几个小时,但越来越绝望,请帮助
Tag*_*gas 12
...好吧,在浪费了很多时间后找到了解决方案...
\n原来Secret Manager Secret Accessor角色还不够,Secret Manager Viewer还需要角色!\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f\xe2\x80\x8d\xe2\x99\x82\xef \xb8\x8f
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |