

# Configurar credenciais da AWS usando o Amazon Cognito para DynamoDB
<a name="Cognito.Credentials"></a>

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"
   }
   ```

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

------
#### [ JSON ]

****  

   ```
   {
     "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"
           }
         }
       }
     ]
   }
   ```

------

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

1.  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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/specifying-conditions.html). 

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

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

1.  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](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/setting-credentials-browser.html) no *Guia de conceitos básicos do AWS SDK para JavaScript*. 