首页 > 解决方案 > DM 创建 bigquery 视图,然后在数据集上对其进行授权

问题描述

使用 Google 部署管理器,有没有人找到一种方法来首先在 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

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

标签: google-cloud-platformgoogle-bigqueryjinja2google-deployment-manager

解决方案


推荐阅读