Amazon S3 へファイルをアップロードする方法(Java編)

java

Amazon S3 へファイルをアップロードする方法を紹介します。

[スポンサーリンク]

今回も言語はjavaを想定しています。ファイルをアップロードするJavaプログラムの紹介です。

今回紹介するサービスは、AWS SDKに梱包されているサンプルプログラムを基に紹介をすすめていきます。

サンプルプログラムの読み方はこちらを参照して下さい。
S3のサービス概要はこちら、amazon本家をどうぞ

この章でやること

AmazonS3Clientを使って、S3にファイルをアップロードします。

S3へファイルアップロードするプログラム

AWS SDKに梱包されているサンプルプログラムをベースにしています。
サンプルプログラムの読み方はこちらを参照して下さい。

public class S3Sample {

    public static void main(String[] args) throws IOException {
        String bucketName = "bucket-name";
        String filePath = "/test/";
        String fileName = "upload.jpeg";
        
        // ここで、accessKeyとsecretKeyを設定しています。
        // Keyは、AwsCredentials.propertiesに設定しています
        AmazonS3 s3 = new AmazonS3Client(new ClasspathPropertiesFileCredentialsProvider());

        File file = new File("./test.jpeg");
        // 既にバケット名が登録されている場合は不要です。
        // 既にバケット名が登録されている状態だと、ここで409エラーとなるのでコメントアウトしています
        // s3.createBucket(bucketName);
        s3.putObject(new PutObjectRequest(bucketName, filePath+fileName, file));
    }
}

AwsCredentials.properties

accessKeysecretKey を設定します。

# Fill in your AWS Access Key ID and Secret Access Key
# http://aws.amazon.com/security-credentials
accessKey =XXXX
secretKey =XXX

解説

10行目、AmazonS3Clientへ、accessKeysecretKeyを設定しています。
keyはプロパティファイル(AwsCredentials.properties)へ定義しています。
17行目で、ファイルをS3にアップしています。

実行結果

こちらへファイルがアップされます。
http://S3ドメイン/bucket-name/test/upload.jpeg

bucket-nameはバケット名。
testは、ファイルアップロード時に指定したディレクトリ。
upload.jpegは、ファイルアップロードしたファイルになります。

最後に

Amazon S3 へファイルをアップロードする方法は、意外とシンプルなロジックだったのではと思います。
今回は単純にファイルをアップロードするのみのシンプルな実装でした。
AWD SDKは、重たいファイルを分割転送する機能もあり、結構充実しています。次回時間のあるときでも紹介していきたいと思います。

S3、価格面では非常にリーズナブルです。
個人的には、バックアップとして十分に使えるサービスではないかと思います。
それでは!