如何从AWS Lambda函数中的AWS API Gateway URI访问请求和路径变量

时间:2017-01-23 06:47:59

标签: spring amazon-web-services spring-boot aws-lambda aws-api-gateway

我正在重新构建现有的应用程序以使用AWS API Gateway和AWS Lambda。当前的应用程序将其作为REST API公开,它作为Spring Boot应用程序和Spring REST Controller注释实现。

虽然我能够从API网关获取请求主体JSON到Lambda函数,但在某些情况下,我需要来自Request对象的变量以及Lambda函数中可访问的路径变量。我确实看了一下Lambda Context对象,但它没有任何可以帮助我的东西。

  

示例API网址:我使用类似于id变量的路径变量   以下API调用GET http://www.example.com/users/{id}/alerts。    {id} 将是此处的路径变量。我们如何使用请求变量的示例位于以下URL中,其中警报ID作为查询字符串参数传递 - GET http://www.example.com/users/{id}/alerts?id=1234

有没有推荐的方法来完成这项工作?我不想使用RequestHandler接口,因为我的目标是将每个API绑定到一个单独的Lambda函数。

2 个答案:

答案 0 :(得分:1)

如果您使用的是AWS集成类型:

使用映射模板将请求正文中的$ input.params(' id')属性发送到Lambda函数。

如果您使用的是AWS_PROXY集成类型:

您可以通过" pathParameters"访问路径参数。传入事件的属性。有关详细信息,请阅读docs

答案 1 :(得分:1)

我建议您使用Lambda Proxy集成类型,它以最少的麻烦提供您需要的所有信息。 因此,您需要阅读的属性将如下所示:

  • 您的// listen to customPopupSelected variable changes $scope.$watch('customPopupSelected', function (nVal) { // enter this block only if new value is not an object if (nVal && angular.isString(nVal)) { // convert customPopupSelected from a string to desired object $scope.customPopupSelected = { name: nVal, flag: 'URL-TO-SOME-DEFAULT-FLAG' }; } }); 路径:/users/...
  • 您在查询字符串中的ID:event.path
  • 您还需要http方法:event.queryStringParameters.id
  • 您的路径参数,例如ID:event.httpMethod

lambda proxy integration option in api gateway

如果您需要更多信息,请与我们联系。