Amazon QuickSight Assets As Code (AAC)~クロスアカウント編~

    Amazon QuickSight Assets As Code (AAC)~クロスアカウント編~

    目次

      はじめに

      クラウドインテグレーション部の渡邊です。
      Amazon QuickSightの分析・テンプレート・ダッシュボードを対象に、アセット定義の作成・移行・編集が可能になる Assets As Codeがサポートされています。
      本記事では別アカウントおよび別リージョンで、Assets As Codeを利用した分析の作成を行います。
      本手順実施のために、事前に以下を対応してください。

      • 既存データのあるアカウント(アカウントAと呼ぶ)で分析を作成する
      • 分析の新規作成先のアカウント(アカウントBと呼ぶ)でデータソースを作成する

      実行の流れ

      分析IDと既存の分析の定義ファイルの取得は、記事「Amazon QuickSight Assets As Code (AAC)をやってみた~同一アカウント編~」で執筆したため、割愛します。

      • アカウントA側
        • 分析IDの取得
        • テンプレートの作成
      • アカウントB側
        • アカウントAのテンプレート情報を参照して分析を作成

      ※本手順はダッシュボードの場合も同様です
      202404_aaccross_01

      実際にやってみた

      既存データのあるアカウント(アカウントA)での実行内容

      分析の新規作成先のアカウント(アカウントBと呼ぶ)に分析を作成するために、既存データのあるアカウント(アカウントAと呼ぶ)でテンプレートを作成します。


      aws quicksight create-template --region ap-northeast-1 --aws-account-id <アカウントAのID> --template-id randomtemplateid --name NewWebandSocialMediaAnalyticsanalysis-template \
      > --permissions '[
      > {
      > "Principal": "arn:aws:iam::<アカウントBのID>:root",
      > "Actions": ["quicksight:DescribeTemplate"]
      > }
      > ]' \
      > --source-entity \
      > '{
      > "SourceAnalysis": {
      > "Arn": "arn:aws:quicksight:ap-northeast-1:<アカウントAのID>:analysis/4e604dd8-8914-4f70-b5a7-802187bf2498",
      > "DataSetReferences": [
      > {
      > "DataSetPlaceholder": "hogedatasetplaceholder",
      > "DataSetArn": "arn:aws:quicksight:ap-northeast-1:<アカウントAのID>:dataset/15feae28-a002-4e87-9abc-54e2d31f1ba3"
      > }
      > ]
      > }
      > }'
      {
      "Status": 202,
      "Arn": "arn:aws:quicksight:ap-northeast-1:<アカウントAのID>:template/randomtemplateid",
      "VersionArn": "arn:aws:quicksight:ap-northeast-1:<アカウントAのID>:template/randomtemplateid/version/1",
      "TemplateId": "randomtemplateid",
      "CreationStatus": "CREATION_IN_PROGRESS",
      "RequestId": "7ba4b9ea-ab6e-40fd-9217-35d535faf35f"
      }

      分析の新規作成先のアカウント(アカウントB)での実行内容

      アカウントAのテンプレート情報と、アカウントBのデータセットから分析を作成します。

      aws quicksight create-analysis --aws-account-id <アカウントBのID> --analysis-id randomtemplateid --name NewWebandSocialMediaAnalyticsanalysis-template \
      --source-entity '{
      "SourceTemplate": {
      "Arn": "arn:aws:quicksight:ap-northeast-1:<アカウントAのID>:template/randomtemplateid",
      "DataSetReferences": [
      {
      "DataSetPlaceholder": "hogedatasetplaceholder",
      "DataSetArn": "arn:aws:quicksight:us-east-1:<アカウントBのID>:dataset/3b878441-b131-46e4-b6c3-21a2542ef4ab"
      }
      ]
      }
      }' \
      --permissions '[
      {
      "Principal": "arn:aws:quicksight:us-east-1:<アカウントBのID>:user/default/AWSReservedSSO_AQAdministratorAccess_ff474d18596a1d80",
      "Actions": [
      "quicksight:RestoreAnalysis",
      "quicksight:UpdateAnalysisPermissions",
      "quicksight:DeleteAnalysis",
      "quicksight:DescribeAnalysisPermissions",
      "quicksight:QueryAnalysis",
      "quicksight:DescribeAnalysis",
      "quicksight:UpdateAnalysis"
      ]
      }
      ]'

      コンソール画面を確認すると表示されていました。
      202404_aacsame_02202404_aacsame_03

      分析を作成する際には、参照元のテンプレートの値と一致させることに注意する

      分析を作成する際に、DataSetPlaceholderの値が参照元のテンプレートのものと一致しないと、エラーが発生するので注意してください。

      aws quicksight create-analysis --aws-account-id <アカウントBのID> --analysis-id randomtemplateid --name NewWebandSocialMediaAnalyticsanalysis-template \
      --source-entity '{
      "SourceTemplate": {
      "Arn": "arn:aws:quicksight:ap-northeast-1:<アカウントAのID>:template/randomtemplateid",
      "DataSetReferences": [
      {
      "DataSetPlaceholder": "randomtemplateid",
      "DataSetArn": "arn:aws:quicksight:us-east-1:<アカウントBのID>:dataset/3b878441-b131-46e4-b6c3-21a2542ef4ab"
      }
      ]
      }
      }' \
      --permissions '[
      {
      "Principal": "arn:aws:quicksight:us-east-1:<アカウントBのID>:user/default/AWSReservedSSO_AQAdministratorAccess_ff474d18596a1d80",
      "Actions": [
      "quicksight:RestoreAnalysis",
      "quicksight:UpdateAnalysisPermissions",
      "quicksight:DeleteAnalysis",
      "quicksight:DescribeAnalysisPermissions",
      "quicksight:QueryAnalysis",
      "quicksight:DescribeAnalysis",
      "quicksight:UpdateAnalysis"
      ]
      }
      ]'


      {
      "Status": 202,
      "Arn": "arn:aws:quicksight:us-east-1:<アカウントBのID>:analysis/randomtemplateid",
      "AnalysisId": "randomtemplateid",
      "CreationStatus": "CREATION_IN_PROGRESS",
      "RequestId": "d25d3b50-38d2-4997-9406-5547f9e6c55d"
      }

      分析の作成状況を発生すると、正しいDataSetPlaceholderの値を指定していないことが原因で、バリデーションエラーが発生しています。

      $ aws quicksight describe-analysis --analysis-id randomtemplateid   --aws-account-id <アカウントBのID>
      {
      "Status": 200,
      "Analysis": {
      "AnalysisId": "randomtemplateid",
      "Arn": "arn:aws:quicksight:us-east-1:<アカウントBのID>:analysis/randomtemplateid",
      "Name": "NewWebandSocialMediaAnalyticsanalysis-template",
      "Status": "CREATION_FAILED",
      "Errors": [
      {
      "Type": "VALIDATION_ERROR",
      "Message": "Given placeholders [randomtemplateid] are not part of template"
      }
      ],
      "DataSetArns": [],
      "CreatedTime": "2023-12-22T08:58:12.620000+00:00",
      "LastUpdatedTime": "2023-12-22T08:58:15.025000+00:00",
      "Sheets": []
      },
      "RequestId": "44420e6d-7bbf-44db-b99c-5c19d6cb1b00"
      }

      同じ分析IDで作成できないため、一度作成に失敗した分析を削除しましょう。

      An error occurred (ResourceExistsException) when calling the CreateAnalysis operation: Analysis arn:aws:quicksight:us-east-1:<アカウントBのID>:analysis/randomtemplateid already exists

      作成に失敗した分析はダッシュボード画面からは確認できなかったので、注意してください。
      202404_aacsame_04

       aws quicksight delete-analysis --analysis-id randomtemplateid --aws-account-id  <アカウントBのID> --region us-east-1

      {
      "Status": 200,
      "Arn": "arn:aws:quicksight:us-east-1:<アカウントBのID>:analysis/randomtemplateid",
      "AnalysisId": "randomtemplateid",
      "DeletionTime": "2024-01-21T09:23:06+00:00",
      "RequestId": "f9085f63-2c7b-4cfb-9ffb-8e4a7bb98f84"
      }

       

      【参考】
      QuickSightで作成した分析を、テンプレート機能を使って別アカウントへ配布してみる