DynamoDBのスループットをまとめてさげる
テーブル数が多くなると、Management Console 上からチマチマ変更するのは疲れるので、Java でプログラム書いた。
スループットを下げるように書いたので、上げたいときは修正が必要だけど、サンプルコードとして役に立つと思う。
使い方
Main.java にアクセスキーとシークレットキー書いて、テーブル名とスループットを指定して、実行するだけ。
https://github.com/jnst/dynamodb-tools/blob/master/src/main/java/tool/Main.java
private static final String ACCESS_KEY = "xxxxx"; //アクセスキー private static final String SECRET_KEY = "xxxxx"; //シークレットキー private static Regions RESION = Regions.AP_NORTHEAST_1; //東京リージョン String tablePrefix = "dev-"; //対象テーブルの接頭辞 long readCapacityUnits = 10L; //READのスループット long writeCapacityUnits = 5L; //WRITEのスループット
DynamoDB のテーブル一覧取得の注意点
AWS のドキュメントには明確に書いてないけど、listTables メソッドはテーブルを辞書順に最大 100 件までしか取得できない。
AWS SDK for Java に限らず、Python や Node.js の AWS SDK でも同様。
https://github.com/jnst/dynamodb-tools/blob/master/src/main/java/tool/Service.java#L33
ListTablesResult result = dynamoDB.listTables(request);
なので、取得結果に含まれる LastEvaluatedTableName を ExclusiveStartTableName に格納して、LastEvaluatedTableName が返ってこなくなるまで再実行する必要がある。