本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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": "*" } ] } } } } } }