DistributionArgs

data class DistributionArgs(val bundleId: Output<String>? = null, val cacheBehaviorSettings: Output<DistributionCacheBehaviorSettingsArgs>? = null, val cacheBehaviors: Output<List<DistributionCacheBehaviorArgs>>? = null, val certificateName: Output<String>? = null, val defaultCacheBehavior: Output<DistributionDefaultCacheBehaviorArgs>? = null, val ipAddressType: Output<String>? = null, val isEnabled: Output<Boolean>? = null, val name: Output<String>? = null, val origin: Output<DistributionOriginArgs>? = null, val tags: Output<Map<String, String>>? = null) : ConvertibleToJava<DistributionArgs>

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

Constructors

Link copied to clipboard
constructor(bundleId: Output<String>? = null, cacheBehaviorSettings: Output<DistributionCacheBehaviorSettingsArgs>? = null, cacheBehaviors: Output<List<DistributionCacheBehaviorArgs>>? = null, certificateName: Output<String>? = null, defaultCacheBehavior: Output<DistributionDefaultCacheBehaviorArgs>? = null, ipAddressType: Output<String>? = null, isEnabled: Output<Boolean>? = null, name: Output<String>? = null, origin: Output<DistributionOriginArgs>? = null, tags: Output<Map<String, String>>? = null)

Properties

Link copied to clipboard
val bundleId: Output<String>? = null

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>? = null

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

Link copied to clipboard

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

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

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

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

Indicates whether the distribution is enabled. Default: true.

Link copied to clipboard
val name: Output<String>? = null

Name of the distribution.

Link copied to clipboard
val origin: Output<DistributionOriginArgs>? = null

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 tags: Output<Map<String, String>>? = null

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.

Functions

Link copied to clipboard
open override fun toJava(): DistributionArgs