- DynamoDB Global TablesをCloudformationテンプレートで作成する場合の記法について、個人用にメモする。
テンプレート
Type: AWS::DynamoDB::GlobalTable
Properties:
AttributeDefinitions:
- AttributeDefinition
BillingMode: String
GlobalSecondaryIndexes:
- GlobalSecondaryIndex
KeySchema:
- AttributeName: PK
- KeyType: HASH
LocalSecondaryIndexes:
- LocalSecondaryIndex
Replicas:
- ReplicaSpecification
SSESpecification:
SSESpecification
StreamSpecification:
StreamSpecification
TableName: mytable
TimeToLiveSpecification:
TimeToLiveSpecification
WriteProvisionedThroughputSettings:
WriteProvisionedThroughputSettings
-
AttributeDefinitions
※必須- 属性定義
- 属性名と型を指定する。
-
BillingMode
※任意- 課金形態
- 定義域:
PAY_PER_REQUEST
orPROVISIONED
-
GlobalSecondaryIndexes
※任意- グローバルセカンダリインデックス
- あるテーブルをベースに、異なるパーティションキー・ソートキーのテーブルを作成する仕組み。
- 最大20個作成可能。
- グローバルセカンダリインデックス
-
KeySchema
※必須- 主キーを構成する属性
-
LocalSecondaryIndexes
※任意- ローカルセカンダリインデックス
- あるテーブルをベースに、パーティションキーはそのままに、異なるソートキーのテーブルを作成する仕組み。
- 最大5個作成可能。
- ローカルセカンダリインデックス
-
Replicas
※必須-
グローバルテーブルのレプリカリスト
-
記載例
Replicas: - Region: us-east-1 PointInTimeRecoverySpecification: #特定時点への DB インスタンスの復元設定 PointInTimeRecoveryEnabled: true SSESpecification: KMSMasterKeyId: alias/dynamodb-key-useast #暗号化に使用するKMSキーを指定 Tags: - Key: Name Value: testtable - Key: Region Value: east - Region: us-west-1 PointInTimeRecoverySpecification: PointInTimeRecoveryEnabled: true SSESpecification: KMSMasterKeyId: alias/dynamodb-key-uswest Tags: - Key: Name Value: testtable - Key: Region Value: west
-
-
SSESpecification
※任意- サーバー側の暗号化を有効にするための設定
- 定義域※暗号化方式:AES256 | KMS
-
StreamSpecification
※任意- ストリーム(データ変更時に、その変更情報を暗号化してログに保存しておく)設定
- グローバルテーブルに複数のレプリカが含まれている場合は指定する
- 定義域:
KEYS_ONLY | NEW_AND_OLD_IMAGES | NEW_IMAGE | OLD_IMAGE
-
TableName
※任意- テーブル名
-
TimeToLiveSpecification
※任意- TTL設定
- TTL設定を行う属性名を指定する。
-
WriteProvisionedThroughputSettings
※任意- 書き込み容量の自動スケーリングポリシー
- 全レプリカに適用される。
-
BillingMode
がPROVISIONED
に設定されている場合は設定が必要