Configuration des informations d'identification AWS dans vos fichiers à l'aide d'Amazon Cognito - Amazon DynamoDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des informations d'identification AWS dans vos fichiers à l'aide d'Amazon Cognito

La méthode recommandée pour obtenir des informations d'identification AWS pour vos applications web et mobiles consiste à utiliser Amazon Cognito. Amazon Cognito vous aide à éviter le codage en dur de vos informations d'identification AWS sur vos fichiers. Il utilise des rôles AWS Identity and Access Management (IAM) pour générer des informations d'identification temporaires pour les utilisateurs authentifiés et non authentifiés de votre application.

Par exemple, pour configurer vos fichiers JavaScript de façon à utiliser un rôle non authentifié Amazon Cognito afin d'accéder au service web Amazon DynamoDB, procédez comme suit.

Pour configurer les informations d'identification à intégrer avec Amazon Cognito
  1. Créez un groupe d'identités Amazon Cognito qui autorise les identités non authentifiées.

    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. Copiez la stratégie suivante dans un fichier nommé myCognitoPolicy.json. Remplacez l'ID du groupe d'identités (us-west-2:12345678-1ab2-123a-1234-a12345ab12) par celui de votre groupe IdentityPoolId obtenu au cours de l'étape précédente.

    { "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. Créez un rôle IAM qui endosse la politique précédente. Ainsi, Amazon Cognito devient une entité de confiance capable d'endosser le rôle Cognito_DynamoPoolUnauth.

    aws iam create-role --role-name Cognito_DynamoPoolUnauth \ --assume-role-policy-document file://PathToFile/myCognitoPolicy.json --output json
  4. Octroyez au rôle Cognito_DynamoPoolUnauth un accès total à DynamoDB en attachant une politique gérée (AmazonDynamoDBFullAccess).

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

    Sinon, vous pouvez octroyer un accès précis à DynamoDB. Pour plus d'informations, consultez Utilisation de conditions de politique IAM pour un contrôle d'accès précis.

  5. Obtenez et copiez le rôle IAM Amazon Resource Name (ARN).

    aws iam get-role --role-name Cognito_DynamoPoolUnauth --output json
  6. Ajoutez le rôle Cognito_DynamoPoolUnauth au groupe d'identités DynamoPool. Le format à spécifier est KeyName=string, KeyName étant unauthenticated, et la chaîne correspond à l'ARN de rôle obtenu au cours de l'étape précédente.

    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. Spécifiez les informations d'identification Amazon Cognito dans vos fichiers. Modifiez IdentityPoolId et RoleArn en conséquence.

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

Vous pouvez désormais exécuter vos programmes JavaScript sur le service web DynamoDB à l'aide d'informations d'identification Amazon Cognito. Pour plus d'informations, consultez Définition des informations d'identification dans un navigateur web dans le Guide de démarrage AWS SDK for JavaScript.