Cloud Infrastructure Automation

Migrating to Pulumi from CloudFormation

AWS CloudFormation provides a configuration DSL for you to describe and provision infrastructure resources on AWS.

Pulumi enables you to describe the same infrastructure resources as real code, providing huge productivity gains, while decreasing the brittleness of YAML-based configuration files.

Need help converting your CloudFormation templates into Pulumi code? Drop us a line.

Benefits of Pulumi

Real Code

Pulumi is infrastructure as real code. This means you get all the benefits of your favorite language and tool 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.

Find many other examples here.

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
    echo "Hello, World!" > index.html
    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

Featured Customer

Learning Machine

Learning Machine

Learning Machine, a blockchain SaaS company faced two challenges with their cloud infrastructure:

  1. Skills gaps between Dev and DevOps creating silos, and fragility.
  2. 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:

25,000 Lines of CloudFormation reduced to 500 Lines of JavaScript
New customer provisioning time reduced from 3 weeks to 1 hour

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.

Get started with Pulumi

Pulumi works with your favorite language, and can be used with any cloud.

Install Pulumi

Setup

Configure

Try our tutorials

Quickstarts

Tour

Read the docs

Reference

Examples

Let Pulumi assist with your cloud infrastructure

Need help converting your CloudFormation templates into Pulumi code? Drop us a line.

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 productive Pulumi can be at combining different aspects of cloud architecture for truly cloud native programming.

Learn more