AWS Glue ジョブでジョブパラメータを使用する
AWS Glue ジョブを作成するときは、Role
や WorkerType
などの標準フィールドを設定します。[Argument
] フィールド (コンソールの [ジョブパラメータ]) で追加の設定情報を指定できます。これらのフィールドでは、AWS Glue ジョブに対して、このトピックに記載されている引数 (パラメータ) を指定できます。AWS Glue Job API の詳細については、「ジョブ」を参照してください。
ジョブのパラメータを設定する
コンソールの [Job details] (ジョブの詳細) タブの [Job Parameters] (ジョブパラメータ) の見出しの下でジョブを設定できます。また、AWS CLI で、ジョブに DefaultArguments
または NonOverridableArguments
を設定するか、ジョブ実行に Arguments
を設定することで、ジョブを設定できます。ジョブに設定された引数は、ジョブが実行されるたびに渡されますが、ジョブの実行に設定された引数は、その個々の実行に対してのみ渡されます。
次の例は、ジョブのパラメータを設定するために --arguments
を使用してジョブを実行する構文です。
$ aws glue start-job-run --job-name "CSV to CSV" --arguments='--scriptLocation="s3://my_glue/libraries/test_lib.py"'
ジョブのパラメータへのアクセス
AWS Glue スクリプトを作成する際に、ジョブのパラメータ値にアクセスして作成したコードの動作を変更したい場合があります。そのためのヘルパーメソッドをライブラリに用意しています。これらのメソッドは、ジョブパラメータ値をオーバーライドするジョブ実行パラメータ値を解決します。複数の場所で設定されたパラメータを解決する場合、ジョブの NonOverridableArguments
はジョブ実行の Arguments
をオーバーライドしますが、ジョブの DefaultArguments
はオーバーライドされます。
Python では:
Python ジョブでは、getResolvedParameters
という名前の関数を用意しています。詳細については、「getResolvedOptions を使用して、パラメータにアクセスする」を参照してください。ジョブパラメータは sys.argv
変数から取得できます。
Scala では:
Scala ジョブでは、GlueArgParser
という名前のオブジェクトを用意しています。詳細については、「AWS Glue Scala GlueArgParser API」を参照してください。ジョブパラメータは sysArgs
変数から取得できます。
ジョブパラメータリファレンス
AWS Glue は、ジョブおよびジョブ実行のスクリプト環境を設定するために使用できる次の引数名を認識します。
--additional-python-modules
-
インストールする Python パッケージのセットを表すカンマ区切りのリスト。パッケージのインストールは、PyPI からでも、カスタムディストリビューションを提供することでも行えます。PyPI パッケージのエントリは、ターゲットパッケージの PyPI 名とバージョンを含む、
のような形式になります。カスタムディストリビューションエントリとは S3 のパスであり、ディストリビューションを指しています。package
==version
エントリは Python のバージョンマッチングを使用して、パッケージとバージョンの照合を行います。つまり、2 つの等号 (
==
) を使用する必要があります。バージョンマッチングには他の演算子もあります。詳細については「PEP 440」を参照してください。 モジュールインストールオプションを
pip3
に渡すには、--python-modules-installer-option パラメータを使用します。 --auto-scale-within-microbatch
-
デフォルト値は false です。このパラメータは、ストリーミングデータを一連のマイクロバッチで処理する AWS Glue ストリーミングジョブにのみ使用でき、自動スケーリングを有効にする必要があります。この値を false に設定すると、完了したマイクロバッチのバッチ持続時間の指数平滑移動平均線を計算し、この値をウィンドウサイズと比較して、エグゼキューターの数をスケールアップするかスケールダウンするかを決定します。スケーリングはマイクロバッチが完了したときにのみ行われます。この値を true に設定すると、マイクロバッチの実行中に Spark タスクの数が 30 秒間変わらない場合や、現在のバッチ処理がウィンドウサイズを超えると、スケールアップします。エグゼキューターが 60 秒以上アイドル状態であったり、バッチ持続時間の指数平滑移動平均線が短い場合、エクゼキューターの数は減少します。
--class
-
Scala スクリプトのエントリポイントとなる Scala クラス。これは、
--job-language
をscala
に設定した場合にのみ適用されます。 --continuous-log-conversionPattern
-
連続ログ記録を有効にしたジョブのカスタム変換ログパターンを指定します。変換パターンは、ドライバーログとエグゼキューターログにのみ適用されます。この設定は、AWS Glue の進行状況バーには影響しません。
--continuous-log-logGroup
-
連続ログ記録が有効なジョブに対し、カスタム Amazon CloudWatch ロググループ名を指定します。
--continuous-log-logStreamPrefix
-
連続ログ記録が有効なジョブに対し、カスタム CloudWatch ログストリームのプレフィックスを指定します。
--customer-driver-env-vars
および--customer-executor-env-vars
-
これらのパラメータは、各ワーカー (ドライバーまたはエグゼキューター) のオペレーティングシステムの環境変数をそれぞれ設定します。AWS Glue 上でプラットフォームやカスタムフレームワークを構築するときにこれらのパラメータを使用し、ユーザーが Glue 上にジョブを作成できるようします。これら 2 つのフラグを有効にすると、ジョブスクリプト自体に同じロジックを注入しなくても、ドライバーおよびエグゼキューターにそれぞれ異なる環境変数を設定できます。
使用例
次の内容は、これらのパラメータを使用する例を示します。
"—customer-driver-env-vars", "CUSTOMER_KEY1=VAL1,CUSTOMER_KEY2=\"val2,val2 val2\"", "—customer-executor-env-vars", "CUSTOMER_KEY3=VAL3,KEY4=VAL4"
これらをジョブ実行の引数に設定することは、次のコマンドを実行することと同じです。
ドライバーに含まれるもの:
export CUSTOMER_KEY1=VAL1
export CUSTOMER_KEY2="val2,val2 val2"
エグゼキューターに含まれるもの:
export CUSTOMER_KEY3=VAL3
その後、ジョブスクリプト自体で
os.environ.get("CUSTOMER_KEY1")
またはSystem.getenv("CUSTOMER_KEY1")
を使用して環境変数を取得できます。強制構文
環境変数を定義するとき、次の基準に従ってください。
各キーには、
CUSTOMER_ prefix
が必要です。たとえば
"CUSTOMER_KEY3=VAL3,KEY4=VAL4"
の場合、KEY4=VAL4
は無視されて設定されません。キーおよび値のペアは、それぞれ 1 つのカンマで区切る必要があります。
例:
"CUSTOMER_KEY3=VAL3,CUSTOMER_KEY4=VAL4"
「値」にスペースやカンマが含まれている場合、引用符で囲んで定義する必要があります。
例:
CUSTOMER_KEY2=\"val2,val2 val2\"
この構文は、bash 環境変数の設定基準を忠実に模倣しています。
--datalake-formats
-
AWS Glue 3.0 以降のバージョンでサポートされます。
使用するデータレイクフレームワークを指定します。AWSGlue は、指定したフレームワークに必要な JAR ファイルを
classpath
に追加します。詳細については、「AWS Glue ETL ジョブでのデータレイクフレームワークの使用」を参照してください。次の中から 1 つまたは複数の値をカンマで区切って指定できます。
-
hudi
-
delta
-
iceberg
例えば、3 つのフレームワークすべてを指定するには、次の引数を渡します。
'--datalake-formats': 'hudi,delta,iceberg'
-
--disable-proxy-v2
-
サービスプロキシを無効にして、VPC を介してスクリプトから由来する Amazon S3、CloudWatch、AWS Glue への AWS サービス呼び出しを許可します。詳細については、「すべての AWS コールを VPC を経由するように設定する」を参照してください。サービスプロキシを無効にするには、このパラメータの値を
true
に設定します。 --enable-auto-scaling
-
値を
true
に設定した場合、Auto Scaling およびワーカーごとの課金がオンになります。 --enable-continuous-cloudwatch-log
-
AWS Glue ジョブのリアルタイムの連続ログ記録を有効にします。Apache Spark ジョブに関するリアルタイムのログは、CloudWatch で表示できます。
--enable-continuous-log-filter
-
連続ログ記録が有効であるジョブを作成または編集するときに、標準フィルタ (
true
) またはフィルタなし (false
) を指定します。標準フィルタを選択すると、無用な Apache Spark ドライバー/エグゼキュータや Apache Hadoop YARN ハートビートのログメッセージは除外されます。フィルタなしを選択すると、すべてのログメッセージが表示されます。 --enable-glue-datacatalog
-
AWS Glue データカタログの、Apache Spark Hive メタストアとしての使用を有効にします。この機能を有効にするには、値を
true
に設定します。 --enable-job-insights
-
AWS Glue のジョブ実行インサイトによる追加のエラー分析のモニタリングを有効にします。詳細については、「AWS Glue ジョブ実行インサイトでのモニタリング」を参照してください。デフォルトでは、値は
true
に設定されており、ジョブ実行インサイトは有効になっています。このオプションは、AWS Glue バージョン 2.0 および 3.0 で利用できます。
--enable-lakeformation-fine-grained-access
-
Glue AWS ジョブのきめ細かなアクセスコントロールを有効にします。詳細については、「AWS Glue と AWS Lake Formation を併用したきめ細かなアクセスコントロール」を参照してください。
--enable-metrics
-
このジョブの実行のジョブプロファイリングに関するメトリクスの収集を有効にします。これらのメトリクスは、AWS Glue コンソールおよび Amazon CloudWatch コンソールから利用が可能です。このパラメータの値は関係ありません。この機能を有効にするには、このパラメータに任意の値を指定できますが、わかりやすくするために
true
が推奨されます。この機能を無効にするには、このパラメータをジョブ設定から削除します。 --enable-observability-metrics
-
AWS Glue コンソールおよび Amazon CloudWatch コンソールの「ジョブ実行モニタリング」ページで、各ジョブ実行内で起こっている内容に関する情報を生成するため、一連のオブザーバビリティメトリクスを有効にします。この機能を有効にするには、パラメータの値を true に設定します。この機能を無効にするには、
false
に設定するか、ジョブ設定からこのパラメーターを削除します。 --enable-rename-algorithm-v2
-
EMRFS 名前変更アルゴリズムのバージョンをバージョン 2 に設定します。Spark ジョブがパーティションの動的な上書きモードを使用している場合、パーティションが重複して作成される可能性があります。例えば、
s3://bucket/table/location/p1=1/p1=1
のような重複したパーティション作成されます。ここで、P1 は上書きされているパーティションです。名前変更アルゴリズムのバージョン 2 では、この問題が修正されています。このオプションは、AWS Glue バージョン 1.0 でのみ使用できます。
--enable-s3-parquet-optimized-committer
-
Parquet データを Amazon S3 に書き込むために、EMRFS S3 最適化コミッターを有効にします。AWS Glue ジョブの作成または更新時に、AWS Glue コンソールからパラメータ/値のペアを指定できます。値を
true
に設定すると、コミッターが有効になります。デフォルトでは、このフラグは AWS Glue 3.0 ではオン、AWS Glue 2.0 ではオフになっています。詳細については、「EMRFS S3 向けに最適化されたコミッターの使用」を参照してください。
--enable-spark-ui
-
true
に設定すると、Spark UI を使用して AWS Glue ETL ジョブのモニタリングおよびデバッグを行う機能が有効になります。 --executor-cores
-
並列に実行できる Spark タスクの数。このオプションは、AWS Glue 3.0 以降でサポートされています。この値は、ワーカータイプの vCPU の数の 2 倍を超えないようにします。
G.1X
では 8、G.2X
では 16、G.4X
では 32、G.8X
では 64 です。タスクの並列処理が増えるとメモリやディスクに負荷がかかるだけでなく、ソースシステムとターゲットシステムがスロットリングされる (例えば、Amazon RDS での同時接続数が増える) ため、この構成を更新するときは注意が必要です。 --extra-files
-
スクリプトを実行する前に、AWS Glue がドライバーノードのスクリプトの作業ディレクトリにコピーする構成ファイルなど、追加ファイルへの Amazon S3 パス。複数の値はコンマ (
,
) で区切られた完全なパスでなければなりません。ディレクトリパスではなく、個別のファイルのみがサポートされています。このオプションは Python Shell ジョブタイプではサポートされていません。 --extra-jars
-
AWS Glue がドライバーおよびエグゼキュターにコピーする追加ファイルへの Amazon S3 パス。AWSGlue は、スクリプトを実行する前にこれらのファイルを Java クラスパスにも追加します。複数の値はコンマ (
,
) で区切られた完全なパスでなければなりません。拡張機能は.jar
である必要はありません --extra-py-files
-
スクリプトを実行する前に、AWS Glue がドライバーノードの Python パスに追加する追加の Python モジュールへの Amazon S3 パス。複数の値はコンマ (
,
) で区切られた完全なパスでなければなりません。ディレクトリパスではなく、個別のファイルのみがサポートされています。 --job-bookmark-option
-
ジョブブックマークの動作を制御します。次のオプション値を設定できます。
‑‑job‑bookmark‑option 値 説明 job-bookmark-enable
以前に処理されたデータを追跡します。ジョブが実行されると、最後のチェックポイントから新しいデータを処理します。 job-bookmark-disable
常にデータセット全体を処理します。以前のジョブからの出力の管理は、ユーザーが行います。 job-bookmark-pause
最後のブックマークの状態は更新せずに、最後に正常に実行された後の増分データ、または次のサブオプションで識別される範囲内のデータを処理します。以前のジョブからの出力の管理は、ユーザーが行います。2 つのサブオプションは以下のとおりです。 -
job-bookmark-from
<from-value>
は、指定された実行 ID を含む最後に成功した実行までに処理されたすべての入力を表す実行 ID です。対応する入力は無視されます。 -
job-bookmark-to
<to-value>
は、指定された実行 ID を含む最後に成功した実行までに処理されたすべての入力を表す実行 ID です。<from-value>
によって識別される入力を除く対応する入力は、ジョブによって処理されます。この入力より後の入力も処理対象から除外されます。
このオプションが設定されている場合、ジョブのブックマークの状態は更新されません。
サブオプションはオプションです。ただし、使用する場合は、両方のサブオプションを指定する必要があります。
例えば、ジョブブックマークを有効にするには、以下の引数を渡します。
'--job-bookmark-option': 'job-bookmark-enable'
-
--job-language
-
スクリプトプログラミング言語。この値は
scala
またはpython
のいずれかである必要があります。このパラメータが存在しない場合、デフォルトでpython
が使用されます。 --python-modules-installer-option
-
--additional-python-modules でモジュールをインストールする場合に、
pip3
に渡されるオプションを定義するプレーンテキストの文字列。コマンドラインの場合と同様に、スペースで区切り、先頭にダッシュを付けてオプションを指定します。使用方法の詳細については、「pip を使用して追加の Python モジュールを AWS Glue 2.0 以降にインストールする」(Python モジュールのサポートの追加) を参照してください。注記
Python 3.9 を使用する場合、このオプションは AWS Glue ジョブではサポートされません。
--scriptLocation
-
ETL スクリプトが (
s3://path/to/my/script.py
形式で) 置かれている Amazon Simple Storage Service (Amazon S3) の場所。このパラメータは、JobCommand
オブジェクトで設定されているスクリプトの場所を上書きします。 --spark-event-logs-path
-
Amazon S3 パスを指定します。Spark UI モニタリング機能を使用する場合、AWS Glue は Spark イベントログを、30 秒ごとに、この Amazon S3 パスの (Spark UI イベントを保存するための一時ディレクトリとして使用可能な) バケットにフラッシュします。
--TempDir
-
ジョブの一時ディレクトリとして使用できるバケットへの Amazon S3 のパスを指定します。
例えば、一時ディレクトリを設定するには、以下の引数を渡します。
'--TempDir': '
s3-path-to-directory
'注記
バケットがリージョンに既に存在しない場合、AWS Glue はジョブに一時的なバケットを作成します。このバケットは、パブリックアクセスを許可する場合があります。Amazon S3 のバケットは、パブリックアクセスブロックを設定するように変更するか、そのリージョンのすべてのジョブが完了した後に削除するかのいずれかが可能です。
--use-postgres-driver
-
この値を
true
に設定した場合、Amazon Redshift の JDBC ドライバーとの競合を避けるために、クラスパスにある Postgres JDBC ドライバーが優先されます。このオプションは、AWS Glue バージョン 2.0 以降でのみ使用可能です。 --user-jars-first
-
この値を
true
に設定した場合、クラスパス内にあるお客様の追加 JAR ファイルが優先されます。このオプションは、AWS Glue バージョン 2.0 以降でのみ利用できます。 --conf
-
Spark の設定パラメータを制御します。高度なユースケース向けです。
--encryption-type
-
レガシーパラメータ。対応する動作は、セキュリティ設定を使用して設定する必要があります。セキュリティ設定の詳細については、「AWS Glue によって書き込まれたデータの暗号化」を参照してください。
AWS Glue は次の引数を内部的に使用するため、ユーザーは使用しません。
-
--debug
— AWS Glue 内部用。設定する必要はありません。 -
--mode
— AWS Glue 内部用。設定する必要はありません。 -
--JOB_NAME
— AWS Glue 内部用。設定する必要はありません。 -
--endpoint
— AWS Glue 内部用。設定する必要はありません。
AWS Glue は、サイト固有のカスタマイズを実行するための sitecustomize
を使用した Python の site
モジュールによる環境のブートストラップをサポートします。独自の初期化関数のブートストラップは高度なユースケースにのみ推奨され、AWS Glue 4.0 ではベストエフォートベースでサポートされています。
環境変数のプレフィックス GLUE_CUSTOMER
は、お客様専用です。