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.
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- AWS
- Azure
- GCP
- Kubernetes
- Cloud
- DigitalOcean
- Multicloud
- F5
- Twilio
- Linode
- Packet
- Testing
- Automation API
| 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. |
| 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 the Pulumi Service, 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 with Manual Provisioning | Use Pulumi dynamic providers to accomplish post-provisioning configuration steps. |
| 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. |
| Example | Description |
|---|---|
| API Gateway HTTP API quickstart | Deploy a very simple HTTP API that invokes a lambda. |
| 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. |
| 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. |
| 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. |
| 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. |
| Example | Description |
|---|---|
| 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. |
| Example | Description |
|---|---|
| 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 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. |
| Example | Description |
|---|---|
| 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. |
| Example | Description |
|---|---|
| Cluster. | |
| 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. |
| 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. |
| Example | Description |
|---|---|
| Web Server | Build a web server in Google Cloud. |
| 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. |
| 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. |
| Example | Description |
|---|---|
| Functions - Raw | Deploy a Google Cloud Function implemented in Python. |
| Functions | Deploy a Go-based Google Cloud Function. |
| 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. |
| Example | Description |
|---|---|
| Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
| Example | Description |
|---|---|
| Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
| Example | Description |
|---|---|
| Guestbook | Build and deploy a simple, multi-tier web application using Kubernetes and Docker. |
| 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. |
| 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. |
| Example | Description |
|---|---|
| Droplets | Build sample architecture. |
| Kubernetes | Provision a DigitalOcean Kubernetes cluster. |
| Example | Description |
|---|---|
| Droplets | Build sample architecture. |
| Kubernetes | Provision a DigitalOcean Kubernetes cluster. |
| Example | Description |
|---|---|
| Droplets | Build sample architecture. |
| Kubernetes | Provision a DigitalOcean Kubernetes cluster. |
| Example | Description |
|---|---|
| Buckets | Use a single Pulumi program to provision resources in both AWS and GCP. |
| Example | Description |
|---|---|
| BigIP Local Traffic Manager | Provide load balancing via an F5 BigIP appliance to backend HTTP instances. |
| Example | Description |
|---|---|
| Component | Create a custom Component Resource to parse incoming messages from Twilio. |
| Example | Description |
|---|---|
| Web Server | Build a web server on Linode. |
| Example | Description |
|---|---|
| Web Server | Build a web server on Packet.net. |
| Example | Description |
|---|---|
| Web Server | Build a web server on Packet.net. |
| 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. |