Invoke a AWS Lambda function by a http request

Amazon Web-ServicesAws Lambda

Amazon Web-Services Problem Overview


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

Amazon Web-Services Solutions


Solution 1 - Amazon Web-Services

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.

enter image description here

Or you can set it from the following screen enter image description here

Or create it from the AWS API Gateway web console. enter image description here


You may also explore invoking it on demand using the SDK in your client, mobile or web app. More information here.

Solution 2 - Amazon Web-Services

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

Solution 3 - Amazon Web-Services

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

Create a trigger and set the security to

Solution 4 - Amazon Web-Services

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/

Solution 5 - Amazon Web-Services

Yes, you can. There's an API for this: Invoke

Solution 6 - Amazon Web-Services

Lambda now has built-in HTTPS endpoints that you can use to invoke the lambda. This can be enabled in the Advanced settings pane with the Enable function URL option:

enter image description here

You can find more information on this feature here.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMoshe ShahamView Question on Stackoverflow
Solution 1 - Amazon Web-Servicesuser3526View Answer on Stackoverflow
Solution 2 - Amazon Web-ServicesTejasView Answer on Stackoverflow
Solution 3 - Amazon Web-ServicesCarmelaView Answer on Stackoverflow
Solution 4 - Amazon Web-ServicesLiriBView Answer on Stackoverflow
Solution 5 - Amazon Web-ServicesMatteoSpView Answer on Stackoverflow
Solution 6 - Amazon Web-ServicesPaoloView Answer on Stackoverflow