Configurar credenciais da AWS usando o Amazon Cognito para DynamoDB - Amazon DynamoDB

Configurar credenciais da AWS usando o Amazon Cognito para DynamoDB

A maneira recomendada para obter credenciais da AWS para suas aplicações móveis e da Web é usar o Amazon Cognito. O Amazon Cognito ajuda a evitar a codificação das suas credenciais da AWS em seus arquivos. Ele usa funções do AWS Identity and Access Management (IAM) para gerar credenciais temporárias para os usuários autenticados e não autenticados da sua aplicação.

Por exemplo, para configurar seus arquivos JavaScript para usar uma função não autenticada do Amazon Cognito para acessar o serviço da Web Amazon DynamoDB, faça o seguinte:

Para configurar credenciais a serem integradas ao Amazon Cognito
  1. Crie um pool de identidades do Amazon Cognito que permita identidades não autenticadas.

    aws cognito-identity create-identity-pool \ --identity-pool-name DynamoPool \ --allow-unauthenticated-identities \ --output json { "IdentityPoolId": "us-west-2:12345678-1ab2-123a-1234-a12345ab12", "AllowUnauthenticatedIdentities": true, "IdentityPoolName": "DynamoPool" }
  2. Copie a seguinte política para um arquivo denominado myCognitoPolicy.json. Substitua o ID do grupo de identidades (us-west-2:12345678-1ab2-123a-1234-a12345ab12) pelo seu próprio IdentityPoolId obtido na etapa anterior.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-west-2:12345678-1ab2-123a-1234-a12345ab12" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }
  3. Crie uma função do IAM que assuma a política anterior. Dessa forma, o Amazon Cognito se torna uma entidade confiável capaz de assumir a função Cognito_DynamoPoolUnauth.

    aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
  4. Conceda à função Cognito_DynamoPoolUnauth acesso total ao DynamoDB anexando uma política gerenciada (AmazonDynamoDBFullAccess).

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth
    nota

    Como alternativa, você pode conceder acesso refinado ao DynamoDB. Para obter mais informações, consulte Usar condições de política do IAM para um controle de acesso refinado.

  5. Obtenha e copie o nome do recurso da Amazon (ARN) da função do IAM.

    aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
  6. Adicione a função Cognito_DynamoPoolUnauth ao pool de identidades DynamoPool. O formato a ser especificado é KeyName=string, onde KeyName é unauthenticated e a string é o ARN da função obtido na etapa anterior.

    aws cognito-identity set-identity-pool-roles \ --identity-pool-id "us-west-2:12345678-1ab2-123a-1234-a12345ab12" \ --roles unauthenticated=arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth --output json
  7. Especifique as credenciais do Amazon Cognito em seus arquivos. Modifique IdentityPoolId e RoleArn de acordo.

    AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "us-west-2:12345678-1ab2-123a-1234-a12345ab12", RoleArn: "arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth" });

Você agora pode executar seus programas JavaScript no serviço da Web DynamoDB usado credenciais do Amazon Cognito. Para ter mais informações, consulte Setting credentials in a web browser no Guia de conceitos básicos do AWS SDK for JavaScript.