Ed *_* S. 5 python amazon-web-services aws-lambda aws-api-gateway
我在AWS API Gateway中设置了一个简单的API.它被设置为通过API网关代理集成调用Python 2.7 lambda函数.
我在本地和lambda测试控制台调用lambda工作(处理正文并更新数据库)时遇到了一个奇怪的错误,但没有通过curl或Postman.
事实证明,当通过lambda测试控制台调用时,该event['body']对象将作为a dict.当通过HTTP客户端调用时,它将作为字符串(Unicode)传递.
我当然可以解决它,但我想理解它,而且我也更喜欢一个合适的Python对象.我也希望能够使用lambda测试控制台,但目前我不能,因为它以不同的方式传递输入.
是否有一个配置开关我将丢失,它将强制API网关将请求体(以及所有其他参数)序列化为python dict或适当的对象?关于传递内容的具体细节的文档是稀疏的,说明:
event - AWS Lambda使用此参数将事件数据传递给处理程序.此参数通常是Python dict类型.它也可以是list,str,int,float或NoneType类型.
我知道这个模糊的内容涵盖了我所看到的内容,但它并不完全有用.
das*_*mug 11
当你调用本地或通过拉姆达控制台拉姆达,您直接调用该拉姆达等你拉姆达接收正是您发送的信息.
当您通过API网关调用它时,API Gateway会event根据您的HTTP请求为您创建对象.它添加HTTP标头,路径,查询字符串,有效负载等.
以下是您event从API网关调用中获得的内容摘要:
{
"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"
}
Run Code Online (Sandbox Code Playgroud)
参考:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html#api-gateway-simple-proxy-for-lambda-input-format
如您所见,body将以string您可以使用的方式发送给您json.loads().
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |