概要
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. 左ペインの「ロール」を選択する
3. 「ロールを作成」を選択する
4. 信頼されたエンティティタイプ「AWSのサービス」、ユースケース「Glue」を選択して「次へ」
5. 許可ポリシーで「AWSGlueServiceRole」「AmazonS3FullAccess」をチェックして「次へ」
6. ロール名を入力して「ロールを作成」を押下する
7. 完成
3. AWSアクセスキーを作成する
作成手順
1. AWS Management Console にサインインして、IAM コンソールを開く
2. 左ペインの「ユーザー」を選択する
3. 「ユーザーの作成」を押下する
4. ユーザー名を入力して「次へ」
5. 「ポリシーを直接アタッチする」を選択し、許可ポリシーで「AWSGlueServiceRole」「AmazonS3FullAccess」をチェックして「次へ」
6. 「ユーザーの作成」を押下する
7. 作成したユーザを選択して「アクセスキーを作成」を押下する
8. ユースケースを選択し、「上記のレコメンデーションを理解し、アクセスキーを作成します。」をチェックして「次へ」
9. 必要ならタグを入力し、「アクセスキーを作成」を押下する
10. csvファイルをダウンロードして「完了」を押下する
4. S3 バケットを作成する
準備
テストデータを作成する
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. 「バケットを作成」を押下する
3. AWS リージョンを選択し、バケット名を入力、その他はデフォルトのままにして「バケットを作成」を押下する
4. もうひとつバケットを作成しておく
5. ひとつめのバケットにテストデータcsvをアップロードしておく
「アップロード」を押下する
「ファイルを追加」を押下する
ファイル選択ダイアログでファイルを選択する
「アップロード」を押下する
5. ETLジョブを作成する
作成手順
1. AWS Management Console にサインインして、AWS Glue コンソールを開く
2. 左ペインの「ETL jobs」を選択する
3. 「Script editor」を押下する
今回は「Visual ETL」ではなく、「Script editor」で作成します❕
4. 「Python shell」「Start fresh」を選択して「Create script」を押下する
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」を押下する
7. 「Run」を押下し、「Runs」タブを開と、ジョブの結果が表示される
補足. printで出力したログの確認手順
「Runs」タブの下にある「Run details」タブを開き、「Output logs」を選択する
8. アップロード先のS3バケットを確認する
参考URL
アクセスキーの管理 (コンソール)
AWS Glue の IAM アクセス許可の設定
ステップ 1: 最初の S3 バケットを作成する
AWS Glue Studio でビジュアル ETL ジョブを作成する