我编写了一堆 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 而不会遇到这些问题?