Infrastructure as Code

Infrastructure as Code
in Real Programming Languages

Looking for an infrastructure as code tool? Pulumi lets you define cloud infrastructure in Python, TypeScript, Go, C#, Java, or YAML — with full IDE support, testing, and package management. Deploy to 170+ providers including AWS, Azure, Google Cloud, and Kubernetes. Free and open source.

Trusted by innovative companies

“Pulumi supercharged our infrastructure team by helping us create reusable building blocks that developers can leverage to provision new resources and enforce organizational policies for logging, permissions, resource tagging, and security.”

Igor Shapiro, Principal Engineer, Lemonade

Author in any language, deploy to any cloud

Pulumi Infrastructure as Code Engine

Stop learning DSLs. Author infrastructure as code using programming languages you already know — Python, TypeScript, Go, C#, Java, and YAML. Get auto-completion, type checking, and refactoring from your IDE. Deploy to 170+ providers.

Pulumi code being written in TypeScript showing autocomplete for creating a new S3 bucket Pulumi code being written in Python showing autocomplete for creating a new S3 bucket Pulumi code being written in Go showing autocomplete for creating a new S3 bucket Pulumi code being written in C# showing autocomplete for creating a new S3 bucket Pulumi code being written in Java showing autocomplete for creating a new S3 bucket Pulumi code being written in YAML showing autocomplete for creating a new S3 bucket
Code faster with real languages

Write infrastructure in TypeScript, Python, Go, .NET, Java, and YAML. Use loops, conditionals, functions, and classes — not DSL workarounds.

Build on any cloud

Access the full breadth of services in AWS, Azure, GCP, and 170+ providers through a complete and consistent SDK interface.

Test and preview changes

Write unit tests with standard frameworks. Run integration tests against ephemeral infrastructure. Preview every change before deploying.

Build infrastructure faster with reusable components

Pulumi Packages

Build and reuse higher-level abstractions for cloud architectures with multi-language Pulumi Packages. Create a VPC component once, share it across your organization, and let every team deploy consistently. Real package managers, real versioning, real code reuse.

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

// Create an S3 bucket for static hosting.
const bucket = new aws.s3.Bucket("my-site", {
    website: { indexDocument: "index.html" },
});

// Upload a file to the bucket.
const index = new aws.s3.BucketObject("index.html", {
    bucket: bucket.id,
    content: "<h1>Hello, Pulumi!</h1>",
    contentType: "text/html",
});

export const url = bucket.websiteEndpoint;
import pulumi
import pulumi_aws as aws

# Create an S3 bucket for static hosting.
bucket = aws.s3.Bucket("my-site",
    website={"index_document": "index.html"},
)

# Upload a file to the bucket.
index = aws.s3.BucketObject("index.html",
    bucket=bucket.id,
    content="<h1>Hello, Pulumi!</h1>",
    content_type="text/html",
)

pulumi.export("url", bucket.website_endpoint)
package main

import (
  "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
  "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
  pulumi.Run(func(ctx *pulumi.Context) error {
    // Create an S3 bucket for static hosting.
    bucket, err := s3.NewBucket(ctx, "my-site", &s3.BucketArgs{
      Website: &s3.BucketWebsiteArgs{
        IndexDocument: pulumi.String("index.html"),
      },
    })
    if err != nil {
      return err
    }

    ctx.Export("url", bucket.WebsiteEndpoint)
    return nil
  })
}
using Pulumi;
using Pulumi.Aws.S3;

await Deployment.RunAsync(() =>
{
  // Create an S3 bucket for static hosting.
  var bucket = new Bucket("my-site", new()
  {
    Website = new BucketWebsiteArgs
    {
      IndexDocument = "index.html",
    },
  });

  return new Dictionary<string, object?>
  {
    ["url"] = bucket.WebsiteEndpoint,
  };
});
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.aws.s3.Bucket;
import com.pulumi.aws.s3.BucketArgs;
import com.pulumi.aws.s3.inputs.BucketWebsiteArgs;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    private static void stack(Context ctx) {
      // Create an S3 bucket for static hosting.
      var bucket = new Bucket("my-site", BucketArgs.builder()
        .website(BucketWebsiteArgs.builder()
          .indexDocument("index.html")
          .build())
        .build());
      ctx.export("url", bucket.websiteEndpoint());
    }
}
resources:
  my-site:
    type: aws:s3:Bucket
    properties:
      website:
        indexDocument: index.html
outputs:
  url: ${my-site.websiteEndpoint}
170+ cloud providers

Full API coverage for AWS, Azure, Google Cloud, Kubernetes, and 170+ more providers. Same-day updates when new services launch.

Reusable components

Build higher-level abstractions and share them as packages through npm, PyPI, NuGet, or Go modules. Real versioning, real dependency management.

AI-powered infrastructure

Generate Pulumi programs from natural language, or convert existing Terraform and CloudFormation with built-in migration tools.

Deliver infrastructure through software delivery pipelines

CI/CD Integrations

Version, review, test, and deploy infrastructure code through the same tools and processes used for your application code.

Pulumi infrastructure as code example
Version and review

Manage infrastructure code in Git and approve changes through pull requests.

Shift left

Get rapid feedback on your code with fast unit tests, and run integration tests against ephemeral infrastructure.

Continuous delivery

Integrate your CI/CD provider with Pulumi or use GitOps to manage Kubernetes clusters.

Trusted by thousands of companies

Pulumi’s Infrastructure as Code CLI and SDK is an open-source project that’s supported by an active community. We maintain a public roadmap and welcome feedback and contributions.

350,000+

Community members

4,000+

Companies in production

170+

Cloud and service integrations

Customers innovating with Pulumi Cloud

Atlassian

Developers reduced their time spent on maintenance by 50%.

Elkjop

Increased developers’ agility and speed through platform engineering.

Starburst

Deployments up to 3x faster with Pulumi infrastructure automation.

BMW

Enabled developers to deploy across hybrid cloud environments.

Lemonade

Standardized infrastructure architectures with reusable components.

Snowflake

Built a multi-cloud, Kubernetes-based platform to standardize all deployments.