Groovy w/ micronaut で記載してますが、Java w/ Srping などでも参考になると思います。
利用するライブラリは、 software.amazon.awssdk:s3 になります。
まず、build.gradleに以下を追加
1 2 3 4 |
implementation("io.micronaut.aws:micronaut-aws-sdk-v2") implementation("software.amazon.awssdk:s3") |
次に設定
application.xml に以下を追加
1 2 3 4 5 6 7 8 |
--- aws: accessKeyId: XXXXXXXXXXXXXX secretKey: XXXXXXXXXXXXXXXXXXXXXXXX region: some-region buketName: make-your-own-buket |
この設定は、AWSのIAM から取得できます。
また、S3上にあらかじめbuketを作成しておきます。
regionは、buketを作成したregionです。名前は、region の説明の横にある英名ですね。
application.xml 以外にも認証情報とregionは、設定ファイルは環境変数でも設定できるみたいです。
その他の認証設定方法
その他のregion設定方法
いよいよソースです。まずは、S3のサービスを宣言
1 2 3 4 5 6 7 |
@Inject S3ClientBuilder s3ClientBuilder @Inject S3Client s3Client |
次に、いよいよupload部分です。
1 2 3 4 5 6 7 8 9 10 11 12 |
String filePath = "folder/filename" String buket = "your bucket" s3Client.putObject({ PutObjectRequest.Builder builder -> builder.bucket(buket). key(filePath). contentType("application/pdf"). acl(ObjectCannedACL.PUBLIC_READ) }, RequestBody.fromBytes(rawData)) |
以上。今回は、PDFをアップロードしたので、contentType("application/pdf")
としましたが、それぞれ適切なものを指定して下さい。
acl(ObjectCannedACL.PUBLIC_READ)
この設定でこのファイルは全体に公開されます。プライベートなものの時は、aclの指定なしならデフォルトの設定のままになります。