部署允许使用无服务器的未经身份验证的 GCP 功能
Deploy allow unauthenticated GCP functions with serverless
是否可以在 serverless.yml
中添加一个参数来部署 GCP 功能 (Go
),就像在 gcloud deploy
命令中添加 --allow-unauthenticated
一样?
在 serverless documentation 中找不到任何关于此的信息。
我想这是不可能的。无服务器产品使用 Cloud Functions API 来部署 te Cloud Functions。设置allow-unauthenticated,需要使用IAM API 添加cloudfunctions.invoker
角色到allUsers
.
gcloud CLI 提供了一种方便的方法来将两个 API 调用打包在一个命令行中,但外部工具需要执行相同的额外工作才能实现这一点。这就是为什么,我很确定这是不可能的。
我能够通过使用钩子来实现这一点。您需要将自定义 > 脚本添加到 serverless.yml
(注意:这应该有效,前提是您使用的服务帐户具有适当的访问权限)
像这样:
custom:
scripts:
commands:
make-public-function: gcloud functions add-iam-policy-binding ${self:service}-${self:provider.stage}-${opt:opt.function, "functionName"} --member="allUsers" --role="roles/cloudfunctions.invoker" --project=${self:provider.project} --region=${self:provider.region} | xargs echo
hooks:
'after:deploy:deploy': npx sls make-public-function --stage ${self:provider.stage}
是否可以在 serverless.yml
中添加一个参数来部署 GCP 功能 (Go
),就像在 gcloud deploy
命令中添加 --allow-unauthenticated
一样?
在 serverless documentation 中找不到任何关于此的信息。
我想这是不可能的。无服务器产品使用 Cloud Functions API 来部署 te Cloud Functions。设置allow-unauthenticated,需要使用IAM API 添加cloudfunctions.invoker
角色到allUsers
.
gcloud CLI 提供了一种方便的方法来将两个 API 调用打包在一个命令行中,但外部工具需要执行相同的额外工作才能实现这一点。这就是为什么,我很确定这是不可能的。
我能够通过使用钩子来实现这一点。您需要将自定义 > 脚本添加到 serverless.yml
(注意:这应该有效,前提是您使用的服务帐户具有适当的访问权限)
像这样:
custom:
scripts:
commands:
make-public-function: gcloud functions add-iam-policy-binding ${self:service}-${self:provider.stage}-${opt:opt.function, "functionName"} --member="allUsers" --role="roles/cloudfunctions.invoker" --project=${self:provider.project} --region=${self:provider.region} | xargs echo
hooks:
'after:deploy:deploy': npx sls make-public-function --stage ${self:provider.stage}