はじめる前に
- 必須AWS アカウントを持っていること
- 必須マネジメントコンソールにサインインできること
- 必須S3バケットの作成、IAMロールの基本的な作成経験
- あると良いGlueデータカタログの構造(データベース・テーブルの概念)の理解
※ このハンズオンは すべてコンソールだけで完結します。
参照する公式ドキュメント
手順に迷ったときや、用語の意味を確かめたいときに開きましょう。
※ リンク切れの場合は、ページタイトルで検索してください。
背景・シナリオ
データベースやテーブルを1つずつ手作業で定義するのは、ファイルの数が増えると大変な作業になります。AWS Glueの「クローラー」を使うと、指定したS3の場所をスキャンし、列名・型を推測したうえで、データカタログにテーブルを自動的に作成してくれます。
今回はS3に複数のCSVファイルを置き、クローラーを実行して、自動的に推測された列構成を確認します。手作業での定義とどう違うかを体感します。
クローラーはどうやって列の型を決めているの?
クローラーは、対象のファイルの内容をサンプリングして読み取り、数値らしい値が多ければ数値型、そうでなければ文字列型、といった形で型を推測します。完璧に正しいとは限らないため、推測結果は実行後に確認し、必要なら手動で調整することもあります。
クローラーを一度実行すれば、後から追加したファイルも自動的に反映されるの?
クローラーは「実行したタイミング」でスキャンします。新しいファイルを追加した後にもう一度クローラーを実行する必要があります(スケジュール実行を設定すれば、定期的に自動実行することもできます)。
AWS Glueのクローラーを作成・実行し、S3に置いた複数のCSVファイルから、データカタログにテーブルが自動的に作成され、列構成が推測されていることを確認する。
つくる構成
S3に置いた複数のCSVファイルを、クローラーがスキャンしてテーブルを自動生成する、という流れを作ります。
要件
以下の要件を満たし、クローラーによる自動生成の流れを体験してください。
| No | 要件 |
|---|---|
| 1 | S3バケットに、同じ列構成を持つCSVファイルを複数(例:2〜3個)配置する(東京リージョン)。 |
| 2 | AWS Glue用のIAMロールを1つ作成する(管理ポリシーAWSGlueServiceRole+対象S3バケットへの読み取り権限)。 |
| 3 | クローラーを1つ作成し、対象にこのS3の場所、使用するIAMロールを指定し、出力先のデータベースを指定する(新規作成可)。 |
| 4 | クローラーを実行し、ステータスが「成功」になることを確認する。 |
| 5 | データカタログのテーブル一覧に新しいテーブルが自動的に作成され、列名・型が推測されていることを確認する。 |
構築の進め方
「複数ファイルを用意する」→「IAMロールを作る」→「クローラーを作成・実行する」→「推測結果を確認する」という順番で進めます。
- フェーズ1 — 複数ファイルを用意する
-
マネジメントコンソールにサインインし、リージョンを合わせる
ブラウザで AWS マネジメントコンソールにサインインし、画面右上のリージョンが「アジアパシフィック(東京)ap-northeast-1」になっていることを確認します。
-
同じ構成のCSVファイルを複数アップロードする
S3バケットを1つ作成し(名前は一意に、例:
glue-crawler-demo-yourname)、同じ列構成(例:氏名・部署・入社年)のCSVファイルを2〜3個、同じフォルダ(例:employees/)にアップロードします。 - フェーズ2 — IAMロールを作成する
-
Glue用のIAMロールを作成する
IAMコンソールで、Glueサービス用の信頼関係を持つロールを作成し、管理ポリシー
AWSGlueServiceRoleと、対象S3バケットへの読み取り権限を付与します。 - フェーズ3 — クローラーを作成・実行する
-
クローラーを作成する
Glueコンソールの「クローラー」から「クローラーを作成」を選びます。データソースに手順2のS3パスを指定し、IAMロールに手順3で作成したロールを選び、出力先のデータベースを指定します(新規作成も可能)。
-
クローラーを実行する
作成したクローラーを選び、「実行」を選びます。ステータスが「実行中」→「成功」に変わるまで待ちます。
数分程度で完了する少量のファイルであれば、クローラーの実行は数分程度で完了します。完了するとテーブルが自動的に作成されます。
- フェーズ4 — 推測結果を確認する
-
自動生成されたテーブルを確認する
指定したデータベースのテーブル一覧を開き、クローラーが作成したテーブルを選びます。「スキーマ」タブで、推測された列名・型を確認します。
これがゴール手作業で1つも列を入力していないのに、テーブルの列構成が自動的に出来上がっている——この状態を確認できたら、このハンズオンの目的は達成です。
つまずきポイント
初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直すか」の手がかりとして使ってください。
「実行したのに、ステータスが失敗になる」
IAMロールにS3への読み取り権限が正しく含まれているか、指定したS3パスが実際にファイルが置かれている場所と一致しているかを見直しましょう。
「すべての列が文字列型になっている」
サンプルデータの内容(空白行・ヘッダー行の有無、数値の表記の揺れなど)を見直すヒントになります。クローラーはファイルの内容から推測しているため、データの書き方が結果に影響します。
完了チェック
要件の再確認ではなく、画面のどこを見れば達成を確認できるかをまとめました。次を順に確かめましょう。
- クローラーの実行履歴で、ステータスが「成功」になっている。
- データカタログのテーブル一覧に、自動生成されたテーブルが表示されている。
- テーブルの「スキーマ」タブに、推測された列名と型が表示されている。
- テーブルのおおよそのレコード数が表示されている。
考えてみよう
手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。
- クローラーによる自動推測と、手動でのテーブル定義、それぞれどんな場面に向いているでしょうか。
ヒント
ファイルの数や、列構成が頻繁に変わるかどうかという観点で考えてみましょう。 - クローラーの推測が間違っていた場合、どのように修正する方法が考えられるでしょうか。
ヒント
テーブルの定義は、クローラーが作った後でも編集できます。自動生成は「出発点」であり「最終形」ではない、という観点で考えてみましょう。 - 同じ列構成を持つファイルが将来増え続ける場合、クローラーをどのように運用すると手間が減らせるでしょうか。
ヒント
クローラーには、定期的に自動実行する「スケジュール」の機能があります。手動で都度実行する場合と比べてどう違うか考えてみましょう。
後片づけ
作成したリソースを順番に削除します。
- クローラーを削除する:Glueコンソールのクローラー一覧から削除します。
- テーブル・データベースを削除する:クローラーが生成したテーブルとデータベースを削除します。
- IAMロールを削除する:作成したロールを削除します。
- S3バケットを空にして削除する:アップロードしたCSVファイルを削除してから、バケット本体を削除します。
コストに関する注意: Glueクローラーは、クローラーの実行時間に応じて課金されます(無料利用枠の対象外です)。少量データのクローラー実行であれば数分程度で完了するため、料金はごく小さく済みます。Glueデータカタログ自体の保存・アクセスは、一定数まで無料利用枠の対象になっています。S3の保存容量・リクエストにも別途料金がかかりますが、少量であれば無料利用枠の範囲内に収まることが多いです。検証が終わったら、上の「後片づけ」に沿って忘れずに削除しましょう。最新の料金は AWS の公式料金ページで確認してください。