Ошибка аргументов при вызове задания AWS Glue Pythonshell из boto3 - PullRequest
0 голосов
/ 22 сентября 2019

Исходя из предыдущего поста , у меня есть задание AWS Glue Pythonshell, которое требует извлечения некоторой информации из аргументов, переданных ему через вызов boto3.

My Glue jobимя test_metrics

Код Python-оболочки Glue выглядит следующим образом:

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)

Я вижу 200 ответ после запуска кода boto3 на моем локальном компьютере, но журнал ошибок Glue сообщает мне:

test_metrics.py: error: the following arguments are required: --test_metrics

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Какую работу вы пытаетесь запустить?Задание Spark или задание Python?

Если задание Spark, JOB_NAME является обязательным параметром.В задании оболочки Python оно вообще не нужно.

Так что в задании оболочки Python замените

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'])
0 голосов
/ 22 сентября 2019

Похоже, документация немного неработоспособна.

Мне пришлось обновить код 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'} )
...