将来自 AWS Glue Pythonshell 作业的 JSON 响应返回给 boto3 调用方

returning JSON response from AWS Glue Pythonshell job to the boto3 caller

有没有办法从 AWS Glue pythonshell 作业发送 JSON 响应(输出字典)?类似于从 AWS Lambda 返回 JSON 响应?

我正在调用 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,表明 Glue start_job_run 成功了。从文档中,如果 Glue 作业是用 s3 或其他一些 database.

编写的,我所看到的就是结果

我尝试在我的 Glue pythonshell 作业末尾添加 return {'result':'some_string'} 以测试它是否适用于以下代码。

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

胶水未对 return 响应进行处理,因为它预期 运行 长 运行ning 操作在其中。阻塞长时间 运行ning 任务的响应本身并不是正确的方法。您可以使用 launch job (service 1) -> execute job (service 2)-> get result (service 3) 模式代替它。您可以向要从 AWS 服务 2 启动的 AWS 服务 3(执行作业)发送 json 响应,例如如果你从 glue job 启动 lambda,你可以发送 json 响应给它。