[アップデート] Amazon DynamoDB テーブルのキャパシティモードをプロビジョニング済みからオンデマンドに、24時間以内に最大4回変更可能になりました
こんにちは、製造ビジネステクノロジー部の若槻です。
Amazon DynamoDB で、テーブルのキャパシティモードをプロビジョニング済み(PROVISIONED)からオンデマンド(PAY_PER_REQUEST)に、24時間以内に最大4回変更可能になるアップデートがありました。
DynamoDB のドキュメントもそのように更新されています。(例によって日本語版へは執筆時点で未反映なのでご注意ください)
You can switch tables from provisioned capacity mode to on-demand mode up to four times in a 24-hour rolling window. You can switch tables from on-demand mode to provisioned capacity mode at any time.
アップデート前は、オンデマンドモードからプロビジョニング済みへ切り替えた場合に、オンデマンドモードに戻すことが出来るのは、テーブル作成後または最後にオンデマンドに切り替えてから24時間経過している必要がありました。この制限は、例えばメンテナンスや負荷試験の実施などで、日に数回、DynamoDBのテーブルのキャパシティモードを変更したい場合に大きな制約となっていました。
今回のアップデートにより、テーブルのキャパシティモードの頻繁な変更の制限が大きく緩和されたことになります。
試してみた
実際にテーブルのキャパシティモードをプロビジョニング済みからオンデマンドに1日に4回まで切り替えられるのか試してみました。
テーブル作成(テスト用)
まず、テスト用のテーブルをプロビジョニング済みモードで作成します。
# プロビジョニング済みモードでテーブル作成
TABLE_NAME=test-capacity-mode
aws dynamodb create-table \
--table-name ${TABLE_NAME} \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--billing-mode PROVISIONED \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
プロビジョニング済みモードからオンデマンドモードに切り替え
次に、テーブルのキャパシティモードをプロビジョニング済みモードからオンデマンドモードに切り替えます。
aws dynamodb update-table \
--table-name ${TABLE_NAME} \
--billing-mode PAY_PER_REQUEST
オンデマンドモードからプロビジョニングモードに切り替え
続いて、テーブルのキャパシティモードをオンデマンドモードからプロビジョニング済みモードに切り替えて戻します。
aws dynamodb update-table \
--table-name ${TABLE_NAME} \
--billing-mode PROVISIONED \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
オンデマンドへの切り替えを4回繰り返してみる
前述のコマンドを繰り返し実施し、プロビジョニング済みからオンデマンドモードへの切り替えを4回繰り返してみます。
すると5回目の切り替えで以下のようなエラーが発生しました。
$ aws dynamodb update-table \
--table-name ${TABLE_NAME} \
--billing-mode PAY_PER_REQUEST
An error occurred (LimitExceededException) when calling the UpdateTable operation (reached max retries: 2): Subscriber limit exceeded: Update to PayPerRequest mode are limited to 4 in 1 day(s). Last update at Thu Aug 14 15:14:26 UTC 2025. Next update can be made at Fri Aug 15 14:45:07 UTC 2025
メッセージによれば、オンデマンドモードへの1日あたりの変更回数が既に4回に達しているため、次の変更は約23時間30分後まで行えないとのことです。4回/24時間の制限が実際に機能していることが確認できました。
補足
キャパシティモード変更には時間が掛かる場合がある
テーブルのキャパシティモードを変更した際、テーブルの UPDATING
状態が長く継続することがあります。この状態では、テーブルのキャパシティモードの変更が完了するまで待つ必要があります。
UPDATING
状態のテーブルに対してキャパシティモードを変更しようとすると、以下のようなエラーが発生します。
$ aws dynamodb update-table \
--table-name ${TABLE_NAME} \
--billing-mode PROVISIONED \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5
An error occurred (ResourceInUseException) when calling the UpdateTable operation: Attempt to change a resource which is still in use: Table IOPS are currently being updated. Table: test-capacity-mode
テーブルのステータスが ACTIVE
であることを確認してから、切り替えを行うようにしましょう。
$ aws dynamodb describe-table \
--table-name ${TABLE_NAME} \
--query '[Table.BillingModeSummary.BillingMode,Table.TableStatus]' \
--output text
PAY_PER_REQUEST UPDATING
ちなみに私が試した範囲では、1回目のオンデマンドモードからプロビジョニングモードに切り替えで10分程度 UPDATING
状態が続きましたが、以降の切り替えでは数秒で完了しました。
おわりに
Amazon DynamoDB で、テーブルのキャパシティモードをプロビジョニング済み(PROVISIONED)からオンデマンド(PAY_PER_REQUEST)に、24時間以内に最大4回変更可能になるアップデートがあったので共有しました。
以上