템플릿을 사용하여 Amazon QuickSight에서 교차 계정 액세스를 설정하려면 어떻게 해야 하나요?

5분 분량
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 오류 문제 해결을 참조하세요. 또한 최신 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의 템플릿에서 계정 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. Amazon QuickSight 콘솔 또는 AWS CLI를 사용하여 계정 B에 데이터세트를 생성합니다.

    Amazon QuickSight 콘솔 사용

    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"
        ]
      }
     ]
    }

    참고: namespace를 자신의 네임스페이스로 바꾸고 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을 사용할 수 있습니다.
  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 사용자에게 공동 소유자 액세스 권한이 부여됩니다. 사용자에게 READ 전용 액세스 권한을 제공하려면 다음 권한을 지정합니다.

    "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 공식업데이트됨 일 년 전