Lambda-backed REST API
Creates a serverless application using API Gateway backed by lambda functions
This example lives in the pulumi/examples repository. Check out just this directory to use it:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set aws-ts-apigateway-lambda-serverlesscd pulumi-examples/aws-ts-apigateway-lambda-serverlessA simple API demonstrating an integration between AWS API Gateway (REST) and AWS Lambda.
This example provides API endpoints which are executed by lambda using TypeScript and AWS.
This sample uses the following AWS products:
- Amazon API Gateway is used as an API proxy
- AWS Lambda is used to process API events by executing typescript/javascript code
Prerequisites#
Deploying the example#
-
Create a new stack:
Terminal window pulumi stack init aws-ts-apigateway-lambda-serverless -
Set the AWS region to deploy into:
Terminal window pulumi config set aws:region us-east-2 -
Install dependencies:
Terminal window npm install -
Deploy the stack:
Terminal window pulumi upUpdating (aws-ts-apigateway-lambda-serverless)View Live: https://app.pulumi.com/***/aws-ts-apigateway-lambda-serverless/aws-ts-apigateway-lambda-serverless/updates/1Type Name Status+ pulumi:pulumi:Stack aws-ts-apigateway-lambda-serverless-aws-ts-apigateway-lambda-serverless created+ └─ aws:apigateway:x:API hello-world created+ ├─ aws:iam:Role hello-world40ecbb97 created+ ├─ aws:iam:Policy hello-world2bb21f83-LambdaFullAccess created+ ├─ aws:iam:Role hello-world2bb21f83 created+ ├─ aws:iam:Role hello-world4fcc7b60 created+ ├─ aws:iam:Policy hello-world40ecbb97-LambdaFullAccess created+ ├─ aws:iam:Policy hello-world4fcc7b60-LambdaFullAccess created+ ├─ aws:lambda:Function hello-world40ecbb97 created+ ├─ aws:lambda:Function hello-world2bb21f83 created+ ├─ aws:iam:RolePolicyAttachment hello-world2bb21f83-lambdaFullAccessCopyAttachment created+ ├─ aws:iam:RolePolicyAttachment hello-world40ecbb97-lambdaFullAccessCopyAttachment created+ ├─ aws:lambda:Function hello-world4fcc7b60 created+ ├─ aws:iam:RolePolicyAttachment hello-world4fcc7b60-lambdaFullAccessCopyAttachment created+ ├─ aws:apigateway:RestApi hello-world created+ ├─ aws:apigateway:Deployment hello-world created+ ├─ aws:lambda:Permission hello-world-29d762f7 created+ ├─ aws:lambda:Permission hello-world-86405973 created+ ├─ aws:lambda:Permission hello-world-d21e9c98 created+ └─ aws:apigateway:Stage hello-world createdOutputs:endpointUrl: "https://***.execute-api.us-east-2.amazonaws.com/stage/"Resources:+ 20 createdDuration: 36s -
To view the runtime logs of the Lambda function, use the
pulumi logscommand. To get a log stream, usepulumi logs --follow.
Cleaning up#
-
Run
pulumi destroyto tear down all resources. -
To delete the stack itself, run
pulumi stack rm. Note that this command deletes all deployment history from the Pulumi console.
Summary#
In this tutorial, you built a lambda-backed API on AWS using API Gateway, lambda functions, and Pulumi. This serverless solution is highly scaleable, resilient, and stateless.