繁体   English   中英

如何从AWS API将变量传递给Python Lambda

[英]How do I pass variables to Python Lambda from AWS API

我曾尝试搜索,但我的googlefu使我失败了。

我有一个基本的python lambda函数:

def lambda_handler(event, context):
    foo = event['bar']
    print(foo)

然后,我尝试执行POST,例如在curl中:

curl -X POST https://correctaddress.amazonaws.com/production/test \
-H 'x-api-key: CORRECTKEY' \
-H 'content-type: application/json' \
-H 'bar: Hello World' \

这使KeyError: 'bar'失败,可能是因为我认为我作为event ['bar']传递的内容没有被传递。

我已经尝试过event['body']['bar'] ,但也失败了。

如果我执行event['querystringparameters']['bar'] ,则在使用GET之类的方法时它将起作用:

curl -X POST https://correctaddress.amazonaws.com/production/test?bar=HelloWorld -H 'x-api-key: CORRECTKEY'

我知道我缺少有关事件字典的基本知识,以及它从POST中获取的东西,但是我似乎找不到正确的文档(不确定它是否在API或Lambda的文档中)。

我最终的目标是能够使用以下请求在python中编写一些东西:

import requests, json

url = "https://correctaddress.amazonaws.com/production/test"
headers = {'Content-Type': "application/json", 'x-api-key': "CORRECTKEY"}
data = {}
data['bar'] = "Hello World"
res = requests.put(url, json=data, headers=headers)

问题出在您执行curl命令的方式上。

您正在使用-H(--header)参数添加参数。 但是,您希望收到JSON发布请求。

为此,将curl语句更改为如下所示:

curl -X POST https://correctaddress.amazonaws.com/production/test \
-H 'x-api-key: CORRECTKEY' \
-H 'content-type: application/json' \
--data '{"bar":"Hello World"}' \

这将使curl在适当的主体上发出后期请求。

在您的Python中,您可以使用类似于以下代码的代码将后数据作为字典获取:

postdata = json.loads(event['body'])

您应该为无效的JSON,其他请求类型(例如GET)等添加一些错误检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM