[micronaut] AWS S3 にファイルをアップロードする

Groovy w/ micronaut で記載してますが、Java w/ Srping などでも参考になると思います。
利用するライブラリは、 software.amazon.awssdk:s3 になります。

まず、build.gradleに以下を追加

次に設定
application.xml に以下を追加

この設定は、AWSのIAM から取得できます。

また、S3上にあらかじめbuketを作成しておきます。
regionは、buketを作成したregionです。名前は、region の説明の横にある英名ですね。
application.xml 以外にも認証情報とregionは、設定ファイルは環境変数でも設定できるみたいです。
その他の認証設定方法
その他のregion設定方法

いよいよソースです。まずは、S3のサービスを宣言

次に、いよいよupload部分です。

以上。今回は、PDFをアップロードしたので、contentType("application/pdf") としましたが、それぞれ適切なものを指定して下さい。

acl(ObjectCannedACL.PUBLIC_READ) この設定でこのファイルは全体に公開されます。プライベートなものの時は、aclの指定なしならデフォルトの設定のままになります。

[micronaut] GORMを利用したアプリをLambdaで起動するとエラー

ローカル環境では一切問題がないが、AWS Lambda 上で動かすと下記エラーが発生した。

環境
Java: java 11 corretto
Micronaut: 2.3.2 / 2.4.4

エラーとなっているサービスは、GormServiceのクラス。
原因は、@Service annotation を使っていたサービスで一部実装部分があったため、abstract class として利用していたのが原因。

@Service を利用する箇所は全て interface を利用し実装部分は普通の class を作成してそこに記載するようにした。