この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
いわさです。
以前、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に対応しているので、次回以降はデータセット作成部分も良い感じに作ってみたいと思います。