Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
テンプレートを使用して Quick Sight でクロスアカウントアクセスを設定する方法を教えてください。
データセットとダッシュボードを Amazon Quick Sight の別の AWS アカウントと共有したいと考えています。
簡単な説明
テンプレートを使用してクロスアカウントアクセスを作成し、Quick Sight 分析とダッシュボードを他の AWS アカウントや AWS リージョンと共有できます。テンプレートを使用してダッシュボードやその他のテンプレートを作成することもできます。
Quick Sight でクロスアカウントアクセスを提供するには、次の手順を実行します。
- アカウント A で、既存の分析から新しいテンプレートを作成します。
- アカウント B で、アカウント A と同じスキーマを使用してデータセットを作成します。
- アカウント A のテンプレートからアカウント B のダッシュボードを作成します。
(オプション) アカウント A の既存のテンプレートからアカウント B にテンプレートを作成します。このオプションは、あるアカウントから別のアカウントにリソースを移動し、ソースアカウントからリソースを削除する場合に使用します。
**注:**この記事では、AWS コマンドラインインターフェイス (AWS CLI) とクロスアカウントアクセスの手順を使用します。AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
解決策
同じアカウントの既存の分析からアカウント A にテンプレートを作成する
-
list-dashboards AWS CLI コマンドを使用して、アカウントで利用できるダッシュボードを一覧表示します。
aws quicksight list-dashboards --aws-account-id account_a_id**注:**account_a_id をアカウント A の ID に置き換えます。
-
共有するダッシュボードの ID を書き留めておきます。
-
describe-dashboard AWS CLI コマンドを使用して、ダッシュボードから詳細を取得します。
aws quicksight describe-dashboard --aws-account-id account_a_id --dashboard-id dashboard_id**注:**dashboard_id をダッシュボードの ID に置き換えてください。
-
テンプレートの JSON ファイルを作成し、分析とデータセットの ARN を含めます。
{ "SourceEntity": { "SourceAnalysis": { "Arn": "arn:aws:quicksight:aws_region:account_a_id:analysis/analysis_id", "DataSetReferences": [ { "DataSetPlaceholder": "dataset_name", "DataSetArn": "arn:aws:quicksight:aws_region:account_a_id:dataset/dataset_id" } ] } }, "VersionDescription": "1" }**注:**aws_region を AWS リージョンに、analysis_id を分析の ID に、dataset_name をデータセット名に、dataset_id をデータセット ID に置き換えます。
-
分析と同じ地域でテンプレートを作成します。
aws quicksight create-template --aws-account-id account_a_id --template-id template_name --cli-input-json file://template.json --profile default**注:**template_name をアカウント A のテンプレートの名前に置き換えます。
-
AWS CLI コマンド describe-template を実行して、テンプレートが作成されたことを確認します。
aws quicksight describe-template --aws-account-id account_a_id --template-id template_id**注:**template_id をテンプレートの ID に置き換えます。describe-template コマンドのレスポンスに CREATION\ _SUCCESSFUL ステータスが含まれていることを確認します。
-
後のステップで使用できるように、出力からテンプレートの ARN を書き留めておきます。
-
update-template-permissions AWS CLI コマンドを使用して、アカウント A のテンプレートからアカウント B にクロスアカウント読み取り権限を付与します。
aws quicksight update-template-permissions --aws-account-id account_a_id --template-id template_id --grant-permissions file://TemplatePermission.json権限 JSON ファイルの例:
[ { "Principal": "arn:aws:iam::account_b_id:root", "Actions": [ "quicksight:UpdateTemplatePermissions", "quicksight:DescribeTemplate" ] } ]注:account_b_id をアカウント B の ID に置き換えます。テンプレートを複数のアカウントと共有するには、すべてのアカウントのルートをプリンシパルとして含めます。テンプレートは root アカウントとのみ共有できます。プリンシパル 要素は AWS ID およびアクセス管理 (IAM) ロールをサポートしていません。
アカウント A と同じスキーマを使用して、アカウント B にデータセットを作成します。
アカウント A などの別のアカウントのデータセットから直接ダッシュボードを作成することはできません。代わりに、アカウント B など、ダッシュボードを作成するアカウントで同じデータセットを作成する必要があります。次に、新しく作成したデータセットからダッシュボードを作成します。
-
Amazon Quick Sight コンソールまたは AWS CLI のいずれかを使用して、アカウント B にデータセットを作成します。
Amazon Quick Sight コンソールを使用する
Amazon Quick Sight コンソールを使用してデータセットを作成するには、「データセットの作成」を参照してください。
AWS CLI を使用する
Create-data-set AWS CLI コマンドを使用してデータセットを作成します。
aws quicksight create-data-set --aws-account-id account_b_id --dataset-id dataset_name --cli-input-json file://datasetB.jsonデータセット JSON ファイルの例:
{ "Name": "dataset_name", "PhysicalTableMap": { "Physicaltablename": { "RelationalTable": { "DataSourceArn": "arn:aws:quicksight:aws_region:account_b_id:datasource/datasource_id", "Schema": "schema_name", "Name": "table_name", "InputColumns": [ { "Name": "column_name", "Type": "STRING"|"INTEGER"|"DECIMAL"|"DATETIME"|"BIT"|"BOOLEAN"|"JSON" } ] } } }, "LogicalTableMap": { "Logicaltablename": { "Alias": "any_alias", "DataTransforms": [ { "ProjectOperation": { "ProjectedColumns": [ "column_name", "column_name" ] } } ], "Source": { "PhysicalTableId": "Physicaltablename" } } }, "ImportMode": "SPICE", "Permissions": [ { "Principal": "arn:aws:quicksight:aws_region:account_b_id:user/namespace/user_name", "Actions": [ "quicksight:UpdateDataSetPermissions", "quicksight:DescribeDataSet", "quicksight:DescribeDataSetPermissions", "quicksight:PassDataSet", "quicksight:DescribeIngestion", "quicksight:ListIngestions", "quicksight:UpdateDataSet", "quicksight:DeleteDataSet", "quicksight:CreateIngestion", "quicksight:CancelIngestion" ] } ] }**注:**namespace を自分の名前空間に置き換え、user_name を Quick Sight ユーザーの名前に置き換えます。上記の例は SPICE データセットを参照しています。
-
データセットが正常に作成されたことを確認します。
aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_iddescribe-data-set コマンドの応答にステータスコード 201 が含まれていることを確認します。ステータスコード 201 は、データセットが正常に作成されたことを意味します。
-
後のステップで使用できるように、出力からデータセットの ARN を書き留めておきます。
アカウント A のテンプレートからアカウント B のダッシュボードを作成します
-
以下のコマンドを実行し、テンプレートの ARN を含めます。
aws quicksight create-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id --name dashboard_name --source-entity file://DashboardFromTemplate.json注:****--region target_region パラメーターを追加して、別のリージョンにダッシュボードを作成できます。target_region を、テンプレートを作成したいリージョンに置き換えます。
アカウント B のダッシュボード JSON ファイルの例:
{ "SourceTemplate": { "DataSetReferences": [ { "DataSetPlaceholder": "dataset_name", "DataSetArn": "arn:aws:quicksight:aws_region:account_b_id:dataset/dataset_id" } ], "Arn": "arn:aws:quicksight:aws_region:account_a_id:template/template_id" } }前述のダッシュボード JSON ファイルでは、
- DataSetPlaceholder には、アカウントAのテンプレートと同じデータセット名を使用する必要があります。
- DataSetARN には、アカウント B で作成したデータセットの ARN を使用できます。
- Arn には、アカウント A で作成したテンプレートの ARN を使用できます。
-
ダッシュボードが正常に作成されたことを確認します。
aws quicksight describe-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id**注:**describe-dashboard コマンドの応答にステータスコード 200 が含まれていることを確認します。ステータスコード 200 は、ダッシュボードが存在することを意味します。
-
update-dashboard-permissions AWS CLI コマンドを使用して、Quick Sight ユーザーに適切なアクセス許可を付与します。
aws quicksight update-dashboard-permissions --aws-account-id account_b_id --dashboard-id dashboard_id --grant-permissions file://DashboardPermission.jsonダッシュボード JSON ファイルの例:
[ { "Principal": "arn:aws:quicksight:aws_region:account_b_id:user/namespace/quicksight_user_name", "Actions": [ "quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:UpdateDashboardPermissions", "quicksight:QueryDashboard", "quicksight:UpdateDashboard", "quicksight:DeleteDashboard", "quicksight:DescribeDashboardPermissions", "quicksight:UpdateDashboardPublishedVersion" ] } ]前述のダッシュボード JSON ファイルの例では、Quick Sight ユーザーには共同所有者アクセスが付与されています。ユーザーに読み取り専用アクセスを提供するには、次のアクセス許可を指定します。
"quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:QueryDashboard"
(オプション) アカウント A の既存のテンプレートからアカウント B のテンプレートを作成する
-
IAM ユーザーまたはロールに適切なアクセス許可があることを確認します。Quick Sight のクロスアカウントテンプレートにアクセスするには、次のアクセス許可が必要です。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:quicksight:aws_region:account_a_id:template/template_id", "Action": "quicksight:DescribeTemplate" }, { "Effect": "Allow", "Resource": "*", "Action": "quicksight:CreateTemplate" } ] } -
アカウント A のテンプレートからアカウント B に新しいテンプレートを作成します。
aws quicksight create-template --aws-account-id account_b_id --template-id template_name --source-entity file://templateB.json注:template_name をアカウント B のテンプレートの名前に置き換えます。別のリージョンでテンプレートを作成するには、--region target_region を追加します。
アカウント B の JSON ファイルの例:
{ "SourceTemplate": { "Arn": "arn:aws:quicksight:region:account_a_id:template/template_id" } } -
テンプレートが作成されたことを確認します。
aws quicksight describe-template --aws-account-id account_b_id --template-id template_id**注:**describe-template コマンドのレスポンスに CREATION_SUCCESSFUL ステータスが含まれていることを確認します。
関連情報
- 言語
- 日本語

関連するコンテンツ
- 質問済み 1年前
- 質問済み 1年前