使用資源型政策建立資料表 - Amazon DynamoDB

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

使用資源型政策建立資料表

您可以使用 DynamoDB CreateTable 主控台、、 API AWS CLIAWS SDK或 AWS CloudFormation 範本,在建立資料表時新增資源型政策。

下列範例會建立名為 的資料表 MusicCollection 使用 create-table AWS CLI 命令。此命令也包含將資源型政策新增至資料表的 resource-policy 參數。此政策允許使用者 John 在資料表上執行 GetItemRestoreTableToPointInTimePutItemAPI動作。

請記得取代 italicized 包含資源特定資訊的文字。

aws dynamodb create-table \ --table-name MusicCollection \ --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \ --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --resource-policy \ "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"AWS\": \"arn:aws:iam::123456789012:user/John\" }, \"Action\": [ \"dynamodb:RestoreTableToPointInTime\", \"dynamodb:GetItem\", \"dynamodb:DescribeTable\" ], \"Resource\": \"arn:aws:dynamodb:us-west-2:123456789012:table/MusicCollection\" } ] }"
  1. 登入 AWS Management Console 並在 開啟 DynamoDB 主控台https://console.aws.amazon.com/dynamodb/

  2. 在儀表板上,選擇建立資料表

  3. 資料表詳細資訊 中,輸入資料表名稱、分割區金鑰和排序金鑰詳細資訊。

  4. 資料表設定 中,選擇自訂設定

  5. (選用) 指定資料表類別 容量計算器 讀取/寫入容量設定 次要索引 靜態加密 刪除保護 的選項。

  6. 資源型政策 中,新增政策來定義資料表及其索引的存取權限。在此政策中,您可以指定誰可以存取這些資源,以及允許他們在每個資源上執行的動作。若要新增政策,請執行下列其中一項操作:

    • 輸入或貼上JSON政策文件。如需IAM政策語言的詳細資訊,請參閱 IAM 使用者指南 中的使用JSON編輯器建立政策

      提示

      若要查看 Amazon DynamoDB 開發人員指南中的資源型政策範例,請選擇政策範例

    • 選擇新增陳述式以新增新陳述式,並在提供的欄位中輸入資訊。針對您想要新增的任意數量陳述式重複此步驟。

    重要

    在儲存政策之前,請務必解決任何安全警告、錯誤或建議。

    下列IAM政策範例允許使用者 John 在資料表上執行 GetItemRestoreTableToPointInTimePutItemAPI動作 MusicCollection.

    請記得取代 italicized 包含資源特定資訊的文字。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/John" }, "Action": [ "dynamodb:RestoreTableToPointInTime", "dynamodb:GetItem", "dynamodb:PutItem" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection" } ] }
  7. (選用) 選擇右下角的 Preview external access (預覽外部存取),以預覽新政策會如何影響資源的公開和跨帳戶存取權。在儲存政策之前,您可以檢查其是否引入新的 IAM Access Analyzer 調查結果或解決現有的調查結果。如果您沒有看到作用中的分析器,請選擇前往存取分析器以在IAM存取分析器中建立帳戶分析器。如需詳細資訊,請參閱預覽存取權

  8. 選擇 建立資料表

Using the AWS::DynamoDB::Table resource

下列 CloudFormation 範本會使用 AWS::DynamoDB ::Table 資源建立具有串流的資料表。此範本也包含連接至資料表和串流的資源型政策。

{ "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/John" }, "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/John" ] }, "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "*" } ] } } } } } }
Using the AWS::DynamoDB::GlobalTable resource

下列 CloudFormation 範本會使用 AWS::DynamoDB ::GlobalTable 資源建立資料表,並將資源型政策連接至資料表及其串流。

{ "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/John" ] }, "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "*" }] } }, "ReplicaStreamSpecification": { "ResourcePolicy": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [{ "Principal": { "AWS": "arn:aws:iam::111122223333:user/John" }, "Effect": "Allow", "Action": [ "dynamodb:GetRecords", "dynamodb:GetShardIterator", "dynamodb:DescribeStream" ], "Resource": "*" }] } } } } ] } } } }