Infrastructure as Code for Engineers
Ship infrastructure faster with software engineering. Use Pulumi’s open source SDK in your favorite languages to provision infrastructure on any cloud, and securely increase infrastructure as code adoption across teams with Pulumi’s enterprise-grade SaaS.

Author in any language, deploy to any cloud
Pulumi Infrastructure as Code Engine
Define infrastructure as code (IaC) in TypeScript/JavaScript, Python, Go, C#, Java, and YAML using your IDE and test frameworks for a fast inner dev loop. Deploy to 100+ providers like AWS, Azure, Google Cloud, and Kubernetes.

IaC for every engineer
Author and share infrastructure code in standard languages that anyone can easily use.
Author IaC faster
Use your IDE with interactive documentation, type checking, and statement completion.
Write Policy as Code
Write Policy as Code in programming languages to enforce best practices with Crossguard.
Create infrastructure automation workflows
Pulumi Automation API
Create workflows that coordinate provisioning, previewing, refreshing, and destroying cloud resources by using the Pulumi engine as a library in your application code.

10x productivity
Engineers can manage 10x more cloud resources using Automation API compared to traditional CLI tools.
Create custom CLIs
Build atop Pulumi to create CLIs that make it easy for end-users to provision prebuilt cloud architectures.
Power up your SaaS
Enable your services and APIs to dynamically provision and manage cloud resources at scale.
Build infrastructure faster with reusable components
Pulumi Packages
Build and reuse higher-level abstractions for cloud architectures with multi-language Pulumi Packages. Distribute the packages through repositories or package managers so your team members can reuse them.
import * as eks from "@pulumi/eks";
// Create an EKS cluster with the default configuration.
const cluster = new eks.Cluster("eks-cluster");
// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;
import pulumi
import pulumi_eks as eks
# Create an EKS cluster with the default configuration.
cluster = eks.Cluster("eks-cluster")
# Export the cluster's kubeconfig.
pulumi.export("kubeconfig", cluster.kubeconfig)
package main
import (
"github.com/pulumi/pulumi-eks/sdk/go/eks"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
// Create an EKS cluster with default settings.
cluster, err := eks.NewCluster(ctx, "eks-cluster", nil)
if err != nil {
return err
}
// Export the cluster's kubeconfig.
ctx.Export("kubeconfig", cluster.Kubeconfig)
return nil
})
}
using System.Collections.Generic;
using Pulumi;
using Pulumi.Eks;
await Deployment.RunAsync(() =>
{
// Create an EKS cluster with default settings.
var cluster = new Cluster("eks-cluster");
// Export the cluster's kubeconfig.
return new Dictionary<string, object?>
{
["kubeconfig"] = cluster.Kubeconfig
};
});
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.eks.Cluster;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
private static void stack(Context ctx) {
final var cluster = new Cluster("eks-cluster");
ctx.export("kubeconfig", cluster.kubeconfig());
}
}
resources:
eks-cluster:
type: eks:Cluster
outputs:
kubeconfig: ${cluster.kubeconfig}
Native cloud providers
Full API coverage for AWS, Azure, Google Cloud, and Kubernetes with same-day updates.
Crosswalk for AWS
Adopt well-architected best practices for your infrastructure easily with the Crosswalk library.
Cloud Native support
Use a single workflow to manage both Kubernetes resources and infrastructure.
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.

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.
Scale and secure infrastructure as code for teams
Pulumi Service
Store infrastructure state & secrets, empower teams to ship infrastructure collaboratively, and manage security and governance using the Pulumi Service. The fastest and easiest way to use Pulumi at scale.

State & secrets management
Securely store state with built-in secrets manager, or bring your own KMS.
Role-based access control
Create teams (or use GitHub teams), set stack permissions, and manage access tokens.
Federated identity
Manage identities and access with SCIM, SAML SSO, GitHub, GitLab, or Atlassian.
Policy enforcement
Create policy packs and enforce them server-side across your team’s deployments.
Remote deployments
Automate execution of IaC programs in a secure, hosted environment and from GitHub.
Audit logs
Track and store user actions and change history with option to export logs.
Getting started
Get started now
Deploy your first app in just five minutes. Follow our tutorials for AWS, Azure, GCP, Kubernetes, and more.
Get StartedMigrating from other tools
Transition from existing infrastructure tools or continue using both. Pulumi has converter tools for Terraform, AWS CloudFormation, Azure Resource Manager, and Kubernetes.
Explore Converter Tools