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.
Deploying and running the program#
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#
-
Create a new stack:
Terminal window pulumi stack init aws-ts-apigateway-lambda-serverless -
Set the AWS region:
Terminal window pulumi config set aws:region us-east-2 -
Install NPM modules via
npm installoryarn install.
Deploy the App#
- Run
pulumi upto preview and deploy changes:
`Updating (aws-ts-apigateway-lambda-serverless)
View Live: https://app.pulumi.com/***/aws-ts-apigateway-lambda-serverless/aws-ts-apigateway-lambda-serverless/updates/1
Type 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 created
Outputs: endpointUrl: "https://***.execute-api.us-east-2.amazonaws.com/stage/"
Resources: + 20 created
Duration: 36s`- To view the runtime logs of the Lambda function, use the
pulumi logscommand. To get a log stream, usepulumi logs --follow.
Clean 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.