aws lambda与API网关集成 - 访问api名称和http请求的类型

时间:2018-05-18 08:54:51

标签: python api amazon-web-services aws-lambda aws-api-gateway

我对亚马逊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名称?同样的问题是要知道它是获取还是后期方法

1 个答案:

答案 0 :(得分:1)

API网关使用“Lambda代理”集成来调用Lambda函数。调用该函数时,Web请求对象将作为事件对象传递给Lambda函数。此对象是JSON字典,Web请求的所有参数都在事件对象中传递。可以找到详细的参数列表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"
}