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ファイルがありますが
- 開発時にはaws-android-sdk-***-debug.jarを使用する(ログを沢山吐くので)
- 本番ではaws-android-sdk-***.jarを使用する
- もし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に変更してます。