翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS::DynamoDB::Table
AWS::DynamoDB::Table
リソースは DynamoDB テーブルを作成します。詳細については、「Amazon DynamoDB CreateTable Reference」の「Word」を参照してください。 DynamoDB API
DynamoDB テーブルを操作するときは、以下の動作に注意してください。
-
AWS CloudFormation は通常、DynamoDB テーブルを並列に作成します。ただし、インデックスを持つ複数の DynamoDB テーブルがテンプレートに含まれている場合は、依存関係を宣言して、テーブルが順次作成されるようにする必要があります。Amazon DynamoDB は、作成中の状態にあるセカンダリインデックスを持つテーブルの数を制限します。インデックスを持つ複数のテーブルを同時に作成すると、DynamoDB はエラーを返し、スタックオペレーションは失敗します。例については、「a DependsOn 属性を持つ DynamoDB テーブル」を参照してください。
重要
当社のガイダンスでは、 AWS CloudFormation テンプレート用に文書化された最新のスキーマを使用することをおすすめします。このスキーマは、以下のテーブル設定すべてのプロビジョニングをサポートします。 AWS CloudFormation テンプレートでこのスキーマを使用する場合は、これらの設定の変更を承認できるように、Identity and Access Management (IAM) ポリシーが適切なアクセス許可で更新されていることを確認してください。
構文
AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。
JSON
{ "Type" : "AWS::DynamoDB::Table", "Properties" : { "AttributeDefinitions" :
[ AttributeDefinition, ... ]
, "BillingMode" :String
, "ContributorInsightsSpecification" :ContributorInsightsSpecification
, "DeletionProtectionEnabled" :Boolean
, "GlobalSecondaryIndexes" :[ GlobalSecondaryIndex, ... ]
, "ImportSourceSpecification" :ImportSourceSpecification
, "KeySchema" :[ KeySchema, ... ]
, "KinesisStreamSpecification" :KinesisStreamSpecification
, "LocalSecondaryIndexes" :[ LocalSecondaryIndex, ... ]
, "OnDemandThroughput" :OnDemandThroughput
, "PointInTimeRecoverySpecification" :PointInTimeRecoverySpecification
, "ProvisionedThroughput" :ProvisionedThroughput
, "ResourcePolicy" :ResourcePolicy
, "SSESpecification" :SSESpecification
, "StreamSpecification" :StreamSpecification
, "TableClass" :String
, "TableName" :String
, "Tags" :[ Tag, ... ]
, "TimeToLiveSpecification" :TimeToLiveSpecification
, "WarmThroughput" :WarmThroughput
} }
YAML
Type: AWS::DynamoDB::Table Properties: AttributeDefinitions:
- AttributeDefinition
BillingMode:String
ContributorInsightsSpecification:ContributorInsightsSpecification
DeletionProtectionEnabled:Boolean
GlobalSecondaryIndexes:- GlobalSecondaryIndex
ImportSourceSpecification:ImportSourceSpecification
KeySchema:- KeySchema
KinesisStreamSpecification:KinesisStreamSpecification
LocalSecondaryIndexes:- LocalSecondaryIndex
OnDemandThroughput:OnDemandThroughput
PointInTimeRecoverySpecification:PointInTimeRecoverySpecification
ProvisionedThroughput:ProvisionedThroughput
ResourcePolicy:ResourcePolicy
SSESpecification:SSESpecification
StreamSpecification:StreamSpecification
TableClass:String
TableName:String
Tags:- Tag
TimeToLiveSpecification:TimeToLiveSpecification
WarmThroughput:WarmThroughput
プロパティ
AttributeDefinitions
-
テーブルとインデックスのキースキーマを記述する属性のリスト。
このプロパティは、DynamoDB テーブルを作成するために必要です。
更新に伴う要件: 一時的な中断。既存の AttributeDefinition を編集する場合の置き換え。
必須: 条件に応じて異なります
タイプ: AttributeDefinition の配列
アップデートに関する要件: 中断はありません
BillingMode
-
読み取りと書き込みのスループットに対する課金方法と容量の管理方法を指定します。
有効な値を次に示します。
-
PROVISIONED
- 予測可能なワークロードにはPROVISIONED
を使用することをお勧めします。PROVISIONED
は、請求モードを プロビジョニングモードに設定します。 -
PAY_PER_REQUEST
- 予測不可能なワークロードにはPAY_PER_REQUEST
を使用することをお勧めします。PAY_PER_REQUEST
は、請求モードを オンデマンドモード に設定します。
指定されなかった場合、デフォルト値は
PROVISIONED
です。必須: いいえ
型: 文字列
許可される値:
PROVISIONED | PAY_PER_REQUEST
アップデートに関する要件: 中断はありません
-
ContributorInsightsSpecification
-
指定されたテーブルの CloudWatch Contributor Insights を有効または無効にするために使用される設定。
必須: いいえ
タイプ: ContributorInsightsSpecification
アップデートに関する要件: 中断はありません
DeletionProtectionEnabled
-
テーブルを削除から保護するかどうかを決定します。有効にすると、ユーザーまたはプロセスがテーブルを削除することはできません。この設定はデフォルトで無効になっています。 詳細については、「Amazon DWord ガイド」の「削除保護の使用」を参照してください。 ynamoDBDeveloper
必須: いいえ
型: ブール
アップデートに関する要件: 中断はありません
GlobalSecondaryIndexes
-
テーブルに作成するグローバルセカンダリインデックス。最大で 20 個のグローバルセカンダリインデックスを作成できます。
重要
新しいグローバルセカンダリインデックスを含めるようにテーブルを更新すると、 はインデックスの作成 AWS CloudFormation を開始し、スタックの更新に進みます。 は、テーブルのサイズによっては、バックフィルフェーズに時間がかかる場合があるため、インデックスの作成が完了するまで待機 AWS CloudFormation しません。インデックスのステータスが
ACTIVE
になるまで、インデックスを使用したり、テーブルを更新したりすることはできません。DynamoDB DescribeTable コマンドを使用してステータスを追跡できます。更新中にインデックスを追加または削除する場合、他のリソースは更新しないことをお勧めします。新しいインデックスの追加中にスタックが更新に失敗してロールバックされた場合、インデックスを手動で削除する必要があります。
アップデートはサポートされていません。以下の例外があります。
-
グローバルセカンダリインデックスの Contributor Insights の指定またはプロビジョニングされたスループット値を更新した場合、中断せずにテーブルを更新できます。
-
グローバルセカンダリインデックスは、中断せずに削除または追加できます。同じ更新での両方の操作を行うと (インデックスの論理 ID を変更するなど)、更新は失敗します。
必須: いいえ
タイプ: GlobalSecondaryIndex の配列
アップデートに関する要件: 中断はありません
-
ImportSourceSpecification
-
S3 バケットソースから「」テーブルにインポートされるデータのプロパティを指定します。
重要
ImportSourceSpecification
プロパティを指定し、StreamSpecification
、TableClass
プロパティ、DeletionProtectionEnabled
プロパティ、またはWarmThroughput
プロパティを指定する場合、スタックを作成/更新する IAM エンティティには アクセスUpdateTable
許可が必要です。必須: いいえ
タイプ: ImportSourceSpecification
更新に伴う要件: 置換
KeySchema
-
テーブルのプライマリキーを構成する属性を指定します。
KeySchema
プロパティの属性は、AttributeDefinitions
プロパティにも定義する必要があります。必須: はい
更新に伴う要件: 一時的な中断
KinesisStreamSpecification
-
指定されたテーブルの Kinesis Data Streams 構成。
必須: いいえ
タイプ: KinesisStreamSpecification
アップデートに関する要件: 中断はありません
LocalSecondaryIndexes
-
テーブルに作成するローカルセカンダリインデックス。最大で 5 個のローカルセカンダリインデックスを作成できます。各インデックスの範囲は、特定のハッシュキー値に限定されます。各ハッシュキーのサイズは最大 10 GB です。
必須: いいえ
タイプ: LocalSecondaryIndex の配列
アップデートに関する要件: 中断はありません
OnDemandThroughput
-
指定されたオンデマンドテーブルの読み取りおよび書き込みユニットの最大数を設定します。このプロパティを使用する場合は、
MaxReadRequestUnits
、MaxWriteRequestUnits
、またはその両方を指定する必要があります。必須: いいえ
タイプ: OnDemandThroughput
アップデートに関する要件: 中断はありません
PointInTimeRecoverySpecification
-
ポイントインタイムリカバリを有効にするための設定。
必須: いいえ
タイプ: PointInTimeRecoverySpecification
アップデートに関する要件: 中断はありません
ProvisionedThroughput
-
指定したテーブルのスループット。
ReadCapacityUnits
とWriteCapacityUnits
の値で構成されます。プロビジョニングされたスループット構造の内容の詳細については、「Amazon DynamoDB Table ProvisionedThroughput」を参照してください。BillingMode
をPROVISIONED
として設定した場合は、このプロパティを指定する必要があります。BillingMode
をPAY_PER_REQUEST
として設定した場合は、このプロパティを指定できません。必須: 条件に応じて異なります
アップデートに関する要件: 中断はありません
ResourcePolicy
-
指定されたテーブルに追加するアクセス許可を含むリソースベースのポリシードキュメント。 CloudFormation テンプレートでは、 が JSON を YAML CloudFormation に変換してから に送信するため、ポリシーを YAML または JSON 形式で指定できます DynamoDB。リソースベースのポリシーの詳細については、「 でのリソースベースのポリシーの使用 DynamoDB」および「リソースベースのポリシーの例」を参照してください。
テーブルの作成時にリソースベースのポリシーをアタッチすると、ポリシーの作成に強い一貫性が保たれます。リソースベースのポリシーをアタッチする際に留意すべき考慮事項については、「リソースベースのポリシーに関する考慮事項」を参照してください。
必須: いいえ
タイプ: ResourcePolicy
アップデートに関する要件: 中断はありません
SSESpecification
-
サーバー側の暗号化を有効にする設定を指定します。
必須: いいえ
タイプ: SSESpecification
更新に伴う要件: 一時的な中断
StreamSpecification
-
テーブルに保存された項目の変更をキャプチャする DynamoDB テーブルストリームの設定。
必須: いいえ
タイプ: StreamSpecification
アップデートに関する要件: 中断はありません
TableClass
-
新しいテーブルのテーブルクラス。有効な値は、
STANDARD
およびSTANDARD_INFREQUENT_ACCESS
です。必須: いいえ
型: 文字列
許可される値:
STANDARD | STANDARD_INFREQUENT_ACCESS
アップデートに関する要件: 中断はありません
TableName
-
テーブルの名前。名前を指定しない場合、 は一意の物理 ID AWS CloudFormation を生成し、その ID をテーブル名として使用します。詳細については、「Name タイプ」を参照してください。
重要
名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。
必須: いいえ
タイプ: 文字列
最小:
1
最大:
1024
更新に伴う要件: 置換
-
このリソースに適用されるキーと値のペアの配列。
詳細については、「タグ」を参照してください。
必須: いいえ
タイプ: Tag の配列
アップデートに関する要件: 中断はありません
TimeToLiveSpecification
-
テーブルの有効期限 (TTL) 設定を指定します。
注記
DynamoDB の制限の詳細については、Amazon DynamoDB 開発者ガイドの「Amazon DynamoDB の制限」を参照してください。
必須: いいえ
アップデートに関する要件: 中断はありません
WarmThroughput
-
テーブルを作成するためのウォームスループット (1 秒あたりの読み込み単位と書き込み単位) を表します。
必須: いいえ
タイプ: WarmThroughput
更新に伴う要件: 中断なし
戻り値
参照番号
このリソースの論理 ID を組み込みの Ref
関数に渡すと、Ref
はリソース名を返します。例:
{ "Ref": "myDynamoDBTable" }
論理 ID myDynamoDBTable
を持つリソースに対し、Ref
は DynamoDB テーブル名を返します。
Ref
関数の使用方法の詳細については、「Ref
」を参照してください。
Fn::GetAtt
Fn::GetAtt
組み込み関数は、このタイプの指定された属性の値を返します。利用可能な属性とサンプル戻り値は以下のとおりです。
Fn::GetAtt
組み込み関数の使用方法の詳細については、「Fn::GetAtt
」を参照してください。
Arn
-
などの DynamoDB テーブルの Amazon リソースネーム (ARN)
arn:aws:dynamodb:us-east-2:123456789012:table/myDynamoDBTable
。 StreamArn
-
などの DynamoDB ストリームのARN
arn:aws:dynamodb:us-east-1:123456789012:table/testddbstack-myDynamoDBTable-012A1SL7SMP5Q/stream/2015-11-30T20:10:00.000
。注記
この属性を使用するには、
StreamSpecification
プロパティを指定する必要があります。
例
ローカルおよびグローバルのセカンダリインデックスを持つ DynamoDB テーブル
次のサンプルは、Album
、Artist
、Sales
、および NumberOfSongs
を属性として持つ DynamoDB テーブルを作成します。プライマリキーには、ハッシュキーとしての Album
属性と範囲キーとしての Artist
属性が含まれます。このテーブルには、2 つのグローバルインデックスと 1 つのセカンダリインデックスも含まれます。特定のアーティストの売上を照会するために、グローバルセカンダリインデックスではハッシュキーとしての Sales
属性と範囲キーとしての Artist
属性を使用します。
ソングの数に基づいて売上を照会するために、グローバルセカンダリインデックスではハッシュキーとしての NumberOfSongs
属性と範囲キーとしての Sales
属性を使用します。
アルバムの売上を照会するために、ローカルセカンダリインデックスでは、テーブルと同じハッシュキーを使用する一方で、範囲キーとして Sales
属性を使用します。
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Resources" : { "myDynamoDBTable" : { "Type" : "AWS::DynamoDB::Table", "Properties" : { "AttributeDefinitions" : [ { "AttributeName" : "Album", "AttributeType" : "S" }, { "AttributeName" : "Artist", "AttributeType" : "S" }, { "AttributeName" : "Sales", "AttributeType" : "N" }, { "AttributeName" : "NumberOfSongs", "AttributeType" : "N" } ], "KeySchema" : [ { "AttributeName" : "Album", "KeyType" : "HASH" }, { "AttributeName" : "Artist", "KeyType" : "RANGE" } ], "ProvisionedThroughput" : { "ReadCapacityUnits" : "5", "WriteCapacityUnits" : "5" }, "TableName" : "myTableName", "GlobalSecondaryIndexes" : [{ "IndexName" : "myGSI", "KeySchema" : [ { "AttributeName" : "Sales", "KeyType" : "HASH" }, { "AttributeName" : "Artist", "KeyType" : "RANGE" } ], "Projection" : { "NonKeyAttributes" : ["Album","NumberOfSongs"], "ProjectionType" : "INCLUDE" }, "ProvisionedThroughput" : { "ReadCapacityUnits" : "5", "WriteCapacityUnits" : "5" } }, { "IndexName" : "myGSI2", "KeySchema" : [ { "AttributeName" : "NumberOfSongs", "KeyType" : "HASH" }, { "AttributeName" : "Sales", "KeyType" : "RANGE" } ], "Projection" : { "NonKeyAttributes" : ["Album","Artist"], "ProjectionType" : "INCLUDE" }, "ProvisionedThroughput" : { "ReadCapacityUnits" : "5", "WriteCapacityUnits" : "5" } }], "LocalSecondaryIndexes" :[{ "IndexName" : "myLSI", "KeySchema" : [ { "AttributeName" : "Album", "KeyType" : "HASH" }, { "AttributeName" : "Sales", "KeyType" : "RANGE" } ], "Projection" : { "NonKeyAttributes" : ["Artist","NumberOfSongs"], "ProjectionType" : "INCLUDE" } }] } } } }
YAML
AWSTemplateFormatVersion: "2010-09-09" Resources: myDynamoDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: "Album" AttributeType: "S" - AttributeName: "Artist" AttributeType: "S" - AttributeName: "Sales" AttributeType: "N" - AttributeName: "NumberOfSongs" AttributeType: "N" KeySchema: - AttributeName: "Album" KeyType: "HASH" - AttributeName: "Artist" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" TableName: "myTableName" GlobalSecondaryIndexes: - IndexName: "myGSI" KeySchema: - AttributeName: "Sales" KeyType: "HASH" - AttributeName: "Artist" KeyType: "RANGE" Projection: NonKeyAttributes: - "Album" - "NumberOfSongs" ProjectionType: "INCLUDE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" - IndexName: "myGSI2" KeySchema: - AttributeName: "NumberOfSongs" KeyType: "HASH" - AttributeName: "Sales" KeyType: "RANGE" Projection: NonKeyAttributes: - "Album" - "Artist" ProjectionType: "INCLUDE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" LocalSecondaryIndexes: - IndexName: "myLSI" KeySchema: - AttributeName: "Album" KeyType: "HASH" - AttributeName: "Sales" KeyType: "RANGE" Projection: NonKeyAttributes: - "Artist" - "NumberOfSongs" ProjectionType: "INCLUDE"
DependsOn 属性を持つ DynamoDB テーブル
1 つのテンプレートにインデックスを持つ複数の DynamoDB テーブルを含める場合、テーブルが順次作成されるように依存関係を含める必要があります。DynamoDB は、作成中の状態にあるセカンダリインデックスを持つテーブルの数を制限します。インデックスを持つ複数のテーブルを同時に作成すると、DynamoDB はエラーを返し、スタックオペレーションは失敗します。
次のサンプルでは、myFirstDDBTable
テーブルが mySecondDDBTable
テーブルと同じテンプレート内で宣言され、両方のテーブルにセカンダリインデックスが含まれていると想定しています。mySecondDDBTable
テーブルには myFirstDDBTable
テーブルへの依存関係が含まれるため、 AWS CloudFormation
はこれらのテーブルを一度に 1 つずつ作成します。
JSON
"mySecondDDBTable" : { "Type" : "AWS::DynamoDB::Table", "DependsOn" : "myFirstDDBTable" , "Properties" : { "AttributeDefinitions" : [ { "AttributeName" : "ArtistId", "AttributeType" : "S" }, { "AttributeName" : "Concert", "AttributeType" : "S" }, { "AttributeName" : "TicketSales", "AttributeType" : "S" } ], "KeySchema" : [ { "AttributeName" : "ArtistId", "KeyType" : "HASH" }, { "AttributeName" : "Concert", "KeyType" : "RANGE" } ], "ProvisionedThroughput" : { "ReadCapacityUnits" : {"Ref" : "ReadCapacityUnits"}, "WriteCapacityUnits" : {"Ref" : "WriteCapacityUnits"} }, "GlobalSecondaryIndexes" : [{ "IndexName" : "myGSI", "KeySchema" : [ { "AttributeName" : "TicketSales", "KeyType" : "HASH" } ], "Projection" : { "ProjectionType" : "KEYS_ONLY" }, "ProvisionedThroughput" : { "ReadCapacityUnits" : {"Ref" : "ReadCapacityUnits"}, "WriteCapacityUnits" : {"Ref" : "WriteCapacityUnits"} } }], "Tags": [ { "Key": "foo", "Value": "bar" } ] } }
YAML
mySecondDDBTable: Type: AWS::DynamoDB::Table DependsOn: "myFirstDDBTable" Properties: AttributeDefinitions: - AttributeName: "ArtistId" AttributeType: "S" - AttributeName: "Concert" AttributeType: "S" - AttributeName: "TicketSales" AttributeType: "S" KeySchema: - AttributeName: "ArtistId" KeyType: "HASH" - AttributeName: "Concert" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: Ref: "ReadCapacityUnits" WriteCapacityUnits: Ref: "WriteCapacityUnits" GlobalSecondaryIndexes: - IndexName: "myGSI" KeySchema: - AttributeName: "TicketSales" KeyType: "HASH" Projection: ProjectionType: "KEYS_ONLY" ProvisionedThroughput: ReadCapacityUnits: Ref: "ReadCapacityUnits" WriteCapacityUnits: Ref: "WriteCapacityUnits" Tags: - Key: foo Value: bar
Application Auto Scaling を持つ DynamoDB テーブル
この例では、AWS::DynamoDB::Table
リソースの Application Auto Scaling をセットアップします。このテンプレートでは、テーブル向けに TargetTrackingScaling
スループットをスケールアップする WriteCapacityUnits
スケーリングポリシーを定義します。
JSON
{ "Resources": { "DDBTable": { "Type": "AWS::DynamoDB::Table", "Properties": { "AttributeDefinitions": [ { "AttributeName": "ArtistId", "AttributeType": "S" }, { "AttributeName": "Concert", "AttributeType": "S" }, { "AttributeName": "TicketSales", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "ArtistId", "KeyType": "HASH" }, { "AttributeName": "Concert", "KeyType": "RANGE" } ], "GlobalSecondaryIndexes": [ { "IndexName": "GSI", "KeySchema": [ { "AttributeName": "TicketSales", "KeyType": "HASH" } ], "Projection": { "ProjectionType": "KEYS_ONLY" }, "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } ], "ProvisionedThroughput": { "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 } } }, "WriteCapacityScalableTarget": { "Type": "AWS::ApplicationAutoScaling::ScalableTarget", "Properties": { "MaxCapacity": 15, "MinCapacity": 5, "ResourceId": { "Fn::Join": [ "/", [ "table", { "Ref": "DDBTable" } ] ] }, "RoleARN": { "Fn::GetAtt": ["ScalingRole", "Arn"] }, "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ServiceNamespace": "dynamodb" } }, "ScalingRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "application-autoscaling.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "root", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:UpdateTable", "cloudwatch:PutMetricAlarm", "cloudwatch:DescribeAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:SetAlarmState", "cloudwatch:DeleteAlarms" ], "Resource": "*" } ] } } ] } }, "WriteScalingPolicy": { "Type": "AWS::ApplicationAutoScaling::ScalingPolicy", "Properties": { "PolicyName": "WriteAutoScalingPolicy", "PolicyType": "TargetTrackingScaling", "ScalingTargetId": { "Ref": "WriteCapacityScalableTarget" }, "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 50.0, "ScaleInCooldown": 60, "ScaleOutCooldown": 60, "PredefinedMetricSpecification": { "PredefinedMetricType": "DynamoDBWriteCapacityUtilization" } } } } } }
YAML
Resources: DDBTable: Type: AWS::DynamoDB::Table Properties: AttributeDefinitions: - AttributeName: "ArtistId" AttributeType: "S" - AttributeName: "Concert" AttributeType: "S" - AttributeName: "TicketSales" AttributeType: "S" KeySchema: - AttributeName: "ArtistId" KeyType: "HASH" - AttributeName: "Concert" KeyType: "RANGE" GlobalSecondaryIndexes: - IndexName: "GSI" KeySchema: - AttributeName: "TicketSales" KeyType: "HASH" Projection: ProjectionType: "KEYS_ONLY" ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 ProvisionedThroughput: ReadCapacityUnits: 5 WriteCapacityUnits: 5 WriteCapacityScalableTarget: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 15 MinCapacity: 5 ResourceId: !Join - / - - table - !Ref DDBTable RoleARN: !GetAtt ScalingRole.Arn ScalableDimension: dynamodb:table:WriteCapacityUnits ServiceNamespace: dynamodb ScalingRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - application-autoscaling.amazonaws.com Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: - "dynamodb:DescribeTable" - "dynamodb:UpdateTable" - "cloudwatch:PutMetricAlarm" - "cloudwatch:DescribeAlarms" - "cloudwatch:GetMetricStatistics" - "cloudwatch:SetAlarmState" - "cloudwatch:DeleteAlarms" Resource: "*" WriteScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: WriteAutoScalingPolicy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref WriteCapacityScalableTarget TargetTrackingScalingPolicyConfiguration: TargetValue: 50.0 ScaleInCooldown: 60 ScaleOutCooldown: 60 PredefinedMetricSpecification: PredefinedMetricType: DynamoDBWriteCapacityUtilization