【问题标题】:Unauthenticated CloudRun with Deployment Manager使用部署管理器的未经身份验证的 CloudRun
【发布时间】:2021-08-17 18:26:09
【问题描述】:

我正在尝试将 CloudRun 容器设置为可通过部署管理器公开访问。我遇到了一个错误Parameter for gcpIamMemberBinding at position 1 is not of type map, value was [null]

我已将 Google API 服务代理设置为具有角色/所有者,因此这不是权限问题。

我也尝试过添加元数据依赖项:

'metadata': {
  'dependsOn': ['{}-cloudrun'.format(name)]
},

我真的找不到任何有用的资源来演示使用 CloudRun 的部署管理器,并且无法将容器设置为公共是第 1 步的一个阻碍。

部署片段

'name': '{}-cloudrun-policy'.format(name),
'type': 'gcp-types/cloudresourcemanager-v1:virtual.projects.iamMemberBinding',
'properties': {
   'resource': 'projects/{}/locations/{}/services/{}'.format(project, region, name),
   'role': 'roles/run.invoker',
   'member': 'allUsers',
},

完全错误

InputMapping for field [policy] for method [setIamPolicy] could not be set from input, mapping was: [$.gcpIamMemberBinding($.intent, $.inputs.policy.response, $.resource.properties)], and evaluation context was:
...
...
...
Error was:
Parameter for gcpIamMemberBinding at position 1 is not of type map, value was [null]

【问题讨论】:

    标签: google-cloud-platform google-cloud-run google-deployment-manager


    【解决方案1】:

    Cloud Run 支持两种支持角色 roles/run.invoker 的方法。第一个是将 IAM 策略分配给项目。第二种方法是将 IAM 策略分配给 Cloud Run 资源。

    您的问题是使用第一种方法(不支持)。

    Google Cloud 项目不允许成员 allUsersallAuthentiatedUsers 的 IAM 政策 (projects.setIamPolicy) .

    您可以将这些身份直接分配给 Cloud Run 资源(第二种方法)。

    但是,Deployment Manager 不支持 Cloud Run。您将需要使用其他工具将 IAM 政策分配给 Cloud Run 资源。

    列出支持的资源类型:gcloud deployment-manager types list

    【讨论】:

    • 我的印象是,但定义了我分配给 Cloud Run 资源的“资源”。你说的type是错的吗?
    • @MousyBusiness Deployment Manager 还不支持 Cloud Run。它没有 Cloud Run 的资源。
    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2012-03-01
    • 2022-06-16
    • 2015-05-19
    相关资源
    最近更新 更多