是否可以从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
,它说明胶水start_job_run
是成功的事实。从文档中,我看到的只是用s3
或其他database
编写的Glue作业的结果。
我尝试在我的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
答案 0 :(得分:1)
不使胶水返回响应,因为它期望在胶水内部长时间运行。阻止长时间运行的任务的响应本身并不是正确的方法。代替它,您可以使用launch job (service 1) -> execute job (service 2)-> get result (service 3)
模式。您可以将JSON响应发送到要从AWS Service 2启动的AWS Service 3(执行作业),例如如果从胶水作业启动lambda,则可以发送json响应给它。