Skip to content

curlでLambdaの関数URLにデータ付きでリクエストを送る

   

curlでLambdaの関数URLにリクエストを送る方法です。 Lambdaと関数URLの作成方法は こちら を参考にしてください。

Lmabdaにデータを送る

Lambda に snorlax というデータを送ります。 受け取ったデータは event['body'] で受け取ることができますが、base64でデコードする必要があります。

import json
import base64

def lambda_handler(event, context):
    body = event['body']
    decoded_body = base64.b64decode(body).decode()

    response = {
        'pokemon': decoded_body
    }

    return {
        'statusCode': 200,
        'body': json.dumps(response)
    }
curl -X POST -d 'snorlax' {ENDPOINT_URL} | jq
{
  "pokemon": "snorlax"
}

LmabdaにJSONデータを送る

Lambda に {"pokemon":"snorlax"} というデータを送ります。 受け取ったデータは event['body'] で受け取ることができますが、base64でデコードし、mapに変換する必要があります。

import json
import base64

def lambda_handler(event, context):
    print('---')
    print(event['body'])
    print('---')
    
    body = event['body']
    decoded_body = base64.b64decode(body).decode()
    body_json= json.loads(decoded_body)
    pokemon = body_json['pokemon']

    response = {
        'pokemon': pokemon
    }

    return {
        'statusCode': 200,
        'body': json.dumps(response)
    }
curl -X POST -d '{"pokemon":"snorlax"}' {ENDPOINT_URL} | jq
{
  "pokemon": "snorlax"
}

LmabdaにContextType付きでJSONデータを送る

Lambda に {"pokemon":"snorlax"} というデータを Content-Type: application/json ヘッダー付きで送ります。 受け取ったデータは event['body'] で受け取ることができ、base64でデコードせずとも、mapに変換することができます。

import json

def lambda_handler(event, context):
    body = event['body']
    body_json = json.loads(body)
    pokemon = body_json['pokemon']

    response = {
        'pokemon': pokemon
    }

    return {
        'statusCode': 200,
        'body': json.dumps(response)
    }
curl -X POST -H "Content-Type: application/json" -d '{"pokemon":"snorlax"}' {ENDPOINT_URL} | jq
{
  "pokemon": "snorlax"
}

関連記事

  1. LambdaでBMIを計算するAPIを作成してJSで呼び出す
  2. LambdaでBMIを計算するAPIを作成する
  3. CodeBuildでC言語をビルドする
  4. AWSでEC2をプライベートサブネットに設置する
  5. Dockerイメージを作成してECSで動かす
  6. DynamoDBのItemを一度に削除する(batch-write-item)
  7. Pythonで別ファイルの関数を実行する