AWS步骤功能允许调用AWS Glue作业,如下所述:https://docs.aws.amazon.com/step-functions/latest/dg/connect-glue.html
我想运行作业并返回作业过程中产生的一些值(如行数)。
我们可以像这样将参数从Step函数传递到Glue作业:
"RunGlueJob": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "MyJobName",
"Arguments": {
"--param1.$": "$.param1",
"--param2.$": "$.param2"
}
},
"Next": "NextState"
},
但是,胶水作业如何将输出返回到“步进功能”工作流程?我尝试仅从(Scala)Glue作业内的main()函数返回一个String,但它没有显示在返回到step函数流的JSON中:
{
"AllocatedCapacity": 3,
"Arguments": {
"--param1.$": "$.param1",
"--param2.$": "$.param2"
},
"Attempt": 0,
"CompletedOn": 1570114802442,
"ExecutionTime": 39,
"GlueVersion": "0.9",
"Id": "jr_some_id",
"JobName": "MyJobName",
"JobRunState": "SUCCEEDED",
"LastModifiedOn": 1570114802442,
"LogGroupName": "/aws-glue/jobs",
"MaxCapacity": 3,
"PredecessorRuns": [],
"StartedOn": 1570114746138,
"Timeout": 2880
}
我找不到关于此的任何文档,因此可能根本不可能。但是,从Lambdas返回值可以正常工作,并且可以正常显示在Step函数工作流程中。
目前您无法从胶水作业中退回任何东西。根据定义,AWS胶料有望处理大量数据,因此预期输出也将是大量数据。
您可以将结果写入dynamodb或s3或任何其他存储,并在下一步的AWS步骤功能中使用lambda访问它