2015年6月11日木曜日

AWS S3にAWS SDK (Java)でファイルを送る

表題の通り。

SDK自体は、Gradleのbuild.gradleに
 runtime 'com.amazonaws:aws-java-sdk-iam:1.9.39'
 runtime 'com.amazonaws:aws-java-sdk-s3:1.9.40'
と書いて取得。SDK全部なら1行で済むが、1行で済んで楽なのは書いてる人だけで、ほぼ使わない100MB以上のファイルをいちいち取得したりビルドさせたりというのはコンピュータが可哀想と感じます。

ファイル送るのはこんなで出来た。


public void store(File file){
final String accessKey = "XXXXXXXXXXXXXXXX";
final String secretKey = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));
s3.putObject("sampleBucketName", file.getName(), file);
}

ポイントとして、

  1. IAMでユーザーを作って、acceccKeyとsecretKeyを払い出しておく
  2. バケットのアクセス 権限(バケットポリシー)で、ユーザーにアクセス許可しておく(今回は特定バケットを特定ユーザーに許可したかった)
    1. バケットポリシーの編集は、手でやる場合にインデントに全角空白があったりするとJSONパースエラーになる(くだらないが、AWSの画面では空白見えないので一瞬はまった。エディタにコピーした方がいいな)
    2. Principalに、IAMのURIを指定する(複数の場合、{"AWS":["uri 1","uri2"]}。たぶん)

0 件のコメント:

コメントを投稿