Используя Google Deployment Manager, кто-нибудь нашел способ сначала создать представление в BigQuery, а затем авторизовать один или несколько наборов данных, используемых представлением, иногда в разных проектах, и которые не были созданы / управляемы администратором развертывания? Создание набора данных с видом не было слишком сложным. Вот шаблон jinja с именем inventoryServices_bigquery_territory_views.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
Странно для меня, трудно понять смысл этой ошибки, поскольку строка / столбец, на который она указывает to форматируется точно так же, как и другой набор данных в конфигурации, за исключением того, что, возможно, ему не нравится, что набор данных file-source уже существует и был создан вне администратора развертывания.