1. Packages
  2. Cloudflare
  3. API Docs
  4. AuthenticatedOriginPulls
Cloudflare v5.16.0 published on Tuesday, Nov 28, 2023 by Pulumi

cloudflare.AuthenticatedOriginPulls

Explore with Pulumi AI

cloudflare logo
Cloudflare v5.16.0 published on Tuesday, Nov 28, 2023 by Pulumi

    Provides a Cloudflare Authenticated Origin Pulls resource. A cloudflare.AuthenticatedOriginPulls resource is required to use Per-Zone or Per-Hostname Authenticated Origin Pulls.

    Example Usage

    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using Cloudflare = Pulumi.Cloudflare;
    
    return await Deployment.RunAsync(() => 
    {
        // Authenticated Origin Pulls
        var myAop = new Cloudflare.AuthenticatedOriginPulls("myAop", new()
        {
            ZoneId = "0da42c8d2132a9ddaf714f9e7c920711",
            Enabled = true,
        });
    
        // Per-Zone Authenticated Origin Pulls
        var myPerZoneAopCert = new Cloudflare.AuthenticatedOriginPullsCertificate("myPerZoneAopCert", new()
        {
            ZoneId = "0da42c8d2132a9ddaf714f9e7c920711",
            Certificate = "-----INSERT CERTIFICATE-----",
            PrivateKey = "-----INSERT PRIVATE KEY-----",
            Type = "per-zone",
        });
    
        var myPerZoneAop = new Cloudflare.AuthenticatedOriginPulls("myPerZoneAop", new()
        {
            ZoneId = "0da42c8d2132a9ddaf714f9e7c920711",
            AuthenticatedOriginPullsCertificate = myPerZoneAopCert.Id,
            Enabled = true,
        });
    
        // Per-Hostname Authenticated Origin Pulls
        var myPerHostnameAopCert = new Cloudflare.AuthenticatedOriginPullsCertificate("myPerHostnameAopCert", new()
        {
            ZoneId = "0da42c8d2132a9ddaf714f9e7c920711",
            Certificate = "-----INSERT CERTIFICATE-----",
            PrivateKey = "-----INSERT PRIVATE KEY-----",
            Type = "per-hostname",
        });
    
        var myPerHostnameAop = new Cloudflare.AuthenticatedOriginPulls("myPerHostnameAop", new()
        {
            ZoneId = "0da42c8d2132a9ddaf714f9e7c920711",
            AuthenticatedOriginPullsCertificate = myPerHostnameAopCert.Id,
            Hostname = "aop.example.com",
            Enabled = true,
        });
    
    });
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-cloudflare/sdk/v5/go/cloudflare"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		_, err := cloudflare.NewAuthenticatedOriginPulls(ctx, "myAop", &cloudflare.AuthenticatedOriginPullsArgs{
    			ZoneId:  pulumi.String("0da42c8d2132a9ddaf714f9e7c920711"),
    			Enabled: pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		myPerZoneAopCert, err := cloudflare.NewAuthenticatedOriginPullsCertificate(ctx, "myPerZoneAopCert", &cloudflare.AuthenticatedOriginPullsCertificateArgs{
    			ZoneId:      pulumi.String("0da42c8d2132a9ddaf714f9e7c920711"),
    			Certificate: pulumi.String("-----INSERT CERTIFICATE-----"),
    			PrivateKey:  pulumi.String("-----INSERT PRIVATE KEY-----"),
    			Type:        pulumi.String("per-zone"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = cloudflare.NewAuthenticatedOriginPulls(ctx, "myPerZoneAop", &cloudflare.AuthenticatedOriginPullsArgs{
    			ZoneId:                              pulumi.String("0da42c8d2132a9ddaf714f9e7c920711"),
    			AuthenticatedOriginPullsCertificate: myPerZoneAopCert.ID(),
    			Enabled:                             pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		myPerHostnameAopCert, err := cloudflare.NewAuthenticatedOriginPullsCertificate(ctx, "myPerHostnameAopCert", &cloudflare.AuthenticatedOriginPullsCertificateArgs{
    			ZoneId:      pulumi.String("0da42c8d2132a9ddaf714f9e7c920711"),
    			Certificate: pulumi.String("-----INSERT CERTIFICATE-----"),
    			PrivateKey:  pulumi.String("-----INSERT PRIVATE KEY-----"),
    			Type:        pulumi.String("per-hostname"),
    		})
    		if err != nil {
    			return err
    		}
    		_, err = cloudflare.NewAuthenticatedOriginPulls(ctx, "myPerHostnameAop", &cloudflare.AuthenticatedOriginPullsArgs{
    			ZoneId:                              pulumi.String("0da42c8d2132a9ddaf714f9e7c920711"),
    			AuthenticatedOriginPullsCertificate: myPerHostnameAopCert.ID(),
    			Hostname:                            pulumi.String("aop.example.com"),
    			Enabled:                             pulumi.Bool(true),
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.cloudflare.AuthenticatedOriginPulls;
    import com.pulumi.cloudflare.AuthenticatedOriginPullsArgs;
    import com.pulumi.cloudflare.AuthenticatedOriginPullsCertificate;
    import com.pulumi.cloudflare.AuthenticatedOriginPullsCertificateArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            var myAop = new AuthenticatedOriginPulls("myAop", AuthenticatedOriginPullsArgs.builder()        
                .zoneId("0da42c8d2132a9ddaf714f9e7c920711")
                .enabled(true)
                .build());
    
            var myPerZoneAopCert = new AuthenticatedOriginPullsCertificate("myPerZoneAopCert", AuthenticatedOriginPullsCertificateArgs.builder()        
                .zoneId("0da42c8d2132a9ddaf714f9e7c920711")
                .certificate("-----INSERT CERTIFICATE-----")
                .privateKey("-----INSERT PRIVATE KEY-----")
                .type("per-zone")
                .build());
    
            var myPerZoneAop = new AuthenticatedOriginPulls("myPerZoneAop", AuthenticatedOriginPullsArgs.builder()        
                .zoneId("0da42c8d2132a9ddaf714f9e7c920711")
                .authenticatedOriginPullsCertificate(myPerZoneAopCert.id())
                .enabled(true)
                .build());
    
            var myPerHostnameAopCert = new AuthenticatedOriginPullsCertificate("myPerHostnameAopCert", AuthenticatedOriginPullsCertificateArgs.builder()        
                .zoneId("0da42c8d2132a9ddaf714f9e7c920711")
                .certificate("-----INSERT CERTIFICATE-----")
                .privateKey("-----INSERT PRIVATE KEY-----")
                .type("per-hostname")
                .build());
    
            var myPerHostnameAop = new AuthenticatedOriginPulls("myPerHostnameAop", AuthenticatedOriginPullsArgs.builder()        
                .zoneId("0da42c8d2132a9ddaf714f9e7c920711")
                .authenticatedOriginPullsCertificate(myPerHostnameAopCert.id())
                .hostname("aop.example.com")
                .enabled(true)
                .build());
    
        }
    }
    
    import pulumi
    import pulumi_cloudflare as cloudflare
    
    # Authenticated Origin Pulls
    my_aop = cloudflare.AuthenticatedOriginPulls("myAop",
        zone_id="0da42c8d2132a9ddaf714f9e7c920711",
        enabled=True)
    # Per-Zone Authenticated Origin Pulls
    my_per_zone_aop_cert = cloudflare.AuthenticatedOriginPullsCertificate("myPerZoneAopCert",
        zone_id="0da42c8d2132a9ddaf714f9e7c920711",
        certificate="-----INSERT CERTIFICATE-----",
        private_key="-----INSERT PRIVATE KEY-----",
        type="per-zone")
    my_per_zone_aop = cloudflare.AuthenticatedOriginPulls("myPerZoneAop",
        zone_id="0da42c8d2132a9ddaf714f9e7c920711",
        authenticated_origin_pulls_certificate=my_per_zone_aop_cert.id,
        enabled=True)
    # Per-Hostname Authenticated Origin Pulls
    my_per_hostname_aop_cert = cloudflare.AuthenticatedOriginPullsCertificate("myPerHostnameAopCert",
        zone_id="0da42c8d2132a9ddaf714f9e7c920711",
        certificate="-----INSERT CERTIFICATE-----",
        private_key="-----INSERT PRIVATE KEY-----",
        type="per-hostname")
    my_per_hostname_aop = cloudflare.AuthenticatedOriginPulls("myPerHostnameAop",
        zone_id="0da42c8d2132a9ddaf714f9e7c920711",
        authenticated_origin_pulls_certificate=my_per_hostname_aop_cert.id,
        hostname="aop.example.com",
        enabled=True)
    
    import * as pulumi from "@pulumi/pulumi";
    import * as cloudflare from "@pulumi/cloudflare";
    
    // Authenticated Origin Pulls
    const myAop = new cloudflare.AuthenticatedOriginPulls("myAop", {
        zoneId: "0da42c8d2132a9ddaf714f9e7c920711",
        enabled: true,
    });
    // Per-Zone Authenticated Origin Pulls
    const myPerZoneAopCert = new cloudflare.AuthenticatedOriginPullsCertificate("myPerZoneAopCert", {
        zoneId: "0da42c8d2132a9ddaf714f9e7c920711",
        certificate: "-----INSERT CERTIFICATE-----",
        privateKey: "-----INSERT PRIVATE KEY-----",
        type: "per-zone",
    });
    const myPerZoneAop = new cloudflare.AuthenticatedOriginPulls("myPerZoneAop", {
        zoneId: "0da42c8d2132a9ddaf714f9e7c920711",
        authenticatedOriginPullsCertificate: myPerZoneAopCert.id,
        enabled: true,
    });
    // Per-Hostname Authenticated Origin Pulls
    const myPerHostnameAopCert = new cloudflare.AuthenticatedOriginPullsCertificate("myPerHostnameAopCert", {
        zoneId: "0da42c8d2132a9ddaf714f9e7c920711",
        certificate: "-----INSERT CERTIFICATE-----",
        privateKey: "-----INSERT PRIVATE KEY-----",
        type: "per-hostname",
    });
    const myPerHostnameAop = new cloudflare.AuthenticatedOriginPulls("myPerHostnameAop", {
        zoneId: "0da42c8d2132a9ddaf714f9e7c920711",
        authenticatedOriginPullsCertificate: myPerHostnameAopCert.id,
        hostname: "aop.example.com",
        enabled: true,
    });
    
    resources:
      # Authenticated Origin Pulls
      myAop:
        type: cloudflare:AuthenticatedOriginPulls
        properties:
          zoneId: 0da42c8d2132a9ddaf714f9e7c920711
          enabled: true
      # Per-Zone Authenticated Origin Pulls
      myPerZoneAopCert:
        type: cloudflare:AuthenticatedOriginPullsCertificate
        properties:
          zoneId: 0da42c8d2132a9ddaf714f9e7c920711
          certificate: '-----INSERT CERTIFICATE-----'
          privateKey: '-----INSERT PRIVATE KEY-----'
          type: per-zone
      myPerZoneAop:
        type: cloudflare:AuthenticatedOriginPulls
        properties:
          zoneId: 0da42c8d2132a9ddaf714f9e7c920711
          authenticatedOriginPullsCertificate: ${myPerZoneAopCert.id}
          enabled: true
      # Per-Hostname Authenticated Origin Pulls
      myPerHostnameAopCert:
        type: cloudflare:AuthenticatedOriginPullsCertificate
        properties:
          zoneId: 0da42c8d2132a9ddaf714f9e7c920711
          certificate: '-----INSERT CERTIFICATE-----'
          privateKey: '-----INSERT PRIVATE KEY-----'
          type: per-hostname
      myPerHostnameAop:
        type: cloudflare:AuthenticatedOriginPulls
        properties:
          zoneId: 0da42c8d2132a9ddaf714f9e7c920711
          authenticatedOriginPullsCertificate: ${myPerHostnameAopCert.id}
          hostname: aop.example.com
          enabled: true
    

    Create AuthenticatedOriginPulls Resource

    new AuthenticatedOriginPulls(name: string, args: AuthenticatedOriginPullsArgs, opts?: CustomResourceOptions);
    @overload
    def AuthenticatedOriginPulls(resource_name: str,
                                 opts: Optional[ResourceOptions] = None,
                                 authenticated_origin_pulls_certificate: Optional[str] = None,
                                 enabled: Optional[bool] = None,
                                 hostname: Optional[str] = None,
                                 zone_id: Optional[str] = None)
    @overload
    def AuthenticatedOriginPulls(resource_name: str,
                                 args: AuthenticatedOriginPullsArgs,
                                 opts: Optional[ResourceOptions] = None)
    func NewAuthenticatedOriginPulls(ctx *Context, name string, args AuthenticatedOriginPullsArgs, opts ...ResourceOption) (*AuthenticatedOriginPulls, error)
    public AuthenticatedOriginPulls(string name, AuthenticatedOriginPullsArgs args, CustomResourceOptions? opts = null)
    public AuthenticatedOriginPulls(String name, AuthenticatedOriginPullsArgs args)
    public AuthenticatedOriginPulls(String name, AuthenticatedOriginPullsArgs args, CustomResourceOptions options)
    
    type: cloudflare:AuthenticatedOriginPulls
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    
    name string
    The unique name of the resource.
    args AuthenticatedOriginPullsArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args AuthenticatedOriginPullsArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args AuthenticatedOriginPullsArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args AuthenticatedOriginPullsArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args AuthenticatedOriginPullsArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    AuthenticatedOriginPulls Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The AuthenticatedOriginPulls resource accepts the following input properties:

    Enabled bool

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    ZoneId string

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    AuthenticatedOriginPullsCertificate string

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    Hostname string

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    Enabled bool

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    ZoneId string

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    AuthenticatedOriginPullsCertificate string

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    Hostname string

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    enabled Boolean

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    zoneId String

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticatedOriginPullsCertificate String

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    hostname String

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    enabled boolean

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    zoneId string

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticatedOriginPullsCertificate string

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    hostname string

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    enabled bool

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    zone_id str

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticated_origin_pulls_certificate str

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    hostname str

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    enabled Boolean

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    zoneId String

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticatedOriginPullsCertificate String

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    hostname String

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the AuthenticatedOriginPulls resource produces the following output properties:

    Id string

    The provider-assigned unique ID for this managed resource.

    Id string

    The provider-assigned unique ID for this managed resource.

    id String

    The provider-assigned unique ID for this managed resource.

    id string

    The provider-assigned unique ID for this managed resource.

    id str

    The provider-assigned unique ID for this managed resource.

    id String

    The provider-assigned unique ID for this managed resource.

    Look up Existing AuthenticatedOriginPulls Resource

    Get an existing AuthenticatedOriginPulls resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: AuthenticatedOriginPullsState, opts?: CustomResourceOptions): AuthenticatedOriginPulls
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            authenticated_origin_pulls_certificate: Optional[str] = None,
            enabled: Optional[bool] = None,
            hostname: Optional[str] = None,
            zone_id: Optional[str] = None) -> AuthenticatedOriginPulls
    func GetAuthenticatedOriginPulls(ctx *Context, name string, id IDInput, state *AuthenticatedOriginPullsState, opts ...ResourceOption) (*AuthenticatedOriginPulls, error)
    public static AuthenticatedOriginPulls Get(string name, Input<string> id, AuthenticatedOriginPullsState? state, CustomResourceOptions? opts = null)
    public static AuthenticatedOriginPulls get(String name, Output<String> id, AuthenticatedOriginPullsState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AuthenticatedOriginPullsCertificate string

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    Enabled bool

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    Hostname string

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    ZoneId string

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    AuthenticatedOriginPullsCertificate string

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    Enabled bool

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    Hostname string

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    ZoneId string

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticatedOriginPullsCertificate String

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    enabled Boolean

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    hostname String

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    zoneId String

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticatedOriginPullsCertificate string

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    enabled boolean

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    hostname string

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    zoneId string

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticated_origin_pulls_certificate str

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    enabled bool

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    hostname str

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    zone_id str

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    authenticatedOriginPullsCertificate String

    The ID of an uploaded Authenticated Origin Pulls certificate. If no hostname is provided, this certificate will be used zone wide as Per-Zone Authenticated Origin Pulls.

    enabled Boolean

    Whether to enable Authenticated Origin Pulls on the given zone or hostname.

    hostname String

    Specify a hostname to enable Per-Hostname Authenticated Origin Pulls on, using the provided certificate.

    zoneId String

    The zone identifier to target for the resource. Modifying this attribute will force creation of a new resource.

    Import

    global

     $ pulumi import cloudflare:index/authenticatedOriginPulls:AuthenticatedOriginPulls example <zone_id>
    

    per zone

     $ pulumi import cloudflare:index/authenticatedOriginPulls:AuthenticatedOriginPulls example <zone_id>/<certificate_id>
    

    per hostname

     $ pulumi import cloudflare:index/authenticatedOriginPulls:AuthenticatedOriginPulls example <zone_id>/<certificate_id>/<hostname>
    

    Package Details

    Repository
    Cloudflare pulumi/pulumi-cloudflare
    License
    Apache-2.0
    Notes

    This Pulumi package is based on the cloudflare Terraform Provider.

    cloudflare logo
    Cloudflare v5.16.0 published on Tuesday, Nov 28, 2023 by Pulumi