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