Bootstrap FreeKB - Amazon Web Services (AWS) - POST JSON to a Lambda Function using AWS console Test Event
Amazon Web Services (AWS) - POST JSON to a Lambda Function using AWS console Test Event


There are various way to POST JSON to one of your AWS Lambda Functions.

Let's say you have a Lambda Function, perhaps something like this (Python in this example). This is just a super simple example with no error handling to highlight the boilerplate markup needed to parse and return values from input.

import json

def lambda_handler(event, context):
    print(event)

    return { "foo": event['foo'], "bar": event['bar'] }

 

In this example, here is how you would format the input in the AWS Lambda console Test tab.

{ "foo":"Hello", "bar":"World" }

 

In this example, the Lambda Function expects the input JSON to pass in the foo and bar keys in "body".

import json

def lambda_handler(event, context):
    print(event)

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

    foo = json_loads_event_body['foo']
    bar = json_loads_event_body['bar']
       
    return {
        'statusCode': 200,
        'body': json.dumps({
            "result": "success",
            "foo": json_loads_event_body['foo'],
            "bar": json_loads_event_body['bar']
        })
    }       

 

In this example, here is how you would format the input JSON in the AWS Lambda console Test tab.

{
 "body": "{\"foo\":\"Hello\", \"bar\":\"World\"}"
}

 

Here is a screen shot.

 

Notice also in this example that the Lambda Function includes print(event). This is super helpful when testing/debugging, but you probably wouldn't want to include print(event) after your testing/debugging is done, as this could add a bit of additional cost each time your Lambda Function is called.

If you have print(event), then Cloudwatch > Log groups > /aws/lambda/myapi > yyyy/mm/dd/[$LATEST]abcdefg123456789abdefg123456789 should have something like this. For more details on this, check out my article Amazon Web Services (AWS) - API Gateway Lambda Function and Cloudwatch Logs.

{
   "version":"2.0",
   "routeKey":"POST /postSendgrid",
   "rawPath":"/postSendgrid",
   "rawQueryString":"",
   "headers":{
      "accept":"*/*",
      "content-length":"15",
      "content-type":"application/json",
      "host":"abcdefg.execute-api.us-east-1.amazonaws.com",
      "user-agent":"curl/8.0.1",
      "x-amzn-trace-id":"Root=1-65712b4e-32aaec9937d2924457e3df71",
      "x-forwarded-for":"10.11.12.13",
      "x-forwarded-port":"443",
      "x-forwarded-proto":"https"
   },
   "requestContext":{
      "accountId":"123456789012",
      "apiId":"abcdefg",
      "domainName":"abcdefg.execute-api.us-east-1.amazonaws.com",
      "domainPrefix":"abcdefg",
      "http":{
         "method":"POST",
         "path":"/postSendgrid",
         "protocol":"HTTP/1.1",
         "sourceIp":"10.11.12.13",
         "userAgent":"curl/8.0.1"
      },
      "requestId":"PjO0Ujb2IAMEJ9A=",
      "routeKey":"POST /postSendgrid",
      "stage":"$default",
      "time":"07/Dec/2023:02:17:50 +0000",
      "timeEpoch":1701915470546
   },
   "body":"{\"result\":\"success\", \"foo\":\"Hello\", \"bar\":\"World\"}",
   "isBase64Encoded":false
}

 




Did you find this article helpful?

If so, consider buying me a coffee over at Buy Me A Coffee



Comments


Add a Comment


Please enter 449598 in the box below so that we can be sure you are a human.