AWS::DynamoDB::GlobalTable ResourcePolicy - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS::DynamoDB::GlobalTable ResourcePolicy

建立或更新以資源為基礎的政策文件,其中包含 DynamoDB 資源 (例如資料表、其索引和串流) 的權限。以資源為基礎的策略可讓您定義存取權限,方法是指定每個資源的存取權限,以及允許這些資源對每個資源執行的動作。

在 CloudFormation 範本中,您可以提供 JSON 或 YAML 格式的原則,因為在提交 YAML 之前將其 CloudFormation 轉換為 JSON。 DynamoDB如需有關以資源為基礎的政策的詳細資訊,請參閱使用以資源為基礎的政策 DynamoDB和以資源為基礎

在 CloudFormation 範本中定義以資源為基礎的政策時,需要考量下列事項:

  • JSON 格式的以資源為基礎的政策文件所支援的大小上限為 20 KB。 DynamoDB 根據此限制計算原則大小時,會計算空格。

  • 以資源為基礎的政策不支援漂移偵測。如果您更新 CloudFormation 堆疊範本以外的原則,則需要使用變更來更新 CloudFormation 堆疊。

  • 以資源為基礎的政策不支援 out-of-band 變更。如果您在範本之外新增、更新或刪除原則,則 CloudFormation 範本中沒有變更原則時,將不會覆寫變更。

    例如,假設您的範本包含以資源為基礎的策略,您稍後會在範本之外進行更新。如果您未對範本中的政策進行任何變更,則中更新的原則將 DynamoDB 不會與範本中的原則同步。

    相反地,假設您的範本不包含以資源為基礎的政策,但您可以在範本之外新增政策。只要您未將此原則新增至範本,就不會從中 DynamoDB 移除此原則。當您將原則新增至範本並更新堆疊時,中的現有原則 DynamoDB 將會更新,以符合範本中定義的原則。

  • 在以資源為基礎的政策中,如果拒絕針對 DynamoDB 服務連結角色 (SLR) 複寫全域表資料的動作,則新增或刪除複本將會失敗並顯示錯誤。

  • :AWS: DynamoDB:: GlobalTable 資源不支援在部署堆疊更新的區域以外的區域中,在相同的堆疊更新中建立複本。

如需所有考量的完整清單,請參閱以資源為基礎的政策考量

語法

若要在 AWS CloudFormation 範本中宣告此實體,請使用下列語法:

JSON

{ "PolicyDocument" : Json }

YAML

PolicyDocument: Json

屬性

PolicyDocument

以資源為基礎的政策文件,其中包含新增至指定 DynamoDB 表格、其索引和串流的權限。在 CloudFormation 範本中,您可以提供 JSON 或 YAML 格式的原則,因為在提交 YAML 之前將其 CloudFormation 轉換為 JSON。 DynamoDB如需有關以資源為基礎的政策的詳細資訊,請參閱使用以資源為基礎的政策 DynamoDB和以資源為基礎

必要:是

類型:Json

更新要求不中斷

範例

將以資源為基礎的策略附加到使用 AWS::DynamoDB::GlobalTable資源建立的 DynamoDB 表格。

下列 CloudFormation 範本會建立包含:: DynamoDB:AWS: 資源的資料表,並將以GlobalTable資源為基礎的政策附加至資料表及其串流。此原則可讓使foobar用者在表格上執行GetItem作業。此外,下列範本會啟用串流,然後將以資源為基礎的原則附加至串流。串流的資源型政策可讓使foobar用者在串流上執行GetRecordsGetShardIterator、和DescribeStream作業。

重要

如果您在 CloudFormation 範本中啟用串流,並且也為串流定義原則,則只有在啟用串流之後,但在堆疊更新完成之前,該原則才會附加至串流。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "GlobalMusicCollection": { "Type": "AWS::DynamoDB::GlobalTable", "Properties": { "TableName": "MusicCollection", "AttributeDefinitions": [{ "AttributeName": "Artist", "AttributeType": "S" }], "KeySchema": [{ "AttributeName": "Artist", "KeyType": "HASH" }], "BillingMode": "PAY_PER_REQUEST", "StreamSpecification": { "StreamViewType": "NEW_AND_OLD_IMAGES" }, "Replicas": [ { "Region": "us-east-1", "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/foobar" ] }, "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "*" }] } }, "ReplicaStreamSpecification": { "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": "*" }] } } } } ] } } } }