使用谷歌部署管理器,有没有人找到一种方法来首先在 BigQuery 中创建一个视图,然后授权视图使用的一个或多个数据集,有时在不同的项目中,并且不是由部署管理器创建/管理的? 创建带有视图的数据集并不太具有挑战性。 这是名为inventoryServices_bigquery_territory_views.jinja 的jinja 模板:

resources:
- name: territory-{{properties["OU"]}}
  type: gcp-types/bigquery-v2:datasets
  properties:
    datasetReference:
      datasetId: territory_{{properties["OU"]}}
- name: files
  type: gcp-types/bigquery-v2:tables
  properties:
    datasetId: $(ref.territory-{{properties["OU"]}}.datasetReference.datasetId)
    tableReference:
      tableId: files
    view:
      query: >
        SELECT DATE(DAY) DAY, ou, email, name, mimeType
        FROM `{{properties["files_table_id"]}}`
        WHERE LOWER(SPLIT(ou, "/")[SAFE_OFFSET(1)]) = "{{properties["OU"]}}"
      useLegacySql: false

部署配置像这样引用上面的模板:

imports:
- path: inventoryServices_bigquery_territory_views.jinja

resources:
- name: inventoryServices_bigquery_territory_views
  type: inventoryServices_bigquery_territory_views.jinja

在上面的例子中,files_table_id 是需要对新创建的视图进行授权的 project.dataset.table。

我看过一些在项目/文件夹/组织级别管理 IAM 的示例,但我需要的是数据集,而不是项目。 查看数据集的资源表示,似乎我可以使用新创建的视图更新 access.view,但是对于如何在不删除现有访问级别的情况下执行此操作,以及对于不同于项目中的数据集的数据集,我有点迷茫新视图在其中创建。任何帮助表示赞赏。

编辑:我尝试添加需要像这样授权的视图的数据集,然后在预览模式下部署只是为了查看它如何解释配置:

-name: files-source
  type: gcp-types/bigquery-v2:datasets
  properties:
    datasetReference:
      datasetId: {{properties["files_table_id"]}}
    access:
      view:
        projectId: {{env['project']}}
        datasetId: $(ref.territory-{{properties["OU"]}}.datasetReference.datasetId)
        tableId: $(ref.territory_files.tableReference.tableId)

但是当我以预览模式部署时,它会引发此错误:

errors:
- code: MANIFEST_EXPANSION_USER_ERROR
  location: /deployments/inventoryservices-bigquery-territory-views-us/manifests/manifest-1582283242420
  message: |-
    Manifest expansion encountered the following errors: mapping values are not allowed here
      in "<unicode string>", line 26, column 7:
          type: gcp-types/bigquery-v2:datasets
              ^ Resource: config

对我来说很奇怪,很难理解那个错误,因为它指向的行/列的格式与配置中的其他数据集完全相同,除了它可能不喜欢文件源数据集已经存在并且是从部署管理器外部创建的。

  ask by Michael translate from so

本文未有回复,本站智能推荐:

1回复

使用DeploymentManager在BigQuery中创建“外部表”时出现“403PermissiondeniedwhilegettingDrivecredentials”

重现步骤: 在 Google 表格中创建工作表 在 Google Cloud Platform 中启用 Deployment Manager 和 Google Drive API 在工作表上添加具有view权限的部署管理器服务帐户 使用部署管理器创建数据集 使用部署管理器创建表,在 source
1回复

如何将BigQuery管理员角色添加到CloudDeploymentManagerJinja文件中?

我使用Cloud Deployment Manager创建数据集和表。 我需要将bigquery.admin角色赋予服务帐户。 我已经赋予OWNER访问角色,但还不够处理。 是否可以使用Cloud Deployment Manager赋予BigQuery管理员角色?
1回复

使用DeploymentManager进行BQ计划查询:“P4服务帐户需要iam.serviceAccounts.getAccessToken权限”

我正在尝试为BigQuery数据传输创建Deployment Manager模板以启动计划的查询。 我已经为传输配置创建了一个类型提供程序,当我为计划的查询调用类型提供程序时,出现以下错误:“ P4服务帐户需要iam.serviceAccounts.getAccessToken权限。” 但
1回复

使用CloudDeploymentManager创建BigQuery物化视图

我可以使用部署管理器在 BigQuery 中创建本机和外部表以及视图,但是,似乎没有任何方法可以创建物化视图。 页面:https ://cloud.google.com/bigquery/docs/materialized-views-intro说它仍处于测试阶段 - GCP 测试版功能在部署管理器
2回复

Google部署管理器-数据库创建失败

我正在尝试使用 Google 部署管理器创建一个 CloudSQL 实例和两个数据库。 我无法在两个数据库都成功创建的情况下获得可靠的首次部署。 相反,每次我运行它时,一个(或两个!)失败,状态为“FAILED_PRECONDITION”,错误消息“Bad Request”,并且没有进一步解释哪个前
1回复

GoogleDeploymentManager是否创建资源?

如果不存在,是否可以创建资源,如果存在则可以使用现有资源? 每个@kolban的链接,我想我想在这里放弃。 我是否可以有选择地“放弃”特定资源,以便例如将accessControl策略附加到现有存储桶,但是如果删除了部署,则不删除该存储桶? ABANDON-这会从部署中删除对资源的任
1回复

在通过DeploymentManager创建服务帐户中包括角色

在当前的Google Cloud Deployment Manager文档中。似乎无法使用它创建任何角色或权限,或者我只是缺少属性或资源类型?
1回复

Google部署管理器-项目创建权限被拒绝

在运行部署管理器以创建一个部署时,我收到来自 GCP 的 403 PERMISSION_DENIED 响应,该部署创建一个项目、两个服务帐户并使用云资源管理器 API 为其设置 IAM 策略。 之前,我创建了一个项目“DM Project Creation”,启用一些 API,为其分配账单帐户,然后