Deploy命令没有't使用--allow未经身份验证



我编写了一个谷歌函数来模拟一个服务帐户来生成签名的url。但是,在我使用以下命令进行部署后,未启用允许未经身份验证的选项。

gcloud functions deploy func-sa-test2 
--entry-point main 
--runtime python39 
--impersonate-service-account sa-email 
--service-account sa-email 
--trigger-http 
--allow-unauthenticated 

我必须使用下面的命令再次部署它,以单独启用该选项。

gcloud functions deploy func-sa-test2 --allow-unauthenticated

我怎么能用一个命令正确地部署它呢。谢谢

;无错误";这很奇怪。请确保模拟的服务帐户具有角色roles/cloudfunctions.admin

事实上,使用您的第一个命令,您就可以使用GCLOUD和th sa电子邮件的凭据进行部署。sa电子邮件必须具有在功能上设置IAM策略的权限

在第二个命令中,您不再使用sa电子邮件凭据,而是使用您的用户凭据,这一次是有效的,因为您有权限。


要进行调查,您可以尝试运行该命令

gcloud functions add-iam-policy-binding  func-sa-test2 --member="allUsers" --role="roles/cloudfunctions.invoker" --impersonate-service-account sa-email

如果你没有权限,它应该会失败

服务帐户不包含"cloudfunctions.functions.setIamPolicy";准许这就是您无法在单个命令中启用标志--allow unauthenticated的原因。

如果您的服务帐户具有其中一个角色(云功能管理员、Firebase管理员、Firebase开发管理员、Firebase扩展API服务代理、所有者、安全管理员(,则可以在单个命令中启用--allow-unauthentized

在单独的命令中执行时,您可能具有所有者权限。所以你没有遇到任何问题。

如果需要,可以使用控制台来避免此类问题

相关内容

最新更新