簡體   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