View a markdown version of this page

示例 1:使用 aws:ResourceTag 支持流读取访问 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

示例 1:使用 aws:ResourceTag 支持流读取访问

使用 aws:ResourceTag/tag-key 条件键,可以将在 IAM 策略中指定的标签键值对与附加到 DynamoDB 流的键值对进行比较。例如,如果标签条件匹配,则可以支持流 GetRecords 操作。

使用 Amazon CLI

  1. 创建一个启用了流的表,并添加一个标签。

    aws dynamodb create-table \ --table-name myMusicTable \ --attribute-definitions AttributeName=id,AttributeType=S \ --key-schema AttributeName=id,KeyType=HASH \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \ --region us-east-1
  2. 向流添加标签。首先,从表描述中获取流 ARN。

    STREAM_ARN=$(aws dynamodb describe-table \ --table-name myMusicTable \ --query "Table.LatestStreamArn" \ --output text \ --region us-east-1) aws dynamodb tag-resource \ --resource-arn $STREAM_ARN \ --tags Key=Team,Value=Analytics \ --region us-east-1
  3. 创建内联策略并将其添加到角色中,如以下示例所示。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeStream", "dynamodb:GetRecords" ], "Resource": "arn:aws:dynamodb:*:*:table/*/stream/*", "Condition": { "StringEquals": { "aws:ResourceTag/Team": "Analytics" } } } ] }

    当流的标签与在策略中指定的键“Team”和值“Analytics”匹配时,此策略支持 DescribeStream 和 GetRecords 操作。

  4. 使用步骤 3 中描述的策略代入该角色。

  5. 在流上使用 describe-stream Amazon CLI 命令。

    aws dynamodb describe-stream \ --stream-arn $STREAM_ARN \ --region us-east-1

带和不带 Streams ABAC 时的行为

不带 Streams ABAC

如果您未为您的 Amazon Web Services 账户启用 Streams ABAC,则 IAM 策略和 DynamoDB 流中的标签条件将不匹配。DescribeStream 操作会返回 AccessDeniedException,因为没有任何策略支持在不匹配标签条件的情况下执行该操作。

带 Streams ABAC

如果您为您的 Amazon Web Services 账户启用了 Streams ABAC,则 DescribeStream 操作将成功完成。这是因为,当 IAM 策略和流中的标签条件匹配时,内联策略支持该操作。