Configuración de las credenciales de AWS mediante Amazon Cognito para DynamoDB
La manera recomendada de obtener las credenciales de AWS para las aplicaciones web y para móviles es utilizar Amazon Cognito. Amazon Cognito le evita tener que codificar de forma rígida las credenciales de AWS en los archivos. Utiliza los roles de AWS Identity and Access Management (IAM) con el fin de generar credenciales temporales para los usuarios autenticados y no autenticados de la aplicación.
Por ejemplo, si desea configurar los archivos de JavaScript de modo que utilicen un rol sin autenticar de Amazon Cognito para acceder al servicio web de Amazon DynamoDB, haga lo siguiente:
Para configurar credenciales para integrarlas con Amazon Cognito
-
Cree un grupo de identidades de Amazon Cognito que permita identidades no 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" }
-
Copie la política siguiente en un archivo denominado
myCognitoPolicy.json
. Cambie el identificador del grupo de identidades (us-west-2:12345678-1ab2-123a-1234-a12345ab12
) por su propioIdentityPoolId
obtenido en el paso 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" } } } ] }
-
Crear un rol de IAM que asume la política anterior. De este modo, Amazon Cognito se convierte en una entidad de confianza que puede asumir el rol
Cognito_DynamoPoolUnauth
.aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
-
Conceda al rol
Cognito_DynamoPoolUnauth
acceso pleno al servicio de DynamoDB asociándolo una política administrada (AmazonDynamoDBFullAccess
).aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess \ --role-name Cognito_DynamoPoolUnauth
nota
Si lo prefiere, puede conceder acceso preciso a DynamoDB. Para obtener más información, consulte Uso de las condiciones de la política de IAM para el control del acceso preciso.
-
Obtener y copiar el Nombre de recurso de Amazon (ARN) del rol de IAM.
aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
-
Agregue el rol
Cognito_DynamoPoolUnauth
al grupo de identidadesDynamoPool
. El formato que debe especificar esKeyName=string
, dondeKeyName
esunauthenticated
y string es el ARN del rol obtenido en el paso 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
-
Especifique las credenciales de Amazon Cognito en sus archivos. Modifique los valores de
IdentityPoolId
yRoleArn
en consecuencia.AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: "us-west-2:12345678-1ab2-123a-1234-a12345ab12", RoleArn: "arn:aws:iam::123456789012:role/Cognito_DynamoPoolUnauth" });
Ahora, puede ejecutar sus programas de JavaScript en el servicio web de DynamoDB utilizando las credenciales de Amazon Cognito. Para obtener más información, consulte Configuración de las credenciales en un navegador web en la Guía de inicio de AWS SDK for JavaScript.