本記事は2023/1/5時点の情報です。
こんにちは!AS部DS2課の松田です。
今回もre:Invent 2022にて発表されたアップデートについて紹介していきます。
- はじめに
- Amazon QuickSight向け拡張API機能について
- 流れ
- ダッシュボードの準備
- ダッシュボード定義の抽出
- 定義情報の編集/ダッシュボード作成
- Permissionの設定
- おわりに
1. はじめに
今回はre:Invent 2022で発表されたAmazon QuickSightのアップデートについて検証してみたのでブログに記載いたします。
(以降、Amazon QuickSightはQuickSightと省略します。)
発表についての情報はこちら↓
2. Amazon QuickSight向け拡張APIについて
今回のアップデートでQuickSightの各オブジェクト(ダッシュボードや分析など)の定義情報にプログラムからアクセスすることができるようになりました。
QuickSightにガッツリ触れた機会はなかったのですが、以前はQuickSightの各オブジェクトへの操作はコンソール画面からしか行うことはできませんでした。
実はQuickSight向けのAPIはこれまでにも存在していましたが、今回登場したのがcreate/update系のAPIになります。
このAPIの公開で定義情報にプログラムからアクセスすることができ、コンソール画面からでなくてもダッシュボードや分析の作成が可能になりました。
つまり、何がいいのか。。。。。
QuickSightのIaC化が可能になるということです。定義情報のテンプレート化と作成コマンドを準備しておくことで、BI移行を加速し、BI 導入の取り組みを俊敏的に進め、すべてのユーザーへの分析情報の提供が可能となります。
今回はダッシュボードから定義情報を抽出→定義情報から新たなダッシュボード作成までをAPIを使って実施してみたいと思います。
3. 流れ
前提条件
AWS CLIを使うためAmazon Linux2上で定義ファイル等を作成
IAMロールを付与し操作権限をつけています(今回は検証のためAdminロールを付与しています)
1. ダッシュボードの準備
今回はQuickSightで事前に準備されているサンプルダッシュボードを使って検証していきます。
新規に作成するもととなるダッシュボードが必要ですのでこの準備についてはコンソール画面からの作成になります。
コンソール画面よりQuickSightを開き、左のメニューから「分析」を押下。
「Business Review analysis」を選択後、画面右上の「共有」から「ダッシュボードの公開」を押下。
任意の名前を付け、新しいダッシュボードとして公開します。
公開後、画面右上の「共有」から「ダッシュボードの共有」を押下。
「リンクをコピー」を押下し、適当なテキストファイルに張り付ける。
リンクは以下のような形式で出力されます。
https://ap-northeast-1.quicksight.aws.amazon.com/sn/accounts/<AWSアカウントID>/dashboards/<ダッシュボードID>?directory_alias=<QuickSight account name>
このうち
<ダッシュボードID>
の部分を後ほど利用しますのでメモしておきます。
以上でダッシュボードの準備は完了です。
2. ダッシュボード定義の抽出
まずはDescribeコマンドでダッシュボード定義を抽出し、test.json
に書き出します。
aws quicksight describe-dashboard-definition --aws-account-id <AWSアカウントID> --dashboard-id <ダッシュボードID> > test.json
上記のコマンドを実行すると以下のようなJSONファイルが作成されます。
※中身については省略しております。
このうち新規に作成する定義ファイルとして"DataSetIdentifierDeclarations"
から"FilterGroups"
を使用します。
3. 定義情報の編集/ダッシュボード作成
次に抽出した定義ファイルを編集していきます。
"DataSetIdentifierDeclarations"
から"FilterGroups"
までを、create.json
ファイルを新規に作成しコピーします。
基本的にはSheets
部分を編集していきます。
ここでハマったポイントになりますが、、、、
コピーしただけのcreate.json
ファイルを使ってダッシュボードを作成しようとするとエラーが吐かれます。
各Visual配下に~FieldWells
という項目が存在しているのですが、~FieldWells
配下にあるFieldId
が記載されているものと記載されていないものがあります。これは必須の設定項目となっており、FieldIdが記載されているものと同様に適当な価を記載してあげる必要があるため注意です。
※今回は検証のため、サンプルのダッシュボードからグラフを1つだけにした定義情報ファイルにしています。
'create.json'ファイルが作成できたら定義情報をもとにダッシュボードを作成するcreateコマンドを実行します。
aws quicksight create-dashboard --aws-account-id <AWSアカウントID> --dashboard-id dashboard20230105 --name test-cli --definition file://create.json
新規に作成するダッシュボードIDはdashboard20230105
としています。以降はご自身の設定したダッシュボードIDに読み替えてください。
以下のように表示されます。
{ "Status": 202, "Arn": "arn:aws:quicksight:ap-northeast-1:<AWSアカウントID>:dashboard/dashboard20230105", "VersionArn": "arn:aws:quicksight:ap-northeast-1:<AWSアカウントID>:dashboard/dashboard20230105/version/1", "DashboardId": "dashboard20230105", "CreationStatus": "CREATION_IN_PROGRESS", "RequestId": "c5b7fe10-ee7f-4de6-8355-eead18b627fc" }
4. Permissionの設定
これだけではコンソール画面にダッシュボードは表示されないため、Permissionの設定が必要となります。
permission.json
ファイルを作成し、以下のように設定します。
※PrincipalにはQuickSightで利用するユーザARNを指定します。今回はadministrator
とします。
[ { "Principal": "arn:aws:quicksight:ap-northeast-1:<AWSアカウントID>:user/default/administrator", "Actions": [ "quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:UpdateDashboardPermissions", "quicksight:QueryDashboard", "quicksight:UpdateDashboard", "quicksight:DeleteDashboard", "quicksight:DescribeDashboardPermissions", "quicksight:UpdateDashboardPublishedVersion" ] } ]
最後にPermissionの設定コマンドを実行します。
aws quicksight update-dashboard-permissions --aws-account-id <AWSアカウントID> --dashboard-id dashboard20230105 --grant-permissions file://permissions.json { "Status": 200, "DashboardArn": "arn:aws:quicksight:ap-northeast-1:<AWSアカウントID>:dashboard/dashboard20230105", "DashboardId": "dashboard20230105", "Permissions": [ { "Principal": "arn:aws:quicksight:ap-northeast-1:<AWSアカウントID>:user/default/administrator", "Actions": [ "quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:UpdateDashboardPermissions", "quicksight:QueryDashboard", "quicksight:UpdateDashboard", "quicksight:DeleteDashboard", "quicksight:DescribeDashboardPermissions", "quicksight:UpdateDashboardPublishedVersion" ] } ], "RequestId": "f672c7bc-854c-4edf-97bf-d03de21c026d",
以上でダッシュボードに新規に作成したダッシュボードが表示されます。
APIで作成したダッシュボードはグラフを1つにしていますので違いが分かります。
4. おわりに
以上でQuickSightのアップデート情報になります。
今回のアップデートでQuickSightのダッシュボードをIaCのように扱うことができるようになったのではないでしょうか。
マルチアカウント、マルチリージョンでダッシュボードを分ける、BIをコード管理できるなど非常に大きなアップデートだったのではと思います。