如何使用 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 命令時收到錯誤,請參閱 Troubleshoot AWS CLI errors。此外,請確定您使用的是最新的 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. 執行 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 狀態。

  7. 請記下輸出中範本的 ARN,以便後續步驟中使用。

  8. 使用 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) 中建立相同的資料集,然後從新建的資料集建立儀表板。

  1. 使用 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 資料集

  2. 確認資料集已成功建立:

    aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_id

    確認 escribe-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。
  1. 確認儀表板已成功建立:

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

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

  2. 使用 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 帳戶遷移 Amazon QuickSight

AWS 官方
AWS 官方已更新 6 個月前