View a markdown version of this page

Anhängen einer Richtlinie an eine vorhandene DynamoDB-Tabelle - Amazon DynamoDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anhängen einer Richtlinie an eine vorhandene DynamoDB-Tabelle

Sie können eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anhängen oder eine vorhandene Richtlinie ändern, indem Sie die DynamoDB-Konsole, die API, PutResourcePolicy das SDK oder eine Vorlage verwenden. AWS CLI AWS CloudFormation

Im folgenden Beispiel für eine IAM-Richtlinie wird der put-resource-policy AWS CLI Befehl verwendet, um eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anzuhängen. In diesem Beispiel kann der Benutzer John die UpdateTable API-Aktionen GetItem, PutItem UpdateItem, und an einer vorhandenen Tabelle mit dem Namen ausführen. MusicCollection

Denken Sie daran, den italicized Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.

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\" } ] }"

Um eine vorhandene ressourcenbasierte Richtlinie einer Tabelle bedingt zu aktualisieren, können Sie den optionalen Parameter expected-revision-id verwenden. Im folgenden Beispiel wird die Richtlinie nur aktualisiert, wenn sie in DynamoDB vorhanden ist und ihre aktuelle Revisions-ID mit dem angegebenen expected-revision-id-Parameter übereinstimmt.

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\" } ] }"
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die DynamoDB-Konsole unter. https://console.aws.amazon.com/dynamodb/

  2. Wählen Sie im Dashboard eine vorhandene Tabelle aus.

  3. Navigieren Sie zur Registerkarte Berechtigungen und wählen Sie Tabellenrichtlinie erstellen aus.

  4. Fügen Sie im Editor für ressourcenbasierte Richtlinien die Richtlinie hinzu, die Sie anhängen möchten, und wählen Sie Richtlinie erstellen aus.

    Das folgende Beispiel für eine IAM-Richtlinie ermöglicht es dem Benutzer John GetItem, die UpdateTable API-Aktionen, PutItem UpdateItem, und an einer vorhandenen Tabelle mit dem Namen durchzuführen. MusicCollection

    Denken Sie daran, den italicized Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/username" }, "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:UpdateTable" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection" } ] }

Im folgenden IAM-Richtlinienbeispiel wird die Methode putResourcePolicy verwendet, um eine ressourcenbasierte Richtlinie an eine vorhandene Tabelle anzuhängen. Diese Richtlinie ermöglicht es einem Benutzer, die GetItem API-Aktion an einer vorhandenen Tabelle auszuführen.

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" + "}"; } }