DynamoDBのスループット制限を取得するAPIが公開されました
ウィスキー、シガー、パイプをこよなく愛する大栗です。
DynamoDBのスループット制限を取得するAPI(DescribeLimits)が公開されたので検証してみました。
Announcement: Announcing the new DescribeLimits API for DynamoDB
DescribeLimits?
今回公開されたAPI(DescribeLimits)はDynamoDBでプロビジョニングできるスループット(Capacity Unit)の範囲を動的に取得できる機能となります。
ドキュメントには以下のように初期初期の制限が記載されています。
プロビジョニングされるスループットについては、いくつかの初期的な最大制限があります。
- US East (N. Virginia) リージョン:
- テーブル単位 – 読み込みキャパシティーユニット数 40,000 および書き込みキャパシティーユニット数 40,000
- アカウント単位 – 読み込みキャパシティーユニット数 80,000 および書き込みキャパシティーユニット数 80,000
- その他すべてのリージョン:
- テーブル単位 – 読み込みキャパシティーユニット数 10,000 および書き込みキャパシティーユニット数 10,000
- アカウント単位 – 読み込みキャパシティーユニット数 20,000 および書き込みキャパシティーユニット数 20,000
初期制限は記載されていますが、AWSサポートへ申請して上限緩和が可能です。上限を緩和した値を
AWS Documentation » Amazon DynamoDB » Developer Guide » DynamoDB での制限:キャパシティーユニットとプロビジョニングされるスループット
実行してみる
APIはAWS-CLIで確認して見ます。
まずAWS-CLIを最新バージョンへアップデートします。
$ pip install -U awscli
AWS-CLIが最新になったのでaws dynamodb describe-limits
を実行します。
$ aws dynamodb describe-limits --region us-east-1 { "TableMaxReadCapacityUnits": 40000, "TableMaxWriteCapacityUnits": 40000, "AccountMaxReadCapacityUnits": 80000, "AccountMaxWriteCapacityUnits": 80000 }
各項目は、以下の意味になります。
- TableMaxReadCapacityUnits:テーブル単位 – 読み込みキャパシティーユニット数
- TableMaxWriteCapacityUnits:テーブル単位 – 書き込みキャパシティーユニット数
- AccountMaxReadCapacityUnits:アカウント単位 – 読み込みキャパシティーユニット数
- AccountMaxWriteCapacityUnits:アカウント単位 – 書き込みキャパシティーユニット数
全リージョンでaws dynamodb describe-limits
を実行した結果が、以下の表になります。
リージョン | テーブルごとの最大WriteCapacityUnits | テーブルごとの最大ReadCapacityUnits | アカウントの最大WriteCapacityUnits | アカウントの最大ReadCapacityUnits | 備考 |
---|---|---|---|---|---|
バージニア北部 | 40000 | 40000 | 80000 | 80000 | |
北カリフォルニア | 10000 | 10000 | 20000 | 20000 | |
オレゴン | 10000 | 10000 | 20000 | 20000 | |
アイルランド | 10000 | 10000 | 20000 | 20000 | |
フランクフルト | 10000 | 10000 | 20000 | 20000 | |
東京 | 取得不可 | 取得不可 | 取得不可 | 取得不可 | DescribeLimitsが未実装と思われる |
ソウル | 取得不可 | 取得不可 | 取得不可 | 取得不可 | DescribeLimitsが未実装と思われる |
シンガポール | 10000 | 10000 | 20000 | 20000 | |
シドニー | 10000 | 10000 | 20000 | 20000 | |
サンパウロ | 10000 | 10000 | 20000 | 20000 |
上限緩和をしていないためドキュメント通りの内容となりましたが、東京(ap-northeast-1)とソウル(ap-northeast-2)は2016年3月8日9:00 JST時点でaws dynamodb describe-limits
は未実装のようです。使用するためには、少し時間が必要のようです。
$ aws dynamodb describe-limits --region ap-northeast-1 A client error (UnknownOperationException) occurred when calling the DescribeLimits operation:
$ aws dynamodb describe-limits --region ap-northeast-2 A client error (UnknownOperationException) occurred when calling the DescribeLimits operation:
さいごに
動的にスループットの上限が取得できるのでDynamic DynamoDBのように動的にCapacity Unitを変更するようなプロダクトを使用する場合に丁度良いのではないでしょうか?
初期制限を越えるスループットが必要になる事はほとんど無いと思われますが、大規模サービスでDynamoDBを使用する場合に使用できると思います。
GitHub - sebdah/dynamic-dynamodb: Dynamic DynamoDB provides auto scaling for AWS DynamoDB Dynamic DynamoDB — Dynamic DynamoDB 2.2.1 documentation