この記事は公開されてから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
このように、請求モードが「リクエストごとの支払い」に変更されました。
従量課金になるため、請求額には注意が必要です。
まとめ
本文でも言及されていましたが、既知のテーブルに関しても比較的簡単に請求モードの変更を導入できました。従量課金になることに注意が必要ですが、サービス開始当初などでスパイクの想定が困難な場合は、取り入れても良いかもしれません。