AWS SDK for Androidを使ってDynamoDBを操作する

Android端末から直接AWSにアクセスできるAWS SDK for Androidを使ってみたのですがあまり情報がみつからなかったのでメモ。
なお今回は予めAWSの管理画面でDynamoDBのテーブルを作成しておき、そのテーブルにアクセスする手順を書きます。

まずSDKのjarファイルを自分のプロジェクトに取り入れます。
aws-android-sdk-***.jar
aws-android-sdk-***-debug.jar
aws-android-sdk-***-core.jar
など沢山のjarファイルがありますが

  1. 開発時にはaws-android-sdk-***-debug.jarを使用する(ログを沢山吐くので)
  2. 本番ではaws-android-sdk-***.jarを使用する
  3. もしS3など特定のサービスしか使わないのであればaws-android-sdk-***-core.jarとaws-android-sdk-***-s3.jarを使用する

と使い分けるらしいです。

DynamoDBClient作成
AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY_ID, SECRET_KEY);
AmazonDynamoDBClient dynamoDBClient = new AmazonDynamoDBClient(credentials);

ACCESS_KEY_ID, SECRET_KEYにはAWS管理画面で取得した値を入れます。
※上記方式ではSECRET_KEYをアプリに埋め込むのでセキュリティ的によろしくないです。公開するアプリではTVMを使用しましょう(参照:http://www.atmarkit.co.jp/ait/articles/1202/03/news132.html

テーブルから値を取得
Map<String, AttributeValue> key = new HashMap<String, AttributeValue>();
key.put("hashtag", new AttributeValue().withS("aaa"));

GetItemRequest getItemRequest = new GetItemRequest().withTableName(TABLE_NAME).withKey(key).withAttributesToGet(Arrays.asList("hashtag", "used"));
GetItemResult result = dynamoDBClient.getItem(getItemRequest);

TABLE_NAMEにはDynamoDBで作成したテーブル名を入れてください。
上記は"TABLE_NAME"テーブルから"hashtag"項目が"aaa"というデータの"hashtag", "used"項目を取り出してます。

テーブルの値を更新
Map<String, AttributeValueUpdate> updateItems = new HashMap<String, AttributeValueUpdate>();
updateItems.put("used", new AttributeValueUpdate().withAction(AttributeAction.PUT).withValue(new AttributeValue().withN("1")));

UpdateItemRequest updateItemRequest = new UpdateItemRequest().withTableName(TABLE_NAME).withKey(key).withAttributeUpdates(updateItems);
dynamoDBClient.updateItem(updateItemRequest);

※keyは「テーブルから値を取得」で作成したもの使用してます
上記では"TABLE_NAME"テーブルの"hashtag"項目が"aaa"というデータの"use"項目の値を1に変更してます。