CloudFormationテンプレートでQuickSightダッシュボードと分析を配布する
いわさです。
以前、QuickSightのテンプレート機能を使って、他の環境へ作成した分析を配布しました。
実はQuickSightはCloudFormationに対応しており、上記記事相当のことであればQuickSightからも実現が出来ます。
作成可能リソースとテンプレート
本日時点で以下のリソースを作成することが出来ます。
- AWS::QuickSight::Analysis
- AWS::QuickSight::Dashboard
- AWS::QuickSight::DataSet
- AWS::QuickSight::DataSource
- AWS::QuickSight::Template
- AWS::QuickSight::Theme
本日は既存の分析から既にテンプレートが作成されており、配布先にデータセットが作成済みであることを前提に、分析とダッシュボードを作成してみます。
AWSTemplateFormatVersion: 2010-09-09 Description: --- Parameters: AnalysisName: Type: String Default: hoge20220315analysis2 Description: --- UserPrincipal: Type: String Default: arn:aws:quicksight:ap-northeast-1:111111111111:user/default/cm-iwasa.takahito/cm-iwasa.takahito Description: --- SourceTemplateArn: Type: String Default: arn:aws:quicksight:ap-northeast-1:222222222222:template/hoge20220130template Description: --- DataSetArn: Type: String Default: arn:aws:quicksight:ap-northeast-1:111111111111:dataset/093889b6-0ad3-4258-9ad3-8aa6e590a958 Description: --- Resources: Analytisis: Type: AWS::QuickSight::Analysis Properties: AnalysisId: !Sub ${AnalysisName}-id Name: !Ref AnalysisName AwsAccountId: !Ref AWS::AccountId Permissions: - Principal: !Ref UserPrincipal Actions: - quicksight:RestoreAnalysis - quicksight:UpdateAnalysisPermissions - quicksight:DeleteAnalysis - quicksight:DescribeAnalysisPermissions - quicksight:QueryAnalysis - quicksight:DescribeAnalysis - quicksight:UpdateAnalysis SourceEntity: SourceTemplate: Arn: !Ref SourceTemplateArn DataSetReferences: - DataSetArn: !Ref DataSetArn DataSetPlaceholder: hogedatasetplaceholder Dashboard: Type: AWS::QuickSight::Dashboard Properties: AwsAccountId: !Ref AWS::AccountId DashboardId: !Sub ${AnalysisName}-dashboard-id Name: !Sub ${AnalysisName}-dashboard Permissions: - Principal: !Ref UserPrincipal Actions: - quicksight:DescribeDashboard - quicksight:ListDashboardVersions - quicksight:UpdateDashboardPermissions - quicksight:QueryDashboard - quicksight:UpdateDashboard - quicksight:DeleteDashboard - quicksight:DescribeDashboardPermissions - quicksight:UpdateDashboardPublishedVersion DashboardPublishOptions: AdHocFilteringOption: AvailabilityStatus: ENABLED ExportToCSVOption: AvailabilityStatus: DISABLED SheetControlsOption: VisibilityState: EXPANDED SourceEntity: SourceTemplate: Arn: !Ref SourceTemplateArn DataSetReferences: - DataSetArn: !Ref DataSetArn DataSetPlaceholder: hogedatasetplaceholder
ポイントとして、作成する分析やダッシュボードには権限が必要になるのでQuickSightユーザーARNをパラメータに指定するようにしています。
list-users — AWS CLI 2.4.25 Command Reference
テンプレートARNについては冒頭の記事を参考に、またデータセットについては以下の内容のCSVファイルからアップロードでデータセットを作成します。
hoge1,hoge2 aaa,111 bbb,222 ccc,333
デプロイされた分析
デプロイされたダッシュボード
なお、ダッシュボードには少しオプションがあって、DashboardPublishOptions
オプションを使うことで機能のON/OFFをコントロール出来ます。
AvailabilityStatus for AdHocFilteringOption - This status can be either ENABLED or DISABLED. When this is set to DISABLED, Amazon QuickSight disables the left filter pane on the published dashboard, which can be used for ad hoc (one-time) filtering. This option is ENABLED by default.
AvailabilityStatus for ExportToCSVOption - This status can be either ENABLED or DISABLED. The visual option to export data to .CSV format isn't enabled when this is set to DISABLED. This option is ENABLED by default.
VisibilityState for SheetControlsOption - This visibility state can be either COLLAPSED or EXPANDED. This option is COLLAPSED by default.
さいごに
良いですね、これは結構最高なのでは。
この方法だと、要件を満たすデータセットを所有できていれば、事前に作り込んだおいたQuickSightダッシュボードをCloudFormationテンプレートで配布することが出来ます。
データセットもCloudFormationに対応しているので、次回以降はデータセット作成部分も良い感じに作ってみたいと思います。