Benefits of Pulumi
Modern Programming Languages
Pulumi is infrastructure as modern code. This means you get all the benefits of a modern language for provisioning cloud infrastructure: code completion, error checking, versioning, IDE support, and general productivity gains — without the need to manage YAML and DSL syntax.
Reusable Components
As Pulumi is code, you can build up a library of packages to further enhance efficiency. Build repeatable practices through versioned packages such as: standard policies, network best practices, architecture blueprints — and deploy them to your team.
Immutable Infrastructure
Pulumi provides the computation of necessary cloud resources with a 'Cloud Resource DAG' ensuring successful deployment of cloud infrastructure — efficiently building, updating, and destroying cloud resources as required.
Creating a Simple Web Server on AWS
In this example, we use JavaScript to create a simple web server on AWS using EC2.
This code creates the necessary security group, deploys a very simple web server for example purposes, and then creates the instance, before exporting the IP and hostname.
Pulumi can be used on any resource on AWS, Azure, GCP, Kubernetes, and OpenStack, covering serverless, containers, and infrastructure.
const aws = require("@pulumi/aws");
let size = "t2.micro";
let ami = "ami-7172b611"
// Create a new security group for port 80.
let group = new aws.ec2.SecurityGroup("web-secgrp", {
ingress: [
{ protocol: "tcp", fromPort: 22,
toPort: 22, cidrBlocks: ["0.0.0.0/0"] },
{ protocol: "tcp", fromPort: 80,
toPort: 80, cidrBlocks: ["0.0.0.0/0"] },
],
});
// Create a simple web server.
let userData =
"#!/bin/bash \n" +
"echo 'Hello, World!' > index.html \n" +
"nohup python -m SimpleHTTPServer 80 &";
let server = new aws.ec2.Instance("web-server-www", {
tags: { "Name": "web-server-www" },
instanceType: size,
securityGroups: [ group.name ],
ami: ami,
userData: userData
});
exports.publicIp = server.publicIp;
exports.publicHostName = server.publicDns;
How Pulumi Works
1Create
- Code in modern languages
- Share and reuse patterns
- Use your favorite IDE and tools
2Deploy
- Preview changes
- Run
pulumi up
to deploy - Integrate with CI/CD
3Manage
- Audit all changes
- Manage complex environments
- Implement policies and controls



Featured Customer
Learning Machine
Learning Machine, a blockchain SaaS company faced two challenges with their cloud infrastructure:
- Skills gaps between Dev and DevOps creating silos, and fragility.
- The need to more rapidly provision their expanding roster of new customers.
By moving to Pulumi, Learning Machine were able to solve both challenges with significant increases in capability:
Pulumi has given our team the tools and framework to achieve a unified development and DevOps model, boosting productivity and taking our business to any cloud environment that our customers need. We retired 25,000 lines of complex code that few team members understood and replaced it with 100s of lines in a real programming language.
— Kim Hamilton, CTO Learning Machine
Get Started with Pulumi
Use Pulumi's open source SDK to create, deploy, and manage infrastructure on any cloud.
See how top engineering teams enable developers and operators to work better together with Pulumi.
We are building a distributed-database-as-a-service product that runs on Kubernetes clusters across multiple public clouds including GCP, AWS and others. Pulumi's declarative model, the support for familiar programming languages, and the uniform workflow on any cloud make our SRE team much more efficient.
Need assistance?
More from Pulumi
Migrate to Pulumi
In this video, Pulumi CTO, Luke Hoban, discusses how to begin to migrate to Pulumi from existing tools such as CloudFormation and Terraform.
Learn more
Serverless, Containers, and Infrastructure
In this blog post, we show how productive Pulumi can be at combining different aspects of cloud architecture for truly cloud native programming.
Learn more