如何使用 Amazon QuickSight 中的範本設定跨帳戶存取權?
我想要在 Amazon QuickSight 中與另一個 AWS 帳戶共用我的資料集和儀表板。
簡短說明
您可以使用範本建立跨帳戶存取權限,以便在其他 AWS 帳戶和 AWS 區域共用 Amazon QuickSight 分析和儀表板。您也可以使用範本來建立儀表板或其他範本。
請完成下列步驟,以便在 QuickSight 中提供跨帳戶存取權限:
- 在帳戶 A 中,從現有分析建立新範本。
- 在帳戶 B 中,使用帳戶 A 中的相同的架構來建立資料集。
- 從帳戶 A 中的範本開始在帳戶 B 中建立儀表板。
(選擇性) 從帳戶 A 中的現有範本開始在帳戶 B 中建立範本。如果您要將資源從一個帳戶移至另一個帳戶,並從來源帳戶移除資源,請使用此選項。
**注意:**本文將 AWS Command Line Interface (AWS CLI) 用於進行取得跨帳戶存取權的步驟。如果您在執行 AWS CLI 命令時收到錯誤,請參閱 Troubleshoot AWS CLI errors。此外,請確定您使用的是最新的 AWS CLI 版本。
解決方法
透過相同帳戶的現有分析,在帳戶 A 中建立範本
-
使用 list-dashboards AWS CLI 命令列出您帳戶中可用的儀表板:
aws quicksight list-dashboards --aws-account-id account_a_id
**注意:**將 account_a_id 取代為帳戶 A 的 ID。
-
記下您要共用的儀表板 ID。
-
使用 describe-dashboard AWS CLI 命令從儀表板取得詳細資訊:
aws quicksight describe-dashboard --aws-account-id account_a_id --dashboard-id dashboard_id
**注意:**將 **dashboard_id ** 取代為儀表板的 ID。
-
建立範本的 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。
-
在與分析相同的區域中建立範本:
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 的範本名稱。
-
執行 AWS CLI 命令 describe-template 以確認範本已經建立:
aws quicksight describe-template --aws-account-id account_a_id --template-id template_id
注意:將 template_id 取代為範本的 ID。確認 describe-template 命令的回應包含 CREATION_SUCCESSFUL 狀態。
-
請記下輸出中範本的 ARN,以便後續步驟中使用。
-
使用 update-template-permissions AWS CLI 命令將帳戶 A 中範本的跨帳戶 READ 權限授予帳戶 B:
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" ] } ]
注意:以帳戶 B 的識別碼取代 account_b_id。若要與多個帳戶共用範本,請將所有帳戶的根目錄納入為主體。您只能與根帳戶共用範本。主體元素不支援 AWS Identity and Access Management (IAM) 角色。
使用與帳戶 A 相同的架構,在帳戶 B 中建立資料集
您無法直接從其他帳戶 (例如帳戶 A) 中的資料集建立儀表板。而是必須在要建立儀表板的帳戶 (例如帳戶 B) 中建立相同的資料集,然後從新建的資料集建立儀表板。
-
使用 Amazon QuickSight 主控台或 AWS CLI 在帳戶 B 中建立資料集。
使用 Amazon QuickSight 主控台
若要使用 Amazon QuickSight 主控台建立資料集,請參閱 Creating datasets。
使用 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" ] } ] }
**注意:**將 namespace 取代為您的命名空間,並將 user_name 取代為 QuickSight 使用者的名稱。上述範例指的是 SPICE 資料集。
-
確認資料集已成功建立:
aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_id
確認 escribe-data-set 命令的回應包含 201 的狀態碼。201 狀態碼表示資料集已成功建立。
-
請記下輸出中資料集的 ARN,以便後續步驟中使用。
透過帳戶 A 中的範本在帳戶 B 中建立儀表板
-
執行下列命令,並包含範本的 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。
-
確認儀表板已成功建立:
aws quicksight describe-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id
**注意:確認 describe-dashboard 命令的回應包含狀態碼 200 **。200 狀態碼表示儀表板存在。
-
使用 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 中建立範本
-
確認您的 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" } ] }
-
透握帳戶 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" } }
-
確認已建立範本:
aws quicksight describe-template --aws-account-id account_b_id --template-id template_id
注意:確認describe-template命令的回應包含** CREATION_SUCCESSFUL **狀態。
相關資訊
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 5 個月前
- AWS 官方已更新 6 個月前
- AWS 官方已更新 5 個月前