基于previous post,我有一个AWS Glue Pythonshell作业,该作业需要从通过boto3调用传递给它的参数中检索一些信息。
我的胶水工作名称为test_metrics
Glue pythonshell代码如下所示
import sys
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv,
['test_metrics',
's3_target_path_key',
's3_target_path_value'])
print ("Target path key is: ", args['s3_target_path_key'])
print ("Target Path value is: ", args['s3_target_path_value'])
调用此作业的boto3代码如下:
glue = boto3.client('glue')
response = glue.start_job_run(
JobName = 'test_metrics',
Arguments = {
'--s3_target_path_key': 's3://my_target',
'--s3_target_path_value': 's3://my_target_value'
}
)
print(response)
在本地计算机上运行boto3代码后,我看到了200
响应,但是Glue错误日志告诉我:
test_metrics.py: error: the following arguments are required: --test_metrics
我想念什么?
答案 0 :(得分:0)
似乎documentation有点破了。
我必须像下面那样更新boto3代码以使其工作
glue = boto3.client('glue')
response = glue.start_job_run(
JobName = 'test_metrics',
Arguments = {
'--test_metrics': 'test_metrics',
'--s3_target_path_key': 's3://my_target',
'--s3_target_path_value': 's3://my_target_value'} )
答案 1 :(得分:0)
您要启动哪个工作?是Spark作业还是Python Shell作业?
如果执行火花作业,则JOB_NAME是必填参数。在Python Shell作业中,根本不需要它。
因此,在您的python shell作业中,替换
args = getResolvedOptions(sys.argv,
['test_metrics',
's3_target_path_key',
's3_target_path_value'])
使用
args = getResolvedOptions(sys.argv,
['s3_target_path_key',
's3_target_path_value'])
答案 2 :(得分:0)
我们可以从 sys.argv 获取 python shell 中的胶水作业名称