我正在尝试创建一个包含两个lambda函数的简单步进函数。第一个lambda函数将两个数字作为用户输入(例如num1 = 2,num2 = 5),并将这两个数字的和传递给第二个lambda函数。第二个lambda函数将第一个lambda函数的输出乘以一个常数(例如10)。
我希望能够获得最终答案(在这种情况下为(2 + 5)* 10 = 70)作为API调用的输出。
我能够成功执行Step Function(从AWS Step Function Console)。但是,调用API(与Step Function集成)时得到的输出不是数字,而是:
{
"executionArn": "arn:aws:states:ap-south-1:123456789012:execution:Test_Math:xxx",
"startDate": 1560344276.117
}
如何获取API调用以返回答案(在这种情况下为70)?
我已经仔细阅读过AWS文档和AWS API Gateway with Step Function这个问题,但是我仍然不清楚。
我的问题与这个Api gateway get output results from step function?有点类似。 我尝试在API网关中添加第二个方法,该方法将通过DescribeExecution操作调用Step Function,但此方法无效。
具有StartExecution操作的POST方法的映射模板(application / json)如下:
#set($inputRoot = $input.path('$'))
#set($data = $util.escapeJavaScript($input.json('$')))
{
"input": "{ \"num1\": $inputRoot.num1, \"num2\": $inputRoot.num2 }",
"stateMachineArn": "arn:aws:states:ap-south 1:998338******:stateMachine:Test_Math"
}
我使用DescribeExecution操作创建了一个新的GET方法,其中包含以下“集成请求”详细信息:
Integration type: AWS Service
AWS Service: Step Functions
HTTP method: GET
Action: Describe Execution
Content Handling: Passthrough
Mapping template : application/json
#set($inputRoot = $input.path('$'))
#set($data = $util.escapeJavaScript($input.json('$')))
{
"executionArn": "arn:aws:states:ap-south-1:998338321653:execution:Test_Math:3981114a-da51-411d-9533-8571dc976e2d",
"input": "{ \"num1\": $inputRoot.num1, \"num2\": $inputRoot.num2 }"
}
P.S:我想使用步进函数来部署机器学习模型,这只是我正在尝试的一个简单测试。
答案 0 :(得分:3)
您可以使用 describe_execution 方法来获取步进函数的最终结果。您必须将执行信息作为此方法的输入传递。
查找更多详细信息在给出执行信息的情况下,以下python代码将打印输出。
import boto3
client = boto3.client('stepfunctions')
executionArn = ''
response = client.describe_execution(
executionArn=executionArn
)
#print(response)
print(response.get('output'))