こんにちは、東です。
今回はJavaを利用してファイルをS3ストレージへアップロードする方法を
まとめたいと思います。
あくまでも参考程度なので大まかな外枠の仕組み程度に捉えていただければ幸いです。
必要なことは?
まず必要なものは以下のものです。
・「ユーザーID」 →IAMユーザーのユーザーID
・「シークレットアクセスキー」 →IAMユーザーのシークレットアクセスキー
・「S3バケット名」 →S3コンテナ名
・「ルートディレクトリパス」 →S3コンテナ内のルートパス
・「リージョン名」 →S3コンテナが配置されている地域のリージョン名
・「ファイル情報」 →アップロードするFile(JavaのFile型)
となります。
流れとしては
1.認証情報を用意
↓
2.S3へアクセスするクライアントを作成。
↓
3.ファイルをアップロードする。
という流れになります。
では、詳しく見ていきましょう。
手順
1.認証情報を用意
AWSのS3ストレージへアクセスするためには、
「アクセスID」 「シークレットアクセスキー」 というユーザーIDとパスワードにあたるものが必要です。
また、S3ストレージがある 「リージョン」 という情報も必要です。
1例として参考となるサイトがありましたので載せさせていただきます。
2.S3へアクセスするクライアントを作成。
続いてJava上でS3ストレージにアクセスできるようにアカウント情報を設定します。
AwsBasicCredentialsというClassが用意されているので、「アクセスID」 「シークレットアクセスキー」 を渡すことで戻り値でCredential情報を取得できます。
上で取得したCredential情報をAmazonS3ClientBuilderをに渡すだけで
AmazonS3クライアント情報を簡単に組み立てることができるようです。
ありがたいですね。
コード的には以下のようになります。
// S3クライアントを作成
public AmazonS3 getAmazonS3Account {
// アクセスID、シークレットアクセスキーを設定する
AwsBasicCredentials credentials = AwsBasicCredentials.create("アクセスID",
"シークレットアクセスキー");
// AmazonS3ClientBuilderを使用してクライアント情報を組み立てる
AmazonS3 client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials)).withRegion(Regions.fromName("リージョン名"))
.build();
return client;
}
3.ファイルをアップロードする。
ここまで出来たらアップロードするのは簡単でした。
AmazonS3インターフェース内に.putObjectというメソッドがあるのでそちらを使います。
S3上のルートディレクトリパス と リージョン名 、バケット名 が必要です。
コードとしては以下のようになります。
//ファイルをアップロードする
public void uploadFile (File file, String S3FilePath){
getAmazonS3Account().putObject("バケット名","ルートディレクトリパス", "ファイル情報");
}
ここまですれば、以下の場所にアップロードされたファイルが確認できると思います。
バケット名 /ルートディレクトリパス /ファイル名
まとめ
今回はJavaを使用してS3ストレージへファイルをアップロードする方法をまとめました。
次回はこのアップロードされたファイルをダウンロードする方法をまとめたいと思います。
ありがとうございました。