首页 > 解决方案 > 使用 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。当然,第一个输入很容易使用控制台。但是如何创建下一个输入并混合上一个输出的一部分呢?要点中的一些问题:

我想知道 Step Functions 是否真的不适用于为 Lambda 代理集成构建的 Lambda。是这样吗?人们如何使用 Step Functions 而不会遇到这些问题?

标签: aws-lambdaaws-api-gatewayaws-step-functions

解决方案


Step 函数旨在直接与 lambda 集成,而不是通过 api 网关,这就是为什么 step 函数不能自然地处理它逃脱 Jain 的原因。

如果您想通过 api 网关和 step 函数访问您的 lambda 代码,我建议您执行以下操作:将 lambda 代码逻辑分为两部分,即核心逻辑和核心逻辑的包装器,基本上执行从身体和逃避它。这样,您的 api 网关可以调用包装器 lambda,而您的步骤函数可以调用核心逻辑 lambda。通过这种设计,您将能够实现您的目标。此外,您可以将 lambdas 定义为一个 cfn 和代码包的一部分,这将有助于轻松维护。

我希望这回答了你的问题。

谢谢


推荐阅读