DynamoDBの基礎

TableName

名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID をテーブル名として使用します。

KeySchema

primary key for the table

※文字列、数値、またはバイナリ
※テーブル作成時に必要な唯一のもの
※変更する際にはテーブルも作り直す

  • HASHのみの場合
      KeySchema:
        -
          AttributeName: ID
          KeyType: HASH

※内部ハッシュ関数への入力として使用され、パーティションが決まります
※ハッシュのキーの値は一意です

  • HASHとRANGEの場合
      KeySchema:
        -
          AttributeName: ARTIST
          KeyType: HASH
        -
          AttributeName: SONG_TITLE
          KeyType: RANGE

※同じHASHキーのレコードはRANGEキーの値でソートされてまとめて保存されます。

SecondaryIndex

HASHキーとHASH and RANGEキー以外でのクエリを投げたいときに追加します。
SecondaryIndexの上限では足りなくなる場合はRDSを使うことが推奨されています。

  • GlobalSecondaryIndexes
    テーブルと異なるHASHキーとRANGEキーを持つIndexで最大で5個。
    ※Cannot perform more than one GSI creation or deletion in a single update
    ※Cannot update GSI's properties other than Provisioned Throughput. You can create a new GSI with a different name.

  • LocalSecondaryIndexes
    テーブルと同じHASHキーと、異なるRANGEキーを持つIndexで最大で5個
    ※Table KeySchema does not have a range key, which is required when specifying a LocalSecondaryIndex

AttributeDefinitions

A list of AttributeName and AttributeType objects that describe the key schema for the table and indexes.

  • Property AttributeDefinitions is inconsistent with the KeySchema of the table and the secondary indexes
AttributesDefinitionsはKeySchemaとIndexesを合わせたものにしてください。  
GlobalSecondaryIndexesがテーブルと異なるHASHキーとRANGEキーになっているか、
LocalSecondaryIndexesがテーブルと同じHASHキーと、異なるRANGEキーを確認してください。
また、KeySchemaとIndexesを合わせたものがAttributesDefinitionsになっているかを確認します。

ProvisionedThroughput

Amazon DynamoDB が負荷を分散する前に、指定したテーブルの項目について整合性のある読み込み or 読み込みを行う、1秒あたりの最小サイズ(最大1KB)を設定します。

      ProvisionedThroughput:
        ReadCapacityUnits: 5
        WriteCapacityUnits: 5

StreamSpecification

テーブルに保存された項目の変更をキャプチャする DynamoDB テーブルストリームの設定

      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
KEYS_ONLY - Only the key attributes of the modified item are written to the stream.
NEW_IMAGE - The entire item, as it appears after it was modified, is written to the stream.
OLD_IMAGE - The entire item, as it appeared before it was modified, is written to the stream.
NEW_AND_OLD_IMAGES - Both the new and the old item images of the item are written to the stream.

参考

http://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html
AWS::DynamoDB::Table - AWS CloudFormation