【问题标题】:aws lambda with API gateway integration - accessing api name and type of http request具有 API 网关集成的 aws lambda - 访问 api 名称和 http 请求的类型
【发布时间】:2018-05-18 08:54:51
【问题描述】:
我对亚马逊 api 网关的工作方式感到困惑。 lambda 函数如何了解正在调用的 API 以及它所代表的 HTTP 请求类型?
例如,当在本地运行 web.py 服务器时,我将输入 URL app/api/getInfo?key=foobar 并使用 web.py 我能够获取 API 名称和 GET 请求的正文即 JSON 格式的 {'key' : 'foobar'}。
lambda 函数具有以下结构:
def test(event, context):
# do something
return response
我需要在请求正文中传入 api 名称吗?或者有没有办法配置API网关通过事件参数获取API名称?知道它是 get 还是 post 方法的同样问题
【问题讨论】:
标签:
python
api
amazon-web-services
aws-lambda
aws-api-gateway
【解决方案1】:
API Gateway 使用“Lambda 代理”集成来调用 Lambda 函数。调用函数时,Web 请求对象将作为 event 对象传递给 Lambda 函数。该对象是一个 JSON 字典,Web 请求的所有参数都在 event 对象中传递。详细参数列表见here。
{
"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"
}