Como posso usar modelos para configurar o acesso entre contas no Amazon QuickSight?
Quero compartilhar meus conjuntos de dados e meu painel com outra conta da AWS no Amazon QuickSight.
Breve descrição
Você pode usar modelos para criar acesso entre contas para compartilhar sua análise e painel do Amazon QuickSight em outras contas e regiões da AWS. Você também pode usar os modelos para criar painéis ou outros modelos.
Conclua as etapas a seguir para fornecer acesso entre contas no QuickSight:
- Na Conta A, crie um novo modelo a partir de uma análise existente.
- Na Conta B, use o mesmo esquema da conta A para criar um conjunto de dados.
- Crie um painel na Conta B a partir do modelo na Conta A.
(Opcional) Crie um modelo na Conta B a partir do modelo existente na Conta A. Use essa opção se quiser passar recursos de uma conta para outra e remover os recursos da conta de origem.
Observação: este artigo usa a interface de linha de comando da AWS (AWS CLI) com as etapas para acesso entre contas. Se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Resolução
Crie um modelo na Conta A a partir de uma análise existente na mesma conta
-
Use o comando list-dashboards da AWS CLI para listar os painéis que estão disponíveis em sua conta:
aws quicksight list-dashboards --aws-account-id account_a_id
Observação: substitua account_a_id pelo ID da conta A.
-
Anote a ID do painel que você deseja compartilhar.
-
Use o comando describe-dashboard da AWS CLI para obter detalhes do painel:
aws quicksight describe-dashboard --aws-account-id account_a_id --dashboard-id dashboard_id
Observação: substitua dashboard_id pelo ID do seu painel.
-
Crie o arquivo JSON do modelo e inclua os ARNs da análise e do conjunto de dados:
{ "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" }
Observação: substitua aws_region pela sua região do AWS, analysis_id pelo ID da sua análise, dataset_name pelo nome do conjunto de dados e dataset_id pelo ID do conjunto de dados.
-
Crie um modelo na mesma região da sua análise:
aws quicksight create-template --aws-account-id account_a_id --template-id template_name --cli-input-json file://template.json --profile default
Observação: substitua template_name pelo nome do modelo da Conta A.
-
Execute o comando AWS CLI describe-template para confirmar que o modelo foi criado:
aws quicksight describe-template --aws-account-id account_a_id --template-id template_id
Observação: substitua template_id pelo ID do seu modelo. Confirme se a resposta do comando describe-template contém um status CREATION_SUCCESSFUL.
-
Anote o ARN do modelo na saída para usar em uma etapa posterior.
-
Use o comando update-template-permissions da AWS CLI para conceder a permissão LEITURA entre contas do modelo da Conta A para a Conta B:
aws quicksight update-template-permissions --aws-account-id account_a_id --template-id template_id --grant-permissions file://TemplatePermission.json
Exemplo de arquivo JSON de permissão:
[ { "Principal": "arn:aws:iam::account_b_id:root", "Actions": [ "quicksight:UpdateTemplatePermissions", "quicksight:DescribeTemplate" ] } ]
Observação: substitua account_b_id pelo ID da conta B. Para compartilhar o modelo com várias contas, inclua a raiz de todas as contas como a Entidade principal. Você pode compartilhar o modelo somente com a conta raiz. O elemento Entidade principal não oferece suporte aos perfis do AWS Identity and Access Management (IAM).
Use o mesmo esquema da Conta A para criar um conjunto de dados na Conta B
Não é possível criar um painel diretamente de um conjunto de dados que esteja em outra conta, como a Conta A. Em vez disso, você deve criar o mesmo conjunto de dados na conta em que deseja criar o painel, como a Conta B. Em seguida, crie o painel a partir do conjunto de dados recém-criado.
-
Use o console do Amazon QuickSight ou a AWS CLI para criar o conjunto de dados na Conta B.
Use o console do Amazon QuickSight
Para usar o console do Amazon QuickSight para criar o conjunto de dados, consulte Creating datasets.
Use a AWS CLI
Use o comando create-data-set AWS CLI para criar o conjunto de dados:
aws quicksight create-data-set --aws-account-id account_b_id --dataset-id dataset_name --cli-input-json file://datasetB.json
Exemplo de arquivo JSON de conjunto de dados:
{ "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" ] } ] }
Observação: substitua namespace pelo namespace e user_name pelo nome do usuário do QuickSight. O exemplo anterior se refere a um conjunto de dados SPICE.
-
Confirme se o conjunto de dados foi criado:
aws quicksight describe-data-set --aws-account-id account_b_id --data-set-id dataset_id
Confirme se a resposta do comando describe-data-set contém um código de status 201. O código de status 201 significa que o conjunto de dados foi criado com sucesso.
-
Anote o ARN do conjunto de dados da saída para usar em uma etapa posterior.
Crie um painel na Conta B a partir do modelo na Conta A
-
Execute o comando a seguir e inclua o ARN do modelo:
aws quicksight create-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id --name dashboard_name --source-entity file://DashboardFromTemplate.json
Observação: você pode adicionar o parâmetro --region target_region para criar o painel em uma região diferente. Substitua target_region pela região na qual você deseja criar o modelo.
Exemplo de arquivo JSON do painel para a Conta B:
{ "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" } }
No arquivo JSON do painel anterior:
- Em DatasetPlaceholder, você deve usar o mesmo nome do conjunto de dados do modelo da Conta A.
- Em DataSetARN, você pode usar o ARN do conjunto de dados que você criou na Conta B.
- Em Arn, você pode usar o ARN do modelo que você criou na Conta A.
-
Confirme se o painel foi criado:
aws quicksight describe-dashboard --aws-account-id account_b_id --dashboard-id dashboard_id
Observação: confirme se a resposta para o comando describe-dashboard contém um código de status 200. O código de status 200 significa que o painel existe.
-
Use o comando update-dashboard-permissions da AWS CLI para conceder as permissões apropriadas aos usuários do QuickSight:
aws quicksight update-dashboard-permissions --aws-account-id account_b_id --dashboard-id dashboard_id --grant-permissions file://DashboardPermission.json
Exemplo de arquivo JSON do painel:
[ { "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" ] } ]
No exemplo anterior do arquivo JSON do painel, o usuário do QuickSight recebe acesso de coproprietário. Para fornecer acesso somente de LEITURA aos usuários, especifique as seguintes permissões:
"quicksight:DescribeDashboard", "quicksight:ListDashboardVersions", "quicksight:QueryDashboard"
(Opcional) Crie um modelo na Conta B a partir do modelo existente na Conta A
-
Confirme se seu usuário ou perfil do IAM tem as permissões apropriadas. Você deve ter as seguintes permissões para acessar um modelo de várias contas no QuickSight:
{ "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" } ] }
-
Crie um novo modelo na Conta B a partir do modelo na Conta A:
aws quicksight create-template --aws-account-id account_b_id --template-id template_name --source-entity file://templateB.json
Observação: substitua template_name pelo nome do modelo da Conta B. Para criar um modelo em uma região diferente, adicione --region target_region.
Exemplo de arquivo JSON para a Conta B:
{ "SourceTemplate": { "Arn": "arn:aws:quicksight:region:account_a_id:template/template_id" } }
-
Confirme se o modelo foi criado:
aws quicksight describe-template --aws-account-id account_b_id --template-id template_id
Observação: confirme se a resposta do comando describe-template contém um status CREATION\ _SUCCESSFUL.
Informações relacionadas
Conteúdo relevante
- AWS OFICIALAtualizada há 9 meses
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há 9 meses