2

我平台革新现有的应用程序与AWS API网关和AWS LAMBDA工作访问来自AWS API网关URI请求和路径变量。当前的应用程序将它作为REST API的功能公开,它被实现为Spring Boot应用程序和Spring REST Controller注释。我如何在AWS lambda函数

虽然我能够了解从API网关请求体JSON到lambda函数,在某些情况下,我需要从Request对象的lambda函数访问的变量和路径变量。我确实看了看Lambda Context对象,但在这方面它没有任何东西可以帮助我。

实施例API网址:我使用下列API调用GET http://www.example.com/users/{id}/alerts可变的路径中的 类似于id变量。 (编号)将在这里路径变量。 GET http://www.example.com/users/{id}/alerts?id=1234

有没有什么建议的方法来完成这件事 - 我们如何使用请求变量是在下面的网址,其中警报ID作为查询字符串参数传递的例子吗?我不想使用RequestHandler接口,因为我的目标是将每个API绑定到单独的Lambda函数。

+0

你应该给你所谈论的重和 –

回答

1

如果您正在使用AWS集成型:

使用映射模板发送$ input.params(“ID”)财产请求体到您的lambda表达式。

如果您正在使用AWS_PROXY集成型:

您可以通过输入事件的“pathParameters”属性来访问路径参数。欲了解更多详情,请阅读docs

+0

谢谢“在lambda函数访问路径变量”“从Request对象变量”什么的例子!我使用映射模板方法将路径参数和请求变量放入Lambda函数中。 – kl27driver

0

我建议你使用LAMBDA代理集成型,它使你可以需要用最少的麻烦的所有信息。 所以,你需要阅读将可在属性如下:

  • /users/...路径:event.path
  • 您的查询字符串编号:event.queryStringParameters.id
  • 你需要的HTTP方法,以及:event.httpMethod
  • 你的路径参数,如ID之一:event.pathParameters

lambda proxy integration option in api gateway

让我知道如果你需要任何更多的信息。

+0

Lambda代理集成类型似乎通过在Java中似乎不支持的事件对象使数据可用。我使用映射模板方法的另一个原因是我将JSON resquest主体映射到Java POJO并注入到Lambda函数中。 – kl27driver

+0

Lambda代理整合类型绝对可以在Java中工作 –

+0

请参阅此链接了解如何在Java中执行此操作: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api -as-simple-proxy-for-lambda.html?shortFooter = true#api-gateway-proxy-integration-lambda-function-java Quote: “...该函数返回一个JSON字符串,其中包含必需的* * statusCode **和任何适用的* headers *和** body **,以便API Gateway将其作为HTTP响应返回给客户端。“ 但是,我记得当我第一次尝试用Java来做时,这是一种痛苦。这应该有助于你找到正确的道路。 –