1. Pulumi Templates
  2. Serverless Templates
  3. AWS Serverless Application

AWS Serverless Application

Available inTypeScript, Python, Go, C#, YAML

The AWS Serverless Application template scaffolds a Pulumi project that deploys a serverless web application to AWS. It provisions an Amazon S3 bucket for static website hosting, an AWS Lambda function for the application backend, and an Amazon API Gateway REST API that routes requests to the static content and the Lambda function. The template ships with a placeholder web page that displays the current time so the project deploys end to end out of the box.

An architecture diagram of the AWS Serverless Application template

Using this template

To use this template to deploy your own AWS serverless application, make sure you’ve installed Pulumi and configured your AWS credentials, then create a new project using the template in the language of your choice:

$ mkdir my-serverless-app && cd my-serverless-app
$ pulumi new serverless-aws-typescript
Alternatively, you can create and configure a new project with this template (serverless-aws-typescript) in Pulumi Cloud.
$ mkdir my-serverless-app && cd my-serverless-app
$ pulumi new serverless-aws-python
Alternatively, you can create and configure a new project with this template (serverless-aws-python) in Pulumi Cloud.
$ mkdir my-serverless-app && cd my-serverless-app
$ pulumi new serverless-aws-go
Alternatively, you can create and configure a new project with this template (serverless-aws-go) in Pulumi Cloud.
$ mkdir my-serverless-app && cd my-serverless-app
$ pulumi new serverless-aws-csharp
Alternatively, you can create and configure a new project with this template (serverless-aws-csharp) in Pulumi Cloud.
$ mkdir my-serverless-app && cd my-serverless-app
$ pulumi new serverless-aws-yaml
Alternatively, you can create and configure a new project with this template (serverless-aws-yaml) in Pulumi Cloud.

Follow the prompts to complete the new-project wizard. When it’s done, you’ll have a complete Pulumi project that’s ready to deploy and configured with the most common settings. Feel free to inspect the code in index.js index.ts __main__.py main.go Program.cs Program.fs Program.vb App.java Pulumi.yaml for a closer look.

Deploying the project

The template requires no additional configuration. Once the new project is created, you can deploy it with pulumi up:

$ pulumi up

When the deployment completes, Pulumi exports the following stack output values:

url
The HTTP URL for the application.

Stack outputs are useful in a number of ways, most commonly as inputs to other stacks or cloud resources.

Customizing the project

Projects created with the AWS Serverless template expose the following configuration settings:

path
The path to the folder containing the files of the website. Defaults to www, which is the folder included with the template. The /date path is a GET endpoint that retrieves the current time from the Lambda function.
code
The path to the folder containing the Lambda function code. Defaults to the function folder included with the template.

None of these settings is required; by default, the template deploys the website and function using the files in the www and function folders bundled with the template.

Using your own web content

If you already have a website you’d like to deploy, you can do so by replacing the contents of the www folder and redeploying with pulumi up.

Alternatively, you can configure the stack to deploy from another folder on your machine by using pulumi config set to change the value of the path setting:

$ pulumi config set path ../my-website/dist
$ pulumi up

Customizing the application’s functionality

You can customize the placeholder website by editing the Lambda function to perform another action, such as displaying a countdown to a future time. You can also add new functionality by creating a new Lambda function, adding a new path to the REST API, and updating the HTML to call the new path.

Cleaning up

You can cleanly destroy the stack and all of its infrastructure with pulumi destroy:

$ pulumi destroy

Learn more