AWS Glueをコンソール上からポチポチ変更していると、コミット履歴や設定変更の履歴が残らず、辛いと思うことが多々あったので作りました。
Glue Job にのみ関心を持つツールで、Glue のスクリプトファイルや設定ファイルを一つのリポジトリでまとめて管理したいときに欲しいと思われるAPIをコマンドライン上で実行できます。
GlueJobのリポジトリ例
sample-job
├── gjobctl.yml ## <- gjobctl設定ファイル
└── sample-job.json ## <- Glue Job定義ファイル
└── script
└── sample-job.py ## <- Jobスクリプト
region: ap-northeast-1
job_name: sample-job
job_setting_file: sample-job.json
json形式のGlue Job定義ファイルは、下記するgjobctl get
コマンドを使うと簡単に作成できます。
Glue Job の一覧を取得するコマンドです。
$ gjobctl list
sample-job
hoge-job
piyo-job
Glue Job の詳細情報を Json で取得するコマンドです。 ここで取得した情報は、Deploy などのコマンドを実行する際に使用できます。
$ gjobctl get <job-name>
Jsonファイルをもとに、新規Glue Jobを作成するコマンドです。
$ gjobctl create
Successfully createsd Glue Job: sample-job
{
"Job": {
"Command": {
"Name": "glueetl",
"PythonVersion": "3",
"ScriptLocation": "s3://your_bucket/scripts/sample-job.py"
},
"Name": "sample-job",
"Role": "arn:aws:iam::XXXXXXXXXXX:role/SampleGlueMasterRole",
}
}
option
json形式のJobの設定ファイルは"-f"オプションで任意の値を渡せます。
-f, --job-setting-file=JOB-SETTING-FILE
Json ファイルをもとに Glue Job をアップデートするコマンドです。
$ gjobctl update sample-job.json
Successfully updatesd Glue Job: sample-job
{
"Job": {
"Command": {
"Name": "glueetl",
"PythonVersion": "3",
"ScriptLocation": "s3://your_bucket/scripts/sample-job.py"
},
"Name": "sample-job",
"Role": "arn:aws:iam::XXXXXXXXXXX:role/SampleGlueMasterRole",
}
}
option
json形式のJobの設定ファイルの場所は、"-f"オプションで任意の値を渡せます。
-f, --job-setting-file=JOB-SETTING-FILE
ローカルの Job スクリプトを S3 にアップロードするコマンドです。
$ gjobctl script-deploy <script-local-path>
option
json形式のJobの設定ファイルは"-f"オプションで任意の値を渡せます。
-f, --job-setting-file=JOB-SETTING-FILE
Glue Jobを実行するコマンドです。
※ 実行時のオプション引数はまだ対応していません。
$ gjobctl run <job-name>
- テストの実装
- Runコマンドで実行時のオプション引受け