第39夜 AWS S3の超基礎

今回はS3。SimpleDBがデータベースなのに対して、S3はストレージを扱うサービス。ファイルをアップロードしたりダウンロードしたりできる。



S3やSimpleDBはEC2など他の技術に比べて非常に簡単かつ単独で手元のマシンから使えるのでお勧めだ。昨日のSimpleDBより簡単で、基本的には同じ感じで扱う。なんとかrequestというインスタンスを作ってそれをパラメータとして渡すという感じ。



今回は単純なのでひとつにまとめる。コメントを見ればわかるはず。

String アクセスキー = "----";
String シークレットキー = "----";
AmazonS3Client s3 = new AmazonS3Client(new BasicAWSCredentials(アクセスキー, シークレットキー));


//バケットの追加
s3.createBucket(BUCKET, Region.AP_Tokyo);

//バケット一覧
for (Bucket bucket : s3.listBuckets()) {
    System.out.println(bucket.getName());
}

//ファイルのアップロード
File file = new File("ファイル名");
PutObjectRequest request = new PutObjectRequest(BUCKET, file.getName(), file);
request.setCannedAcl(CannedAccessControlList.PublicRead);//httpでだれでもアクセス可能にしたい場合
s3.putObject(request);//アップロード

//アップロードしたファイルの情報を読む
S3Object result = s3.getObject(BUCKET, file.getName());
System.out.printf("ファイルサイズ:%dバイト%n", result.getObjectMetadata().getContentLength());

//ファイル読み込み
byte[] data = new byte[(int)result.getObjectMetadata().getContentLength()];
InputStream stream = result.getObjectContent();
int len;
int offset = 0;
while((len = stream.read(data, offset, 1024)) >= 0){
    offset += len;
}
System.out.println(new String(data,"utf-8"));//表示


//ファイルの削除
s3.deleteObject(BUCKET, file.getName());


//バケットの削除
s3.deleteBucket(BUCKET);

s3.shutdown();

特に難しくないと思う。プログラムがかけなくてもマネージメントコンソールがWebブラウザから扱えるのでファイルをS3においておくというのはありだろう。契約して1年以内なら無料である程度つかえるはずだ。