如何将路径参数传递给用于AWS Lambda Invocation的JSON?

qlvxas9a  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(96)

我正在尝试通过Java调用AWS Lambda,以便使用JSON文件调用我的REST API。JSON文件看起来像这样:

{
  "httpMethod": "PUT",
  "headers": {
    "accept": "application/json"
  },
  "path": "/some-api/v1/channels/company/employees/{id}",
  "pathParameters": {
    "id": "%s"
  },
  "body" : "{\"name\": \"Jeff\", \"language\": \"en-US\", \"job\": {\"location\": \"NYC\", \"jobCode\": \"0000\"}}",
  "isBase64Encoded": false
}

路径中的{id}应该被替换为pathParameters中的id。我可以看到pathParameters中的id在调用AWS Lambda时被替换,而不是实际路径中的{id}。这抛出了一个非法字符参数异常,因为在调用我的API时没有填充{}。我需要在这里换什么?
注意:我没有使用API网关,所以请不要建议Map或任何我必须在UI中做的事情,除非它可以在JSON本身完成。

fwzugrvs

fwzugrvs1#

看起来pathParameters只响应resource标记。我通过将%s添加到路径的末尾来解决这个问题。:

{
  "httpMethod": "PUT",
  "headers": {
    "accept": "application/json"
  },
  "path": "/some-api/v1/channels/company/employees/%s",
  "body" : "{\"name\": \"Jeff\", \"language\": \"en-US\", \"job\": {\"location\": \"NYC\", \"jobCode\": \"0000\"}}",
  "isBase64Encoded": false
}

谢谢你的文档,AWS。

tf7tbtn2

tf7tbtn22#

对于那些仍然在寻找这些信息的人,您也可以将pathParameters添加到JSON中:

{
    ...
    "pathParameters": {
        "id": 123
    }   
}

这是直接从lambda中获取的,如果您使用SDK中的pathParameters函数,则不需要显式设置resourcepath值。

相关问题