从boto3调用AWS Glue Pythonshell作业时出现参数错误

时间:2019-09-22 06:03:20

标签: amazon-web-services boto3 aws-glue

基于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

我想念什么?

3 个答案:

答案 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 中的胶水作业名称