Glueジョブで環境変数を使う
STAGE = prd を環境変数として、この環境変数を表示するだけのジョブを実行する
ジョブの中で環境変数を定義してジョブ実行する
ジョブの追加
Glueの画面から、左側メニューの"ジョブ"をクリックし、[ジョブの追加]をクリックし、以下の値を入力する
名前:se2_job18
ユーザーが作成する新しいスクリプト:チェック
![スクリーンショット 0031-01-27 18.44.28.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27932%2F561d8335-f61f-a1c8-6afd-0a26012b8fe6.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=0d3dc52a07c465e921a1bc4fd7091627)
下の方に行き、以下の箇所をクリック
![スクリーンショット 0031-01-27 18.44.12.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27932%2F5e01115b-77e3-3a3f-6c7b-a23846e950ab.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c68756e6f2fcd68f6dcec31630050e16)
キー:--STAGE
値:prd
![スクリーンショット 0031-01-27 18.44.03.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F27932%2F22412c26-294c-b95b-c446-5293a6758775.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=452b2aaf5bc8de943628de109ddaa438)
入力したら[次へ]をクリックし、次の画面で[ジョブを保存してスクリプトを編集する]をクリックし、以下のスクリプトを貼り付け、[ジョブの実行]をクリックする
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()
成功したら画面の"ログ"と書かれた箇所をクリックし、CW Logsでprdが表示されたか確認する
表示された
環境変数をファイルに書き、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が表示されたか確認する
表示された
ジョブ実行時に環境変数変えたい時
以下のように[ジョブ実行]をクリックする
![スクリーンショット 0002-05-15 14.36.09.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F27932%2F49a39838-958f-2ebc-1d64-ced788f579ec.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9af37f0d6862f955caec96a3ce043d35)
以下のポップアップが表示され、実行するジョブの今回のみのパラメータを設定できます(永続的なジョブ設定とは別です)。ここで環境変数を変更することで、今回実行するジョブにだけ適用する環境変数を設定できます。
![スクリーンショット 0002-05-15 14.36.32.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F27932%2F56d99b2b-cd2e-a45a-e20a-475ee40acdd2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=030199205c52993c382f328d0fe1995d)
ueharaという文字列が見えます。ジョブが重複して実行していたとしても実行時に指定した環境変数があればその値が適用され、実行時に指定した環境変数がなければジョブ設定の環境変数が適用されます。
![スクリーンショット 0002-05-15 14.41.33.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F27932%2Fbe1324f8-236b-8f99-0d57-596e7235baf8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=17891e024ddb363def2d9339d770fb2f)
こちらも是非
Glueの使い方まとめ
https://qiita.com/pioho07/items/32f76a16cbf49f9f712f