如何为AWS Lambda调用的JSON传递路径参数并替换路径占位符?
解决方法
问题核心在于:没有API Gateway的情况下,AWS Lambda不会自动将pathParameters中的值替换到path的占位符里。你的Lambda函数(或后端API)只会直接使用path字段的原始值,所以{id}会被当作路径的一部分传递,导致非法参数异常。
要解决这个问题,你需要直接在JSON的path字段中替换掉{id}占位符,而不是依赖pathParameters来自动替换。具体修改如下:
修改后的JSON示例
假设你要替换的ID值是12345,修改后的JSON如下:
{ "httpMethod": "PUT", "headers": { "accept": "application/json" }, "path": "/some-api/v1/channels/company/employees/12345", "pathParameters": { "id": "12345" }, "body" : "{\"name\": \"Jeff\", \"language\": \"en-US\", \"job\": {\"location\": \"NYC\", \"jobCode\": \"0000\"}}", "isBase64Encoded": false }
关键修改说明
- 直接将
path中的{id}替换为实际的ID值(比如12345),确保路径是完整合法的。 pathParameters可以保留(如果你的Lambda/后端逻辑需要读取这个参数),但它不再负责替换路径中的占位符,仅作为参数传递的补充。
简单来说,你需要在生成这个JSON请求的时候,先完成path字段的占位符替换,再将完整的JSON传给Lambda。Lambda本身没有内置的路径占位符替换逻辑,这个逻辑原本由API Gateway提供,既然你不用API Gateway,就必须自己在JSON层面完成路径的拼接。
内容的提问来源于stack exchange,提问作者Sadaf Chowdhury
相关产品推荐
相关产品推荐

