LoginSignup
8
7

More than 3 years have passed since last update.

Glueの使い方的な㉞(環境変数を使う)

Last updated at Posted at 2019-01-27

Glueジョブで環境変数を使う

STAGE = prd を環境変数として、この環境変数を表示するだけのジョブを実行する

ジョブの中で環境変数を定義してジョブ実行する

ジョブの追加

Glueの画面から、左側メニューの"ジョブ"をクリックし、[ジョブの追加]をクリックし、以下の値を入力する

名前:se2_job18
ユーザーが作成する新しいスクリプト:チェック

スクリーンショット 0031-01-27 18.44.28.png

下の方に行き、以下の箇所をクリック

スクリーンショット 0031-01-27 18.44.12.png

キー:--STAGE
値:prd

スクリーンショット 0031-01-27 18.44.03.png

入力したら[次へ]をクリックし、次の画面で[ジョブを保存してスクリプトを編集する]をクリックし、以下のスクリプトを貼り付け、[ジョブの実行]をクリックする
getResolvedOptions(args, options) ユーティリティ関数を使用すると、ジョブの実行時にスクリプトに渡される引数にアクセスできます。この関数を使用するには、まず AWS Glue utils モジュールと sys モジュールからインポートします。

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME','STAGE'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

print(args['STAGE'])

job.commit()

スクリーンショット 0031-01-27 18.49.33.png

成功したら画面の"ログ"と書かれた箇所をクリックし、CW Logsでprdが表示されたか確認する

スクリーンショット 0031-01-27 18.52.12.png

表示された

スクリーンショット 0031-01-27 18.54.24.png

環境変数をファイルに書き、S3に配置したものを使う

S3に環境変数ファイルをアップロード

s3://test-glue00/se2/env.conf

[Environment]
STAGE: prd

ジョブの追加

Glueの画面から、左側メニューの"ジョブ"をクリックし、[ジョブの追加]をクリックし、以下の値を入力する

名前:se2_job19
ユーザーが作成する新しいスクリプト:チェック
キー:--env
値:s3://test-glue00/se2/env.conf

入力したら[次へ]をクリックし、次の画面で[ジョブを保存してスクリプトを編集する]をクリックし、以下のスクリプトを貼り付け、[ジョブの実行]をクリックする

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
import ConfigParser
import StringIO
import boto3

## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME','env'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

str = args['env']
list = str.split('/')
key = str.split("/")[3] + "/" + str.split("/")[4] + "/" + str.split("/")[5]

s3 = boto3.resource('s3')
obj = s3.Object(list[2], key)
buf = StringIO.StringIO(obj.get()['Body'].read().decode('utf-8'))

config = ConfigParser.ConfigParser()
config.readfp(buf)
print config.get('Environment', 'STAGE')

job.commit()

成功したら画面の"ログ"と書かれた箇所をクリックし、CW Logsでprdが表示されたか確認する

スクリーンショット 0031-01-27 22.19.21.png

表示された

スクリーンショット 0031-01-27 22.19.52.png

ジョブ実行時に環境変数変えたい時

以下のように[ジョブ実行]をクリックする

スクリーンショット 0002-05-15 14.36.09.png

以下のポップアップが表示され、実行するジョブの今回のみのパラメータを設定できます(永続的なジョブ設定とは別です)。ここで環境変数を変更することで、今回実行するジョブにだけ適用する環境変数を設定できます。

スクリーンショット 0002-05-15 14.36.32.png

ueharaという文字列が見えます。ジョブが重複して実行していたとしても実行時に指定した環境変数があればその値が適用され、実行時に指定した環境変数がなければジョブ設定の環境変数が適用されます。

スクリーンショット 0002-05-15 14.41.33.png

こちらも是非

Glueの使い方まとめ
https://qiita.com/pioho07/items/32f76a16cbf49f9f712f

8
7
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
8
7