この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
DynamoDBには2つのキャパシティーモードがあり、それによって料金が変わります。
現在のプロジェクトには、DynamoDBのテーブルが数十あるのですが、「普段のアクセス数は少ないが、たまにスパイク的なアクセスがある」というテーブルが多くあります。
このような場合は、「プロビジョニング済みキャパシティーモード」よりも「オンデマンドキャパシティーモード」のほうが合っていると考え、「現状のキャパシティーモードを調べよう」となりました。
「数十のテーブル × n環境」を手作業で調べると大変なので、調べるためのスクリプトを作ってみました。今後も使えるので楽ができます。
環境
項目 | バージョン |
---|---|
macOS | Mojave 10.14.6 |
AWS CLI | aws-cli/1.16.220 Python/3.7.2 Darwin/18.7.0 botocore/1.12.215 |
Python | 3.7 |
作成したスクリプト
Pythonで作成しました。お好みにカスタマイズしてお使いください!
動作の様子
実行します。
$ python check_dynamodb.py
実行結果の例は、下記です。(DynamoDBのテーブルが2個あるとき)
{
"table_name": "aaaaa",
"table_size_bytes": 1234,
"item_count": 56,
"billing_mode": "PAY_PER_REQUEST",
"rcu": 0,
"wcu": 0,
"global_secondary_indexes": []
}
{
"table_name": "xxxxx",
"table_size_bytes": 98765,
"item_count": 432,
"billing_mode": "PROVISIONED",
"rcu": 40,
"wcu": 5,
"global_secondary_indexes": [
{
"index_name": "yyyyy-index",
"rcu": 5,
"wcu": 5
},
{
"index_name": "zzzzz-index",
"rcu": 70,
"wcu": 2
}
]
}
さいごに
常時アクセスが無い(少ない)場合は、オンデマンドのほうが便利&安くなる場合が多そうですが、「リクエスト回数(特に書き込み)」や「書き込みサイズ」には注意が必要です。 (料金はこの2つに大きく左右されるため)
また、カンマ区切りに出力して、Excelやスプレッドシートに貼り付け、「データをカンマで区切る」的な操作をすると、簡単に表ができたりします。