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