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.
Attache d’une politique à une table DynamoDB existante
L'exemple de stratégie IAM suivant utilise la put-resource-policy AWS CLI
commande pour associer une stratégie basée sur les ressources à une table existante. Cet exemple permet John à l'utilisateur d'effectuer les actions GetItemPutItem, UpdateItem, et d'UpdateTableAPI sur une table existante nomméeMusicCollection.
N'oubliez pas de remplacer le italicized texte par les informations spécifiques à votre ressource.
aws dynamodb put-resource-policy \ --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\ --policy \ "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::111122223333:user/John\" }, \"Action\": [ \"dynamodb:GetItem\", \"dynamodb:PutItem\", \"dynamodb:UpdateItem\", \"dynamodb:UpdateTable\" ], \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\" } ] }"
Pour mettre à jour de manière conditionnelle la politique basée sur les ressources existante d’une table, vous pouvez utiliser le paramètre facultatif expected-revision-id. L’exemple suivant met à jour la politique uniquement si elle existe dans DynamoDB et si son ID de révision actuel correspond au paramètre expected-revision-id fourni.
aws dynamodb put-resource-policy \ --resource-arn arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\ --expected-revision-id 1709841168699 \ --policy \ "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::111122223333:user/John\" }, \"Action\": [ \"dynamodb:GetItem\", \"dynamodb:UpdateItem\", \"dynamodb:UpdateTable\" ], \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\" } ] }"
Connectez-vous à la console DynamoDB AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/dynamodb/
-
Sur le tableau de bord, choisissez une table existante.
-
Accédez à l’onglet Autorisations, puis choisissez Créer une politique pour la table.
-
Dans l’éditeur de politique basée sur les ressources, ajoutez la politique que vous souhaitez associer et choisissez Créer une politique.
L'exemple de politique IAM suivant permet
Johnà l'utilisateur d'effectuer les actions GetItemPutItem,, UpdateItem, et d'UpdateTableAPI sur une table existante nomméeMusicCollection.N'oubliez pas de remplacer le
italicizedtexte par les informations spécifiques à votre ressource.
L’exemple de politique IAM suivant utilise la méthode putResourcePolicy pour attacher une politique basée sur les ressources à une table existante. Cette politique permet à un utilisateur d'exécuter l'action d'GetItemAPI sur une table existante.
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DynamoDbException; import software.amazon.awssdk.services.dynamodb.model.PutResourcePolicyRequest; /** * Before running this Java V2 code example, set up your development * environment, including your credentials. * * For more information, see the following documentation topic: * * Get started with the AWS SDK for Java 2.x */ public class PutResourcePolicy { public static void main(String[] args) { final String usage = """ Usage: <tableArn> <allowedAWSPrincipal> Where: tableArn - The Amazon DynamoDB table ARN to attach the policy to. For example, arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection. allowed AWS Principal - Allowed AWS principal ARN that the example policy will give access to. For example, arn:aws:iam::123456789012:user/John. """; if (args.length != 2) { System.out.println(usage); System.exit(1); } String tableArn = args[0]; String allowedAWSPrincipal = args[1]; System.out.println("Attaching a resource-based policy to the Amazon DynamoDB table with ARN " + tableArn); Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build(); String result = putResourcePolicy(ddb, tableArn, allowedAWSPrincipal); System.out.println("Revision ID for the attached policy is " + result); ddb.close(); } public static String putResourcePolicy(DynamoDbClient ddb, String tableArn, String allowedAWSPrincipal) { String policy = generatePolicy(tableArn, allowedAWSPrincipal); PutResourcePolicyRequest request = PutResourcePolicyRequest.builder() .policy(policy) .resourceArn(tableArn) .build(); try { return ddb.putResourcePolicy(request).revisionId(); } catch (DynamoDbException e) { System.err.println(e.getMessage()); System.exit(1); } return ""; } private static String generatePolicy(String tableArn, String allowedAWSPrincipal) { return "{\n" + " \"Version\": \"2012-10-17\",\n" +, " \"Statement\": [\n" + " {\n" + " \"Effect\": \"Allow\",\n" + " \"Principal\": {\"AWS\":\"" + allowedAWSPrincipal + "\"},\n" + " \"Action\": [\n" + " \"dynamodb:GetItem\"\n" + " ],\n" + " \"Resource\": \"" + tableArn + "\"\n" + " }\n" + " ]\n" + "}"; } }