2024年05月01日
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のテンプレート情報を参照して分析を作成
※本手順はダッシュボードの場合も同様です
実際にやってみた
既存データのあるアカウント(アカウント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"
]
}
]'
コンソール画面を確認すると表示されていました。
分析を作成する際には、参照元のテンプレートの値と一致させることに注意する
分析を作成する際に、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
作成に失敗した分析はダッシュボード画面からは確認できなかったので、注意してください。
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"
}
アジアクエスト株式会社では一緒に働いていただける方を募集しています。
興味のある方は以下のURLを御覧ください。