AWS::DynamoDB::Table ResourcePolicy - AWS CloudFormation

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS::DynamoDB::Table ResourcePolicy

创建或更新基于资源的策略文档,其中包含对 DynamoDB 资源(例如表、其索引和流)的权限。基于资源的策略允许您通过指定谁有权访问每种资源以及允许他们对每个资源执行的操作来定义访问权限。

在 CloudFormation 模板中,您可以以 JSON 或 YAML 格式提供策略,因为在将 YAML 提交到之前会将其 CloudFormation 转换为 JSON。 DynamoDB有关基于资源的策略的更多信息,请参阅使用基于资源的策略 DynamoDB和基于资源的策略

在 CloudFormation 模板中定义基于资源的策略时,需要考虑以下注意事项:

  • JSON 格式的基于资源的策略文档支持的最大大小为 20 KB。 DynamoDB 根据此限制计算策略大小时,会计算空格。

  • 基于资源的策略不支持偏移检测。如果您在 CloudFormation 堆栈模板之外更新策略,则需要使用更改更新 CloudFormation 堆栈。

  • 基于资源的策略不支持 out-of-band 更改。如果您在模板之外添加、更新或删除策略,则如果 CloudFormation 模板内的策略没有更改,则更改不会被覆盖。

    例如,假设您的模板包含基于资源的策略,您稍后可以在模板之外对其进行更新。如果您未对模板中的政策进行任何更改,则中更新的政策将 DynamoDB 不会与模板中的策略同步。

    相反,假设您的模板不包含基于资源的策略,但您在模板之外添加了一个策略。 DynamoDB 只要您不将此政策添加到模板中,就不会将其删除。向模板添加策略并更新堆栈时,中的现有策略 DynamoDB 将更新为与模板中定义的策略相匹配。

有关所有注意事项的完整列表,请参阅基于资源的策略注意事项

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "PolicyDocument" : Json }

YAML

PolicyDocument: Json

属性

PolicyDocument

基于资源的策略文档,其中包含添加到指定 DynamoDB 表、索引或两者的权限。在 CloudFormation 模板中,您可以以 JSON 或 YAML 格式提供策略,因为在将 YAML 提交到之前会将其 CloudFormation 转换为 JSON。 DynamoDB有关基于资源的策略的更多信息,请参阅使用基于资源的策略 DynamoDB和基于资源的策略

必需:是

类型:Json

更新要求没有中断

示例

将基于资源的策略附加到 DynamoDB 表及其流

以下 CloudFormation 模板创建了一个名为的表MusicCollectionTable,并将基于资源的策略附加到该表。此策略允许用户foobar对表执行GetItem操作。此外,以下模板启用了直播,然后将基于资源的策略附加到该流。基于资源的直播策略允许用户foobar对直播执行GetRecordsGetShardIterator、和DescribeStream操作。

重要

如果您在 CloudFormation 模板中启用直播并为该直播定义了策略,则只有在启用直播之后、堆栈更新完成之前,该策略才会附加到该流。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "MusicCollectionTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [ { "AttributeName": "Artist", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "Artist", "KeyType": "HASH" } ], "BillingMode": "PROVISIONED", "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 }, "StreamSpecification": { "StreamViewType": "OLD_IMAGE", "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::111122223333:user/foobar" }, "Effect": "Allow", "Action": [ "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream" ], "Resource": "*" } ] } } }, "TableName": "MusicCollection", "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/foobar" ] }, "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "*" } ] } } } } } }