部署允许使用无服务器的未经身份验证的 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}