我的lambda可以正常工作,并且测试事件为{"zipcode": "02149"}
输出为
{
"statusCode": 200,
"body": "Hello from Lambda to zip code 02149"
}
lambda称为Zipinfo
exports.handler = async (event, context) => {
const response = {
statusCode: 200,
body: 'Hello from Lambda to zip code '+ event.zipcode
};
return response;
};
如何获取lambda以使用查询参数“邮政编码”,然后在输出中显示该参数?我向集成请求和响应中添加了映射模板,但无法使它们显示值,我想念的是什么?被称为事件吗?映射正确吗? URL查询字符串是否需要/正确?
答案 0 :(得分:0)
我认为您缺少的是查询字符串参数将位于其自己的键下。 因此,您应该以{{1}}的身份访问它。 您可以在此处查看示例Amazon API Gateway消息事件:https://docs.aws.amazon.com/lambda/latest/dg/with-on-demand-https.html
答案 1 :(得分:0)
在您的源代码中,我看到您实现了以下格式
exports.handler = async (event, context) => {
const response = {
statusCode: 200,
body: 'Hello from Lambda to zip code '+ event.zipcode
};
return response;
};
我认为您已经在API网关的集成请求中标记了使用Lambda代理集成 如果是这样,您将有两种方法(我认为是这样)从API网关获取查询字符串数据:
对于请求GET /zip/info?zipcode=101
。用于代理集成的Lambda函数的输入格式如下:(doc)
{
"resource": "Resource path",
"path": "Path parameter",
"httpMethod": "Incoming request's method name"
"headers": {String containing incoming request headers}
"multiValueHeaders": {List of strings containing incoming request headers}
"queryStringParameters": {query string parameters }
"multiValueQueryStringParameters": {List of query string parameters}
"pathParameters": {path parameters}
"stageVariables": {Applicable stage variables}
"requestContext": {Request context, including authorizer-returned key-value pairs}
"body": "A JSON string of the request payload."
"isBase64Encoded": "A boolean flag to indicate if the applicable request payload is Base64-encode"
}
您的zipcode
将存储在queryStringParameters
中,
那么第一个选项是:
"zipCodeFromHttpRequest": "$input.params().querystring.get('zipCode')"
如果您需要保留两种方式来执行lambda函数(直接通过输入和API网关集成进行执行),则必须检查源代码中的event
对象,以检测在哪里可以获取邮政编码( zipcode
或zipCodeFromHttpRequest
)。
Proxy Integration
的事件对象:
您可以从源代码中获取queryStringParameters
对象,例如const zipcode = event.zipcode || event['queryStringParameters']['zipcode'];