はじめに
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でパスワードを変更する方法
helpful
この記事は役に立ちましたか?