AWS lambda使用Python获取http方法

osh3o9ms  于 2023-01-06  发布在  Python
关注(0)|答案(3)|浏览(156)

我在通过API网关调用aws lambda时遇到了困难。我在api网关中创建了一个REST api,它调用了一个lambda函数。在lambda函数中,我希望有两个函数,一个用于POST请求,一个用于GET请求。我无法从事件中获得方法。在其他线程中,答案通常只针对javascript或java。
我从终端运行以下curl命令:curl "https://myurl/endpoint"我还尝试通过高级REST客户端发送GET请求。
这是我想做的:

def lambda_handler(event, context):

method = event['httpMethod']
if method == "GET":
    return get_function()
if method == "POST":
    return post_function()

运行上面的代码会得到一个keyError,我也试过这样做:

method = event['requestContext']['http']['method']

我试着像method = event这样打印出事件本身,我从中得到的都是{},无论是在响应中还是在cloudwatch中。
如何读取请求中的http方法

u1ehiz5o

u1ehiz5o1#

下面的代码应该可以在Python 3.7运行时运行。当然,你可以改进代码,但是,它会给你你想要的。

reqcontxt = event.get("requestContext")
    httpprtcl = reqcontxt.get("http")
    methodname = httpprtcl.get("method")
    print('### http method name ###' + str(methodname))

谢谢。
平连

u59ebvdq

u59ebvdq2#

在@Marcin的帮助下,我明白了我必须在集成请求中勾选“Use Lambda Proxy Integration”选项。没有它,我的请求不会将任何方法或头数据传递给lambda。要么这样,要么我需要在我的应用程序中添加一些代码来定义方法,但由于我使用curl进行测试,我没有在请求中添加-X GET或类似的内容。

yzuktlbb

yzuktlbb3#

使用event.get("httpMethod")

相关问题