AWS Quicksight - Embedding Dashboard

Você também pode incorporar seus painéis Quicksight em aplicativos externos / páginas da web ou pode controlar o acesso do usuário usando o serviço AWS Cognito. Para executar o controle do usuário, você pode criar pool de usuários e pool de identidade no Cognito e atribuir políticas de painel de incorporação ao pool de identidade.

O AWS Cognito é um serviço IAM que permite aos administradores criar e gerenciar usuários temporários para fornecer acesso aos aplicativos. Com o uso de pool de identidade, você pode gerenciar permissões nesses pools de usuários.

Vamos ver como podemos gerar URL de painel seguro e realizar o controle do usuário -

Etapa 1 - Criação de pools de usuários e usuários

Crie um pool de usuários no AWS Cognito e crie usuários. Vamos paraAmazon Cognito → Manage User Pools → Create a User Pool.

Etapa 2 - Criação de um pool de identidade

Quando o pool de usuários é criado, a próxima etapa é criar um pool de identidade. Vamos parahttps://console.aws.amazon.com/cognito/home?region=us-east-1

Clique em “Create New Identity Pool”.

Insira o nome apropriado de um pool de identidade. Vá para a seção Provedores de autenticação e selecione a opção “Cognito”.

Etapa 3 - Criação de funções Cognito

Insira o User Pool ID (seu User pool ID) e o App Client ID (vá para App Clients no pool de usuários e copie o ID).

Em seguida, clique em 'Criar Pool' e clique em 'Permitir' para criar funções do pool de identidade no IAM. Ele criará 2 funções Cognito.

Etapa 4 - Atribuição de política personalizada

A próxima etapa é atribuir uma política personalizada às funções de identidade criadas na etapa acima -

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Action": "quicksight:RegisterUser",
         "Resource": "*",
         "Effect": "Allow"
      },
      {
         "Action": "quicksight:GetDashboardEmbedUrl",
         "Resource": "*",
         "Effect": "Allow"
      },
      {
         "Action": "sts:AssumeRole",
         "Resource": "*",
         "Effect": "Allow"
      }
   ]
}

Você pode passar o painel Amazon Resource Name (ARN) sob quicksight: GetDashboardEmbedUrl ”em vez de“ * ”para restringir o usuário a acessar apenas um painel.

Etapa 5 - Login no aplicativo Cognito

A próxima etapa é fazer login no aplicativo Cognito com as credenciais do usuário no pool de usuários. Quando o usuário faz login no aplicativo, o Cognito gera 3 tokens -

  • IDToken
  • AccessToken
  • Atualizar token

Para criar um usuário IAM temporário, as credenciais são as mostradas abaixo -

AWS.config.region = 'us-east-1';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
   IdentityPoolId:"Identity pool ID", Logins: {
      'cognito-idp.us-east-1.amazonaws.com/UserPoolID': AccessToken
   }
});

Para gerar credenciais IAM temporárias, você precisa chamar o método de função sts.assume com os parâmetros abaixo -

var params = {
   RoleArn: "Cognito Identity role arn", RoleSessionName: "Session name"
};
sts.assumeRole(params, function (err, data) {
   if (err) console.log( err, err.stack); 
   // an error occurred
   else {
      console.log(data);
   })
}

Etapa 6 - Registrando o usuário no Quicksight

A próxima etapa é registrar o usuário no Quicksight usando “quicksight.registerUser” para credenciais geradas na etapa 3 com os parâmetros abaixo -

var params = {
   AwsAccountId: “account id”,
   Email: 'email',
   IdentityType: 'IAM' ,
   Namespace: 'default',
   UserRole: ADMIN | AUTHOR | READER | RESTRICTED_AUTHOR | RESTRICTED_READER,
   IamArn: 'Cognito Identity role arn',
   SessionName: 'session name given in the assume role creation',
};
quicksight.registerUser(params, function (err, data1) {
   if (err) console.log("err register user”); 
   // an error occurred
   else {
      // console.log("Register User1”);
   }
})

Etapa 7 - Atualizar o arquivo de configuração da AWS

O próximo passo é atualizar a configuração da AWS para o usuário gerado na etapa 5.

AWS.config.update({
   accessKeyId: AccessToken,
   secretAccessKey: SecretAccessKey ,
   sessionToken: SessionToken,
   "region": Region
});

Etapa 8 - Gerando URL de incorporação para o painel Quicksight

Com as credenciais criadas na etapa 5, chame o quicksight.getDashboardEmbedUrl com os parâmetros abaixo para gerar o URL.

var params = {
   AwsAccountId: "Enter AWS account ID",
   DashboardId: "Enter dashboard Id",
   IdentityType: "IAM",
   ResetDisabled: true,
   SessionLifetimeInMinutes: between 15 to 600 minutes,
   UndoRedoDisabled: True | False
}
quicksight.getDashboardEmbedUrl(params,function (err, data) {
   if (!err) {
      console.log(data);
   } else {
      console.log(err);
   }
});

Você deve chamar “QuickSightEmbedding.embedDashboard” de seu aplicativo usando o URL gerado acima.

Como o Amazon Quicksight, o painel integrado também oferece suporte aos seguintes recursos -

  • Opção de detalhamento
  • Ações personalizadas (link para uma nova guia)
  • Filtros na tela
  • Baixar para CSV
  • Classificando em recursos visuais
  • Inclusão de relatório por e-mail
  • Redefinir painel para a opção padrão
  • Desfazer / refazer ações no painel