2

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

# 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 并提供公共访问权限?

预测功能允许未经身份验证,hello_world 不允许

笔记:

如果我跑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'
4

2 回答 2

3

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

为确保未经授权的开发人员无法修改函数权限,部署该函数的用户或服务必须具有 cloudfunctions.functions.setIamPolicy权限(如此所述)。

上述权限包含在 Owner 和 Cloud Functions Admin 角色中。因此,只要将 Function Admin 角色授予 Cloud Build 服务帐户,一切正常。

在此处输入图像描述

于 2021-06-22T14:52:24.200 回答
0

请修改云构建服务帐户权限并添加功能管理员角色,它应该可以工作。

于 2021-07-21T09:33:24.423 回答