【问题标题】:AWS - How to expose multiple API endpoints with one lambda functionAWS - 如何使用一个 lambda 函数公开多个 API 端点
【发布时间】:2018-02-21 15:57:02
【问题描述】:

我有以下Lambda函数:

using Amazon.Lambda.Core;

// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]

namespace AWSLambdaAPI
{
    public class Function
    {

        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public object FunctionHandler(string input, ILambdaContext context)
        {
            return new { FirstName = "William Smith" };
        }
    }
}

我正在使用 AWS Gateway API 创建对此 Lambda 函数的 POST 调用。

我的问题是:是否可以只使用一个 Lambda 函数来公开多个 API 方法?或者我必须为我想要公开的每个方法创建一个 Lambda。

例如:如果我有一个验证登录的方法,然后有另一个将一些对象插入 S3 的方法,我可以在单个 Lambda 函数中执行此操作吗?

【问题讨论】:

  • 你有没有找到一个好方法来做到这一点?

标签: aws-lambda aws-api-gateway


【解决方案1】:

您可以使用单个 API 网关端点来处理不同的方法,但这取决于用例。它们是:

  1. 如果您使用的所有方法都在一个流程中,即一个接一个,您有两个选择:

    • 使用 AWS 步进函数,它将按顺序执行不同的 lambda 函数 AWS Step function。因此,我们可以使用 API 网关触发 lambda 函数,您可以命令 lambda 函数按顺序执行。然后我们只需要一个 API 网关来触发您的所有 lambda 函数,这些函数将按照我们指定的顺序执行。但是缺点是,如果我们使用 AWS step 函数返回某些内容,我们必须每次都进行 poll 以查看该状态是处于运行状态还是已完成。 AWS Step 函数以异步方式运行,因此它会在精细执行时为我们提供所需的响应。

    • 其他选项可以像 一个 lambda 函数,它会从内部调用一个普通函数。假设在您的示例中,您的第一种方法是登录方法。因此,如果您希望您的 lambda 函数首先登录,然后将一个对象插入到 S3,您可以选择一个具有登录功能的 lambda 函数,如果它没问题,那么它将调用一个函数来处理要发送到的对象S3。这种技术被我的很多人使用,但我们需要跟踪我们上传的总 jar 大小。 AWS Lambda 对我们上传的 jar 的大小有一些限制。 AWS Limit.

  2. 如果上述情况不适合您,那么您必须为每种方法选择不同的 lambda 函数

注意:请不要直接链接不同的 lambda 函数。这不是正确的方法。请改用 AWS Step 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2020-12-01
    • 2019-02-11
    • 2018-06-15
    • 2020-08-21
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多