部署命令不使用 --allow-unauthenticated

Deploy command doesn't use --allow-unauthenticated

我编写了一个 google 函数来模拟服务帐户以生成签名 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 和 sa-email 的凭据进行部署。 sa-email 必须有权在函数

上设置 IAM 策略

在第二个命令中,您不再使用 sa-email 凭据,而是使用您的用户凭据,这次成功了,因为您拥有权限。


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

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 的原因。

如果您的服务帐户具有以下角色之一(Cloud Functions Admin、Firebase Admin、Firebase Develop Admin、Firebase Extensions API Service Agent、Owner、Security Admin ) 然后您可以在单个命令中启用 --allow-unauthenticated

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

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