允许未经身份验证的参数不起作用

Allow unauthenticated parameter does not work

我正在通过 GitHub 和 Google Cloud Build 创建一个 CICD 管道,使用以下 .yaml 文件:

# Cloud Function specifications
steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args:
  - functions
  - deploy
  - hello_world
  - --source=./src
  - --trigger-http
  - --memory=1024MB
  - --max-instances=5
  - --runtime=python39
  - --region=europe-west6
  - --entry-point=predict
  - --allow-unauthenticated

一切正常,功能部署正确;但是,每当我尝试调用它时,都会抛出以下错误:

<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>401 Unauthorized</title>
</head>

--allow-unauthenticated 参数似乎没有正常工作。 如何公开 API 并授予 public 访问权限?

注:

如果我运行gcloud functions describe --project=XXXXXX --region=europe-west6 hello_world

我得到:

availableMemoryMb: 1024
buildId: 1234
entryPoint: predict
environmentVariables:
  ABC: '"discount"'
httpsTrigger:
  securityLevel: SECURE_OPTIONAL
  url: https://europe-west6-XXX.cloudfunctions.net/hello_world
ingressSettings: ALLOW_ALL
labels:
  deployment-tool: cli-gcloud
maxInstances: 5
name: projects/XXX/locations/europe-west6/functions/hello_world
runtime: python39
serviceAccountEmail: XXX@appspot.gserviceaccount.com
sourceUploadUrl: https://storage.googleapis.com/gcf-upload-europe-west6XXX
status: ACTIVE
timeout: 60s
updateTime: '2021-06-10T17:09:55.950Z'
versionId: '2'

使用 --allow-unauthenticated 标志修改 IAM 权限。

为确保未经授权的开发人员无法修改功能权限,正在部署该功能的用户或服务必须具有 cloudfunctions.functions.setIamPolicy 许可(如前所述 here)。

Owner 和 Cloud Functions Admin 角色均包含上述权限。因此,一旦将功能管理员角色授予 Cloud Build 服务帐户,一切正常。

请修改云构建服务账号权限,添加功能admin角色,应该可以。