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で作成した分析を、テンプレート機能を使って別アカウントへ配布してみる

      アジアクエスト株式会社では一緒に働いていただける方を募集しています。
      興味のある方は以下のURLを御覧ください。