Solutionテクノモバイルグループの強みServiceサービスのご紹介Informationお知らせ広報ニュース開発ブログ採用ブログ開発ブログプログラミング【Java】CSE&マルチパートアップロードを利用し、S3へファイルをアップロードする2018.06.21プログラミング【Java】CSE&マルチパートアップロードを利用し、S3へファイルをアップロードするAWSJavaS3みなさん、こんにちは。自身の復習も兼ねて「S3へのアップロード方法」についてご紹介します。・アップロードするファイルは事前にファイルサイズが分かっていること。・サイズが不明な場合は、低レベルAPIを利用します。(今回は高レベルAPIを利用)・100Mbを超えるような、大容量ファイルを想定。・マルチパートアップロードを使用する場合、最低でも5MBでなければいけません。・暗号化アルゴリズムにはAESを指定する。・なお、暗号化に使用する鍵はこちら側で準備。⇒KMSを利用する方法もありますが、今回はなし。Javaの場合は128bitがデフォルトの鍵長なので、256bitまで引き上げる必要があります。「US_export_policy.jar」と「local_policy.jar」を「$JAVA_HOME/jre/lib/security」内のファイルと置き換えてください。・http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.htmlコードまずはコードから記載します。転送マネージャーを終了させるtransferManager.shutdownNow();順番に何をしているか説明します。AESで暗号化を行うための準備アップロードファイルの暗号化アルゴリズムにはAESを利用するため、256bitの暗号鍵を用意します。※勿論記載してある鍵はダミーなので、適時置き換えてください。欲しいデータになります。S3クライアントを作成アクセスキーやシークレットキー等で、S3を操作するためのクライアントを作成します。オブジェクトとしてアップロードを行いますが、ストリームをソースとしてアップロードすることも可能です。メソッドでストリームのサイズを設定してください。指定しない場合、OutOfMemoryエラーが発生する可能性があります。メソッドで2で作成したS3クライアントを設定。マルチパートアップロードを行う閾値を設定しています。今回は5MBを閾値として設定していますので、5MBを超えるファイルの場合はマルチパートアップロードでアップロードされます。⇒なお、デフォルトの閾値は16MBです。メソッドで、ファイルのアップロードを行います。