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