
There are various way to POST JSON to one of your Python AWS Lambda Functions.
- POST JSON to a Python Lambda Function using AWS console Test Event (this article)
- POST JSON to a Lambda Function using cURL
- POST JSON to a Lambda Function using EventBridge Scheduler
Let's say you have a Python Lambda Function, perhaps something like this. 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