Como configuro o acesso entre contas usando modelos no Amazon QuickSight?

7 minuto de leitura
0

Quero compartilhar meus conjuntos de dados e meu painel com outra conta da AWS no Amazon QuickSight. Como posso fazer isso?

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:

  1. Em uma conta (Conta A), crie um novo modelo a partir de uma análise existente.
  2. Em outra conta (Conta B), crie um conjunto de dados usando o mesmo esquema na Conta A.
  3. 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 descreve as etapas para acesso entre contas usando a AWS Command Line Interface (AWS CLI). Se você receber erros ao executar comandos da AWS CLI, verifique se está utilizando 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

1.    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.

2.    Anote o ID do painel que você deseja compartilhar.

3.    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.

4.    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 da AWS, analysis_id pelo ID da sua análise, dataset_name pelo nome do conjunto de dados e dataset_id pelo ID do seu conjunto de dados.

5.    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.

6.    Confirme se o modelo foi criado executando o comando describe-template da AWS CLI:

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.

7.    Anote o ARN do modelo na saída para usar em uma etapa posterior.

8.    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).

Crie um conjunto de dados na Conta B usando o mesmo esquema da Conta A

Você não pode criar um painel diretamente de um conjunto de dados que está em outra conta (Conta A). Você deve criar o mesmo conjunto de dados na conta em que deseja criar o painel (Conta B). Em seguida, crie o painel a partir do conjunto de dados recém-criado.

1.    Crie o conjunto de dados na Conta B.

Como usar o console do Amazon QuickSight

Consulte Criação de conjuntos de dados.

Como usar a AWS CLI

Use o comando create-data-set da AWS CLI:

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.

2.    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.

3.    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

1.    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 criar o painel em uma região diferente adicionando o parâmetro --region target_region. 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.

2.    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.

3.    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

1.    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"
   }
 ]
}

2.    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"
    }
}

3.    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

Migre o Amazon QuickSight entre contas da AWS

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos