0
2

AWS Glueを始めてみる

Last updated at Posted at 2024-02-11

概要

AWS Glueを試してみた際の備忘録です

手順は、以下の通り
1. AWSアカウントを作成する
2. IAM ロールを設定する
3. AWSアクセスキーを作成する
4. S3バケットを作成する
5. ETLジョブを作成する

★2024/02/11 時点の情報です

1. AWSアカウントを作成する

2. IAM ロールを設定する

作成手順

1. AWS Management Console にサインインして、IAM コンソールを開く
2. 左ペインの「ロール」を選択する

ロール.png

3. 「ロールを作成」を選択する

ロール作成.png

4. 信頼されたエンティティタイプ「AWSのサービス」、ユースケース「Glue」を選択して「次へ」

信頼されたエンティティ.png

5. 許可ポリシーで「AWSGlueServiceRole」「AmazonS3FullAccess」をチェックして「次へ」

許可を追加.png

6. ロール名を入力して「ロールを作成」を押下する

ロール名.png

7. 完成

ロール完成.png

3. AWSアクセスキーを作成する

作成手順

1. AWS Management Console にサインインして、IAM コンソールを開く
2. 左ペインの「ユーザー」を選択する

左ペイン-ユーザー.png

3. 「ユーザーの作成」を押下する

ユーザーの作成.png

4. ユーザー名を入力して「次へ」

ユーザー名.png

5. 「ポリシーを直接アタッチする」を選択し、許可ポリシーで「AWSGlueServiceRole」「AmazonS3FullAccess」をチェックして「次へ」

許可を設定.png

6. 「ユーザーの作成」を押下する

確認して作成.png

7. 作成したユーザを選択して「アクセスキーを作成」を押下する

アクセスキーを作成.png

8. ユースケースを選択し、「上記のレコメンデーションを理解し、アクセスキーを作成します。」をチェックして「次へ」

ベストプラクティス.png

9. 必要ならタグを入力し、「アクセスキーを作成」を押下する

タグ.png

10. csvファイルをダウンロードして「完了」を押下する

アクセスキーを取得.png

4. S3 バケットを作成する

準備

テストデータを作成する

testdata.csv
id,name,birthday
1,佐藤 太郎,1987/03/14
2,鈴木 次郎,1990/01/05
3,高橋 三郎,1997/10/03
4,田中 四郎,2000/05/08
5,伊藤 五郎,1979/06/30

作成手順

1. AWS Management Console にサインインして、Amazon S3 コンソールを開く
2. 「バケットを作成」を押下する

バケットの作成.png

3. AWS リージョンを選択し、バケット名を入力、その他はデフォルトのままにして「バケットを作成」を押下する

バケットを作成.png

4. もうひとつバケットを作成しておく

バケットを作成2.png

5. ひとつめのバケットにテストデータcsvをアップロードしておく

「アップロード」を押下する
アップロード1.png
:arrow_down:
「ファイルを追加」を押下する
アップロード2.png
:arrow_down:
ファイル選択ダイアログでファイルを選択する
アップロード3.png
:arrow_down:
「アップロード」を押下する

5. ETLジョブを作成する

作成手順

1. AWS Management Console にサインインして、AWS Glue コンソールを開く
2. 左ペインの「ETL jobs」を選択する

ETLジョブ.png

3. 「Script editor」を押下する
今回は「Visual ETL」ではなく、「Script editor」で作成します❕

AWS Glue Studio.png

4. 「Python shell」「Start fresh」を選択して「Create script」を押下する

Script.png

5. S3のcsvを取得して、別のS3にアップロードするPythonコードを実装する

from io import StringIO
import boto3
import pandas as pd

IAM_ACCESS_KEY = "「3. AWSアクセスキーを作成する」で取得したアクセスキー"
IAM_SECRET_KEY = "「3. AWSアクセスキーを作成する」で取得したシークレットキー"

print("start")

# s3インスタンス
s3 = boto3.client("s3",
    aws_access_key_id     = IAM_ACCESS_KEY,
    aws_secret_access_key = IAM_SECRET_KEY)
    
# csv読み込み
csv = s3.get_object(Bucket="gorogoromogumogu-bucket-1", Key="testdata.csv")
csv_body = csv["Body"].read().decode("utf-8")
df = pd.read_csv(StringIO(csv_body))

print("read_csv OK")

# s3にアップロード
upload_buf = StringIO()
upload_csv = df.to_csv(upload_buf, header=True, index=False)

print("to_csv OK")

s3.put_object(Bucket = "gorogoromogumogu-bucket-2", Body=upload_buf.getvalue(), Key="upload.csv")

print("end")

バケット名が「S3 バケットを作成する」から変わってますが、
gorogoromogumogu-bucket-1 → gorogoromogumogu-bucket-a
gorogoromogumogu-bucket-2 → gorogoromogumogu-bucket-b
と読み替えてください。

6. job名を入力し、IAM Rollを選択して「Save」を押下する

job名.png

IAM Roll.png

7. 「Run」を押下し、「Runs」タブを開と、ジョブの結果が表示される

Run.png

補足. printで出力したログの確認手順

「Runs」タブの下にある「Run details」タブを開き、「Output logs」を選択する

Run detail.png
:arrow_down:
ログストリームのリンク(下図の赤線箇所)を押下する

ログストリーム.png
:arrow_down:

ログイベント.png

8. アップロード先のS3バケットを確認する

アップロード先.png

参考URL

アクセスキーの管理 (コンソール)
AWS Glue の IAM アクセス許可の設定
ステップ 1: 最初の S3 バケットを作成する
AWS Glue Studio でビジュアル ETL ジョブを作成する

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2