Amazon QuickSightのダッシュボードをコード化する方法と、コードから新たにダッシュボードを作成する方法を紹介します。
GUIのみでのダッシュボード作成とは異なり、以下のような利点があります。
AWSアカウントを跨いで同じビジュアルのダッシュボードを作成できる。
改修作業の度にダッシュボードをコード化しておくことで、ビジュアルのバージョン管理ができる。
ダッシュボードのコード化
AWS CLIが実行できる環境で、describe-dashboard-definitionコマンドを使用することでコード化ができます。
任意のファイルにリダイレクトしてjsonファイルにしましょう。
aws quicksight describe-dashboard-definition --aws-account-id 'AWSアカウントID' --dashboard-id 'ダッシュボードID' > '任意のファイル名'
オプションの'AWSアカウントID'には対象のダッシュボードが存在するAWSアカウントIDを設定して下さい。
ダッシュボードIDはlist-dashboardsコマンドから確認できる他、URLからも確認することができます。
コマンドから確認する場合
aws quicksight list-dashboards --aws-account-id 'AWSアカウントID'
URLから確認する場合

下の画像は出力したjsonファイルの冒頭部分。

コードからダッシュボードを作成
コマンド実行により生成されたファイルに対し以下の操作を行います。
以下のkeyを持つフィールドは削除
- Status
- ResourceStatus
- RequestId
以下のkeyを持つフィールドはvalueを任意の値に変更
- DashboardId
- Name
以下のkeyを持つフィールドはvalueを特定の値に変更
Definition > DataSetIdentifierDeclarations > DataSetArn
→ダッシュボード作成対象(可視化対象)のデータセットのARNに変更。
データセットのARNの内、リソースIDはlist-data-setsコマンドから確認できる他、URLからも確認できます。
コマンドから確認する場合
aws quicksight list-data-sets --aws-account-id 'AWSアカウントID'
URLから確認する場合

---jsonファイルの操作は以上です。---
ファイルの加工が終了したら、create-dashboardコマンドでダッシュボードを作成します。
aws quicksight create-dashboard --aws-account-id 'AWSアカウントID' --cli-input-json file://'加工したjsonファイル'
オプションの'AWSアカウントID'にはダッシュボードを作成する対象のAWSアカウントIDを設定して下さい。
※作成したダッシュボードを閲覧するには、参照するユーザーに対する「共有」の操作が必要になります。
実践
ダッシュボードをコード化し、データセットのみを変更して同一AWSアカウント内でダッシュボードを作成します。
ダッシュボードのコード化
ダッシュボードを作成し、コマンド実行。


ダッシュボードの作成から表示まで
jsonファイルを加工し、コマンド実行。

ダッシュボードを閲覧するユーザーに共有。

同じビジュアルで、データセットを差し替えたダッシュボードが作成できた。

その他
分析の作成
ダッシュボードから作成したコードを基に分析(Analysis)を作成することもできます。
計算フィールド、フィルタの扱い
コード化対象のダッシュボードに計算フィールドやフィルタを設定していた場合、コードにも反映されます。
コードから新たにダッシュボードを作成した場合、差し替えたデータセットを基に計算フィールド作成やフィルタ適用が行われます。
分析やダッシュボードの作成に失敗した場合
コードに不備がある状態で分析やダッシュボードの作成を行った場合、ユーザーへの共有操作でシステムエラーが発生したり、表示した際に以下のような文言が現れることがあります。

この場合、作成したアセットに対しdescribe-analysis-definitionまたはdescribe-dashboard-definitionコマンドを実行してコードを出力すると「Errors」というフィールドが追加されていることがあり、コード修正に役立てることが出来ます。
情報収集
「Assets as Code」で検索することで、Amazon QuickSightのコード化に関する情報を集めることができます。