AWS Lambda 函数 - 访问路径和请求参数值

AWS Lambda function - accessing Path and request parameter value

对于我的 POC,创建了简单的 lambda 函数,它将通过 rest api 提供 emp 信息。 创建 lambda 函数并使用 API 网关访问所有 emp 数据。 在访问特定数据时面临一些挑战。

我正在寻找

emp/1 - 检索 emp id emp/_search?name="apple" - 搜索名称包含 apple.

问题是如何在 java 代码中检索路径和请求参数。

public class TestAwsLambdaFunction implements RequestHandler<Map<String, Object>, String> {

    @Override
    public String handleRequest(Map<String, Object> input, Context context) {
        String empID= null;
        try {
            @SuppressWarnings("unchecked")

            Map<String, String> pathParameters = (Map<String, String>) input.get("querystring");                

            empID= pathParameters.get("id");
            System.out.println(empID);
            // TO-Do Business logic - 


        } catch (Exception e) {
            // TODO: handle exception
        }
        return "Hello from Lambda!" + empID;
    }

}

在 Rest api 调用中公开我的数据的最佳方法是什么。与 Lambda 或 serverless 有点混淆。 可以选择通过页面方式显示数据。因为我是 AWS 的新手。请指导我

您需要在设置 API 网关时选择 Lambda Proxy Integrations。这里是官方文档Set up Lambda Proxy Integrations in API Gateway

在这种情况下,API网关会将整个请求数据传递给Lambda,包括请求headers、查询字符串参数、URL路径变量等。然后您可以使用 Java 代码解析数据。

问题是如何在java代码中获取路径和请求参数。

您可以使用映射模板将请求 body 中的 $input.params('name') 属性 发送到您的 Lambda 函数。

在 Rest api 调用中公开我的数据的最佳方法是什么

根据这些准则使用代理集成:

  • 避免贪婪的路径变量,除了 catch-all 404.
  • 避免使用 ANY 方法。
  • 定义请求模型并启用请求验证(记住它默认关闭)。
  • 在您的 Lambda 中,检查 content-type header 是否与您的请求模型之一匹配,如果不匹配 return 415 Unsupported Media Type 状态代码(代理集成使用 WHEN_NO_MATCH 直通行为)。完成此检查后,您的 Lambda 可以假定请求验证已完全执行。

作者:本·科欧