はじめに
Java用のSDK(AWS SDK for Java 1.11)でAmazon S3にファイルをアップロードする方法を紹介します。
事前準備
Amazon S3を使うには、aws-java-sdk-s3をpom.xml もしくは build.gradleに追加します。※今回の例ではpom.xmlを使用します。
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> <version>1.11.828</version> </dependency>
S3へファイルアップロード
スポンサーリンク
保存したファイルをS3へアップロードする方法
ローカル(サーバ)に保存したファイルからAmazon S3へアップロードする方法は以下です。「putObject」に「アップロード先のバケット名」「アップロード先のパス(キー名)」「ファイル」を渡すことでアップロードすることができます。
/** * [Amazon S3]ファイルアップロード * @param アップロードするファイル */ public void putObject(File file) { AWSCredentials credentials = new BasicAWSCredentials("アクセスキー","シークレットキー"); // S3クライアントの生成 AmazonS3 s3Client = AmazonS3ClientBuilder .standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.AP_NORTHEAST_1) .build(); // ファイルをアップロード s3Client.putObject( // アップロード先バケット名 "bucketName", // アップロード先のパス(キー名) "dir/sample.png", // ファイルの実体 file ); }
Base64の文字列からS3へアップロードする方法
Base64の文字列からS3へアップロードする方法は以下です。
クライアント → サーバ → S3 とサーバを経由する場合は、クライアント側でBase64に変換した(バイナリデータ → Base64 )画像や音声ファイルを受け取ることがよくあります。
この時、サーバに一時的にファイルを保存して、そのファイルをS3にアップロードするのは手間です。(S3にアップロードした後、一時的に保存したファイルを削除する必要もある)
「putObject」は、バイナリデータでアップロードすることもできるので、クライアントから受け取ったBase64の文字列をバイナリデータに戻して、S3にアップロードすることができます。
/** * [Amazon S3]ファイルアップロード * @param Base64File アップロードするファイル(Base64) * @throws IOException */ public void putObjectBase64(String fileBase64) throws IOException { AWSCredentials credentials = new BasicAWSCredentials("アクセスキー","シークレットキー"); // S3クライアントの生成 AmazonS3 s3Client = AmazonS3ClientBuilder .standard() .withCredentials(new AWSStaticCredentialsProvider(credentials)) .withRegion(Regions.AP_NORTHEAST_1) .build(); byte[] buf = Base64.getDecoder().decode(fileBase64); try (InputStream input = new ByteArrayInputStream(buf)) { // メタ情報を生成 ObjectMetadata metaData = new ObjectMetadata(); metaData.setContentLength(buf.length); // リクエストを生成 PutObjectRequest request = new PutObjectRequest( // アップロード先バケット名 "bucketName", // アップロード先のパス(キー名) "dir/sample.png", // InputStream input, // メタ情報 metaData ); // アップロード s3Client.putObject(request); } }
終わりに
本記事では、Amazon S3へファイルをアップロードする方法を紹介しました。
次回は「Amazon S3からファイルをダウンロードする方法」について紹介します。
[AWS 関連記事]
- Amazon Cognito ユーザープールの使い方
- Amazon Cognito IDプールの使い方
- 【Amazon Cognito】JavaScriptでログイン処理を実装する方法
- 【Amazon Cognito】getSessionでトークン情報を再取得する方法
- 【Amazon Cognito】changePasswordでパスワードを変更する方法