如何在 Amazon QuickSight 中使用模板设置跨账户存取?
我想在 Amazon QuickSight 中与另一个 AWS 账户共享我的数据集和控制面板。我该如何操作?
简短描述
您可以使用模板创建跨账户存取,以便在其他 AWS 账户和 AWS 区域之间共享您的 Amazon QuickSight 分析和控制面板。您还可以使用模板创建控制面板或其他模板。
要在 QuickSight 中提供跨账户存取,请完成以下步骤:
- 在一个帐户(帐户 A)中,使用现有分析创建新模板。
- 在另一个账户(账户 B)中,使用与账户 A 相同的架构创建数据集。
- 使用账户 A 中的模板在账户 B 中创建控制面板。
**(可选)**使用账户 A 中的现有模板在账户 B 中创建模板。如果您需要将资源从一个账户转移到另一个账户,并从源账户中删除资源,请使用此选项。
**注意:**本文概述了使用 AWS 命令行界面 (AWS CLI) 实现跨账户存取的步骤。如果您在运行 AWS CLI 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
解决方法
使用同一账户中的现有分析在账户 A 中创建模板
1. 使用 list-dashboards AWS CLI 命令列出您账户中可用的控制面板:
aws quicksight list-dashboards --aws-account-id account_a_id
**注意:**将 account_a_id 替换为账户 A 的 ID。
2. 记下您要共享的控制面板的 ID。
3. 使用 describe-dashboard AWS CLI 命令从控制面板获取详细信息:
aws quicksight describe-dashboard --aws-account-id account_a_id --dashboard-id dashboard_id
**注意:**将 dashboard_id 替换为您控制面板的 ID。
4. 创建模板的 JSON 文件,并包含分析和数据集的 ARN:
{ "SourceEntity": { "SourceAnalysis": { "Arn": "arn:aws:quicksight:aws_region:account_a_id:analysis/analysis_id", "DataSetReferences": [ { "DataSetPlaceholder": "dataset_name", "DataSetArn": "arn:aws:quicksight:aws_region:account_a_id:dataset/dataset_id" } ] } }, "VersionDescription": "1" }
**注意:**将 aws_region 替换为您的 AWS 区域,将 analysis_id 替换为您分析的 ID,将 dataset_name 替换为数据集名称,将 dataset_id 替换为您数据集的 ID。
5. 在与您的分析相同的区域中创建模板:
aws quicksight create-template --aws-account-id account_a_id --template-id template_name --cli-input-json file://template.json --profile default
**注意:**将 template_name 替换为账户 A 中的模板名称。
6. 通过运行 describe-template AWS CLI 命令来确认模板已创建:
aws quicksight describe-template --aws-account-id account_a_id --template-id template_id
**注意:**将 template_id 替换为您模板的 ID。确认 describe-template 命令的响应包含 CREATION_SUCCESSFUL 状态。
7. 记下输出中模板的 ARN,以便在后续步骤中使用。
8. 使用 update-template-permissions AWS CLI 命令从账户 A 中的模板向账户 B 授予跨账户 READ 权限:
aws quicksight update-template-permissions --aws-account-id account_a_id --template-id template_id --grant-permissions file://TemplatePermission.json
示例权限 JSON 文件:
[ { "Principal": "arn:aws:iam::account_b_id:root", "Actions": [ "quicksight:UpdateTemplatePermissions", "quicksight:DescribeTemplate" ] } ]
注意:将 account_b_id 替换为账户 B 的 ID。要与多个账户共享模板,请将所有账户的根作为主体。您只能与根帐户共享模板。主体元素不支持 AWS Identity and Access Management (IAM) 角色。
使用与账户 A 相同的架构在账户 B 中创建数据集
您不能直接从其他账户(账户 A)中的数据集创建控制面板。相反,您必须在要创建控制面板的帐户(帐户 B)中创建相同的数据集。然后,从新创建的数据集创建控制面板。
1. 在账户 B 中创建数据集。
使用 Amazon QuickSight 控制台
请参见创建数据集。
使用 AWS CLI
使用 create-data-set AWS CLI 命令:
aws quicksight create-data-set --aws-account-id account_b_id --dataset-id dataset_name --cli-input-json file://datasetB.json
示例数据集 JSON 文件:
{ "Name": "dataset_name", "PhysicalTableMap": { "Physicaltablename": { "RelationalTable": { "DataSourceArn": "arn:aws:quicksight:aws_region:account_b_id:datasource/datasource_id", "Schema": "schema_name", "Name": "table_name", "InputColumns": [ { "Name": "column_name", "Type": "STRING"|"INTEGER"|"DECIMAL"|"DATETIME"|"BIT"|"BOOLEAN"|"JSON" } ] } } }, "LogicalTableMap": { "Logicaltablename": { "Alias": "any_alias", "DataTransforms": [ { "ProjectOperation": { "ProjectedColumns": [ "column_name", "column_name" ] } } ], "Source": { "PhysicalTableId": "Physicaltablename" } } }, "ImportMode": "SPICE", "Permissions": [ { "Principal": "arn:aws:quicksight:aws_region:account_b_id:user/namespace/user_name", "Actions": [ "quicksight:UpdateDataSetPermissions", "quicksight:DescribeDataSet", "quicksight:DescribeDataSetPermissions", "quicksight:PassDataSet", "quicksight:DescribeIngestion", "quicksight:ListIngestions", "quicksight:UpdateDataSet", "quicksight:DeleteDataSet", "quicksight:CreateIngestion", "quicksight:CancelIngestion" ] } ] }
注意:将命名空间替换为您的命名空间,将 user_name 替换为 QuickSight 用户的名称。在先前的示例中是指 SPICE 数据集。
2. 确认已成功创建了数据集:
aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_id
确认 describe-data-set 命令的响应包含状态代码 201 。201 状态代码表示数据集已成功创建。
3. 记下输出中数据集的 ARN,以便在后续步骤中使用。
使用账户 A 中的模板在账户 B 中创建控制面板
1. 运行以下命令,并包含模板的 ARN:
aws quicksight create-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id --name dashboard_name --source-entity file://DashboardFromTemplate.json
**注意:**您可以通过添加 --region target_region 参数在不同的区域中创建控制面板。将 target_region 替换为您要在其中创建模板的区域。
账户 B 的示例控制面板 JSON 文件:
{ "SourceTemplate": { "DataSetReferences": [ { "DataSetPlaceholder": "dataset_name", "DataSetArn": "arn:aws:quicksight:aws_region:account_b_id:dataset/dataset_id" } ], "Arn": "arn:aws:quicksight:aws_region:account_a_id:template/template_id" } }
在先前的控制面板 JSON 文件中:
- 对于 DataSetPlaceholder,您必须使用账户 A 模板中的相同数据集名称。
- 对于 DataSetARN,您可以使用您在账户 B 中创建的数据集的 ARN。
- 对于 Arn,您可以使用您在账户 A 中创建的模板的 ARN。
2. 确认已成功创建了控制面板:
aws quicksight describe-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id
**注意:**确认 describe-dashboard 命令的响应包含状态代码 200。200 状态代码表示控制面板存在。
3. 使用 update-dashboard-permissions AWS CLI 命令向 QuickSight 用户授予适当的权限:
aws quicksight update-dashboard-permissions --aws-account-id account_b_id --dashboard-id dashboard_id --grant-permissions file://DashboardPermission.json
示例控制面板 JSON 文件:
[ { "Principal": "arn:aws:quicksight:aws_region:account_b_id:user/namespace/quicksight_user_name", "Actions": [ "quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:UpdateDashboardPermissions", "quicksight:QueryDashboard", "quicksight:UpdateDashboard", "quicksight:DeleteDashboard", "quicksight:DescribeDashboardPermissions", "quicksight:UpdateDashboardPublishedVersion" ] } ]
在先前的示例控制面板 JSON 文件中,QuickSight 用户被授予共同所有者访问权限。
要向用户提供只读访问权限,请指定以下权限:
"quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:QueryDashboard"
(可选)使用账户 A 中的现有模板在账户 B 中创建模板
1. 确认您的 IAM 用户或角色具有适当的权限。您必须具有以下权限才能在 QuickSight 中访问跨账户模板:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:quicksight:aws_region:account_a_id:template/template_id", "Action": "quicksight:DescribeTemplate" }, { "Effect": "Allow", "Resource": "*", "Action": "quicksight:CreateTemplate" } ] }
2. 使用账户 A 中的模板在账户 B 中创建新模板:
aws quicksight create-template --aws-account-id account_b_id --template-id template_name --source-entity file://templateB.json
**注意:**将 template_name 替换为账户 B 的模板名称。要在不同区域中创建模板,请添加 --region target_region。
账户 B 的示例 JSON 文件:
{ "SourceTemplate": { "Arn": "arn:aws:quicksight:region:account_a_id:template/template_id" } }
3. 确认模板已创建:
aws quicksight describe-template --aws-account-id account_b_id --template-id template_id
**注意:**确认 describe-template 命令的响应包含 CREATION_SUCCESSFUL 状态。
相关信息

相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 3 年前