Distribution

class Distribution : KotlinCustomResource

Resource for managing an AWS Lightsail Distribution.

Example Usage

Basic Usage

Below is a basic example with a bucket as an origin.

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.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 testBucket = new Bucket("testBucket", BucketArgs.builder()
.bundleId("small_1_0")
.build());
var testDistribution = new Distribution("testDistribution", DistributionArgs.builder()
.bundleId("small_1_0")
.origin(DistributionOriginArgs.builder()
.name(testBucket.name())
.regionName(testBucket.region())
.build())
.defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
.behavior("cache")
.build())
.cacheBehaviorSettings(DistributionCacheBehaviorSettingsArgs.builder()
.allowedHttpMethods("GET,HEAD,OPTIONS,PUT,PATCH,POST,DELETE")
.cachedHttpMethods("GET,HEAD")
.defaultTtl(86400)
.maximumTtl(31536000)
.minimumTtl(0)
.forwardedCookies(DistributionCacheBehaviorSettingsForwardedCookiesArgs.builder()
.option("none")
.build())
.forwardedHeaders(DistributionCacheBehaviorSettingsForwardedHeadersArgs.builder()
.option("default")
.build())
.forwardedQueryStrings(DistributionCacheBehaviorSettingsForwardedQueryStringsArgs.builder()
.option(false)
.build())
.build())
.build());
}
}

instance origin example

Below is an example of an instance as the 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.lightsail.StaticIp;
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.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) {
final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
.state("available")
.filters(GetAvailabilityZonesFilterArgs.builder()
.name("opt-in-status")
.values("opt-in-not-required")
.build())
.build());
var testStaticIp = new StaticIp("testStaticIp");
var testInstance = new Instance("testInstance", InstanceArgs.builder()
.availabilityZone(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.names()[0]))
.blueprintId("amazon_linux_2")
.bundleId("micro_1_0")
.build());
var testStaticIpAttachment = new StaticIpAttachment("testStaticIpAttachment", StaticIpAttachmentArgs.builder()
.staticIpName(testStaticIp.name())
.instanceName(testInstance.name())
.build());
var testDistribution = new Distribution("testDistribution", DistributionArgs.builder()
.bundleId("small_1_0")
.origin(DistributionOriginArgs.builder()
.name(testInstance.name())
.regionName(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.id()))
.build())
.defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
.behavior("cache")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(testStaticIpAttachment)
.build());
}
}

lb origin example

Below is an example with a load balancer as an 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.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.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) {
final var available = AwsFunctions.getAvailabilityZones(GetAvailabilityZonesArgs.builder()
.state("available")
.filters(GetAvailabilityZonesFilterArgs.builder()
.name("opt-in-status")
.values("opt-in-not-required")
.build())
.build());
var testLb = new Lb("testLb", LbArgs.builder()
.healthCheckPath("/")
.instancePort("80")
.tags(Map.of("foo", "bar"))
.build());
var testInstance = new Instance("testInstance", InstanceArgs.builder()
.availabilityZone(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.names()[0]))
.blueprintId("amazon_linux_2")
.bundleId("nano_1_0")
.build());
var testLbAttachment = new LbAttachment("testLbAttachment", LbAttachmentArgs.builder()
.lbName(testLb.name())
.instanceName(testInstance.name())
.build());
var testDistribution = new Distribution("testDistribution", DistributionArgs.builder()
.bundleId("small_1_0")
.origin(DistributionOriginArgs.builder()
.name(testLb.name())
.regionName(available.applyValue(getAvailabilityZonesResult -> getAvailabilityZonesResult.id()))
.build())
.defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
.behavior("cache")
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(testLbAttachment)
.build());
}
}

Import

Lightsail Distribution can be imported using the id, e.g.,

$ pulumi import aws:lightsail/distribution:Distribution example rft-8012925589

Properties

Link copied to clipboard

The alternate domain names of the distribution.

Link copied to clipboard
val arn: Output<String>

The Amazon Resource Name (ARN) of the distribution.

Link copied to clipboard
val bundleId: Output<String>

Bundle ID to use for the distribution.

Link copied to clipboard

A set of configuration blocks that describe the per-path cache behavior of the distribution. Detailed below

Link copied to clipboard

An object that describes the cache behavior settings of the distribution. Detailed below The following arguments are optional:

Link copied to clipboard
val certificateName: Output<String>?

The name of the SSL/TLS certificate attached to the distribution, if any.

Link copied to clipboard
val createdAt: Output<String>

The timestamp when the distribution was created.

Link copied to clipboard

Object that describes the default cache behavior of the distribution. Detailed below

Link copied to clipboard
val domainName: Output<String>

The domain name of the distribution.

Link copied to clipboard
val id: Output<String>
Link copied to clipboard
val ipAddressType: Output<String>?

The IP address type of the distribution. Default: dualstack.

Link copied to clipboard
val isEnabled: Output<Boolean>?

Indicates whether the distribution is enabled. Default: true.

Link copied to clipboard

An object that describes the location of the distribution, such as the AWS Region and Availability Zone. Detailed below

Link copied to clipboard
val name: Output<String>

Name of the distribution.

Link copied to clipboard

Object that describes the origin resource of the distribution, such as a Lightsail instance, bucket, or load balancer. Detailed below

Link copied to clipboard
val originPublicDns: Output<String>

The public DNS of the origin.

Link copied to clipboard
val pulumiChildResources: Set<KotlinResource>
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val resourceType: Output<String>

The resource type of the origin resource (e.g., Instance).

Link copied to clipboard
val status: Output<String>

The status of the distribution.

Link copied to clipboard
val supportCode: Output<String>

The 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.

Link copied to clipboard
val tags: Output<Map<String, String>>?

Map of tags for the Lightsail Distribution. If configured with a provider default_tags configuration block present, tags with matching keys will overwrite those defined at the provider-level.

Link copied to clipboard
val tagsAll: Output<Map<String, String>>

A map of tags assigned to the resource, including those inherited from the provider default_tags configuration block.

Link copied to clipboard
val urn: Output<String>