![](/img/trans.png)
[英]how to pass variables in the email body from lambda aws -python
[英]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.