我正在与AWS lambda API Gateway Serverless(Python)一起玩。太神奇了!
所以我认为该功能中的 event 参数包含很多信息,包括HTTP请求信息
此外,我发现
queryStringParameters
body
是保存GET和POST参数的键。
"queryStringParameters": {
"name": "me"
},
和
"body": "------WebKitFormBoundaryXAin8CB3c0fwFfAernContent-Disposition: form-data; name="sex"rnrnmalern------WebKitFormBoundaryXAin8CB3c0fwFfAe--rn",
我如何从 body 键获得哈希/字典?
谢谢
如果您想在lambda中完全自由/完整透明度,那么您可能想查看lambda代理集成
import json
def endpoint(event, context):
# With the Lambda proxy integration, API Gateway maps the entire client request to the
# input event parameter of the backend Lambda function as follows:
# {
# "resource": "Resource path",
# "path": "Path parameter",
# "httpMethod": "Incoming request's method name"
# "headers": {Incoming request headers}
# "queryStringParameters": {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"
# }
body = {}
body["event"] = event
# With the Lambda proxy integration, API Gateway requires the backend Lambda function
# to return output according to the following JSON format:
# {
# "isBase64Encoded": true|false,
# "statusCode": httpStatusCode,
# "headers": { "headerName": "headerValue", ... },
# "body": "..."
# }
response = {
"statusCode": 200,
"isBase64Encoded": False,
"headers": {"x-test-header" : "foobar"},
"body": json.dumps(body),
}
return response
和模板
"paths": {
"/{proxy+}": {
"x-amazon-apigateway-any-method": {
"parameters": [{
"name": "proxy",
"in": "path",
"required": true,
"type": "string"
}],
"produces": ["application/json"],
"responses": {},
"x-amazon-apigateway-integration": {
"responses": {
"default": {
"statusCode": "200"
}
},
"uri": "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:xxxx:function:yyy/invocations",
"passthroughBehavior": "when_no_match",
"httpMethod": "POST",
"cacheNamespace": "57w2aw",
"cacheKeyParameters": [
"method.request.path.proxy"
],
"contentHandling": "CONVERT_TO_TEXT",
"type": "aws_proxy"
}
}
}
}
请使用" $ input.params('key')"。
请在API网关集成响应中创建一个车身映射模板,然后尝试" $ input.params('yourqueryStringKey')"
示例,
{
"name" : "$input.params('name')"
}
然后,在lambda函数中,您可以像以下那样获得价值,
var name= event.name;