Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Invoke a AWS Lambda function by a http request

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

like image 888
Moshe Shaham Avatar asked Apr 26 '15 11:04

Moshe Shaham


People also ask

How do I invoke Lambda function directly?

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.


4 Answers

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.

like image 185
user3526 Avatar answered Oct 16 '22 08:10

user3526


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

like image 43
Tejas Avatar answered Oct 16 '22 09:10

Tejas


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 "open", if you want it to be publicly accessible. Else, configure based on your own needs

like image 9
Carmela Avatar answered Oct 16 '22 07:10

Carmela


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/

like image 9
LiriB Avatar answered Oct 16 '22 08:10

LiriB