月別アーカイブ: 2016年1月

AWS S3のSDKを使ってみる3 実践編


前回までは環境構築でした。
今回は実際にプログラムを書いて動かしてみます。

ソースはGitHubにアップしました。
https://github.com/macchan-dev/AmazonS3Sample

以下の動作をします。

  • Bucketにあるオブジェクト一覧をListViewに表示
  • 右下のボタン押下でカメラ起動(動画)
  • 動画撮影完了後、動画ファイルをS3にアップロード

TransferUtilityを使った組み込み方が公式ドキュメントにまとまっているので分かりやすいと思います。
Amazon Simple Storage Service (S3)

大まか流れとしては、以下のとおりです。

  1. CognitoのSample codeにあるCognitoCachingCredentialsProviderを作成します。
  2. CognitoCachingCredentialsProviderインスタンスを引数にAmazonS3Clientを作成します。
  3. AmazonS3Clientインスタンスを引数にTransferUtilityを作成します。
  4. TransferUtility#uploadを使用しファイルをアップロードします。

注意点としては、AndroidManifest.xmlにTransferServiceの記述がないとうんともすんとも言いません。
エラーにもならないので何故動かないのか悩ますw

使用したTransferUtilityは、upload、downloadを簡単にすることができ、
進捗状況も取得できるので使いやすいと思いました。
細かいこと(オブジェクトの権限変更等)は出来ないので、別途SDKのAPIを叩く必要があります。

今回は、オブジェクトのリスト取得にRxJavaを使いました。
RxJavaについては以下が詳しかったです。

RxJava学習のベストプラクティスっぽいもの
分かった気になるはじめてのRxJava
7つのサンプルプログラムで学ぶRxJavaの挙動

以上です。