如何使用 Amazon QuickSight 中的範本設定跨帳戶存取?

4 分的閱讀內容
0

我想要在 Amazon QuickSight 中與另一個 AWS 帳戶共用我的資料集和儀表板。我該如何操作?

簡短說明

您可以使用範本建立跨帳戶存取權限,以便在其他 AWS 帳戶和 AWS 區域共用 Amazon QuickSight 分析和儀表板。您也可以使用範本來建立儀表板或其他範本。

請完成下列步驟,以便在 QuickSight 中提供跨帳戶存取權限:

  1. 在一個帳戶 (帳戶 A) 中,從現有分析建立新範本。
  2. 在另一個帳戶 (帳戶 B) 中,使用帳戶 A 中的相同架構建立資料集。
  3. 從帳戶 A 中的範本開始在帳戶 B 中建立儀表板。

(選擇性) 從帳戶 A 中的現有範本開始在帳戶 B 中建立範本。如果您要將資源從一個帳戶移至另一個帳戶,並從來源帳戶移除資源,請使用此選項。

**注意:**本文概述使用 AWS Command Line Interface (AWS CLI) 進行跨帳戶存取的步驟。如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。

解決方法

從相同帳戶的現有分析開始在帳戶 A 中建立範本

  1. 使用list-dashboardsAWS CLI 命令列出您帳戶中可用的儀表板:
aws quicksight list-dashboards --aws-account-id account_a_id

**注意: account_a_id 取代為帳號 A ** 的識別碼。

  1. 請注意您要共用的控制面板 ID。

  2. 使用describe-dashboard AWS CLI 命令從儀表板取得詳細資訊:

aws quicksight describe-dashboard --aws-account-id account_a_id --dashboard-id dashboard_id

**注意:**將 **dashboard_id ** 取代為儀表板的 ID。

  1. 建立範本的 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。

  1. 在與分析相同的區域中建立範本:
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 的範本名稱。

  1. 確認範本是透過執行 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**狀態。

  1. 請注意輸出中的範本 ARN 將在稍後的步驟中使用。

  2. 使用更新範本權限 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 身份和存取管理 (IAM) 角色。

使用與帳戶 A 相同的架構,在帳戶 B 中建立資料集

您無法直接從另一個帳戶 (帳戶 A) 中的資料集建立儀表板。相反地,您必須在要建立儀表板的帳戶中建立相同的資料集 (帳戶 B)。然後,從新建立的資料集建立儀表板。

  1. 在帳戶 B 中建立資料集。

使用 Amazon QuickSight 臺

請參閱建立資料集

**使用 AWS CLI **

使用create-data-set AWSCLI 命令:

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 資料集

  1. 確認資料集已成功建立:
aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_id

確認escribe-data-set命令的回應包含 201 的狀態碼** **。**201 **狀態碼表示資料集已成功建立。

  1. 請注意輸出中的資料集 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。
  1. 確認儀表板已成功建立:
aws quicksight describe-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id

**注意:確認 describe-dashboard 命令的回應包含狀態碼 200 **。**200 **狀態碼表示儀表板存在。

  1. 使用更新儀表板權限 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"
   }
 ]
}
  1. 從帳戶 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"
    }
}
  1. 確認已建立範本:
aws quicksight describe-template --aws-account-id account_b_id --template-id template_id

注意:確認describe-template命令的回應包含** CREATION_SUCCESSFUL **狀態。


相關資訊

跨 AWS 帳戶遷移 Amazon QuickSight

AWS 官方
AWS 官方已更新 2 年前