Overview

Pulumi is an Infrastructure as Code (IaC) platform designed to enable developers and operations teams to define, deploy, and manage cloud infrastructure using standard programming languages. Unlike declarative markup languages often used in IaC, Pulumi allows users to write infrastructure definitions in languages such as TypeScript, Python, Go, C#, Java, or YAML. This approach aims to integrate infrastructure management more closely with existing software development practices, allowing for the use of familiar tools, testing frameworks, and development workflows. Pulumi supports provisioning resources across various cloud providers including AWS, Azure, Google Cloud, and Kubernetes, as well as many SaaS and on-premises services.

The core of Pulumi's offering is its open-source engine, which processes infrastructure code and translates it into cloud provider API calls to create, update, or delete resources. The Pulumi Service (Pulumi Cloud) complements this engine by providing state management, policy enforcement, access control, and team collaboration features, centralizing the operational aspects of infrastructure deployment. This service manages the state of deployed resources, ensuring consistency and providing an audit trail for changes. For organizations with specific compliance or security requirements, Pulumi Enterprise offers self-hosted options and advanced features.

Pulumi is suitable for scenarios requiring complex infrastructure deployments, multi-cloud strategies, or environments where developers are expected to manage their own infrastructure. Its programmatic approach can be beneficial for implementing sophisticated deployment logic, abstractions, and reusable components. For instance, creating a custom component that deploys a web application with a database and load balancer across multiple regions can be encapsulated within a single function or class, promoting reusability and consistency across projects. This contrasts with tools that rely solely on domain-specific languages (DSLs), which may require learning new syntax and paradigms outside of a developer's primary programming language expertise.

The platform's policy-as-code capabilities allow organizations to define governance rules that prevent non-compliant infrastructure from being deployed. These policies can enforce security best practices, cost controls, or regulatory requirements before resources are provisioned in the cloud, helping to maintain organizational standards. Pulumi's integration with CI/CD pipelines allows for automated infrastructure deployments and updates, treating infrastructure changes with the same rigor as application code changes, including code reviews and automated testing.

Key features

  • Multi-language support: Define infrastructure using TypeScript/JavaScript, Python, Go, C#, Java, or YAML, allowing developers to use familiar programming paradigms and toolchains.
  • Multi-cloud and SaaS provider support: Provision and manage resources across major cloud providers (AWS, Azure, Google Cloud, Kubernetes) and various SaaS platforms through a unified workflow.
  • State management: Automatically tracks the state of deployed infrastructure, enabling reliable updates and rollbacks. The Pulumi Service manages this state remotely for teams.
  • Policy as Code: Enforce organizational policies and compliance rules on infrastructure deployments using code, preventing non-compliant resources from being provisioned before deployment.
  • Componentization and Abstraction: Create reusable infrastructure components and abstractions using standard programming constructs, promoting modularity and reducing boilerplate.
  • Preview Deployments: Before applying changes, Pulumi provides a detailed preview of what infrastructure resources will be created, updated, or deleted, reducing unexpected outcomes.
  • Secrets Management: Integrates with cloud secrets managers to securely handle sensitive configuration data within infrastructure code.
  • Developer-centric workflow: Integrates with IDEs, debuggers, and testing frameworks, making infrastructure management feel more aligned with application development.

Pricing

Pulumi offers a tiered pricing model, including a free individual plan and paid plans for teams and enterprises. The plans are differentiated by features such as user limits, monthly credits, concurrent operations, and support levels. Pricing details are current as of May 2026.

Plan Users Monthly Credits Key Features Price (as of 2026-05)
Individual Up to 3 10,000 Open Source engine, Pulumi Cloud state management, basic policy enforcement Free
Team Per user 25,000 All Individual features, team collaboration, advanced policy, unlimited concurrent operations $45 per user per month
Enterprise Custom Custom All Team features, self-hosted options, dedicated support, custom integrations Contact for pricing

For detailed and up-to-date pricing information, refer to the Pulumi pricing page.

Common integrations

  • Cloud Providers: Deep integration with AWS, Azure, Google Cloud, and Kubernetes for provisioning and managing resources.
  • Version Control Systems: Integrates with Git-based repositories (e.g., GitHub, GitLab, Bitbucket) for storing infrastructure code and managing changes.
  • CI/CD Pipelines: Compatible with CI/CD tools like GitHub Actions, GitLab CI/CD, Azure DevOps, and Jenkins for automated deployments.
  • Monitoring and Logging: Can integrate with services like Splunk or Elastic for logging and monitoring deployed infrastructure.
  • Identity and Access Management: Integrates with identity providers like Keycloak for secure authentication and authorization.

Alternatives

  • Terraform: A popular open-source IaC tool that uses HashiCorp Configuration Language (HCL) for declarative infrastructure definition.
  • AWS CloudFormation: AWS's native IaC service, primarily used for provisioning AWS resources using JSON or YAML templates.
  • Crossplane: An open-source Kubernetes add-on that enables managing and provisioning cloud infrastructure and services from within Kubernetes.
  • Ansible: An automation engine that can be used for configuration management, application deployment, and infrastructure provisioning, typically using YAML playbooks.
  • Docker Compose: A tool for defining and running multi-container Docker applications, often used for local development environments.

Getting started

To get started with Pulumi, you typically install the Pulumi CLI, log in to the Pulumi Service, and then create a new project. The following example demonstrates how to create an AWS S3 bucket using TypeScript.

First, ensure you have Node.js and the Pulumi CLI installed. Then, create a new Pulumi project:

pulumi new aws-typescript

This command will prompt you for a project name and stack name, and then generate a basic project structure. Open the index.ts file in your new project. Replace its contents with the following TypeScript code to define an S3 bucket:

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

// Create an AWS S3 bucket
const bucket = new aws.s3.Bucket("my-unique-bucket", {
    acl: "private", // Access control list
    tags: {
        Environment: "Development",
        Project: "MyPulumiApp",
    },
});

// Export the name of the bucket
export const bucketName = bucket.id;
export const bucketDomainName = bucket.bucketDomainName;

This code defines a new S3 bucket with a private ACL and specific tags. The export statements make the bucket's ID and domain name available as stack outputs after deployment. Before deploying, ensure your AWS credentials are configured (e.g., via AWS CLI or environment variables).

To preview the changes:

pulumi preview

To deploy the infrastructure:

pulumi up

Pulumi will show you a summary of the resources to be created. Confirm the deployment to provision the S3 bucket in your AWS account. After successful deployment, the exported bucketName and bucketDomainName will be displayed in your terminal.

When the bucket is no longer needed, you can destroy all resources associated with the stack:

pulumi destroy

For more detailed instructions and examples across different languages and cloud providers, consult the Pulumi documentation.