AWS Lambda为Rest api调用期望使用不同的参数,而不是通过AWS控制台使用

时间:2019-09-08 17:49:36

标签: java aws-lambda

我最近在尝试调试时浪费了很多时间。归结为输入反序列化。通过aws控制台(https://console.aws.amazon.com/lambda/home)中的Test按钮可以正常工作的函数,当通过端点调用时返回{"message": "Internal server error"}

这是我使用Test按钮进行测试的请求正文,通过了:

请求:

{
  "body": {
    "firstName": "Nawab",
    "lastName": "Iqbal"
  }
}

响应:

{
  "body": "Hello Nawab Iqbal.",
  "statusCode": 200
}

这是我的api端点调用的样子,失败了:

curl -X POST 'https://***.execute-api.us-east-1.amazonaws.com/default/hello***20' -H 'Content-Type: application/json' -d ' { "firstName": "Nawab", "lastName": "Iqbal"} '

在两种情况下,不同之处在于aws对输入正文进行反序列化的方式。

我创建了此仓库以方便显示差异:

用于使端点正常工作(UI测试失败时) https://github.com/niqbal/hellow_aws_lambda/blob/master/main/java/com/iqbal/InputClassApiEndpoint.java

用于使UI测试正常工作(直接api端点失败时) https://github.com/niqbal/hellow_aws_lambda/blob/master/main/java/com/iqbal/InputClassAwsConsole.java

我找不到任何文档说明为何存在这种差异以及Request Body类的良好模式,因此不必创建两个包装器类。我做错什么了吗?

0 个答案:

没有答案