Spring BootでS3 Selectの使い方

求人
Spring BootでS3 Selectの使い方

S3のとあるバケットに以下のようなCSVがあるとします。バケット名は「saba6seimenjo」とします。

name age height weight
Bob 20 170 60
Tom 30 175 65
Gaga 25 155 44

Spring Bootを起動するクラスをちょっと編集します。今回はS3 Selectが目的なので。

SampleクラスをコンストラクタインジェクションでDIしてます。

SampleクラスでS3オブジェクトを作成してS3 Selectを実装してみます。

※DIは、依存性の注入=オブジェクトの注入という意味です

AmazonS3のselectObjectContentメソッドは以下のように書いています。

This operation filters the contents of an Amazon S3 object based on a simple Structured Query Language (SQL) statement.
In the request, along with the SQL expression, you must also specify a data serialization format (JSON or CSV) of the
object. Amazon S3 uses this to parse object data into records, and returns only records that match the specified SQL
expression. You must also specify the data serialization format for the response.

S3のオブジェクト(今回ではCSV)をSQLでフィルターする。要するにCSVに対してSQLを発行できますよ、みたいな感じでしょうか。

この前紹介したVSCodeのRainbow CSVと同じような感覚です。

selectObjectContentメソッドに渡す引数は、SelectObjectContentRequesオブジェクトです。

インスタンス生成してバケット、キー、クエリーを設定します。以下、Sampleクラスです。

これを実行すると、

ちなみにSQLは上記例のようにエイリアスは「s」である必要はありません。

こうすると結果は以下のようになります。

build.gradle

以下が必要です。

以下のサイトが非常に役立ちました。

参考サイト:There is no EC2 meta data available

参考サイト:https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/SelectObjectContentUsingJava.html

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA