LambdaをPythonで作成していざAPI GatewayのHTTP APIを使ってリクエストしたら、
bodyのjsonがなかなかLambdaで読めなかったので、解決方法を書いておこうと思います。
API Gatewayの作成
まずAPI GatewayをHTTP APIで作ります。

HTTP APIを選択します。
適当なAPI名を付けたら統合で「Lambda」を選択し、APIで実行したいLambda関数を選択します。

あとは「次へ」「次へ」でAPIが作成されます。
これでとりあえずAPI Gatewayができました。
API実行でエラー
いざPostmanを使ってAPIを実行してみました。
その時のbodyにセットするjsonはこんな感じ
{
"aaa": "11111",
"bbb": "22222",
"ccc": "33333"
}
するとエラーが返ってきました。
"Error: 'aaa'"
どうやら’aaa’がLambda側でちゃんと取れていないようです。
Lambda側のPythonはこんな感じ
def lambda_handler(event, context):
try:
aaa= event['aaa']
bbb= event['bbb']
ccc= event['ccc']
・・・
HTTP APIとREST APIでは取り方が違うらしい!
調べてみるとAPI GatewayでHTTP APIとREST APIではLambda側での取得の方法が異なるようです。
ということでLambdaを修正。
def lambda_handler(event, context):
try:
aaa= json.loads(event.get('body', '{}')).get('aaa')
bbb = json.loads(event.get('body', '{}')).get('bbb')
ccc = json.loads(event.get('body', '{}')).get('ccc')
こうすることでリクエストでセットしたjsonが想定通り取得することができました。
めでたしめでたし
コメント