Is it possible to invoke a AWS Lambda function directly by a http request (either GET or POST)? If not, is there a workaround going through SNS or S3? Because I can't think of one...
Specifically, I would like to create a small API using JSON
You can invoke Lambda functions directly using the Lambda console, a function URL HTTP(S) endpoint, the Lambda API, an AWS SDK, the AWS Command Line Interface (AWS CLI), and AWS toolkits.
The AWS API Gateway is the only way to expose your lambda function over HTTP. The AWS lambda web console should create one automatically for you if you use the microservice-http-endpoint blueprint when creating a new lambda function.
Or you can set it from the following screen
Or create it from the AWS API Gateway web console.
You may also explore invoking it on demand using the SDK in your client, mobile or web app. More information here.
Yes, you can invoke AWS Lambda function using HTTP POST method, for this you need to make sigv4 signed request with valid AWS IAM credentials.
I tested this using POSTMAN:
curl -X POST https://lambda.us-west-2.amazonaws.com/2015-03-31/functions/Function_NAME/invocations
Link: Invoke Syntax
Just add a trigger in the lambda function and you can already send a GET or POST requests in the link that will be generated
Go to your lambda function and click the trigger section
As of 28 Nov 2018, you can create an internet facing LoadBalancer with an HTTP listener, then configure the load balancer to have Lambda as its target group.
After the load balancer is created, you can use its DNS name as the HTTP endpoint to sent requests to Lambda.
More details here: https://aws.amazon.com/blogs/networking-and-content-delivery/lambda-functions-as-targets-for-application-load-balancers/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With