AWS コマンドからの QuickSight の操作

AWSクラウド

AWS コマンドを利用して QuickSightテンプレートダッシュボード分析を操作する手順を解説いたします。

AWS CLI Command Reference
https://docs.aws.amazon.com/cli/latest/reference/quicksight/

Amazon QuickSight Developer Guide
https://docs.aws.amazon.com/ja_jp/quicksight/latest/developerguide/welcome.html


AWS コマンドの実行環境については以下を参照してください。

参考: IAM ユーザーを利用した AWS CLI の実行


ポリシーの追加
コマンドの実行にはポリシーの追加が必要です。
コマンドを実行する IAM ユーザーに実行するコマンドのポリシーを追加します。
以下は記述例です。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "VisualEditor0",
			"Effect": "Allow",
			"Action": [
				"quicksight:PassDataSet",
				"quicksight:ListTemplates",
				"quicksight:DescribeTemplate",
				"quicksight:DeleteTemplate",
				"quicksight:UpdateTemplate",
				"quicksight:CreateTemplate",

				"quicksight:ListAnalyses",
				"quicksight:DescribeAnalysis",
				"quicksight:DeleteAnalysis",
				"quicksight:UpdateAnalysis",
				"quicksight:CreateAnalysis",
				"quicksight:UpdateAnalysisPermissions",
				"quicksight:RestoreAnalysis",
				"quicksight:DescribeAnalysisPermissions",

				"quicksight:ListDashboards",
				"quicksight:DescribeDashboard",
				"quicksight:DeleteDashboard",
				"quicksight:UpdateDashboard",
				"quicksight:CreateDashboard",
				"quicksight:UpdateDashboardPermissions",
				"quicksight:DescribeDashboardPermissions",
				"quicksight:UpdateDashboardPublishedVersion"
			],
			"Resource": [
				"arn:aws:quicksight:ap-northeast-1:123456789012:dataset/*",
				"arn:aws:quicksight:ap-northeast-1:123456789012:template/*",
				"arn:aws:quicksight:ap-northeast-1:123456789012:analysis/*",
				"arn:aws:quicksight:ap-northeast-1:123456789012:dashboard/*",
				"arn:aws:quicksight:ap-northeast-1:123456789012:user/default/*"
			]
		},
	]
}

細かなポリシー設定が面倒であれば、セキュリティリスクを十分考慮した上で*(すべて)を許可しても良いでしょう。

"Action": [
	"quicksight:*",
]


テンプレートの操作
テンプレート操作のコマンド例は以下の通りです。

# テンプレートの一覧
>aws quicksight list-templates --aws-account-id {アカウントID}

# テンプレートの参照
>aws quicksight describe-template --aws-account-id {アカウントID} --template-id {テンプレートID}

# テンプレートの削除
>aws quicksight delete-template --aws-account-id {アカウントID} --template-id {テンプレートID}

# テンプレートの更新
>aws quicksight update-template --aws-account-id {アカウントID} --template-id {テンプレートID} --source-entity file://{ファイル名}
>aws quicksight update-template --aws-account-id {アカウントID} --template-id {テンプレートID} --source-entity '{JSON形式の定義}'

# テンプレートの作成
>aws quicksight create-template --aws-account-id {アカウントID} --template-id {テンプレートID} --source-entity file://{ファイル名}
>aws quicksight create-template --aws-account-id {アカウントID} --template-id {テンプレートID} --source-entity '{JSON形式の定義}'

テンプレートの作成・更新でSourceEntityを指定する場合、2通りの方法があります。
以下は--source-entityにファイル名を指定する場合の JSON ファイルの記述例です。

{
	"SourceAnalysis": {
		"Arn": "arn:aws:quicksight:{リージョン}:{アカウントID}:analysis/{元となる分析のID}",
		"DataSetReferences": [
			{
				"DataSetPlaceholder": "{データセット名}",
				"DataSetArn": "arn:aws:quicksight:{リージョン}:{アカウントID}:dataset/{データセットID}"
			}
		]
	}
}

以下は--source-entityに直接SourceEntityの定義を指定する場合の例です。
ファイル指定の場合の内容をそのまま指定する感じです。

>aws quicksight create-template --aws-account-id 123456789012 --template-id templateId \
--source-entity \
'{
	"SourceAnalysis": {
		"Arn": "arn:aws:quicksight:{リージョン}:{アカウントID}:analysis/{元となる分析のID}",
		"DataSetReferences": [
			{
				"DataSetPlaceholder": "{データセット名}",
				"DataSetArn": "arn:aws:quicksight:{リージョン}:{アカウントID}:dataset/{データセットID}"
			}
		]
	}
}'


分析の操作
分析操作のコマンド例は以下の通りです。

# 分析の一覧・参照・削除
>aws quicksight list-analyses --aws-account-id {アカウントID}
>aws quicksight describe-analysis --aws-account-id {アカウントID} --analysis-id {分析ID}
>aws quicksight delete-analysis --aws-account-id {アカウントID} --analysis-id {分析ID}

# 分析の更新
>aws quicksight update-analysis --aws-account-id {アカウントID} --analysis-id {分析ID} --name {分析名} --source-entity  file://{ファイル名}
>aws quicksight update-analysis --aws-account-id {アカウントID} --analysis-id {分析ID} --name {分析名} --source-entity '{JSON形式の定義}'

# 分析の作成
>aws quicksight create-analysis --aws-account-id {アカウントID} --analysis-id {分析ID} --name {分析名} --source-entity  file://{ファイル名} --permissions file://{ファイル名}
>aws quicksight create-analysis --aws-account-id {アカウントID} --analysis-id {分析ID} --name {分析名} --source-entity '{JSON形式の定義}' --permissions '{JSON形式の定義}'

# 分析のアクセス権の更新(コンソールからの操作)
>aws quicksight update-analysis-permissions --aws-account-id {アカウントID} --analysis-id {分析ID} --grant-permissions file://file://{ファイル名}
>aws quicksight update-analysis-permissions --aws-account-id {アカウントID} --analysis-id {分析ID} --grant-permissions '{JSON形式の定義}'

以下は分析の作成・更新で--source-entityにファイル名を指定する場合の JSON ファイルの記述例です。

{
	"SourceTemplate": {
		"Arn": "arn:aws:quicksight:{リージョン}:{アカウントID}:template/{元となるテンプレートのID}",
		"DataSetReferences": [
			{
				"DataSetPlaceholder": "{データセット名}",
				"DataSetArn": "arn:aws:quicksight:{リージョン}:{アカウントID}:dataset/{データセットID}"
			}
		]
	}
}

以下は分析の作成の--permissionsやアクセス権更新の--grant-permissionsにファイル名を指定する場合の JSON ファイルの記述例です。

[
	# コンソールからの操作者に本ダッシュボードが参照・操作できるよう権限を設定
	# ここではadminグループに属する者に権限を与えている
	{
		"Principal": "arn:aws:quicksight:{リージョン}:{アカウントID}:group/default/admin",
		"Actions": [
			"quicksight:QueryAnalysis",
			"quicksight:DescribeAnalysis",
			"quicksight:DeleteAnalysis",
			"quicksight:UpdateAnalysis",
			"quicksight:RestoreAnalysis",
			"quicksight:DescribeAnalysisPermissions",
			"quicksight:UpdateAnalysisPermissions"
		]
	}
]


ダッシュボードの操作
ダッシュボード操作のコマンド例は以下の通りです。

# ダッシュボードの一覧・参照・削除
>aws quicksight list-dashboards --aws-account-id {アカウントID}
>aws quicksight describe-dashboard --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID}
>aws quicksight delete-dashboard --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID}

# ダッシュボードの更新
>aws quicksight update-dashboard --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID} --name {ダッシュボード名} --source-entity  file://{ファイル名}
>aws quicksight update-dashboard --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID} --name {ダッシュボード名} --source-entity '{JSON形式の定義}'

# ダッシュボードの作成
>aws quicksight create-dashboard --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID} --name {ダッシュボード名} --source-entity  file://{ファイル名} --permissions file://{ファイル名}
>aws quicksight create-dashboard --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID} --name {ダッシュボード名} --source-entity '{JSON形式の定義}' --permissions '{JSON形式の定義}'

# ダッシュボードのアクセス権の更新(ダッシュボードの共有+コンソールからの操作)
>aws quicksight update-dashboard-permissions --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID} --grant-permissions file://file://{ファイル名}
>aws quicksight update-dashboard-permissions --aws-account-id {アカウントID} --dashboard-id {ダッシュボードID} --grant-permissions '{JSON形式の定義}'

以下はダッシュボードの作成・更新で--source-entityにファイル名を指定する場合の JSON ファイルの記述例です。

{
	"SourceTemplate": {
		"Arn": "arn:aws:quicksight:{リージョン}:{アカウントID}:template/{元となるテンプレートのID}",
		"DataSetReferences": [
			{
				"DataSetPlaceholder": "{データセット名}",
				"DataSetArn": "arn:aws:quicksight:{リージョン}:{アカウントID}:dataset/{データセットID}"
			}
		]
	}
}

以下はダッシュボードの作成の--permissionsやアクセス権更新の--grant-permissionsにファイル名を指定する場合の JSON ファイルの記述例です。

[
	# コンソールからの操作者に本ダッシュボードが参照・操作できるよう権限を設定
	# ここではadminグループに属する者に権限を与えている
	{
		"Principal": "arn:aws:quicksight:{リージョン}:{アカウントID}:group/default/admin",
		"Actions": [
			"quicksight:QueryDashboard",
			"quicksight:ListDashboardVersions",
			"quicksight:DescribeDashboard",
			"quicksight:DeleteDashboard",
			"quicksight:UpdateDashboard",
			"quicksight:DescribeDashboardPermissions",
			"quicksight:UpdateDashboardPermissions",
			"quicksight:UpdateDashboardPublishedVersion"
		]
	},
	# QuickSight ユーザーに本ダッシュボードが参照できるよう権限を設定(ダッシュボードの共有)
	{
		"Principal": "arn:aws:quicksight:a{リージョン}:{アカウントID}:user/default/{ユーザー名}",
		"Actions": [
			"quicksight:QueryDashboard",
			"quicksight:DescribeDashboard",
			"quicksight:ListDashboardVersions"
		]
	}
]

コメント