AWS
DynamoDB
awscli

DynamoDBのAutoscalingがスケジュール対応したので試してみる【AWS CLI】

DynamoDB AS

DynamoDBのキャパシティの値を事前に指定した値でスケーリングさせる機能です。
現在、DynamoDBのテーブルを新しく作成するときにはdefaultで有効化にチェックが入る機能です。

なぜ、スケジュール機能が必要?

DynamoDBのオートスケールを有効化していると、
日中は最低値200で使用して夜間は50にしたい
と言ったことを解決するには、夜間のみオートスケールを解除して・・・といった面倒な事が必要でした。

これを時限起動で出来るようになったのがスケジュール機能!

CLI

awscli
aws application-autoscaling

を使用します。

  • 登録: put-scheduled-action
  • 確認: describe-scheduled-actions
  • 削除: delete-scheduled-action

それぞれ見ていきます。

登録

awscli
aws application-autoscaling put-scheduled-action \
    --service-namespace dynamodb \
    --schedule "cron(01 00 * * ? *)" \
    --scheduled-action-name TestAcction \
    --resource-id table/table_name \
    --scalable-dimension dynamodb:table:ReadCapacityUnits \
    --scalable-target-action MinCapacity=10,MaxCapacity=50   

schedule

cloudwatchで指定しているのと同じ指定方法です。
ルールのスケジュール式

注意する点はUTCで認識されるのでそのへんは気をつけて下さい。

start-time/end-time

その時点から有効・その時点で無効

"2017-11-09T14:10:00+09:00"
みたいに指定

resource-id

  • DynamoDBのテーブル: table/テーブル名
  • DynamoDBのGSI: table/テーブル名/index/インデックス名

scalable-dimension

  • 読み込みキャパシティ: dynamodb:table:ReadCapacityUnits
  • 書き込みキャパシティ: dynamodb:table:WriteCapacityUnits
  • インデックスの読み込みキャパシティ: dynamodb:index:ReadCapacityUnits
  • インデックスの書き込みキャパシティ: dynamodb:index:WriteCapacityUnits

scalable-target-action

最小値と最大値を設定

MinCapacity=INT,MaxCapacity=INT

の形式で指定

確認

awscli
aws application-autoscaling describe-scheduled-actions \
    --service-namespace dynamodb \
    --scheduled-action-names TestAcction

scheduled-action-names

登録の時に指定した scheduled-action-name を指定する

"hogehoge" の形式

削除

awscli
aws application-autoscaling delete-scheduled-action \
    --service-namespace dynamodb \
    --scheduled-action-name TestAcction \
    --resource-id table/table_name \
    --scalable-dimension dynamodb:table:ReadCapacityUnits

参考

put-scheduled-action
ルールのスケジュール式