Pulumi Examples
This repository contains examples of using Pulumi to build and deploy cloud applications and infrastructure.
Each example has a two-part prefix, <cloud>-<language>
, to indicate which <cloud>
and <language>
it pertains to.
For example, <cloud>
could be aws
for Amazon Web Services, azure
for Microsoft
Azure, gcp
for Google Cloud
Platform, kubernetes
for
Kubernetes, or cloud
for
Pulumi's cross-cloud programming framework.
See the Pulumi documentation for more details on getting started with Pulumi.
Checking Out a Single Example
You can checkout only the examples you want by using a sparse checkout. The following example shows how checkout only the example you want.
$ mkdir examples && cd examples
$ git init
$ git remote add origin -f https://github.com/pulumi/examples/
$ git config core.sparseCheckout true
$ echo <example> >> .git/info/sparse-checkout
$ git pull origin master
Outline
- AWS
- Azure
- GCP
- Kubernetes
- Openstack
- Cloud
- DigitalOcean
- Multicloud
- F5
- Twilio
- Linode
- Testing
- Automation API
AWS
TypeScript
Example | Description |
---|---|
API Gateway | Deploy a simple REST API that counts the number of times a route has been hit. |
API Gateway HTTP API with routes | Deploy a HTTP API that invokes a Lambda. |
API Gateway HTTP API quickstart | Deploy a very simple HTTP API that invokes a Lambda. |
API Gateway V1 with EventBridge and Lambda | Deploy a REST API that uses EventBridge to target a Lambda function. Includes API Gateway model validation and custom integration-response mapping. |
API Gateway V2 with EventBridge and Lambda | Deploy an HTTP API that uses EventBridge to target a Lambda function. |
Apigateway - Auth0 | Deploy a simple REST API protected by Auth0. |
AppSync | Deploy a basic GraphQL endpoint in AWS AppSync. |
AssumeRole | Use AssumeRole to create resources. |
Containers | Provision containers on Fargate. |
EKS - Dashboard | Deploy an EKS Kubernetes cluster with an EBS-backed StorageClass, then the Kubernetes Dashboard into the cluster. |
EKS - Hello World | Deploy an EKS Kubernetes cluster with an EBS-backed StorageClass, then a Kubernetes namespace and nginx deployment into the cluster. |
EKS - Migrate Node Groups | Create an EKS cluster and node group to use for workload migration with zero downtime. |
Fargate | Build, deploy, and run a Dockerized app using ECS, ECR, and Fargate. |
Lambda Thumbnailer | Create a video thumbnail extractor using serverless functions. |
Miniflux | Stand up an RSS Service using Fargate and RDS. |
Pulumi Webhooks | Create a Pulumi cloud.HttpEndpoint that receives webhook events delivered by Pulumi Cloud, then echos the event to Slack. |
RDS and Airflow | Deploy a RDS Postgres instance and containerized Airflow. |
Resources | Create various resources, including cloudwatch.Dashboard , cloudwatch.EventRule , cloudwatch.LogGroup , and sqs.Queue . |
Ruby on Rails | Create a single EC2 virtual machine instance with a local MySQL database. |
S3 Lambda | Set up two AWS S3 Buckets and a single Lambda that listens to one and, upon each new object arriving in it, zips it up and copies it to the second bucket. |
Serverless Application | Deploy a complete serverless C# application using raw resources from @pulumi/aws . |
Serverless Datawarehouse | Deploy a serverless data warehouse. |
Slackbot | Create a simple slackbot that posts a notification to a specific channel any time you're @mentioned anywhere. |
Stack Reference | Create a "team" EC2 Instance with tags set from upstream stacks. |
Static Website | Serve a static website using S3, CloudFront, Route53, and Certificate Manager. |
Step Functions | Use Step Functions with a Lambda function. |
Thumbnailer | Create a video thumbnail extractor using serverless functions and containers. |
Query Twitter every 2 minutes, store the results in S3, and set up an Athena table and query. | |
URL Shortener | Create a serverless URL shortener that uses high-level components. |
Voting App | Create a simple voting app using Redis and Python Flask. |
Web Server | Deploy an EC2 Virtual machine using TypeScript to run a Python web server. |
Web Server with Manual Provisioning | Use Pulumi dynamic providers to accomplish post-provisioning configuration steps. |
JavaScript
Example | Description |
---|---|
Containers | Provision containers on Fargate. |
S3 Folder Component | Serve a static website on S3 from a component. |
S3 Folder | Serve a static website on S3. |
Servless SQS to Slack | Wire up a serverless AWS Lambda to an AWS SQS queue and post a message to Slack. |
Web Server - Component | Deploy an EC2 instance using a common module for creating an instance. |
Web Server | Deploy an EC2 Virtual machine running a Python web server. |
Python
Example | Description |
---|---|
API Gateway HTTP API quickstart | Deploy a very simple HTTP API that invokes a Lambda. |
API Gateway V2 with EventBridge and Lambda | Deploy an HTTP API that uses EventBridge to target a Lambda function. |
AppSync | Deploy a basic GraphQL endpoint in AWS AppSync. |
AssumeRole | Use AssumeRole to create resources. |
Fargate | Provision a full ECS Fargate cluster running a load-balanced nginx web server. |
Resources | Create various resources, including cloudwatch.Dashboard , cloudwatch.EventRule , cloudwatch.LogGroup , and sqs.Queue . |
S3 Folder | Serve a static website on S3. |
Stack Reference | Create a "team" EC2 Instance with tags set from upstream stacks. |
Step Functions | Use Step Functions with a Lambda function. |
Web Server | Deploy an EC2 instance and open port 80. |
Go
Example | Description |
---|---|
AssumeRole | Use AssumeRole to create resources. |
Fargate | Provision a full ECS Fargate cluster running a load-balanced nginx web server. |
Lambda | Create a lambda that does a simple ToUpper on the string input and returns it. |
S3 Folder | Serve a static website on S3. |
Web Server | Deploy an EC2 Virtual machine running a Python web server. |
C#
Example | Description |
---|---|
AssumeRole | Use AssumeRole to create resources. |
Fargate | Build, deploy, and run a Dockerized app using ECS, ECR, and Fargate. |
Lambda | Create a lambda that does a simple ToUpper on the string input and returns it. |
S3 Folder | Serve a static website on S3. |
Web Server | Deploy an EC2 instance and open port 80. |
F#
Example | Description |
---|---|
Lambda Web Server | Create a web server in AWS lambda using the Giraffe web server. |
S3 Folder | Serve a static website on S3. |
Azure
TypeScript
Example | Description |
---|---|
Azure Container Apps | Run a Docker image on Azure Container Apps. |
Azure Container Instance | Run Azure Container Instances on Linux. |
Azure Kubernetes Service | Create an Azure Kubernetes Service (AKS) Cluster. |
Azure App Service | Build a web application hosted in App Service and provision Azure SQL Database and Azure Application Insights. |
Azure App Service with Docker | Build a web application hosted in App Service from Docker images. |
App Service in Virtual Network | Deploy two App Services - Front web app with VNet injection and Back web app with a Private Endpoint. |
Azure Cosmos DB and LogicApp | Define Cosmos DB, API connections, and link them to a logic app. |
Azure Functions | Deploy a Node.js serverless function to Azure Functions. |
Azure Functions - Many | Deploy several kinds of Azure Functions created from raw deployment packages. |
Azure SDK integration | Call Azure SDK functions from a Pulumi program. |
Static Website | Configure static website hosting in Azure Storage. |
Azure Synapse | Starting point for enterprise analytics solutions based on Azure Synapse. |
Web Server | Provision a Linux web server in an Azure Virtual Machine. |
Python
Example | Description |
---|---|
Azure Container Apps | Run a Docker image on Azure Container Apps. |
Azure Container Instance | Run Azure Container Instances on Linux. |
Azure Kubernetes Service | Create an Azure Kubernetes Service (AKS) Cluster. |
Azure App Service | Build a web application hosted in App Service and provision Azure SQL Database and Azure Application Insights. |
Azure App Service with Docker | Build a web application hosted in App Service from Docker images. |
Azure SDK integration | Call Azure SDK functions from a Pulumi program in Python. |
Azure Cosmos DB and LogicApp | Define Cosmos DB, API connections, and link them to a logic app. |
Minecraft Server | Deploy an Azure Virtual Machine and provision a Minecraft server. |
Static Website | Configure static website hosting in Azure Storage. |
Azure Synapse | Starting point for enterprise analytics solutions based on Azure Synapse. |
Virtual Data Center | Deploy Azure Virtual Data Center (VDC) hub-and-spoke network stacks in Azure, complete with ExpressRoute and VPN Gateways, Azure Firewall guarding a DMZ, and Azure Bastion. |
Web Server | Provision a Linux web server in an Azure Virtual Machine. |
Go
Example | Description |
---|---|
Azure Container Apps | Run a Docker image on Azure Container Apps. |
Azure Container Instance | Run Azure Container Instances on Linux. |
Azure Kubernetes Service | Create an Azure Kubernetes Service (AKS) Cluster. |
Azure App Service with Docker | Build a web application hosted in App Service from Docker images. |
Static Website | Configure static website hosting in Azure Storage. |
Azure SDK integration | Call Azure SDK functions from a Pulumi programin Go. |
C#
Example | Description |
---|---|
Cluster. | |
Azure Container Apps | Run a Docker image on Azure Container Apps. |
Azure Container Instance | Run Azure Container Instances on Linux. |
Azure Kubernetes Service | Create an Azure Kubernetes Service (AKS) Cluster. |
AKS web app with .NET 5 | Create an Azure Kubernetes Service (AKS) cluster and deploy a web app to it using .NET 5 and C# 9. |
AKS + Cosmos DB | A Helm chart deployed to AKS that stores TODOs in an Azure Cosmos DB MongoDB API. |
Azure App Service | Build a web application hosted in App Service and provision Azure SQL Database and Azure Application Insights. |
Azure App Service with Docker | Build a web application hosted in App Service from Docker images. |
Azure API integration | Call additional Azure API endpoints from a Pulumi program. |
Azure Cosmos DB and LogicApp | Define Cosmos DB, API connections, and link them to a logic app. |
Azure Functions | Deploy a Node.js serverless function to Azure Functions. |
Static Website | Configure static website hosting in Azure Storage. |
Azure Synapse | Starting point for enterprise analytics solutions based on Azure Synapse. |
Azure SQL Server | An example of a SQLServer on Azure PaaS. |
GCP
TypeScript
Example | Description |
---|---|
Cloud Run | Deploy a custom Docker image into Google Cloud Run service. |
Functions - Raw | Deploy two Google Cloud Functions implemented in Python and Go. |
Functions | Deploy an HTTP Google Cloud Function endpoint. |
GKE - Hello World | Deploy a GKE cluster, then a Kubernetes namespace and nginx deployment into the cluster. |
GKE | Provision a Google Kubernetes Engine (GKE) cluster, then a Kubernetes Deployment. |
Ruby on Rails | Deliver a containerized Ruby on Rails application. |
Slackbot | Create a simple slackbot that posts a notification to a specific channel any time you're @mentioned anywhere. |
JavaScript
Example | Description |
---|---|
Web Server | Build a web server in Google Cloud. |
Python
Example | Description |
---|---|
Functions - Raw | Deploy two Google Cloud Functions implemented in Python and Go. |
Functions | Deploy a Python-based Google Cloud Function. |
GKE | Provision a Google Kubernetes Engine (GKE) cluster, then a Kubernetes Deployment. |
Network Component | Use a reusable component to create a Google Cloud Network and instance. |
nginx Server | Build a nginx server in Google Cloud. |
Go
Example | Description |
---|---|
Functions | Deploy a Go-based Google Cloud Function. |
Functions - Raw | Deploy a Google Cloud Function implemented in Python. |
Web Server | Build a web server in Google Cloud. |
C#
Example | Description |
---|---|
Functions - Raw | Deploy a Google Cloud Function implemented in Python. |
Functions | Deploy a Go-based Google Cloud Function. |
Kubernetes
TypeScript
Example | Description |
---|---|
App Rollout via ConfigMap | Enable a change in a ConfigMap to trigger a rollout of an nginx Deployment. |
App Rollout via S3 Data Change | Enable a change in data in S3 to trigger a rollout of an nginx deployment. |
Expose Deployment | Deploy nginx to a Kubernetes cluster, and publicly explose it using a Kubernetes Service. |
Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
Jenkins | Deploy a container running the Jenkins continuous integration system onto a running Kubernetes cluster. |
Multicloud | Create managed Kubernetes clusters using AKS, EKS, and GKE, and deploy the application on each cluster. |
nginx server | Deploy a replicated nginx server to a Kubernetes cluster, using TypeScript and no YAML. |
Sock Shop | Deploy a version of the standard Sock Shop microservices reference app. |
Staged App Rollout | Create a staged rollout gated by checking that the P90 response time reported by Prometheus is less than some amount. |
Wordpress Helm Chart | Use the Helm API to deploy v2.1.3 of the Wordpress Helm Chart to a Kubernetes cluster. |
Python
Example | Description |
---|---|
Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
C#
Example | Description |
---|---|
Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
Go
Example | Description |
---|---|
Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
App Rollout via ConfigMap | Enable a change in a ConfigMap to trigger a rollout of an nginx Deployment. |
Wordpress Helm Chart | Use the Helm API to deploy v9.6.0 of the Wordpress Helm Chart to a Kubernetes cluster. |
Expose Deployment | Deploy nginx to a Kubernetes cluster, and publicly expose it using a Kubernetes Service. |
Openstack
Python
Web Server | Deploy an Openstack instance and open port 8000.
Cloud
TypeScript
Example | Description |
---|---|
URL Shortener - Cache and HttpServer | Create a simple URL shortener SPA that uses the high-level cloud.Table and cloud.HttpServer components. |
URL Shortener - Cache | Create a simple URL shortener SPA that uses the high-level cloud.Table and cloud.API components. |
URL Shortener | Create a complete URL shortener web application that uses the high-level cloud.Table and cloud.HttpServer components. |
Voting App | Create a simple voting app using Redis and Python Flask. |
JavaScript
Example | Description |
---|---|
API on AWS | Create a simple REST API that counts the number of times a route has been hit. |
Containers | Provision containers on Fargate. |
HttpServer | Create a simple REST API that counts the number of times a route has been hit. |
Thumbnailer - Machine Learning | Create a video thumbnail extractor using serverless functions, containers, and AWS Rekognition. |
Thumbnailer | Create a video thumbnail extractor using serverless functions and containers. |
Query Twitter every 2 minutes, store the results in S3, and set up an Athena table and query. |
DigitalOcean
TypeScript
Example | Description |
---|---|
Droplets | Build sample architecture. |
Kubernetes | Provision a DigitalOcean Kubernetes cluster. |
Python
Example | Description |
---|---|
Droplets | Build sample architecture. |
Kubernetes | Provision a DigitalOcean Kubernetes cluster. |
C#
Example | Description |
---|---|
Droplets | Build sample architecture. |
Kubernetes | Provision a DigitalOcean Kubernetes cluster. |
Multicloud
TypeScript
Example | Description |
---|---|
Buckets | Use a single Pulumi program to provision resources in both AWS and GCP. |
F5
TypeScript
Example | Description |
---|---|
BigIP Local Traffic Manager | Provide load balancing via an F5 BigIP appliance to backend HTTP instances. |
Twilio
TypeScript
Example | Description |
---|---|
Component | Create a custom Component Resource to parse incoming messages from Twilio. |
Linode
JavaScript
Example | Description |
---|---|
Web Server | Build a web server on Linode. |
Testing
Example | Description |
---|---|
Unit Tests in TypeScript | Mock-based unit tests in TypeScript. |
Unit Tests in Python | Mock-based unit tests in Python. |
Unit Tests in Go | Mock-based unit tests in Go. |
Unit Tests in C# | Mock-based unit tests in C#. |
Testing with Policies | Tests based on Policy-as-Code in TypeScript. |
Integration Testing in Go | Deploy-check-destroy tests in Go. |