ダッシュボードの作成

ダッシュボードとは

「ダッシュボード」は、実際に閲覧する人がデータ分析するために、他のQuickSightユーザーと共有できる分析の読み取り専用スナップショットです。ダッシュボードにはフィルタリング, パラメータ, コントロール, 並べ替え順序など、発行時の分析設定が保存されます。分析に使用されたデータは、ダッシュボードの一部として取り込まれません。ダッシュボードを表示すると、分析で使用されるデータセットの現在のデータが反映されます。また、それぞれのダッシュボードにアクセス許可の設定も行えます。
QuickSight APIを使用し、同じアカウントでテンプレートからダッシュボードを作成したり、別のテナントやアカウント(本番環境など)にテンプレートからダッシュボードを作成したりすることが可能です(※ダッシュボードをコピーしたい時にも役立ちます)。今回は、メインのテナント(Default)で作成したダッシュボードを他のテナントに展開する形でダッシュボードを作成します。

QuickSightセットアップイメージ

Alt text

ダッシュボード定義JSON

  • ダッシュボードを展開するための定義を作成します。ここではダッシュボードで使用するデータセット, テンプレート, タグ, アクセス許可などを定義しています。
# NS1 Dashboard
cat <<EOF > create-dashboard-NS1.json
{
    "AwsAccountId": "$AWSACCOUNTID",
    "DashboardId": "QShandson-dashboard-NS1",
    "Name": "QShandson Dashboard-NS1",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/default/$IAMUSERNAME",
            "Actions": [
                "quicksight:DescribeDashboard",
                "quicksight:ListDashboardVersions",
                "quicksight:UpdateDashboardPermissions",
                "quicksight:QueryDashboard",
                "quicksight:UpdateDashboard",
                "quicksight:DeleteDashboard",
                "quicksight:DescribeDashboardPermissions",
                "quicksight:UpdateDashboardPublishedVersion"
            ]
        }
    ],
    "SourceEntity": {
        "SourceTemplate": {
            "DataSetReferences": [
                {
                    "DataSetPlaceholder": "QShandson-data-set",
                    "DataSetArn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dataset/NS1-Data-Set"
                }
            ],
            "Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:template/QShandson-template"
        }
    },
    "Tags": [
        {
            "Key": "Name",
            "Value": "QShandson-dashboard"
        }
    ],
    "VersionDescription": "1",
    "DashboardPublishOptions": {
        "AdHocFilteringOption": {
            "AvailabilityStatus": "ENABLED"
        },
        "ExportToCSVOption": {
            "AvailabilityStatus": "DISABLED"
        },
        "SheetControlsOption": {
            "VisibilityState": "EXPANDED"
        }
    }
}
EOF

# NS2 Dashboard
cat <<EOF > create-dashboard-NS2.json
{
    "AwsAccountId": "$AWSACCOUNTID",
    "DashboardId": "QShandson-dashboard-NS2",
    "Name": "QShandson Dashboard-NS2",
    "Permissions": [
        {
            "Principal": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:user/default/$IAMUSERNAME",
            "Actions": [
                "quicksight:DescribeDashboard",
                "quicksight:ListDashboardVersions",
                "quicksight:UpdateDashboardPermissions",
                "quicksight:QueryDashboard",
                "quicksight:UpdateDashboard",
                "quicksight:DeleteDashboard",
                "quicksight:DescribeDashboardPermissions",
                "quicksight:UpdateDashboardPublishedVersion"
            ]
        }
    ],
    "SourceEntity": {
        "SourceTemplate": {
            "DataSetReferences": [
                {
                    "DataSetPlaceholder": "QShandson-data-set",
                    "DataSetArn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dataset/NS2-Data-Set"
                }
            ],
            "Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:template/QShandson-template"
        }
    },
    "Tags": [
        {
            "Key": "Name",
            "Value": "QShandson-dashboard"
        }
    ],
    "VersionDescription": "1",
    "DashboardPublishOptions": {
        "AdHocFilteringOption": {
            "AvailabilityStatus": "ENABLED"
        },
        "ExportToCSVOption": {
            "AvailabilityStatus": "DISABLED"
        },
        "SheetControlsOption": {
            "VisibilityState": "EXPANDED"
        }
    }
}
EOF

ダッシュボード作成

create-dashboard.jsonを作成したフォルダで次のコマンドを実行し、QuickSightでダッシュボードが表示されることを確認します。

aws quicksight create-dashboard --cli-input-json file://create-dashboard-NS1.json
aws quicksight create-dashboard --cli-input-json file://create-dashboard-NS2.json

実行結果

以下のような出力があれば成功です。

aws quicksight create-dashboard --cli-input-json file://create-dashboard-NS1.json
{
    "Status": 202,
    "Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dashboard/QShandson-dashboard-NS1",
    "VersionArn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dashboard/QShandson-dashboard-NS1/version/1",
    "DashboardId": "QShandson-dashboard-NS1",
    "CreationStatus": "CREATION_IN_PROGRESS",
    "RequestId": "9075012d-6902-484a-8d42-7c99734277d0"
}
aws quicksight create-dashboard --cli-input-json file://create-dashboard-NS2.json
{
    "Status": 202,
    "Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dashboard/QShandson-dashboard-NS2",
    "VersionArn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dashboard/QShandson-dashboard-NS2/version/1",
    "DashboardId": "QShandson-dashboard-NS2",
    "CreationStatus": "CREATION_IN_PROGRESS",
    "RequestId": "c4427cc0-2bd8-487c-9d95-3b9695715d7f"
}

ダッシュボード詳細確認

QuickSightにダッシュボードが作られていることを確認します。QuickSightの画面から[ダッシュボード]をクリックします。
作成したダッシュボードQShandson Dashboard-NS1QShandson Dashboard-NS2が表示されます。

Alt text

それぞれのダッシュボードをクリックすると内容が表示されます。
ここでは、それぞれのダッシュボードでデータを分離しているため、テナントNS1側にはNorth Hospitalのデータが、テナントNS2側にはSouth HospitalDowntown Hospitalのデータが表示され、同じダッシュボードでもデータが分離できていることが確認できます。

Alt text

Alt text

ダッシュボード確認(コマンド)

ダッシュボードの状態はコマンドでも確認が可能です。

aws quicksight describe-dashboard --aws-account-id $AWSACCOUNTID --dashboard-id 'QShandson-dashboard-NS1'
aws quicksight describe-dashboard --aws-account-id $AWSACCOUNTID --dashboard-id 'QShandson-dashboard-NS2'

実行結果

以下のような結果が表示されます。

aws quicksight describe-dashboard --aws-account-id $AWSACCOUNTID --dashboard-id 'QShandson-dashboard-NS1'
{
    "Status": 200,
    "Dashboard": {
        "DashboardId": "QShandson-dashboard-NS1",
        "Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dashboard/QShandson-dashboard-NS1",
        "Name": "QShandson Dashboard-NS1",
        "Version": {
            "CreatedTime": 1600107062.722,
            "Errors": [],
            "VersionNumber": 1,
            "Status": "CREATION_SUCCESSFUL",
            "SourceEntityArn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:template/QShandson-template/version/1",
            "DataSetArns": [
                "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dataset/NS1-Data-Set"
            ],
            "Description": "1",
            "ThemeArn": "arn:aws:quicksight::aws:theme/SEASIDE"
        },
        "CreatedTime": 1600107062.585,
        "LastPublishedTime": 1600107062.585,
        "LastUpdatedTime": 1600107062.722
    },
    "RequestId": "136d5349-544f-49ee-877f-f8ee3ab31ada"
}
aws quicksight describe-dashboard --aws-account-id $AWSACCOUNTID --dashboard-id 'QShandson-dashboard-NS2'
{
    "Status": 200,
    "Dashboard": {
        "DashboardId": "QShandson-dashboard-NS2",
        "Arn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dashboard/QShandson-dashboard-NS2",
        "Name": "QShandson Dashboard-NS2",
        "Version": {
            "CreatedTime": 1600107064.293,
            "Errors": [],
            "VersionNumber": 1,
            "Status": "CREATION_SUCCESSFUL",
            "SourceEntityArn": "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:template/QShandson-template/version/1",
            "DataSetArns": [
                "arn:aws:quicksight:us-east-1:$AWSACCOUNTID:dataset/NS2-Data-Set"
            ],
            "Description": "1",
            "ThemeArn": "arn:aws:quicksight::aws:theme/SEASIDE"
        },
        "CreatedTime": 1600107064.15,
        "LastPublishedTime": 1600107064.15,
        "LastUpdatedTime": 1600107064.293
    },
    "RequestId": "813ac114-d35f-4c61-a2db-67cde87ef4f5"
}