Class Distribution


  • public class Distribution
    extends com.pulumi.resources.CustomResource
    Manages a Lightsail content delivery network (CDN) distribution. Use this resource to cache content at edge locations and reduce latency for users accessing your content. ## Example Usage ### Basic Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.lightsail.Bucket;
     import com.pulumi.aws.lightsail.BucketArgs;
     import com.pulumi.aws.lightsail.Distribution;
     import com.pulumi.aws.lightsail.DistributionArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionOriginArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionDefaultCacheBehaviorArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionCacheBehaviorSettingsArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionCacheBehaviorSettingsForwardedCookiesArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionCacheBehaviorSettingsForwardedHeadersArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionCacheBehaviorSettingsForwardedQueryStringsArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 example = new Bucket("example", BucketArgs.builder()
                 .name("example-bucket")
                 .bundleId("small_1_0")
                 .build());
     
             var exampleDistribution = new Distribution("exampleDistribution", DistributionArgs.builder()
                 .origin(DistributionOriginArgs.builder()
                     .name(example.name())
                     .regionName(example.region())
                     .build())
                 .defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
                     .behavior("cache")
                     .build())
                 .cacheBehaviorSettings(DistributionCacheBehaviorSettingsArgs.builder()
                     .forwardedCookies(DistributionCacheBehaviorSettingsForwardedCookiesArgs.builder()
                         .option("none")
                         .build())
                     .forwardedHeaders(DistributionCacheBehaviorSettingsForwardedHeadersArgs.builder()
                         .option("default")
                         .build())
                     .forwardedQueryStrings(DistributionCacheBehaviorSettingsForwardedQueryStringsArgs.builder()
                         .option(false)
                         .build())
                     .allowedHttpMethods("GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE")
                     .cachedHttpMethods("GET,HEAD")
                     .defaultTtl(86400)
                     .maximumTtl(31536000)
                     .minimumTtl(0)
                     .build())
                 .name("example-distribution")
                 .bundleId("small_1_0")
                 .build());
     
         }
     }
     
     
    ### Instance Origin
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.AwsFunctions;
     import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
     import com.pulumi.aws.inputs.GetAvailabilityZonesFilterArgs;
     import com.pulumi.aws.lightsail.StaticIp;
     import com.pulumi.aws.lightsail.StaticIpArgs;
     import com.pulumi.aws.lightsail.Instance;
     import com.pulumi.aws.lightsail.InstanceArgs;
     import com.pulumi.aws.lightsail.StaticIpAttachment;
     import com.pulumi.aws.lightsail.StaticIpAttachmentArgs;
     import com.pulumi.aws.lightsail.Distribution;
     import com.pulumi.aws.lightsail.DistributionArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionOriginArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionDefaultCacheBehaviorArgs;
     import com.pulumi.resources.CustomResourceOptions;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
                 .filters(GetAvailabilityZonesFilterArgs.builder()
                     .name("opt-in-status")
                     .values("opt-in-not-required")
                     .build())
                 .state("available")
                 .build());
     
             var exampleStaticIp = new StaticIp("exampleStaticIp", StaticIpArgs.builder()
                 .name("example-static-ip")
                 .build());
     
             var exampleInstance = new Instance("exampleInstance", InstanceArgs.builder()
                 .name("example-instance")
                 .availabilityZone(available.names()[0])
                 .blueprintId("amazon_linux_2")
                 .bundleId("micro_1_0")
                 .build());
     
             var example = new StaticIpAttachment("example", StaticIpAttachmentArgs.builder()
                 .staticIpName(exampleStaticIp.name())
                 .instanceName(exampleInstance.name())
                 .build());
     
             var exampleDistribution = new Distribution("exampleDistribution", DistributionArgs.builder()
                 .origin(DistributionOriginArgs.builder()
                     .name(exampleInstance.name())
                     .regionName(available.id())
                     .build())
                 .defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
                     .behavior("cache")
                     .build())
                 .name("example-distribution")
                 .bundleId("small_1_0")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(example)
                     .build());
     
         }
     }
     
     
    ### Load Balancer Origin
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.AwsFunctions;
     import com.pulumi.aws.inputs.GetAvailabilityZonesArgs;
     import com.pulumi.aws.inputs.GetAvailabilityZonesFilterArgs;
     import com.pulumi.aws.lightsail.Lb;
     import com.pulumi.aws.lightsail.LbArgs;
     import com.pulumi.aws.lightsail.Instance;
     import com.pulumi.aws.lightsail.InstanceArgs;
     import com.pulumi.aws.lightsail.LbAttachment;
     import com.pulumi.aws.lightsail.LbAttachmentArgs;
     import com.pulumi.aws.lightsail.Distribution;
     import com.pulumi.aws.lightsail.DistributionArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionOriginArgs;
     import com.pulumi.aws.lightsail.inputs.DistributionDefaultCacheBehaviorArgs;
     import com.pulumi.resources.CustomResourceOptions;
     import java.util.ArrayList;
     import java.util.Arrays;
     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) {
             final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
                 .filters(GetAvailabilityZonesFilterArgs.builder()
                     .name("opt-in-status")
                     .values("opt-in-not-required")
                     .build())
                 .state("available")
                 .build());
     
             var example = new Lb("example", LbArgs.builder()
                 .name("example-load-balancer")
                 .healthCheckPath("/")
                 .instancePort(80)
                 .tags(Map.of("foo", "bar"))
                 .build());
     
             var exampleInstance = new Instance("exampleInstance", InstanceArgs.builder()
                 .name("example-instance")
                 .availabilityZone(available.names()[0])
                 .blueprintId("amazon_linux_2")
                 .bundleId("nano_3_0")
                 .build());
     
             var exampleLbAttachment = new LbAttachment("exampleLbAttachment", LbAttachmentArgs.builder()
                 .lbName(example.name())
                 .instanceName(exampleInstance.name())
                 .build());
     
             var exampleDistribution = new Distribution("exampleDistribution", DistributionArgs.builder()
                 .origin(DistributionOriginArgs.builder()
                     .name(example.name())
                     .regionName(available.id())
                     .build())
                 .defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
                     .behavior("cache")
                     .build())
                 .name("example-distribution")
                 .bundleId("small_1_0")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(exampleLbAttachment)
                     .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import Lightsail Distribution using the `name`. For example: ```sh $ pulumi import aws:lightsail/distribution:Distribution example example-distribution ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      com.pulumi.core.Output<java.util.List<java.lang.String>> alternativeDomainNames()  
      com.pulumi.core.Output<java.lang.String> arn()  
      com.pulumi.core.Output<java.lang.String> bundleId()  
      com.pulumi.core.Output<java.util.Optional<java.util.List<DistributionCacheBehavior>>> cacheBehaviors()  
      com.pulumi.core.Output<java.util.Optional<DistributionCacheBehaviorSettings>> cacheBehaviorSettings()  
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> certificateName()  
      com.pulumi.core.Output<java.lang.String> createdAt()  
      com.pulumi.core.Output<DistributionDefaultCacheBehavior> defaultCacheBehavior()  
      com.pulumi.core.Output<java.lang.String> domainName()  
      static Distribution get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, DistributionState state, com.pulumi.resources.CustomResourceOptions options)
      Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
      com.pulumi.core.Output<java.util.Optional<java.lang.String>> ipAddressType()  
      com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> isEnabled()  
      com.pulumi.core.Output<java.util.List<DistributionLocation>> locations()  
      com.pulumi.core.Output<java.lang.String> name()  
      com.pulumi.core.Output<DistributionOrigin> origin()  
      com.pulumi.core.Output<java.lang.String> originPublicDns()  
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<java.lang.String> resourceType()  
      com.pulumi.core.Output<java.lang.String> status()  
      com.pulumi.core.Output<java.lang.String> supportCode()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()  
      com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Distribution

        public Distribution​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • Distribution

        public Distribution​(java.lang.String name,
                            DistributionArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • Distribution

        public Distribution​(java.lang.String name,
                            DistributionArgs args,
                            @Nullable
                            com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • alternativeDomainNames

        public com.pulumi.core.Output<java.util.List<java.lang.String>> alternativeDomainNames()
        Returns:
        Alternate domain names of the distribution.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN of the distribution.
      • bundleId

        public com.pulumi.core.Output<java.lang.String> bundleId()
        Returns:
        Bundle ID to use for the distribution.
      • cacheBehaviorSettings

        public com.pulumi.core.Output<java.util.Optional<DistributionCacheBehaviorSettings>> cacheBehaviorSettings()
        Returns:
        Cache behavior settings of the distribution. See below.
      • cacheBehaviors

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DistributionCacheBehavior>>> cacheBehaviors()
        Returns:
        Per-path cache behavior of the distribution. See below.
      • certificateName

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> certificateName()
        Returns:
        Name of the SSL/TLS certificate attached to the distribution.
      • createdAt

        public com.pulumi.core.Output<java.lang.String> createdAt()
        Returns:
        Timestamp when the distribution was created.
      • defaultCacheBehavior

        public com.pulumi.core.Output<DistributionDefaultCacheBehavior> defaultCacheBehavior()
        Returns:
        Default cache behavior of the distribution. See below.
      • domainName

        public com.pulumi.core.Output<java.lang.String> domainName()
        Returns:
        Domain name of the distribution.
      • ipAddressType

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> ipAddressType()
        Returns:
        IP address type of the distribution. Valid values: `dualstack`, `ipv4`. Default: `dualstack`.
      • isEnabled

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> isEnabled()
        Returns:
        Whether the distribution is enabled. Default: `true`.
      • locations

        public com.pulumi.core.Output<java.util.List<DistributionLocation>> locations()
        Returns:
        Location of the distribution, such as the AWS Region and Availability Zone. See below.
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        Name of the distribution.
      • origin

        public com.pulumi.core.Output<DistributionOrigin> origin()
        Returns:
        Origin resource of the distribution, such as a Lightsail instance, bucket, or load balancer. See below. The following arguments are optional:
      • originPublicDns

        public com.pulumi.core.Output<java.lang.String> originPublicDns()
        Returns:
        Public DNS of the origin. * `origin[0].resource_type` - Resource type of the origin resource (e.g., Instance).
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • resourceType

        public com.pulumi.core.Output<java.lang.String> resourceType()
        Returns:
        Lightsail resource type (e.g., Distribution).
      • status

        public com.pulumi.core.Output<java.lang.String> status()
        Returns:
        Status of the distribution.
      • supportCode

        public com.pulumi.core.Output<java.lang.String> supportCode()
        Returns:
        Support code. Include this code in your email to support when you have questions about your Lightsail distribution. This code enables our support team to look up your Lightsail information more easily.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Map of tags for the Lightsail Distribution. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • get

        public static Distribution get​(java.lang.String name,
                                       com.pulumi.core.Output<java.lang.String> id,
                                       @Nullable
                                       DistributionState state,
                                       @Nullable
                                       com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.