---
title: "Pulumi Tutorials"
description: "Hands-on guides designed to help you get spun up on core concepts, learn best practices, and tackle real-world scenarios."
url: "https://www.pulumi.com/dev/tutorials/"
image: "https://www.pulumi.com/assets/og/dev/tutorials.png"
---

# Pulumi Tutorials

Hands-on guides designed to help you get spun up on core concepts, learn best practices, and tackle real-world scenarios.

## Foundational topics

- [Pulumi Fundamentals](https://www.pulumi.com/dev/tutorials/pulumi-fundamentals/): Learn how to use Pulumi to build, configure, and deploy a real-world application. — TypeScript, Python, YAML
- [Building with Pulumi](https://www.pulumi.com/dev/tutorials/building-with-pulumi/): Learn how to use Pulumi for more complex configurations with multiple environments. — TypeScript, Python, Go, .NET, Java, YAML
- [Abstraction and Encapsulation](https://www.pulumi.com/dev/tutorials/abstraction-encapsulation/): Explore abstraction and encapsulation with Pulumi and component resources. — TypeScript, Python
- [Managing Configuration and Secrets](https://www.pulumi.com/dev/tutorials/managing-config-and-secrets.md): Learn how to manage plain-text and encrypted configuration values in Pulumi. — TypeScript, Python, Go, .NET, Java, YAML
- [Inspecting Infrastructure](https://www.pulumi.com/dev/tutorials/inspecting-infrastructure.md): Learn how to inspect your Pulumi resources in this tutorial. — TypeScript, Python, Go, .NET, Java, YAML
- [CLI Authentication](https://www.pulumi.com/dev/tutorials/cli-authentication.md): Learn how to authenticare to the Pulumi CLI in this tutorial.

## Everyday workflows

- [Creating Resources](https://www.pulumi.com/dev/tutorials/creating-resources-aws.md): Learn how to define and provision resources on AWS using Pulumi. — AWS · TypeScript, Python, YAML
- [Stack Outputs & References](https://www.pulumi.com/dev/tutorials/stack-outputs-refs-aws.md): Learn more about exporting and referencing stack outputs in Pulumi. — AWS · TypeScript, JavaScript, Python, Go, .NET, YAML
- [Importing Infrastructure](https://www.pulumi.com/dev/tutorials/importing-aws-infrastructure.md): Learn how to import existing cloud resources into your Pulumi programs in this tutorial. — AWS · TypeScript, Python, Go, .NET, YAML

## Pulumi and AWS

- [Build serverless APIs with Amazon API Gateway](https://www.pulumi.com/dev/tutorials/aws-api-gateway.md): Create and manage API Gateway REST APIs — Lambda, S3, HTTP proxies, auth, and more — with AWSx. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Build and push container images to Amazon ECR](https://www.pulumi.com/dev/tutorials/aws-ecr.md): Provision ECR repositories, build and publish images, and manage lifecycle policies with AWSx. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Deploy containerized applications to Amazon ECS](https://www.pulumi.com/dev/tutorials/aws-ecs.md): Load-balanced Fargate services, custom VPC networking, and automatic container image builds with AWSx. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Run Kubernetes on Amazon EKS](https://www.pulumi.com/dev/tutorials/aws-eks.md): Provision EKS clusters, node groups, and Kubernetes workloads — including Helm charts — with Pulumi. — AWS, Kubernetes · TypeScript, Python, Go, .NET, Java, YAML
- [Load-balance traffic on AWS with ELB](https://www.pulumi.com/dev/tutorials/aws-elb.md): Provision Application and Network Load Balancers and wire them to your AWS services with AWSx. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Manage access with AWS IAM](https://www.pulumi.com/dev/tutorials/aws-iam.md): Create and manage AWS users, groups, roles, and policies with Pulumi. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Run serverless functions on AWS Lambda](https://www.pulumi.com/dev/tutorials/aws-lambda.md): Build serverless applications with AWS Lambda and Pulumi, including magic functions. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Provision an AWS VPC](https://www.pulumi.com/dev/tutorials/aws-vpc.md): Out-of-the-box VPC networking that follows AWS best practices, with AWSx. — AWS · TypeScript, Python, Go, .NET, Java, YAML
- [Use AWS CDK constructs with Pulumi](https://www.pulumi.com/dev/tutorials/aws-cdk.md): Write AWS CDK constructs inside a Pulumi program and deploy the resulting AWS resources with Pulumi. — AWS · TypeScript

## Pulumi and Kubernetes

- [Install Helm Charts using the Release resource](https://www.pulumi.com/dev/tutorials/kubernetes-helm-part-one.md): Learn how to use the `Release` resource from the Pulumi Kubernetes provider to install Helm charts on Kubernetes. — Kubernetes · TypeScript, Python, Go, .NET, YAML
- [Install Helm Charts using the Chart resource](https://www.pulumi.com/dev/tutorials/kubernetes-helm-part-two.md): Learn how to use the `Chart` resource from the Pulumi Kubernetes provider to install Helm charts on Kubernetes. — Kubernetes · TypeScript, Python, Go, .NET, YAML
- [Secure Kubernetes Application Secrets with Pulumi ESC](https://www.pulumi.com/dev/tutorials/secure-kubernetes-app-secrets-with-esc.md): Securely manage secrets and configurations in a Kubernetes app with Pulumi ESC. — Kubernetes · TypeScript, YAML
- [Integrate Pulumi with Secret Store CSI Driver in Kubernetes](https://www.pulumi.com/dev/tutorials/esc-secret-store-csi-driver.md): Learn how to integrate the Secret Store CSI Driver with Pulumi ESC to securely manage your secrets in Kubernetes. — Kubernetes · TypeScript, JavaScript, Python, Go, .NET, YAML
- [Integrate with External Secrets Operator (ESO)](https://www.pulumi.com/dev/tutorials/esc-external-secret-operator.md): Pulumi ESC integrates with the External Secrets Operator (ESO) to manage and deliver secrets in Kubernetes clusters. — Kubernetes · TypeScript, Python, Go, YAML

## Configuration and secrets with Pulumi ESC

- [ChatGPT clone with Pulumi ESC managed secrets](https://www.pulumi.com/dev/tutorials/esc-managed-chatapp.md): Use the Pulumi CLI and ESC SDK to manage secrets for a basic OpenAI-based ChatGPT clone. — Python, YAML
- [Github actions with Pulumi ESC managed secrets](https://www.pulumi.com/dev/tutorials/esc-github.md): Use Pulumi ESC and Github Actions to manage secrets. — YAML
- [Integrate Pulumi with Secret Store CSI Driver in Kubernetes](https://www.pulumi.com/dev/tutorials/esc-secret-store-csi-driver.md): Learn how to integrate the Secret Store CSI Driver with Pulumi ESC to securely manage your secrets in Kubernetes. — Kubernetes · TypeScript, JavaScript, Python, Go, .NET, YAML
- [Integrate with External Secrets Operator (ESO)](https://www.pulumi.com/dev/tutorials/esc-external-secret-operator.md): Pulumi ESC integrates with the External Secrets Operator (ESO) to manage and deliver secrets in Kubernetes clusters. — Kubernetes · TypeScript, Python, Go, YAML
- [Secure Kubernetes Application Secrets with Pulumi ESC](https://www.pulumi.com/dev/tutorials/secure-kubernetes-app-secrets-with-esc.md): Securely manage secrets and configurations in a Kubernetes app with Pulumi ESC. — Kubernetes · TypeScript, YAML
- [Configure applications dynamically with ESC version tagging](https://www.pulumi.com/dev/tutorials/esc-version-tagging.md): Use immutable versioning and dynamic tagging to configure multiple applications safely and easily with Pulumi ESC. — JavaScript

## Migrating to Pulumi

- [Evaluate Compliance of Terraform Resources](https://www.pulumi.com/dev/tutorials/eval-compliance-terraform.md): Learn how to use Pulumi Insights to evaluate compliance of resources that are deployed with Terraform. — Python
- [Importing Infrastructure](https://www.pulumi.com/dev/tutorials/importing-aws-infrastructure.md): Learn how to import existing cloud resources into your Pulumi programs in this tutorial. — AWS · TypeScript, Python, Go, .NET, YAML
- [Importing Infrastructure](https://www.pulumi.com/dev/tutorials/importing-azure-infrastructure.md): Learn how to import existing cloud resources into your Pulumi programs in this tutorial. — Azure · TypeScript, Python, Go, .NET, YAML
- [Importing Infrastructure](https://www.pulumi.com/dev/tutorials/importing-gcp-infrastructure.md): Learn how to import existing cloud resources into your Pulumi programs in this tutorial. — Google Cloud · TypeScript, Python, Go, .NET, YAML
- [Move Resources Between Stacks](https://www.pulumi.com/dev/tutorials/move-resources-between-stacks.md): Learn how to move resources between stacks or projects. — TypeScript, JavaScript, Python, Go, .NET, YAML

## Automation and policy

- [Create Infrastructure with Pulumi Deployments Click-to-Deploy](https://www.pulumi.com/dev/tutorials/pulumi-deployments-click-to-deploy.md): Create and deploy infrastructure in the browser with Pulumi Deployments and the New Project Wizard.
- [Detect and Remediate Infrastructure Drift](https://www.pulumi.com/dev/tutorials/drift-detection-and-remediation.md): Learn to detect and remediate infrastructure drift with Pulumi Deployments. — AWS · TypeScript, Python, Go, .NET, YAML
- [Creating a Custom Policy Pack](https://www.pulumi.com/dev/tutorials/custom-policy-pack/): Learn how to enforce compliance and security requirements by creating a custom policy pack with Pulumi Crossguard. — AWS · TypeScript, Python
- [Embedding Pulumi](https://www.pulumi.com/dev/tutorials/embedding-pulumi/): Explore building a custom infrastructure API to embed Pulumi in other contexts. — Python

## All tutorials

All tutorials, A–Z: https://www.pulumi.com/dev/tutorials/all.md
