Pulumi programs use packages just like ordinary programs.

JavaScript and TypeScript programs use NPM, Python programs use PyPI, and Go programs simply use packages distributed in the usual means.

Packages let you share and reuse your Pulumi creations with your team and/or the community.

Packages are also how we distribute the foundational cloud resource definitions for AWS, Azure, Google Cloud, OpenStack, and Kubernetes, in addition to our frameworks that aggregate these resources into higher level abstractions.

These packages are installed as any ordinary package would be:

$ npm install @pulumi/aws --save
$ npm install @pulumi/aws --save
$ pip install pulumi_aws
$ go get -u

And are imported as usual in your code:

var aws = require("@pulumi/aws");
import * as aws from "@pulumi/aws";
import pulumi_aws as aws
import (

As you can see, Pulumi doesn’t need its own package manager. Instead, you can share and reuse your creations using all the existing tools and ecosystems for packages in your favorite language, including private packages.

Many packages demand configuration to customize their behavior. Let’s see how to do that now.