1. Docs
  2. @pulumi/pulumi

Package @pulumi/pulumi

    Pulumi Node.js SDK

    The Pulumi Node.js SDK lets you write cloud programs in JavaScript.

    Installation

    Using npm:

    $ npm install --save @pulumi/pulumi
    

    Using yarn:

    $ yarn add @pulumi/pulumi
    

    This SDK is meant for use with the Pulumi CLI. Visit Pulumi’s Download & Install to install the CLI.

    Building and Testing

    For anybody who wants to build from source, here is how you do it.

    Prerequisites

    This SDK uses Node.js and we support any of the Current, Active and Maintenance LTS versions. We support both NPM and Yarn for package management.

    At the moment, we only support building on macOS and Linux, where standard GNU tools like make are available.

    Make Targets

    To build the SDK, simply run make from the root directory (where this README lives, at sdk/nodejs/ from the repo’s root). This will build the code, run tests, and install the package and its supporting artifacts.

    At the moment, for local development, we install everything into $HOME/.dev-pulumi. You will want this on your $PATH.

    The tests will verify that everything works, but feel free to try running pulumi preview and/or pulumi up from the examples/minimal/ directory. Remember to run tsc first, since pulumi expects JavaScript, not TypeScript.

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

    Modules

    Resources

    Others

    Resources

    Resource ComponentResource

    class ComponentResource extends Resource

    ComponentResource is a resource that aggregates one or more other child resources into a higher level abstraction. The component resource itself is a resource, but does not require custom CRUD operations for provisioning.

    constructor

    new ComponentResource(type: string, name: string, args: Inputs, opts: ComponentResourceOptions, remote: boolean)

    Creates and registers a new component resource. [type] is the fully qualified type token and [name] is the “name” part to use in creating a stable and globally unique URN for the object. [opts.parent] is the optional parent for this component, and [opts.dependsOn] is an optional list of other resources that this resource depends on, controlling the order in which we perform resource operations.

    • name The unique name of the resource.
    • args Information passed to [initialize] method.
    • opts A bag of options that control this resource's behavior.
    • remote True if this is a remote component resource.

    method getData

    protected getData(): Promise<TData>

    Retrieves the data produces by [initialize]. The data is immediately available in a derived class’s constructor after the super(...) call to ComponentResource.

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method initialize

    protected initialize(args: Inputs): Promise<TData>

    Can be overridden by a subclass to asynchronously initialize data for this Component automatically when constructed. The data will be available immediately for subclass constructors to use. To access the data use .getData.

    method isInstance

    public static isInstance(obj: any): obj is ComponentResource

    Returns true if the given object is an instance of CustomResource. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    method registerOutputs

    protected registerOutputs(outputs?: Inputs | Promise<Inputs> | Output<Inputs>): void

    registerOutputs registers synthetic outputs that a component has initialized, usually by allocating other child sub-resources and propagating their resulting property values.

    ComponentResources can call this at the end of their constructor to indicate that they are done creating child resources. This is not strictly necessary as this will automatically be called after the initialize method completes.

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Resource CustomResource

    class CustomResource extends Resource

    CustomResource is a resource whose create, read, update, and delete (CRUD) operations are managed by performing external operations on some physical entity. The engine understands how to diff and perform partial updates of them, and these CRUD operations are implemented in a dynamically loaded plugin for the defining package.

    constructor

    new CustomResource(t: string, name: string, props?: Inputs, opts: CustomResourceOptions, dependency: boolean)

    Creates and registers a new managed resource. t is the fully qualified type token and name is the “name” part to use in creating a stable and globally unique URN for the object. dependsOn is an optional list of other resources that this resource depends on, controlling the order in which we perform resource operations. Creating an instance does not necessarily perform a create on the physical entity which it represents, and instead, this is dependent upon the diffing of the new goal state compared to the current known resource state.

    • t The type of the resource.
    • name The unique name of the resource.
    • props The arguments to use to populate the new resource.
    • opts A bag of options that control this resource's behavior.
    • dependency True if this is a synthetic resource used internally for dependency tracking.

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method isInstance

    public static isInstance(obj: any): obj is CustomResource

    Returns true if the given object is an instance of CustomResource. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    property id

    public id: Output<ID>;

    id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Resource DependencyProviderResource

    class DependencyProviderResource extends ProviderResource

    A DependencyProviderResource is a resource that is used by the provider SDK as a stand-in for a provider that is only used for its reference. Its only valid properties are its URN and ID.

    constructor

    new DependencyProviderResource(ref: string)

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method isInstance

    public static isInstance(obj: any): obj is CustomResource

    Returns true if the given object is an instance of CustomResource. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    method register

    public static register(provider: ProviderResource | undefined): Promise<string | undefined>

    property id

    public id: Output<ID>;

    id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Resource DependencyResource

    class DependencyResource extends CustomResource

    A DependencyResource is a resource that is used to indicate that an Output has a dependency on a particular resource. These resources are only created when dealing with remote component resources.

    constructor

    new DependencyResource(urn: URN)

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method isInstance

    public static isInstance(obj: any): obj is CustomResource

    Returns true if the given object is an instance of CustomResource. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    property id

    public id: Output<ID>;

    id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Resource ProviderResource

    class ProviderResource extends CustomResource

    ProviderResource is a resource that implements CRUD operations for other custom resources. These resources are managed similarly to other resources, including the usual diffing and update semantics.

    constructor

    new ProviderResource(pkg: string, name: string, props?: Inputs, opts: ResourceOptions, dependency: boolean)

    Creates and registers a new provider resource for a particular package.

    • pkg The package associated with this provider.
    • name The unique name of the provider.
    • props The configuration to use for this provider.
    • opts A bag of options that control this provider's behavior.
    • dependency True if this is a synthetic resource used internally for dependency tracking.

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method isInstance

    public static isInstance(obj: any): obj is CustomResource

    Returns true if the given object is an instance of CustomResource. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    method register

    public static register(provider: ProviderResource | undefined): Promise<string | undefined>

    property id

    public id: Output<ID>;

    id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Resource Resource

    class Resource

    Resource represents a class whose CRUD operations are implemented by a provider plugin.

    constructor

    new Resource(t: string, name: string, custom: boolean, props: Inputs, opts: ResourceOptions, remote: boolean, dependency: boolean)

    Creates and registers a new resource object. [t] is the fully qualified type token and [name] is the “name” part to use in creating a stable and globally unique URN for the object. dependsOn is an optional list of other resources that this resource depends on, controlling the order in which we perform resource operations.

    • t The type of the resource.
    • name The unique name of the resource.
    • custom True to indicate that this is a custom resource, managed by a plugin.
    • props The arguments to use to populate the new resource.
    • opts A bag of options that control this resource's behavior.
    • remote True if this is a remote component resource.
    • dependency True if this is a synthetic resource used internally for dependency tracking.

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method isInstance

    public static isInstance(obj: any): obj is Resource

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Resource StackReference

    class StackReference extends CustomResource

    Manages a reference to a Pulumi stack. The referenced stack’s outputs are available via the outputs property or the output method.

    constructor

    new StackReference(name: string, args?: StackReferenceArgs, opts?: CustomResourceOptions)

    Create a StackReference resource with the given unique name, arguments, and options.

    If args is not specified, the name of the referenced stack will be the name of the StackReference resource.

    • name The unique name of the stack reference.
    • args The arguments to use to populate this resource's properties.
    • opts A bag of options that control this resource's behavior.

    method getOutput

    public getOutput(name: Input<string>): Output<any>

    Fetches the value of the named stack output, or undefined if the stack output was not found.

    method getOutputDetails

    public getOutputDetails(name: string): Promise<StackReferenceOutputDetails>

    Fetches the value of the named stack output and builds a StackReferenceOutputDetails with it.

    The returned object has its value or secretValue fields set depending on wehther the output is a secret. Neither field is set if the output was not found.

    method getOutputValue

    public getOutputValue(name: string): Promise<any>

    Fetches the value promptly of the named stack output. May return undefined if the value is not known for some reason.

    This operation is not supported (and will throw) if the named stack output is a secret.

    method getProvider

    public getProvider(moduleMember: string): ProviderResource | undefined

    method isInstance

    public static isInstance(obj: any): obj is CustomResource

    Returns true if the given object is an instance of CustomResource. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    method requireOutput

    public requireOutput(name: Input<string>): Output<any>

    Fetches the value of the named stack output, or throws an error if the output was not found.

    method requireOutputValue

    public requireOutputValue(name: string): Promise<any>

    Fetches the value promptly of the named stack output. Throws an error if the stack output is not found.

    This operation is not supported (and will throw) if the named stack output is a secret.

    property id

    public id: Output<ID>;

    id is the provider-assigned unique ID for this managed resource. It is set during deployments and may be missing (undefined) during planning phases.

    property name

    public name: Output<string>;

    The name of the referenced stack.

    property outputs

    public outputs: Output<{[name: string]: any}>;

    The outputs of the referenced stack.

    property secretOutputNames

    public secretOutputNames: Output<string[]>;

    The names of any stack outputs which contain secrets.

    property urn

    public urn: Output<URN>;

    urn is the stable logical URN used to distinctly address a resource, both before and after deployments.

    Others

    interface Alias

    interface Alias

    Alias is a partial description of prior named used for a resource. It can be processed in the context of a resource creation to determine what the full aliased URN would be.

    Note there is a semantic difference between properties being absent from this type and properties having the undefined value. Specifically, there is a difference between:

    { name: "foo", parent: undefined } // and
    { name: "foo" }
    

    The presence of a property indicates if its value should be used. If absent, then the value is not used. So, in the above while alias.parent is undefined for both, the first alias means “the original urn had no parent” while the second alias means “use the current parent”.

    Note: to indicate that a resource was previously parented by the root stack, it is recommended that you use:

    aliases: [{ parent: pulumi.rootStackResource }]

    This form is self-descriptive and makes the intent clearer than using:

    aliases: [{ parent: undefined }]

    property name

    name?: Input<string>;

    The previous name of the resource. If not provided, the current name of the resource is used.

    property parent

    parent?: Resource | Input<URN>;

    The previous parent of the resource. If not provided (i.e. { name: "foo" }), the current parent of the resource is used (opts.parent if provided, else the implicit stack resource parent).

    To specify no original parent, use { parent: pulumi.rootStackResource }.

    property project

    project?: Input<string>;

    The previous project of the resource. If not provided, defaults to pulumi.getProject().

    property stack

    stack?: Input<string>;

    The previous stack of the resource. If not provided, defaults to pulumi.getStack().

    property type

    type?: Input<string>;

    The previous type of the resource. If not provided, the current type of the resource is used.

    function all

    all<T>(val: Record<string, Input<T>>): Output<Record<string, Unwrap<T>>>

    Allows for multiple Output objects to be combined into a single Output object. The single Output will depend on the union of Resources that the individual dependencies depend on.

    This can be used in the following manner:

    var d1: Output<string>;
    var d2: Output<number>;
    
    var d3: Output<ResultType> = Output.all([d1, d2]).apply(([s, n]) => ...);
    

    In this example, taking a dependency on d3 means a resource will depend on all the resources of d1 and d2.

    all<T1,T2,T3,T4,T5,T6,T7,T8>(values: [, Input<T1>, Input<T2>, Input<T3>, Input<T4>, Input<T5>, Input<T6>, Input<T7>, Input<T8>]): Output<[, Unwrap<T1>, Unwrap<T2>, Unwrap<T3>, Unwrap<T4>, Unwrap<T5>, Unwrap<T6>, Unwrap<T7>, Unwrap<T8>]>
    all<T1,T2,T3,T4,T5,T6,T7>(values: [, Input<T1>, Input<T2>, Input<T3>, Input<T4>, Input<T5>, Input<T6>, Input<T7>]): Output<[, Unwrap<T1>, Unwrap<T2>, Unwrap<T3>, Unwrap<T4>, Unwrap<T5>, Unwrap<T6>, Unwrap<T7>]>
    all<T1,T2,T3,T4,T5,T6>(values: [, Input<T1>, Input<T2>, Input<T3>, Input<T4>, Input<T5>, Input<T6>]): Output<[, Unwrap<T1>, Unwrap<T2>, Unwrap<T3>, Unwrap<T4>, Unwrap<T5>, Unwrap<T6>]>
    all<T1,T2,T3,T4,T5>(values: [, Input<T1>, Input<T2>, Input<T3>, Input<T4>, Input<T5>]): Output<[, Unwrap<T1>, Unwrap<T2>, Unwrap<T3>, Unwrap<T4>, Unwrap<T5>]>
    all<T1,T2,T3,T4>(values: [, Input<T1>, Input<T2>, Input<T3>, Input<T4>]): Output<[, Unwrap<T1>, Unwrap<T2>, Unwrap<T3>, Unwrap<T4>]>
    all<T1,T2,T3>(values: [, Input<T1>, Input<T2>, Input<T3>]): Output<[, Unwrap<T1>, Unwrap<T2>, Unwrap<T3>]>
    all<T1,T2>(values: [, Input<T1>, Input<T2>]): Output<[, Unwrap<T1>, Unwrap<T2>]>
    all<T>(ds: Input<T>[]): Output<Unwrap<T>[]>

    function allAliases

    allAliases(childAliases: Input<URN | Alias>[], childName: string, childType: string, parent: Resource, parentName: string): Output<URN>[]

    interface ComponentResourceOptions

    interface ComponentResourceOptions extends ResourceOptions

    ComponentResourceOptions is a bag of optional settings that control a component resource’s behavior.

    property aliases

    aliases?: Input<URN | Alias>[];

    An optional list of aliases to treat this resource as matching.

    property customTimeouts

    customTimeouts?: CustomTimeouts;

    An optional customTimeouts configuration block.

    property deletedWith

    deletedWith?: Resource;

    If set, the providers Delete method will not be called for this resource if specified is being deleted as well.

    property dependsOn

    dependsOn?: Input<Input<Resource>[]> | Input<Resource>;

    An optional additional explicit dependencies on other resources.

    property id

    id?: Input<ID>;

    An optional existing ID to load, rather than create.

    property ignoreChanges

    ignoreChanges?: string[];

    Ignore changes to any of the specified properties.

    property parent

    parent?: Resource;

    An optional parent resource to which this resource belongs.

    property pluginDownloadURL

    pluginDownloadURL?: undefined | string;

    An option to specify the URL from which to download this resources associated plugin. This version overrides the URL information inferred from the current package and should rarely be used.

    property protect

    protect?: undefined | false | true;

    When set to true, protect ensures this resource cannot be deleted.

    property provider

    provider?: ProviderResource;

    An optional provider to use for this resource’s CRUD operations. If no provider is supplied, the default provider for the resource’s package will be used. The default provider is pulled from the parent’s provider bag (see also ComponentResourceOptions.providers).

    If this is a [ComponentResourceOptions] do not provide both [provider] and [providers]

    property providers

    providers?: Record<string, ProviderResource> | ProviderResource[];

    An optional set of providers to use for child resources. Either keyed by package name (e.g. “aws”), or just provided as an array. In the latter case, the package name will be retrieved from the provider itself.

    Note: only a list should be used. Mapping keys are not respected.

    property replaceOnChanges

    replaceOnChanges?: string[];

    Changes to any of these property paths will force a replacement. If this list includes "*", changes to any properties will force a replacement. Initialization errors from previous deployments will require replacement instead of update only if "*" is passed.

    property retainOnDelete

    retainOnDelete?: undefined | false | true;

    If set to True, the providers Delete method will not be called for this resource.

    property transformations

    transformations?: ResourceTransformation[];

    Optional list of transformations to apply to this resource during construction. The transformations are applied in order, and are applied prior to transformation applied to parents walking from the resource up to the stack.

    property urn

    urn?: URN;

    The URN of a previously-registered resource of this type to read from the engine.

    property version

    version?: undefined | string;

    An optional version, corresponding to the version of the provider plugin that should be used when operating on this resource. This version overrides the version information inferred from the current package and should rarely be used.

    property xTransforms

    xTransforms?: ResourceTransform[];

    Optional list of transforms to apply to this resource during construction. The transforms are applied in order, and are applied prior to transforms applied to parents walking from the resource up to the stack.

    This property is experimental.

    function concat

    concat(params: Input<any>[]): Output<string>

    [concat] takes a sequence of [Inputs], stringifies each, and concatenates all values into one final string. Individual inputs can be any sort of [Input] value. i.e. they can be [Promise]s, [Output]s, or just plain JavaScript values. This can be used like so:

         // 'server' and 'loadBalancer' are both resources that expose [Output] properties.
         let val: Output<string> = pulumi.concat("http://", server.hostname, ":", loadBalancer.port);
    

    class Config

    class Config

    Config is a bag of related configuration state. Each bag contains any number of configuration variables, indexed by simple keys, and each has a name that uniquely identifies it; two bags with different names do not share values for variables that otherwise share the same key. For example, a bag whose name is pulumi:foo, with keys a, b, and c, is entirely separate from a bag whose name is pulumi:bar with the same simple key names. Each key has a fully qualified names, such as pulumi:foo:a, …, and pulumi:bar:a, respectively.

    constructor

    new Config(name?: undefined | string)

    method get

    public get<K>(key: string, opts?: StringConfigOptions<K>): K | undefined

    get loads an optional configuration value by its key, or undefined if it doesn’t exist.

    method getBoolean

    public getBoolean(key: string): boolean | undefined

    getBoolean loads an optional configuration value, as a boolean, by its key, or undefined if it doesn’t exist. If the configuration value isn’t a legal boolean, this function will throw an error.

    method getNumber

    public getNumber(key: string, opts?: NumberConfigOptions): number | undefined

    getNumber loads an optional configuration value, as a number, by its key, or undefined if it doesn’t exist. If the configuration value isn’t a legal number, this function will throw an error.

    method getObject

    public getObject<T>(key: string): T | undefined

    getObject loads an optional configuration value, as an object, by its key, or undefined if it doesn’t exist. This routine simply JSON parses and doesn’t validate the shape of the contents.

    method getSecret

    public getSecret<K>(key: string, opts?: StringConfigOptions<K>): Output<K> | undefined

    getSecret loads an optional configuration value by its key, marking it as a secret, or undefined if it doesn’t exist.

    method getSecretBoolean

    public getSecretBoolean(key: string): Output<boolean> | undefined

    getSecretBoolean loads an optional configuration value, as a boolean, by its key, making it as a secret or undefined if it doesn’t exist. If the configuration value isn’t a legal boolean, this function will throw an error.

    method getSecretNumber

    public getSecretNumber(key: string, opts?: NumberConfigOptions): Output<number> | undefined

    getSecretNumber loads an optional configuration value, as a number, by its key, marking it as a secret or undefined if it doesn’t exist. If the configuration value isn’t a legal number, this function will throw an error.

    method getSecretObject

    public getSecretObject<T>(key: string): Output<T> | undefined

    getSecretObject loads an optional configuration value, as an object, by its key, marking it as a secret or undefined if it doesn’t exist. This routine simply JSON parses and doesn’t validate the shape of the contents.

    method require

    public require<K>(key: string, opts?: StringConfigOptions<K>): K

    require loads a configuration value by its given key. If it doesn’t exist, an error is thrown.

    method requireBoolean

    public requireBoolean(key: string): boolean

    requireBoolean loads a configuration value, as a boolean, by its given key. If it doesn’t exist, or the configuration value is not a legal boolean, an error is thrown.

    method requireNumber

    public requireNumber(key: string, opts?: NumberConfigOptions): number

    requireNumber loads a configuration value, as a number, by its given key. If it doesn’t exist, or the configuration value is not a legal number, an error is thrown.

    method requireObject

    public requireObject<T>(key: string): T

    requireObject loads a configuration value as a JSON string and deserializes the JSON into a JavaScript object. If it doesn’t exist, or the configuration value is not a legal JSON string, an error is thrown.

    method requireSecret

    public requireSecret<K>(key: string, opts?: StringConfigOptions<K>): Output<K>

    require loads a configuration value by its given key, marking it as a secret. If it doesn’t exist, an error is thrown.

    method requireSecretBoolean

    public requireSecretBoolean(key: string): Output<boolean>

    requireSecretBoolean loads a configuration value, as a boolean, by its given key, marking it as a secret. If it doesn’t exist, or the configuration value is not a legal boolean, an error is thrown.

    method requireSecretNumber

    public requireSecretNumber(key: string, opts?: NumberConfigOptions): Output<number>

    requireSecretNumber loads a configuration value, as a number, by its given key, marking it as a secret. If it doesn’t exist, or the configuration value is not a legal number, an error is thrown.

    method requireSecretObject

    public requireSecretObject<T>(key: string): Output<T>

    requireSecretObject loads a configuration value as a JSON string and deserializes the JSON into a JavaScript object, marking it as a secret. If it doesn’t exist, or the configuration value is not a legal JSON string, an error is thrown.

    property name

    public name: string;

    name is the configuration bag’s logical name and uniquely identifies it. The default is the name of the current project.

    function containsUnknowns

    containsUnknowns(value: any): boolean

    containsUnknowns returns true if the given value is or contains unknown values.

    function createUrn

    createUrn(name: Input<string>, type: Input<string>, parent?: Resource | Input<URN>, project?: undefined | string, stack?: undefined | string): Output<string>

    createUrn computes a URN from the combination of a resource name, resource type, optional parent, optional project and optional stack.

    interface CustomResourceOptions

    interface CustomResourceOptions extends ResourceOptions

    CustomResourceOptions is a bag of optional settings that control a custom resource’s behavior.

    property additionalSecretOutputs

    additionalSecretOutputs?: string[];

    The names of outputs for this resource that should be treated as secrets. This augments the list that the resource provider and pulumi engine already determine based on inputs to your resource. It can be used to mark certain ouputs as a secrets on a per resource basis.

    property aliases

    aliases?: Input<URN | Alias>[];

    An optional list of aliases to treat this resource as matching.

    property customTimeouts

    customTimeouts?: CustomTimeouts;

    An optional customTimeouts configuration block.

    property deleteBeforeReplace

    deleteBeforeReplace?: undefined | false | true;

    When set to true, deleteBeforeReplace indicates that this resource should be deleted before its replacement is created when replacement is necessary.

    property deletedWith

    deletedWith?: Resource;

    If set, the providers Delete method will not be called for this resource if specified is being deleted as well.

    property dependsOn

    dependsOn?: Input<Input<Resource>[]> | Input<Resource>;

    An optional additional explicit dependencies on other resources.

    property id

    id?: Input<ID>;

    An optional existing ID to load, rather than create.

    property ignoreChanges

    ignoreChanges?: string[];

    Ignore changes to any of the specified properties.

    property import

    import?: ID;

    When provided with a resource ID, import indicates that this resource’s provider should import its state from the cloud resource with the given ID. The inputs to the resource’s constructor must align with the resource’s current state. Once a resource has been imported, the import property must be removed from the resource’s options.

    property parent

    parent?: Resource;

    An optional parent resource to which this resource belongs.

    property pluginDownloadURL

    pluginDownloadURL?: undefined | string;

    An option to specify the URL from which to download this resources associated plugin. This version overrides the URL information inferred from the current package and should rarely be used.

    property protect

    protect?: undefined | false | true;

    When set to true, protect ensures this resource cannot be deleted.

    property provider

    provider?: ProviderResource;

    An optional provider to use for this resource’s CRUD operations. If no provider is supplied, the default provider for the resource’s package will be used. The default provider is pulled from the parent’s provider bag (see also ComponentResourceOptions.providers).

    If this is a [ComponentResourceOptions] do not provide both [provider] and [providers]

    property replaceOnChanges

    replaceOnChanges?: string[];

    Changes to any of these property paths will force a replacement. If this list includes "*", changes to any properties will force a replacement. Initialization errors from previous deployments will require replacement instead of update only if "*" is passed.

    property retainOnDelete

    retainOnDelete?: undefined | false | true;

    If set to True, the providers Delete method will not be called for this resource.

    property transformations

    transformations?: ResourceTransformation[];

    Optional list of transformations to apply to this resource during construction. The transformations are applied in order, and are applied prior to transformation applied to parents walking from the resource up to the stack.

    property urn

    urn?: URN;

    The URN of a previously-registered resource of this type to read from the engine.

    property version

    version?: undefined | string;

    An optional version, corresponding to the version of the provider plugin that should be used when operating on this resource. This version overrides the version information inferred from the current package and should rarely be used.

    property xTransforms

    xTransforms?: ResourceTransform[];

    Optional list of transforms to apply to this resource during construction. The transforms are applied in order, and are applied prior to transforms applied to parents walking from the resource up to the stack.

    This property is experimental.

    interface CustomTimeouts

    interface CustomTimeouts

    property create

    create?: undefined | string;

    The optional create timeout represented as a string e.g. 5m, 40s, 1d.

    property delete

    delete?: undefined | string;

    The optional delete timeout represented as a string e.g. 5m, 40s, 1d.

    property update

    update?: undefined | string;

    The optional update timeout represented as a string e.g. 5m, 40s, 1d.

    function getOrganization

    getOrganization(): string

    getOrganization returns the current organization name.

    function getProject

    getProject(): string

    getProject returns the current project name. It throws an exception if none is registered.

    function getStack

    getStack(): string

    getStack returns the current stack name. It throws an exception if none is registered.

    type ID

    type ID = string;

    type Input

    type Input = T | Promise<T> | OutputInstance<T>;

    [Input] is a property input for a resource. It may be a promptly available T, a promise for one, or the output from a existing Resource.

    type Inputs

    type Inputs = Record<string, Input<any>>;

    [Inputs] is a map of property name to property input, one for each resource property value.

    function interpolate

    interpolate(literals: TemplateStringsArray, placeholders: Input<any>[]): Output<string>

    [interpolate] is similar to [concat] but is designed to be used as a tagged template expression. i.e.:

         // 'server' and 'loadBalancer' are both resources that expose [Output] properties.
         let val: Output<string> = pulumi.interpolate `http://${server.hostname}:${loadBalancer.port}`
    

    As with [concat] the ‘placeholders’ between ${} can be any Inputs. i.e. they can be [Promise]s, [Output]s, or just plain JavaScript values.

    interface InvokeOptions

    interface InvokeOptions

    property async

    async?: undefined | false | true;

    Invoke this data source function asynchronously. Defaults to true if unspecified.

    When true, only the Promise<> side of the invoke result is present. Explicitly pass in false to get the non-Promise side of the result. Invoking data source functions synchronously is deprecated. The ability to do this will be removed at a later point in time.

    property parent

    parent?: Resource;

    An optional parent to use for default options for this invoke (e.g. the default provider to use).

    property pluginDownloadURL

    pluginDownloadURL?: undefined | string;

    An option to specify the URL from which to download this resources associated plugin. This version overrides the URL information inferred from the current package and should rarely be used.

    property provider

    provider?: ProviderResource;

    An optional provider to use for this invocation. If no provider is supplied, the default provider for the invoked function’s package will be used.

    property version

    version?: undefined | string;

    An optional version, corresponding to the version of the provider plugin that should be used when performing this invoke.

    function isGrpcError

    isGrpcError(err: Error): boolean

    function isSecret

    isSecret<T>(val: Output<T>): Promise<boolean>

    function isUnknown

    isUnknown(val: any): boolean

    isUnknown returns true if the given value is unknown.

    function jsonParse

    jsonParse(text: Input<string>, reviver?: undefined | (this: any, key: string, value: any) => any): Output<any>

    [jsonParse] Uses JSON.parse to deserialize the given Input JSON string into a value.

    function jsonStringify

    jsonStringify(obj: Input<any>, replacer?: undefined | (this: any, key: string, value: any) => any | string | number[], space?: string | number): Output<string>

    [jsonStringify] Uses JSON.stringify to serialize the given Input value into a JSON string.

    type Lifted

    type Lifted = T extends string ? LiftedObject<String, NonFunctionPropertyNames<String>> : T extends Array<infer U> ? LiftedArray<U> : T extends object ? LiftedObject<T, NonFunctionPropertyNames<T>> : { ... };

    The [Lifted] type allows us to express the operation of taking a type, with potentially deeply nested objects and arrays and to then get a type with the same properties, except whose property types are now [Output]s of the original property type.

    For example:

     `type X = { A: string, B: { c: boolean } }`
    

    Then Lifted<X> would be equivalent to:

     `...    = { A: Output<string>, B: Output<{ C: Output<boolean> }> }`
    

    [Lifted] is somewhat the opposite of [Unwrap]. It’s primary purpose is to allow an instance of [Output] to provide simple access to the properties of [SomeType] directly on the instance itself (instead of haveing to use [.apply]).

    This lifting only happens through simple pojo objects and arrays. Functions, for example, are not lifted. So you cannot do:

         const o: Output<string> = ...;
         const c: Output<number> = o.charCodeAt(0);
    

    Instead, you still need to write;

         const o: Output<string> = ...;
         const c: Output<number> = o.apply(v => v.charCodeAt(0));
    

    type LiftedArray

    type LiftedArray = {
        length: Output<number>;
    };

    type LiftedObject

    type LiftedObject = { ... };

    function mergeOptions

    mergeOptions(opts1: CustomResourceOptions | undefined, opts2: CustomResourceOptions | undefined): CustomResourceOptions

    [mergeOptions] takes two ResourceOptions values and produces a new ResourceOptions with the respective properties of opts2 merged over the same properties in opts1. The original options objects will be unchanged.

    Conceptually property merging follows these basic rules:

    1. if the property is a collection, the final value will be a collection containing the values from each options object.
    2. Simple scaler values from opts2 (i.e. strings, numbers, bools) will replace the values of opts1.
    3. opts2 can have properties explicitly provided with null or undefined as the value. If explicitly provided, then that will be the final value in the result.
    4. For the purposes of merging dependsOn, provider and providers are always treated as collections, even if only a single value was provided.
    mergeOptions(opts1: ComponentResourceOptions | undefined, opts2: ComponentResourceOptions | undefined): ComponentResourceOptions
    mergeOptions(opts1: ResourceOptions | undefined, opts2: ResourceOptions | undefined): ResourceOptions

    interface NumberConfigOptions

    interface NumberConfigOptions

    NumberConfigOptions may be used to constrain the set of legal values a number config value may contain.

    property max

    max?: undefined | number;

    The maximum number value, inclusive. If the number is greater than this, a ConfigRangeError is thrown.

    property min

    min?: undefined | number;

    The minimum number value, inclusive. If the number is less than this, a ConfigRangeError is thrown.

    type Output

    type Output = OutputInstance<T> & Lifted<T>;

    [Output] helps encode the relationship between Resources in a Pulumi application. Specifically an [Output] holds onto a piece of Data and the Resource it was generated from. An [Output] value can then be provided when constructing new Resources, allowing that new Resource to know both the value as well as the Resource the value came from. This allows for a precise ‘Resource dependency graph’ to be created, which properly tracks the relationship between resources.

    An [Output] is used in a Pulumi program differently depending on if the application is executing at ‘deployment time’ (i.e. when actually running the ‘pulumi’ executable), or at ‘run time’ (i.e. a piece of code running in some Cloud).

    At ‘deployment time’, the correct way to work with the underlying value is to call [Output.apply(func)]. This allows the value to be accessed and manipulated, while still resulting in an [Output] that is keeping track of [Resource]s appropriately. At deployment time the underlying value may or may not exist (for example, if a preview is being performed). In this case, the ‘func’ callback will not be executed, and calling [.apply] will immediately return an [Output] that points to the [undefined] value. During a normal [update] though, the ‘func’ callbacks should always be executed.

    At ‘run time’, the correct way to work with the underlying value is to simply call [Output.get] which will be promptly return the entire value. This will be a simple JavaScript object that can be manipulated as necessary.

    To ease with using [Output]s at ‘deployment time’, pulumi will ’lift’ simple data properties of an underlying value to the [Output] itself. For example:

         const o: Output<{ name: string, age: number, orders: Order[] }> = ...;
         const name : Output<string> = o.name;
         const age  : Output<number> = o.age;
         const first: Output<Order>  = o.orders[0];
    

    Instead of having to write:

         const o: Output<{ name: string, age: number, orders: Order[] }> = ...;
         const name : Output<string> = o.apply(v => v.name);
         const age  : Output<number> = o.apply(v => v.age);
         const first: Output<Order> = o.apply(v => v.orders[0]);
    

    function output

    output<T>(val: Input<T>): Output<Unwrap<T>>

    [output] takes any Input value and converts it into an Output, deeply unwrapping nested Input values as necessary.

    The expected way to use this function is like so:

         var transformed = pulumi.output(someVal).apply(unwrapped => {
             // Do whatever you want now.  'unwrapped' will contain no outputs/promises inside
             // here, so you can easily do whatever sort of transformation is most convenient.
         });
    
         // the result can be passed to another Resource.  The dependency information will be
         // properly maintained.
         var someResource = new SomeResource(name, { data: transformed ... });
    
    output<T>(val: Input<T> | undefined): Output<Unwrap<T | undefined>>

    interface OutputConstructor

    interface OutputConstructor

    Static side of the [Output] type. Can be used to [create] Outputs as well as test arbitrary values to see if they are [Output]s.

    method create

    create<T>(val: Input<T>): Output<Unwrap<T>>
    create<T>(val: Input<T> | undefined): Output<Unwrap<T | undefined>>

    method isInstance

    isInstance<T>(obj: any): obj is Output<T>

    interface OutputInstance

    interface OutputInstance

    Instance side of the [Output] type. Exposes the deployment-time and run-time mechanisms for working with the underlying value of an [Output].

    method apply

    apply<U>(func: (t: T) => Promise<U>): Output<U>

    Transforms the data of the output with the provided func. The result remains a Output so that dependent resources can be properly tracked.

    ‘func’ is not allowed to make resources.

    ‘func’ can return other Outputs. This can be handy if you have a Output and you want to get a transitive dependency of it. i.e.

    var d1: Output<SomeVal>;
    var d2 = d1.apply(v => v.x.y.OtherOutput); // getting an output off of 'v'.
    

    In this example, taking a dependency on d2 means a resource will depend on all the resources of d1. It will also depend on the resources of v.x.y.OtherDep.

    Importantly, the Resources that d2 feels like it will depend on are the same resources as d1. If you need have multiple Outputs and a single Output is needed that combines both set of resources, then ‘pulumi.all’ should be used instead.

    This function will only be called execution of a ‘pulumi up’ request. It will not run during ‘pulumi preview’ (as the values of resources are of course not known then). It is not available for functions that end up executing in the cloud during runtime. To get the value of the Output during cloud runtime execution, use get().

    apply<U>(func: (t: T) => OutputInstance<U>): Output<U>
    apply<U>(func: (t: T) => U): Output<U>

    method get

    get(): T

    Retrieves the underlying value of this dependency.

    This function is only callable in code that runs in the cloud post-deployment. At this point all Output values will be known and can be safely retrieved. During pulumi deployment or preview execution this must not be called (and will throw). This is because doing so would allow Output values to flow into Resources while losing the data that would allow the dependency graph to be changed.

    class ResourceError

    class ResourceError extends Error

    ResourceError can be used for terminating a program abruptly, specifically associating the problem with a Resource. Depending on the nature of the problem, clients can choose whether or not a call stack should be returned as well. This should be very rare, and would only indicate no usefulness of presenting that stack to the user.

    constructor

    new ResourceError(message: string, resource: Resource | undefined, hideStack?: undefined | false | true)

    method isInstance

    public static isInstance(obj: any): obj is ResourceError

    Returns true if the given object is an instance of a ResourceError. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    property Error

    static Error: ErrorConstructor;

    property hideStack

    public hideStack?: undefined | false | true;

    property message

    message: string;

    property name

    name: string;

    property resource

    public resource: Resource | undefined;

    property stack

    stack?: undefined | string;

    interface ResourceOptions

    interface ResourceOptions

    ResourceOptions is a bag of optional settings that control a resource’s behavior.

    property aliases

    aliases?: Input<URN | Alias>[];

    An optional list of aliases to treat this resource as matching.

    property customTimeouts

    customTimeouts?: CustomTimeouts;

    An optional customTimeouts configuration block.

    property deletedWith

    deletedWith?: Resource;

    If set, the providers Delete method will not be called for this resource if specified is being deleted as well.

    property dependsOn

    dependsOn?: Input<Input<Resource>[]> | Input<Resource>;

    An optional additional explicit dependencies on other resources.

    property id

    id?: Input<ID>;

    An optional existing ID to load, rather than create.

    property ignoreChanges

    ignoreChanges?: string[];

    Ignore changes to any of the specified properties.

    property parent

    parent?: Resource;

    An optional parent resource to which this resource belongs.

    property pluginDownloadURL

    pluginDownloadURL?: undefined | string;

    An option to specify the URL from which to download this resources associated plugin. This version overrides the URL information inferred from the current package and should rarely be used.

    property protect

    protect?: undefined | false | true;

    When set to true, protect ensures this resource cannot be deleted.

    property provider

    provider?: ProviderResource;

    An optional provider to use for this resource’s CRUD operations. If no provider is supplied, the default provider for the resource’s package will be used. The default provider is pulled from the parent’s provider bag (see also ComponentResourceOptions.providers).

    If this is a [ComponentResourceOptions] do not provide both [provider] and [providers]

    property replaceOnChanges

    replaceOnChanges?: string[];

    Changes to any of these property paths will force a replacement. If this list includes "*", changes to any properties will force a replacement. Initialization errors from previous deployments will require replacement instead of update only if "*" is passed.

    property retainOnDelete

    retainOnDelete?: undefined | false | true;

    If set to True, the providers Delete method will not be called for this resource.

    property transformations

    transformations?: ResourceTransformation[];

    Optional list of transformations to apply to this resource during construction. The transformations are applied in order, and are applied prior to transformation applied to parents walking from the resource up to the stack.

    property urn

    urn?: URN;

    The URN of a previously-registered resource of this type to read from the engine.

    property version

    version?: undefined | string;

    An optional version, corresponding to the version of the provider plugin that should be used when operating on this resource. This version overrides the version information inferred from the current package and should rarely be used.

    property xTransforms

    xTransforms?: ResourceTransform[];

    Optional list of transforms to apply to this resource during construction. The transforms are applied in order, and are applied prior to transforms applied to parents walking from the resource up to the stack.

    This property is experimental.

    type ResourceTransform

    type ResourceTransform = (args: ResourceTransformArgs) => Promise<ResourceTransformResult | undefined> | ResourceTransformResult | undefined;

    ResourceTransform is the callback signature for the transforms resource option. A transform is passed the same set of inputs provided to the Resource constructor, and can optionally return back alternate values for the props and/or opts prior to the resource actually being created. The effect will be as though those props and opts were passed in place of the original call to the Resource constructor. If the transform returns undefined, this indicates that the resource will not be transformed.

    interface ResourceTransformArgs

    interface ResourceTransformArgs

    ResourceTransformArgs is the argument bag passed to a resource transform.

    property custom

    custom: boolean;

    If the resource is a custom or component resource.

    property name

    name: string;

    The name of the Resource.

    property opts

    opts: ResourceOptions;

    The original resource options passed to the Resource constructor.

    property props

    props: Inputs;

    The original properties passed to the Resource constructor.

    property type

    type: string;

    The type of the Resource.

    type ResourceTransformation

    type ResourceTransformation = (args: ResourceTransformationArgs) => ResourceTransformationResult | undefined;

    ResourceTransformation is the callback signature for the transformations resource option. A transformation is passed the same set of inputs provided to the Resource constructor, and can optionally return back alternate values for the props and/or opts prior to the resource actually being created. The effect will be as though those props and opts were passed in place of the original call to the Resource constructor. If the transformation returns undefined, this indicates that the resource will not be transformed.

    interface ResourceTransformationArgs

    interface ResourceTransformationArgs

    ResourceTransformationArgs is the argument bag passed to a resource transformation.

    property name

    name: string;

    The name of the Resource.

    property opts

    opts: ResourceOptions;

    The original resource options passed to the Resource constructor.

    property props

    props: Inputs;

    The original properties passed to the Resource constructor.

    property resource

    resource: Resource;

    The Resource instance that is being transformed.

    property type

    type: string;

    The type of the Resource.

    interface ResourceTransformationResult

    interface ResourceTransformationResult

    ResourceTransformationResult is the result that must be returned by a resource transformation callback. It includes new values to use for the props and opts of the Resource in place of the originally provided values.

    property opts

    opts: ResourceOptions;

    The new resource options to use in place of the original opts

    property props

    props: Inputs;

    The new properties to use in place of the original props

    interface ResourceTransformResult

    interface ResourceTransformResult

    ResourceTransformResult is the result that must be returned by a resource transformation callback. It includes new values to use for the props and opts of the Resource in place of the originally provided values.

    property opts

    opts: ResourceOptions;

    The new resource options to use in place of the original opts

    property props

    props: Inputs;

    The new properties to use in place of the original props

    const rootStackResource

    const rootStackResource: Resource = undefined!;

    Constant to represent the ‘root stack’ resource for a Pulumi application. The purpose of this is solely to make it easy to write an [Alias] like so:

    aliases: [{ parent: rootStackResource }].

    This indicates that the prior name for a resource was created based on it being parented directly by the stack itself and no other resources. Note: this is equivalent to:

    aliases: [{ parent: undefined }]

    However, the former form is preferable as it is more self-descriptive, while the latter may look a bit confusing and may incorrectly look like something that could be removed without changing semantics.

    class RunError

    class RunError extends Error

    RunError can be used for terminating a program abruptly, but resulting in a clean exit rather than the usual verbose unhandled error logic which emits the source program text and complete stack trace. This type should be rarely used. Ideally ResourceError should always be used so that as many errors as possible can be associated with a Resource.

    method isInstance

    public static isInstance(obj: any): obj is RunError

    Returns true if the given object is an instance of a RunError. This is designed to work even when multiple copies of the Pulumi SDK have been loaded into the same process.

    property Error

    static Error: ErrorConstructor;

    property message

    message: string;

    property name

    name: string;

    property stack

    stack?: undefined | string;

    function secret

    secret<T>(val: Input<T>): Output<Unwrap<T>>

    [secret] behaves the same as [output] except the returned output is marked as containing sensitive data.

    secret<T>(val: Input<T> | undefined): Output<Unwrap<T | undefined>>

    interface StackReferenceArgs

    interface StackReferenceArgs

    The set of arguments for constructing a StackReference resource.

    property name

    name?: Input<string>;

    The name of the stack to reference.

    interface StackReferenceOutputDetails

    interface StackReferenceOutputDetails

    Records the output of a StackReference. At most one of th evalue and secretValue fields will be set.

    property secretValue

    secretValue?: any;

    Secret value returned by the StackReference. This is null if the value is not a secret or it does not exist.

    property value

    value?: any;

    Output value returned by the StackReference. This is null if the value is a secret or it does not exist.

    interface StringConfigOptions

    interface StringConfigOptions

    StringConfigOptions may be used to constrain the set of legal values a string config value may contain.

    property allowedValues

    allowedValues?: K[];

    The legal enum values. If it does not match, a ConfigEnumError is thrown.

    property maxLength

    maxLength?: undefined | number;

    The maximum string length. If the string is longer than this, a ConfigRangeError is thrown.

    property minLength

    minLength?: undefined | number;

    The minimum string length. If the string is not this long, a ConfigRangeError is thrown.

    property pattern

    pattern?: string | RegExp;

    A regular expression the string must match. If it does not match, a ConfigPatternError is thrown.

    function unsecret

    unsecret<T>(val: Output<T>): Output<T>

    [unsecret] behaves the same as [output] except the returned output takes the existing output and unwraps the secret

    type Unwrap

    type Unwrap = T extends Promise<infer U1> ? UnwrapSimple<U1> : T extends OutputInstance<infer U2> ? UnwrapSimple<U2> : UnwrapSimple<T>;

    The ‘Unwrap’ type allows us to express the operation of taking a type, with potentially deeply nested Promises and Outputs and to then get that same type with all the Promises and Outputs replaced with their wrapped type. Note that this Unwrapping is ‘deep’. So if you had:

     `type X = { A: Promise<{ B: Output<{ c: Input<boolean> }> }> }`
    

    Then Unwrap<X> would be equivalent to:

     `...    = { A: { B: { C: boolean } } }`
    

    Unwrapping sees through Promises, Outputs, Arrays and Objects.

    Note: due to TypeScript limitations there are some things that cannot be expressed. Specifically, if you had a Promise<Output<T>> then the Unwrap type would not be able to undo both of those wraps. In practice that should be ok. Values in an object graph should not wrap Outputs in Promises. Instead, any code that needs to work Outputs and also be async should either create the Output with the Promise (which will collapse into just an Output). Or, it should start with an Output and call [apply] on it, passing in an async function. This will also collapse and just produce an Output.

    In other words, this should not be used as the shape of an object: { a: Promise<Output<...>> }. It should always either be { a: Promise<NonOutput> } or just { a: Output<...> }.

    type UnwrappedArray

    type UnwrappedArray = Array<Unwrap<T>>;

    type UnwrappedObject

    type UnwrappedObject = { ... };

    type UnwrapSimple

    type UnwrapSimple = T extends primitive ? T : T extends Resource ? T : T extends Array<infer U> ? UnwrappedArray<U> : T extends object ? UnwrappedObject<T> : never;

    Handles encountering basic types when unwrapping.

    type URN

    type URN = string;

    const version

    const version: "${VERSION}" = "${VERSION}";
      Pulumi AI - What cloud infrastructure would you like to build? Generate Program