我正试图从该作业的脚本中访问AWS ETL Glue Python shell作业id。这是您可以在AWS Glue控制台的第一列中看到的RunID,类似于jr_5fc6d4ecf0248150067f2。如何在AWS Glue python shell作业中以编程方式获取它?
注意:python shell作业与AWS Glue中的pyspark作业不同。
是的,这听起来很疯狂,但我在作业中添加了一个名为job_NAME的参数,设置了作业名称,然后在脚本中使用boto3查询作业以获取其运行id。可能不是最好的,但这是我找到的唯一方法。若有人有更好的解决方案,那个么我会改变已接受的答案。
def get_running_job_id(job_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_job_runs(JobName=job_name)
for res in response['JobRuns']:
print("Job Run id is:"+res.get("Id"))
print("status is:"+res.get("JobRunState"))
if res.get("JobRunState") == "RUNNING":
return res.get("Id")
else:
return None
except ClientError as e:
raise Exception("boto3 client error in get_status_of_job_all_runs: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in get_status_of_job_all_runs: " + e.__str__())
我找不到解决方案。没有关于这方面的官方文档,并且在运行AWS Glue Python Shell作业时,sys.argv
(命令行参数(没有将JOB_RUN_ID
参数传递给Python脚本。
在我的测试中,我发现传递给PythonShell作业的参数是:
job-bookmark-option
scriptLocation
但是,在运行AWS Glue Spark作业时,会传递以下参数:
JOB_ID
JOB_NAME
JOB_RUN_ID
job-bookmark-option
TempDir
因此,没有官方或明显的方法可以从作为AWS Glue上的Python Shell作业运行的Python脚本中找到JOB_RUN_ID
。如果AWS将来修复了这个问题,我会更新。谢谢