【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください！
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)


# 今回の実施内容
前回Part2の内容を行いました。今回はGlueの設定を行います。
* Part1
    * JSONのダミーデータの作成
    * S3バケットの作成
* Part2
    * Lambda作成
    * S3イベントとLambdaの連動
* Part3
    * Glueの設定
* Part4
    * Athenaの設定
* Part5
    * Quicksightでの可視化

## AWS Glueとは？
AWS GlueはAWSで提供しているETLツールです。
ETLとは「Extract（抽出）」「Transform（変換）」「Load（書き出し）」の略称で
DBやS3などのデータソースから必要なデータを取り出し、分析しやすいデータ形式へ変換してデータ分析基盤へ書き出す役割があります。
（今回はLamdaを使用しましたが、GlueでJSONからCSVへの変換も可能です。）

今回はS3の特定のフォルダからCSVファイルを抽出し、Amazon Athenaで操作する
データベースとテーブル作成を担当してくれます。
詳しい動きは以下になります。
<img width="350" alt="Glue" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/c76c6d14-7326-f4d2-5c11-b8a44c59e06e.jpeg">

>①データソースからメタデータを取得 ※実データではなくメタデータを取得する
②クローラーがデータカタログにメタデータを登録
③データカタログのデータベースにメタデータのテーブルが作成される
④作成されたテーブルをAthenaで操作する


## クローラーの設定
クローラーを作成していきます。
* AWS Glueの画面からCrawlersを選択し、「Create crawler」をクリックします。
<img width="700" alt="Crawler1" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/9ce6dfb2-4f6a-eeee-3469-8fe9570d5fc8.jpeg">

* Step1ではクローラーの名前を設定します。
「crawler-csv」にしました。そのほかの設定値はデフォルト値のまま「Next」をクリックします。
<img width="700" alt="Crawler2" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/5cbd2950-a0ef-3a05-5670-e82e4ba08ab2.jpeg">


* Step2ではデータソースを設定します。
「Is your data already mapped to Glue tables?」にはまだデータをテーブルにマッピングしていないので「No yet」を選択。
「Add a data source」をクリックします。
<img width="700" alt="Crawler3" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/a4dd51e4-1e97-6fbe-f4fa-0935ce0c7109.jpeg">


* データソースを指定します。以下を設定しました。
設定後「Add an S3 data source」をクリックします。

|項目  |設定値  | 
|---|---|
|Data source|S3| 
|Location of S3 data|In this account| 
|S3 path|s3://transbucket-2024/output/| 
|Subsequent crawler runs|Crawl all sub-folders|

:::note
S3 pathはフォルダ名まで指定します。
:::
<img width="500" alt="Crawler4" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/7a08572f-5eb4-d75a-4f4d-3eb4f8c3c89a.jpeg">


* 「Data sources」一覧に追加されているのを確認して「Next」をクリックします。
<img width="700" alt="Crawler5" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/4fead747-61e5-0d9c-afda-663985e1f518.jpeg">



* Step3ではクローラーのIAMロールを選択します。
事前に作成していないので「Create new IAM role」をクリックし新たに作成します。
ロール名を入力し、そのほかの設定値はデフォルト値のまま「Next」をクリックします。
<img width="700" alt="Crawler6" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/8bd8bfaa-bb0a-975f-eb53-118b16550d59.jpeg">

* Step4ではメタデータをテーブルで保管するためのデータベースを選択します。
こちらも事前に作成していないので「Add database」をクリックし新たに作成します。
<img width="700" alt="Crawler7" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/1a0550c7-93ba-e96a-7da1-7054ef6d9e6b.jpeg">


* 別タブが開くのでそちらでデータベース名を入力して「Create database」をクリックします。
「csv-db」にしました。
<img width="700" alt="Crawler8" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/0536143d-ea76-ddd3-142a-cb0ad017aff1.jpeg">


* AWS Glueの画面に戻り「Target database」のプルダウンから作成したデータベースを選択。
そのほかの設定値はデフォルト値のまま「Next」をクリックします。
<img width="700" alt="Crawler9" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/7be79c47-f94d-3cef-59be-3a467b2f7f3c.jpeg">


* Step5で設定した内容を確認し「Create crawler」をクリックします。
<df>

* 作成したクローラーの画面が表示されるので「Crawler runs」タブから「Run crawler」をクリックします。
<img width="700" alt="Crawler11" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/0a125f9d-7276-307a-31cd-0f0ea3576d7b.jpeg">


* 「Status」がCompletedになればメタデータのテーブルが作成されます。
<img width="700" alt="Crawler12" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3561023/6305e381-4e87-5ae1-3319-f1d8adc8afab.jpeg">

# まとめ
ここまで読んでくださりありがとうございました！
今回はAWS Glueの設定を行いました。
Glueはクローラー、データカタログ、ETLジョブ、ワークフローなどの様々な機能を合わせているのでそれぞれの役割が明確に理解できていませんでしたが実際に構築を行い理解が深まりました。
今回のようにデータソースからデータを抽出してデータカタログのテーブルに保存するだけでなく、データ変換もできるため次回は違う使い方を実践していきたいと思います。


## 参考にさせていただいたサイト
https://dev.classmethod.jp/articles/sugano-037-glue-for-athena/#toc-1