A 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
-
Create a new stack:
$ pulumi stack init aws-ts-apigateway-lambda-serverless
-
Set the AWS region:
$ pulumi config set aws:region us-east-2
-
Install NPM modules via
npm install
oryarn install
.
- Run
pulumi up
to 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 logs
command. To get a log stream, usepulumi logs --follow
.
-
Run
pulumi destroy
to 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.
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.