[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/Grails] 複数のindexがある時に、SQL strings added more than once for… のようなエラー

Micronaut / Grails で起動時に以下のようなエラー。

現象

mapping で、複数のindexを複数指定している場合に発生している模様。

修正方法

のように、indexの指定の,区切りに空白を入れない。

原因

テーブル名の接頭語が被っていると同様の現象が発生しているような記述を見かけた。
確かに今回のプロジェクトだと、テーブル名の接頭語が被っているがそこは変更できない。
他のテーブルだとカンマの後に空白があって問題がないので、テーブル名の接頭語が被ってることで何らかの影響で上記現象が発生していると思われるが、根本原因はわからず、探る時間もなし!