我写了一堆Lambda函数,通过API Gateway作为Rest端点暴露出来。我选择了“Lambda代理集成”,因为它似乎是一个简单的入门方式。
现在,我想通过AWS Step Functions将其中的2个函数链接起来。一般的集成和配置都可以正常工作,只是如何为每个任务创建适当的输入有些困难。
使用控制台,我可以启动一个执行并提供以下JSON:
{
"headers": {
"Authorization": "Bearer 12345"
},
"body": "\"some\": \"json\"",
"queryParameters: {
"more": "here"
}
}
由于我在任何地方都使用Lambda代理集成,因此我的Lambda函数的输入如下所示。
输出大致如下:
{
"isBase64Encoded": false,
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*"
},
"body": "{\"message\":\"Great\"}"
}
这也可以单独使用,API网关会将这些信息映射回适当的HTTP返回代码和响应中。
现在问题来了:在使用Step Functions时,我该如何创建这些输入JSON?当然,通过控制台可以很容易地创建第一个输入。但是,我该如何创建下一个输入并混入上一个输出的一部分呢?以下是一些问题的要点:
- 使用InputPath、ResultPath和OutputPath,我只能似乎只能将前一个步骤的“整个”输出作为下一个步骤的输入或部分作为输入。但是我无法仅使用输出的一部分,例如响应的“body”元素。
- 无论如何,这个“body”元素都被转义了,所以我想在将其用于下一个输入之前,需要对其进行解转义。但是,怎么做呢?
- 输入JSON需要包含“headers”、“body”或“queryParameters”等元素,而这些元素在先前的输出中根本不出现。我该如何创建它们?
我在想,Step Functions是否真的不适用于构建用于Lambda代理集成的Lambda函数。是这样吗?人们如何在没有遇到这些问题的情况下使用Step Functions?