возвращение ответа JSON от задания AWS Glue Pythonshell вызывающей стороне boto3 - PullRequest
0 голосов
/ 23 сентября 2019

Есть ли способ отправить JSON-ответ (из словаря результатов) из задания Pythonshell A AWS Glue?Похоже на возвращение ответа JSON от AWS Lambda?

Я вызываю задание Glue pythonshell, как показано ниже:

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'} )

print(response)

Ответ, который я получаю, - 200 с указанием того факта, что Gluestart_job_run был успешным.Из документации все, что я вижу, это результат, если задание Glue написано на s3 или каком-либо другом database.

. Я попытался добавить return {'result':'some_string'} в конце своего задания Glue pythonshell для проверкиесли это работает или нет с кодом ниже.

import sys
from awsglue.utils import getResolvedOptions

args = getResolvedOptions(sys.argv,
                          ['JOB_NAME',
                           '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'])
return {'result':"some_string"}

Но выдает ошибку SyntaxError: 'return' outside function

1 Ответ

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

Клей не предназначен для возврата ответа, так как ожидается, что он будет работать долго в нем.Блокировка ответа на долгосрочную задачу сама по себе не является правильным подходом.Вместо этого вы можете использовать шаблон launch job (service 1) -> execute job (service 2)-> get result (service 3).Вы можете отправить json-ответ на сервис 3 AWS, который вы хотите запустить из AWS Service 2 (выполнить задание), например, если вы запускаете лямбда-код из склеенного задания, вы можете отправить ему ответ json.

...