[アップデート] Amazon DynamoDB テーブルのキャパシティモードをプロビジョニング済みからオンデマンドに、24時間以内に最大4回変更可能になりました

[アップデート] Amazon DynamoDB テーブルのキャパシティモードをプロビジョニング済みからオンデマンドに、24時間以内に最大4回変更可能になりました

2025.08.15

こんにちは、製造ビジネステクノロジー部の若槻です。

Amazon DynamoDB で、テーブルのキャパシティモードをプロビジョニング済み(PROVISIONED)からオンデマンド(PAY_PER_REQUEST)に、24時間以内に最大4回変更可能になるアップデートがありました。

https://aws.amazon.com/jp/about-aws/whats-new/2025/08/amazon-dynamodb-more-frequent-throughput-mode-updates/

DynamoDB のドキュメントもそのように更新されています。(例によって日本語版へは執筆時点で未反映なのでご注意ください)

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-switching-capacity-modes.html

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回変更可能になるアップデートがあったので共有しました。

以上

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.