aws-lambda - 使用 Lambda 代理集成的 Lambda 步骤函数
问题描述
我编写了一堆 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 Gateway 将这些信息映射回正确的 HTTP 返回代码和响应等等。
现在:使用 Step Functions 时如何创建这些输入 JSON。当然,第一个输入很容易使用控制台。但是如何创建下一个输入并混合上一个输出的一部分呢?要点中的一些问题:
- 使用 InputPath、ResultPath 和 OutputPath 我似乎只能使用上一步的“整体”输出作为输入或部分作为下一步的输入。但是我不能只使用输出的一部分,在我的例子中是响应的元素“body”。
- 这个元素“body”无论如何都被转义了,所以我想我需要在以某种方式将它用于下一个输入之前取消转义它?但是怎么做?
- 输入 JSON 需要包含诸如“headers”、“body”或“queryParameters”之类的元素,这些元素根本不会出现在先前的输出中。我如何创建这些?
我想知道 Step Functions 是否真的不适用于为 Lambda 代理集成构建的 Lambda。是这样吗?人们如何使用 Step Functions 而不会遇到这些问题?
解决方案
Step 函数旨在直接与 lambda 集成,而不是通过 api 网关,这就是为什么 step 函数不能自然地处理它逃脱 Jain 的原因。
如果您想通过 api 网关和 step 函数访问您的 lambda 代码,我建议您执行以下操作:将 lambda 代码逻辑分为两部分,即核心逻辑和核心逻辑的包装器,基本上执行从身体和逃避它。这样,您的 api 网关可以调用包装器 lambda,而您的步骤函数可以调用核心逻辑 lambda。通过这种设计,您将能够实现您的目标。此外,您可以将 lambdas 定义为一个 cfn 和代码包的一部分,这将有助于轻松维护。
我希望这回答了你的问题。
谢谢
推荐阅读
- angular - TypeScript isObject & isNullOrUndefined 已弃用
- powerbi - POWER BI 中迄今为止的 AD 登录时间
- amazon-web-services - Cloudfront 日志头
- apache-flink - 如何防止 Flink 作业自行取消
- ios - 读取iOS的漫游状态或网络运营商
- flutter - 错误:无法在“字节数据”上访问属性“缓冲区”?
- python - 如何对包含数字的 glob.glob 进行排序?
- c - 如何在 C 中创建登录系统
- c++ - 如何在 C++ 中搜索对象名称
- go - 获取 GitHub 存储库的组织