Announcing Pulumi Crosswalk for AWS. Learn more



Well-Architected Infrastructure as Code for AWS

The easiest way to AWS -- from development to production.
Read the blog.

Try Pulumi for Free Learn About Crosswalk

Easiest Way to AWS

Provision services that are Well-Architected by default. Benefit from patterns that worked for customers who have gone to production. Easy to get started, and easy to do the right thing.

Desktop to Production

Best in class productivity means you can rapidly deploy applications and infrastructure, with the confidence that what you build is production ready out-of-the-box.

Use Familiar Languages

Pulumi's unique approach to infrastructure as code uses familiar languages you already know and love, meaning you can use your favorite tools and engineering practices.

We've been happily using Pulumi’s EKS support for more than three months now. Our team was looking for an end-to-end solution to tame the complexity of Kubernetes on AWS and ensure we adhere to AWS best practices. Pulumi’s Crosswalk effort has equipped our team to scale far better than the alternative approaches of home-grown solutions, scripts and DSLs. Our delivery is now automated and we can now deliver new application and infrastructure features with much faster turn-around, sometimes in just a few hours. Pulumi is a key contributor to our team’s improvement in productivity.

Pankaj Dhingra, Senior Director of Cloud Engineering
Tableau Software

Applications

Containers and Serverless

Get up and running on "day one" with containers -- using Amazon Elastic Container Service (ECS), including "Fargate" or Kubernetes (EKS) -- or serverless -- using AWS Lambda or API Gateway. Benefit from secure and reliable defaults, and customize only where you need to.

With Pulumi's unique approach to infrastructure as code, you'll focus more on code and business logic, and less on YAML or DSL configuration languages.


Get Started

// Create a load balanced ECS "Fargate" service.
import * as awsx from "@pulumi/awsx";

// Spin up two instances of NGINX on port 80.
const lb = new awsx.elasticloadbalancingv2.ApplicationListener("nginx", { port: 80 });
const nginx = new awsx.ecs.FargateService("nginx", {
    taskDefinitionArgs: {
        containers: {
            nginx: {
                image: "nginx",
                memory: 128,
                portMappings: [ lb ],
            },
        },
    },
    desiredCount: 2,
});

// Export the service's URL so that it's easy to access.
export const url = lb.endpoint.hostname;
Infrastructure

Secure Infrastructure as Code

Create, manage, and integrate "day two and beyond" infrastructure for security, networking, clusters, and monitoring. Instead of relearning best practices time and time again, use hardened packages that automatically encapsulate Well-Architected patterns and practices.

Pulumi's unique approach to infrastructure as code means you can leverage highly configurable and extensible components to enforce best practices within your team.


Get Started

// Create a new VPC with public, private, and isolated subnets.
import * as awsx from "@pulumi/awsx";

// Allocate a new VPC with a public and private subnet per AZ,
// plus two isolated subnets without Internet access, one for our
// DB instances and another for our Redis instances.
const vpc = new awsx.ec2.Vpc("custom", {
    subnets: [
        { type: "public" },
        { type: "private" },
        { type: "isolated", name: "db" },
        { type: "isolated", name: "redis" },
    ],
});

// Export the VPC ID and subnet IDs for easy consumption:
export const vpcId = vpc.id;
export const vpcPrivateSubnetIds = vpc.privateSubnetIds;
export const vpcPublicSubnetIds = vpc.publicSubnetIds;