docs/architecture/providers/README.md
(providers)=
The term "provider" can mean different things in different contexts. When we
talk about Pulumi programs, we often talk about provider resources such as
that provided by the aws.Provider class in the @pulumi/aws NodeJS/TypeScript
package. Or, we might simply mean a cloud provider, such as AWS or GCP. In the
context of the wider Pulumi architecture though, a provider (specifically, a
resource provider) is a Pulumi plugin that implements a
standardized gRPC interface for handling
communication with a third-party service (usually a cloud service, such as AWS,
GCP, or Azure):
While any program which implements the interface can be interfaced with by the Pulumi engine, in practice most Pulumi providers are built in a handful of ways:
pulumi-go-provider
library provides a high-level API for writing a provider in Go, without having
to worry about low-level gRPC details.provider package that offers low-level
primitives for writing a provider in that language (e.g.
gh-file:pulumi#sdk/nodejs/provider for NodeJS,
gh-file:pulumi#sdk/python/lib/pulumi/provider for Python, and
gh-file:pulumi#sdk/go/pulumi/provider for Go). These packages are in varying
states of completeness and neatness and are generally only used for building
component providers.A provider binary is typically named pulumi-resource-<provider-name>;
pulumi-resource-aws is one example. The following pages provide more
information on the various types of providers, their modes of operation, and
their implementation:
:::{toctree} :maxdepth: 1 :titlesonly:
/docs/architecture/providers/built-in /docs/architecture/providers/default /docs/architecture/providers/components /docs/architecture/providers/dynamic /docs/architecture/providers/parameterized /docs/architecture/providers/implementers-guide :::