
DynamoDB の既存の CloudFormation テンプレートに従量課金モードを指定してみた #reinvent
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
re:Invent 2018のキーノート1日目に「Amazon DynamoDBの従量課金サポート」が発表されました。
本ブログでは過去に作成した DynamoDB の CloudFormation テンプレートに対して、請求モードを変更した状態のもので既存のテーブルが更新されるかを確認して見ました。
BillingMode
DynamoDB の CloudFormation テンプレートのプロパティに請求モードを指定する BillingMode が追加されていました。
- AWS::DynamoDB::Table - BillingMode
-
PROVISIONED
- 請求モードを
PROVISIONEDに設定します。予測可能なワークロードにはPROVISIONEDを使用することをお勧めします。
- 請求モードを
- PAY_PER_REQUEST
- 請求モードを
PAY_PER_REQUESTに設定します。予期しないワークロードにはPAY_PER_REQUESTを使用することをお勧めします。
- 請求モードを
また、この BillingMode をつけていない場合は、デフォルトで PROVISIONED が指定されます。
変更前
変更前の DynamoDB の CloudFormation テンプレートです。 ProvisionedThroughput の ReadCapacityUnits と WriteCapacityUnits を5指定していました。
RoomTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: room_table
AttributeDefinitions:
- AttributeName: device_id
AttributeType: S
KeySchema:
- AttributeName: device_id
KeyType: HASH
ProvisionedThroughput:
ReadCapacityUnits: 5
WriteCapacityUnits: 5

変更後
BillingMode を PAY_PER_REQUEST にして、 ProvisionedThroughput の項目を削除します。
ProvisionedThroughput の項目は BillingMode が PROVISIONED の時は必須のフィールドになりますが、 PAY_PER_REQUEST の時には指定できないフィールドになります。
RoomTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: room_table
AttributeDefinitions:
- AttributeName: device_id
AttributeType: S
KeySchema:
- AttributeName: device_id
KeyType: HASH
BillingMode: PAY_PER_REQUEST
このように、請求モードが「リクエストごとの支払い」に変更されました。

従量課金になるため、請求額には注意が必要です。
まとめ
本文でも言及されていましたが、既知のテーブルに関しても比較的簡単に請求モードの変更を導入できました。従量課金になることに注意が必要ですが、サービス開始当初などでスパイクの想定が困難な場合は、取り入れても良いかもしれません。






