CloudFormationテンプレートでQuickSightダッシュボードと分析を配布する

2022.03.15

この記事は公開されてから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に対応しているので、次回以降はデータセット作成部分も良い感じに作ってみたいと思います。