google-cloud-platform - 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 数据集已经存在并且是从部署管理器外部创建的。
解决方案
推荐阅读
- json - 如何在 TypeScript/Angular2+ 中访问 json 数组?
- c# - 键绑定以更正 Rider 中的建议
- opencv - 流式视频帧倒置
- python - pandas 在列中使用 lambda 应用拆分和连接
- html - 从 Adobe XD 转换 HTML / CSS
- c++ - 如何在 Visual Studio Code 中构建和运行 c++ 应用程序作为发行版
- ruby-on-rails - Rails 如何理解应用程序的过去版本并屏蔽当前更新的更改
- android - 使用部分唤醒锁关闭屏幕时防止应用程序继续 OnPause
- mysql - 将使用 STR_TO_DATE 的查询转换为 BigQuery 语法
- c# - 如何替换字节