Class Distribution


  • public class Distribution
    extends com.pulumi.resources.CustomResource
    Creates an Amazon CloudFront web distribution. For information about CloudFront distributions, see the [Amazon CloudFront Developer Guide](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html). For specific information about creating CloudFront web distributions, see the [POST Distribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) page in the Amazon CloudFront API Reference. > **NOTE:** CloudFront distributions take about 15 minutes to reach a deployed state after creation or modification. During this time, deletes to resources will be blocked. If you need to delete a distribution that is enabled and you do not want to wait, you need to use the `retainOnDelete` flag. ## Example Usage ### S3 Origin The example below creates a CloudFront distribution with an S3 origin.
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.s3.Bucket;
     import com.pulumi.aws.s3.BucketArgs;
     import com.pulumi.aws.acm.AcmFunctions;
     import com.pulumi.aws.acm.inputs.GetCertificateArgs;
     import com.pulumi.aws.cloudfront.OriginAccessControl;
     import com.pulumi.aws.cloudfront.OriginAccessControlArgs;
     import com.pulumi.aws.cloudfront.Distribution;
     import com.pulumi.aws.cloudfront.DistributionArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionDefaultCacheBehaviorArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionDefaultCacheBehaviorForwardedValuesArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionDefaultCacheBehaviorForwardedValuesCookiesArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionRestrictionsArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionRestrictionsGeoRestrictionArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionViewerCertificateArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOrderedCacheBehaviorArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOrderedCacheBehaviorForwardedValuesArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOrderedCacheBehaviorForwardedValuesCookiesArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginArgs;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementConditionArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.s3.BucketPolicy;
     import com.pulumi.aws.s3.BucketPolicyArgs;
     import com.pulumi.aws.route53.Route53Functions;
     import com.pulumi.aws.route53.inputs.GetZoneArgs;
     import com.pulumi.aws.route53.Record;
     import com.pulumi.aws.route53.RecordArgs;
     import com.pulumi.aws.route53.inputs.RecordAliasArgs;
     import com.pulumi.codegen.internal.KeyedValue;
     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 b = new Bucket("b", BucketArgs.builder()
                 .bucket("mybucket")
                 .tags(Map.of("Name", "My bucket"))
                 .build());
     
             final var s3OriginId = "myS3Origin";
     
             final var myDomain = "mydomain.com";
     
             final var myDomainGetCertificate = AcmFunctions.getCertificate(GetCertificateArgs.builder()
                 .region("us-east-1")
                 .domain(String.format("*.%s", myDomain))
                 .statuses("ISSUED")
                 .build());
     
             var default_ = new OriginAccessControl("default", OriginAccessControlArgs.builder()
                 .name("default-oac")
                 .originAccessControlOriginType("s3")
                 .signingBehavior("always")
                 .signingProtocol("sigv4")
                 .build());
     
             var s3Distribution = new Distribution("s3Distribution", DistributionArgs.builder()
                 .defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
                     .forwardedValues(DistributionDefaultCacheBehaviorForwardedValuesArgs.builder()
                         .cookies(DistributionDefaultCacheBehaviorForwardedValuesCookiesArgs.builder()
                             .forward("none")
                             .build())
                         .queryString(false)
                         .build())
                     .allowedMethods(                
                         "DELETE",
                         "GET",
                         "HEAD",
                         "OPTIONS",
                         "PATCH",
                         "POST",
                         "PUT")
                     .cachedMethods(                
                         "GET",
                         "HEAD")
                     .targetOriginId(s3OriginId)
                     .viewerProtocolPolicy("allow-all")
                     .minTtl(0)
                     .defaultTtl(3600)
                     .maxTtl(86400)
                     .build())
                 .restrictions(DistributionRestrictionsArgs.builder()
                     .geoRestriction(DistributionRestrictionsGeoRestrictionArgs.builder()
                         .restrictionType("whitelist")
                         .locations(                    
                             "US",
                             "CA",
                             "GB",
                             "DE")
                         .build())
                     .build())
                 .viewerCertificate(DistributionViewerCertificateArgs.builder()
                     .acmCertificateArn(myDomainGetCertificate.arn())
                     .sslSupportMethod("sni-only")
                     .build())
                 .orderedCacheBehaviors(            
                     DistributionOrderedCacheBehaviorArgs.builder()
                         .forwardedValues(DistributionOrderedCacheBehaviorForwardedValuesArgs.builder()
                             .cookies(DistributionOrderedCacheBehaviorForwardedValuesCookiesArgs.builder()
                                 .forward("none")
                                 .build())
                             .queryString(false)
                             .headers("Origin")
                             .build())
                         .pathPattern("/content/immutable/*")
                         .allowedMethods(                    
                             "GET",
                             "HEAD",
                             "OPTIONS")
                         .cachedMethods(                    
                             "GET",
                             "HEAD",
                             "OPTIONS")
                         .targetOriginId(s3OriginId)
                         .minTtl(0)
                         .defaultTtl(86400)
                         .maxTtl(31536000)
                         .compress(true)
                         .viewerProtocolPolicy("redirect-to-https")
                         .build(),
                     DistributionOrderedCacheBehaviorArgs.builder()
                         .forwardedValues(DistributionOrderedCacheBehaviorForwardedValuesArgs.builder()
                             .cookies(DistributionOrderedCacheBehaviorForwardedValuesCookiesArgs.builder()
                                 .forward("none")
                                 .build())
                             .queryString(false)
                             .build())
                         .pathPattern("/content/*")
                         .allowedMethods(                    
                             "GET",
                             "HEAD",
                             "OPTIONS")
                         .cachedMethods(                    
                             "GET",
                             "HEAD")
                         .targetOriginId(s3OriginId)
                         .minTtl(0)
                         .defaultTtl(3600)
                         .maxTtl(86400)
                         .compress(true)
                         .viewerProtocolPolicy("redirect-to-https")
                         .build())
                 .origins(DistributionOriginArgs.builder()
                     .domainName(b.bucketRegionalDomainName())
                     .originAccessControlId(default_.id())
                     .originId(s3OriginId)
                     .build())
                 .enabled(true)
                 .isIpv6Enabled(true)
                 .comment("Some comment")
                 .defaultRootObject("index.html")
                 .aliases(            
                     String.format("mysite.%s", myDomain),
                     String.format("yoursite.%s", myDomain))
                 .priceClass("PriceClass_200")
                 .tags(Map.of("Environment", "production"))
                 .build());
     
             // See https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html
             final var originBucketPolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .conditions(GetPolicyDocumentStatementConditionArgs.builder()
                         .test("StringEquals")
                         .variable("AWS:SourceArn")
                         .values(s3Distribution.arn())
                         .build())
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("cloudfront.amazonaws.com")
                         .build())
                     .sid("AllowCloudFrontServicePrincipalReadWrite")
                     .effect("Allow")
                     .actions(                
                         "s3:GetObject",
                         "s3:PutObject")
                     .resources(b.arn().applyValue(_arn -> String.format("%s/*", _arn)))
                     .build())
                 .build());
     
             var bBucketPolicy = new BucketPolicy("bBucketPolicy", BucketPolicyArgs.builder()
                 .bucket(b.bucket())
                 .policy(originBucketPolicy.applyValue(_originBucketPolicy -> _originBucketPolicy.json()))
                 .build());
     
             // Create Route53 records for the CloudFront distribution aliases
             final var myDomainGetZone = Route53Functions.getZone(GetZoneArgs.builder()
                 .name(myDomain)
                 .build());
     
             for (var range : KeyedValue.of(s3Distribution.aliases())) {
                 new Record("cloudfront-" + range.key(), RecordArgs.builder()
                     .aliases(RecordAliasArgs.builder()
                         .name(s3Distribution.domainName())
                         .zoneId(s3Distribution.hostedZoneId())
                         .evaluateTargetHealth(false)
                         .build())
                     .zoneId(myDomainGetZone.zoneId())
                     .name(range.value())
                     .type("A")
                     .build());
             }
     
         }
     }
     
     
    ### With Failover Routing The example below creates a CloudFront distribution with an origin group for failover routing.
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudfront.Distribution;
     import com.pulumi.aws.cloudfront.DistributionArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionDefaultCacheBehaviorArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginGroupArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginGroupFailoverCriteriaArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginGroupMemberArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginS3OriginConfigArgs;
     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 s3Distribution = new Distribution("s3Distribution", DistributionArgs.builder()
                 .defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
                     .targetOriginId("groupS3")
                     .build())
                 .originGroups(DistributionOriginGroupArgs.builder()
                     .failoverCriteria(DistributionOriginGroupFailoverCriteriaArgs.builder()
                         .statusCodes(                    
                             403,
                             404,
                             500,
                             502)
                         .build())
                     .members(                
                         DistributionOriginGroupMemberArgs.builder()
                             .originId("primaryS3")
                             .build(),
                         DistributionOriginGroupMemberArgs.builder()
                             .originId("failoverS3")
                             .build())
                     .originId("groupS3")
                     .build())
                 .origins(            
                     DistributionOriginArgs.builder()
                         .s3OriginConfig(DistributionOriginS3OriginConfigArgs.builder()
                             .originAccessIdentity(default_.cloudfrontAccessIdentityPath())
                             .build())
                         .domainName(primary.bucketRegionalDomainName())
                         .originId("primaryS3")
                         .build(),
                     DistributionOriginArgs.builder()
                         .s3OriginConfig(DistributionOriginS3OriginConfigArgs.builder()
                             .originAccessIdentity(default_.cloudfrontAccessIdentityPath())
                             .build())
                         .domainName(failover.bucketRegionalDomainName())
                         .originId("failoverS3")
                         .build())
                 .build());
     
         }
     }
     
     
    ### With Managed Caching Policy The example below creates a CloudFront distribution with an [AWS managed caching policy](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-managed-cache-policies.html).
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudfront.Distribution;
     import com.pulumi.aws.cloudfront.DistributionArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionDefaultCacheBehaviorArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionRestrictionsArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionRestrictionsGeoRestrictionArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionViewerCertificateArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionOriginS3OriginConfigArgs;
     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 s3OriginId = "myS3Origin";
     
             var s3Distribution = new Distribution("s3Distribution", DistributionArgs.builder()
                 .defaultCacheBehavior(DistributionDefaultCacheBehaviorArgs.builder()
                     .cachePolicyId("4135ea2d-6df8-44a3-9df3-4b5a84be39ad")
                     .allowedMethods(                
                         "GET",
                         "HEAD",
                         "OPTIONS")
                     .cachedMethods(                
                         "GET",
                         "HEAD")
                     .targetOriginId(s3OriginId)
                     .viewerProtocolPolicy("allow-all")
                     .build())
                 .restrictions(DistributionRestrictionsArgs.builder()
                     .geoRestriction(DistributionRestrictionsGeoRestrictionArgs.builder()
                         .restrictionType("whitelist")
                         .locations(                    
                             "US",
                             "CA",
                             "GB",
                             "DE")
                         .build())
                     .build())
                 .viewerCertificate(DistributionViewerCertificateArgs.builder()
                     .cloudfrontDefaultCertificate(true)
                     .build())
                 .origins(DistributionOriginArgs.builder()
                     .s3OriginConfig(DistributionOriginS3OriginConfigArgs.builder()
                         .originAccessIdentity(default_.cloudfrontAccessIdentityPath())
                         .build())
                     .domainName(primary.bucketRegionalDomainName())
                     .originId("myS3Origin")
                     .build())
                 .enabled(true)
                 .isIpv6Enabled(true)
                 .comment("Some comment")
                 .defaultRootObject("index.html")
                 .build());
     
         }
     }
     
     
    ### With V2 logging to S3 The example below creates a CloudFront distribution with [standard logging V2 to S3](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/standard-logging.html#enable-access-logging-api).
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudfront.Distribution;
     import com.pulumi.aws.cloudwatch.LogDeliverySource;
     import com.pulumi.aws.cloudwatch.LogDeliverySourceArgs;
     import com.pulumi.aws.s3.Bucket;
     import com.pulumi.aws.s3.BucketArgs;
     import com.pulumi.aws.cloudwatch.LogDeliveryDestination;
     import com.pulumi.aws.cloudwatch.LogDeliveryDestinationArgs;
     import com.pulumi.aws.cloudwatch.inputs.LogDeliveryDestinationDeliveryDestinationConfigurationArgs;
     import com.pulumi.aws.cloudwatch.LogDelivery;
     import com.pulumi.aws.cloudwatch.LogDeliveryArgs;
     import com.pulumi.aws.cloudwatch.inputs.LogDeliveryS3DeliveryConfigurationArgs;
     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 Distribution("example");
     
             var exampleLogDeliverySource = new LogDeliverySource("exampleLogDeliverySource", LogDeliverySourceArgs.builder()
                 .region("us-east-1")
                 .name("example")
                 .logType("ACCESS_LOGS")
                 .resourceArn(example.arn())
                 .build());
     
             var exampleBucket = new Bucket("exampleBucket", BucketArgs.builder()
                 .bucket("testbucket")
                 .forceDestroy(true)
                 .build());
     
             var exampleLogDeliveryDestination = new LogDeliveryDestination("exampleLogDeliveryDestination", LogDeliveryDestinationArgs.builder()
                 .deliveryDestinationConfiguration(LogDeliveryDestinationDeliveryDestinationConfigurationArgs.builder()
                     .destinationResourceArn(exampleBucket.arn().applyValue(_arn -> String.format("%s/prefix", _arn)))
                     .build())
                 .region("us-east-1")
                 .name("s3-destination")
                 .outputFormat("parquet")
                 .build());
     
             var exampleLogDelivery = new LogDelivery("exampleLogDelivery", LogDeliveryArgs.builder()
                 .s3DeliveryConfigurations(LogDeliveryS3DeliveryConfigurationArgs.builder()
                     .suffixPath("/123456678910/{DistributionId}/{yyyy}/{MM}/{dd}/{HH}")
                     .build())
                 .region("us-east-1")
                 .deliverySourceName(exampleLogDeliverySource.name())
                 .deliveryDestinationArn(exampleLogDeliveryDestination.arn())
                 .build());
     
         }
     }
     
     
    ### With V2 logging to Data Firehose The example below creates a CloudFront distribution with [standard logging V2 to Data Firehose](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/standard-logging.html#enable-access-logging-api).
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudfront.Distribution;
     import com.pulumi.aws.kinesis.FirehoseDeliveryStream;
     import com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;
     import com.pulumi.aws.cloudwatch.LogDeliverySource;
     import com.pulumi.aws.cloudwatch.LogDeliverySourceArgs;
     import com.pulumi.aws.cloudwatch.LogDeliveryDestination;
     import com.pulumi.aws.cloudwatch.LogDeliveryDestinationArgs;
     import com.pulumi.aws.cloudwatch.inputs.LogDeliveryDestinationDeliveryDestinationConfigurationArgs;
     import com.pulumi.aws.cloudwatch.LogDelivery;
     import com.pulumi.aws.cloudwatch.LogDeliveryArgs;
     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 Distribution("example");
     
             var cloudfrontLogs = new FirehoseDeliveryStream("cloudfrontLogs", FirehoseDeliveryStreamArgs.builder()
                 .region("us-east-1")
                 .tags(Map.of("LogDeliveryEnabled", "true"))
                 .build());
     
             var exampleLogDeliverySource = new LogDeliverySource("exampleLogDeliverySource", LogDeliverySourceArgs.builder()
                 .region("us-east-1")
                 .name("cloudfront-logs-source")
                 .logType("ACCESS_LOGS")
                 .resourceArn(example.arn())
                 .build());
     
             var exampleLogDeliveryDestination = new LogDeliveryDestination("exampleLogDeliveryDestination", LogDeliveryDestinationArgs.builder()
                 .deliveryDestinationConfiguration(LogDeliveryDestinationDeliveryDestinationConfigurationArgs.builder()
                     .destinationResourceArn(cloudfrontLogs.arn())
                     .build())
                 .region("us-east-1")
                 .name("firehose-destination")
                 .outputFormat("json")
                 .build());
     
             var exampleLogDelivery = new LogDelivery("exampleLogDelivery", LogDeliveryArgs.builder()
                 .region("us-east-1")
                 .deliverySourceName(exampleLogDeliverySource.name())
                 .deliveryDestinationArn(exampleLogDeliveryDestination.arn())
                 .build());
     
         }
     }
     
     
    ### With Connection Function and Viewer mTLS The example below creates a CloudFront distribution with a connection function association and viewer mTLS configuration.
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.cloudfront.ConnectionFunction;
     import com.pulumi.aws.cloudfront.ConnectionFunctionArgs;
     import com.pulumi.aws.cloudfront.TrustStore;
     import com.pulumi.aws.cloudfront.TrustStoreArgs;
     import com.pulumi.aws.cloudfront.Distribution;
     import com.pulumi.aws.cloudfront.DistributionArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionConnectionFunctionAssociationArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionViewerMtlsConfigArgs;
     import com.pulumi.aws.cloudfront.inputs.DistributionViewerMtlsConfigTrustStoreConfigArgs;
     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 ConnectionFunction("example", ConnectionFunctionArgs.builder()
                 .name("example-connection-function")
                 .build());
     
             var exampleTrustStore = new TrustStore("exampleTrustStore", TrustStoreArgs.builder()
                 .name("example-trust-store")
                 .build());
     
             var exampleDistribution = new Distribution("exampleDistribution", DistributionArgs.builder()
                 .connectionFunctionAssociation(DistributionConnectionFunctionAssociationArgs.builder()
                     .id(example.id())
                     .build())
                 .viewerMtlsConfig(DistributionViewerMtlsConfigArgs.builder()
                     .trustStoreConfig(DistributionViewerMtlsConfigTrustStoreConfigArgs.builder()
                         .trustStoreId(exampleTrustStore.id())
                         .advertiseTrustStoreCaNames(true)
                         .ignoreCertificateExpiry(false)
                         .build())
                     .mode("verify")
                     .build())
                 .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required * `id` (String) CloudFront distribution ID. #### Optional * `accountId` (String) AWS Account where this resource is managed. Using `pulumi import`, import CloudFront Distributions using the `id`. For example: ```sh $ pulumi import aws:cloudfront/distribution:Distribution distribution E74FTE3EXAMPLE ```
    • 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

      • aliases

        public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> aliases()
        Returns:
        Extra CNAMEs (alternate domain names), if any, for this distribution.
      • anycastIpListId

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> anycastIpListId()
        Returns:
        ID of the Anycast static IP list that is associated with the distribution.
      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        ARN for the distribution. For example: `arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5`, where `123456789012` is your AWS account ID.
      • cacheTagConfig

        public com.pulumi.core.Output<java.util.Optional<DistributionCacheTagConfig>> cacheTagConfig()
        Returns:
        Cache tag configuration block for cache tag extraction from origin responses (maximum one). See the [AWS documentation](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/invalidation-by-tags.html) for more information about cache tags.
      • callerReference

        public com.pulumi.core.Output<java.lang.String> callerReference()
        Returns:
        Internal value used by CloudFront to allow future updates to the distribution configuration.
      • comment

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> comment()
        Returns:
        Any comments you want to include about the distribution.
      • connectionFunctionAssociation

        public com.pulumi.core.Output<java.util.Optional<DistributionConnectionFunctionAssociation>> connectionFunctionAssociation()
        Returns:
        A connection function association configuration block (maximum one).
      • continuousDeploymentPolicyId

        public com.pulumi.core.Output<java.lang.String> continuousDeploymentPolicyId()
        Returns:
        Identifier of a continuous deployment policy. This argument should only be set on a production distribution. See the `aws.cloudfront.ContinuousDeploymentPolicy` resource for additional details.
      • customErrorResponses

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DistributionCustomErrorResponse>>> customErrorResponses()
        Returns:
        One or more custom error response elements (multiples allowed).
      • defaultCacheBehavior

        public com.pulumi.core.Output<DistributionDefaultCacheBehavior> defaultCacheBehavior()
        Returns:
        Default cache behavior for this distribution (maximum one). Requires either `cachePolicyId` (preferred) or `forwardedValues` (deprecated) be set.
      • defaultRootObject

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> defaultRootObject()
        Returns:
        Object that you want CloudFront to return (for example, index.html) when an end user requests the root URL.
      • domainName

        public com.pulumi.core.Output<java.lang.String> domainName()
        Returns:
        Domain name corresponding to the distribution. For example: `d604721fxaaqy9.cloudfront.net`.
      • enabled

        public com.pulumi.core.Output<java.lang.Boolean> enabled()
        Returns:
        Whether the distribution is enabled to accept end user requests for content.
      • etag

        public com.pulumi.core.Output<java.lang.String> etag()
        Returns:
        Current version of the distribution's information. For example: `E2QWRUHAPOMQZL`.
      • hostedZoneId

        public com.pulumi.core.Output<java.lang.String> hostedZoneId()
        Returns:
        CloudFront Route 53 zone ID that can be used to route an [Alias Resource Record Set](http://docs.aws.amazon.com/Route53/latest/APIReference/CreateAliasRRSAPI.html) to. This attribute is simply an alias for the zone ID `Z2FDTNDATAQYW2`.
      • httpVersion

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> httpVersion()
        Returns:
        Maximum HTTP version to support on the distribution. Allowed values are `http1.1`, `http2`, `http2and3` and `http3`. The default is `http2`.
      • inProgressValidationBatches

        public com.pulumi.core.Output<java.lang.Integer> inProgressValidationBatches()
        Returns:
        Number of invalidation batches currently in progress.
      • isIpv6Enabled

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> isIpv6Enabled()
        Returns:
        Whether the IPv6 is enabled for the distribution.
      • lastModifiedTime

        public com.pulumi.core.Output<java.lang.String> lastModifiedTime()
        Returns:
        Date and time the distribution was last modified.
      • loggingConfig

        public com.pulumi.core.Output<java.util.Optional<DistributionLoggingConfig>> loggingConfig()
        Returns:
        The logging configuration that controls how logs are written to your distribution (maximum one). AWS provides two versions of access logs for CloudFront: Legacy and v2. This argument configures legacy version standard logs.
      • loggingV1Enabled

        public com.pulumi.core.Output<java.lang.Boolean> loggingV1Enabled()
        Returns:
        Whether V1 logging is enabled for the distribution.
      • orderedCacheBehaviors

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DistributionOrderedCacheBehavior>>> orderedCacheBehaviors()
        Returns:
        Ordered list of cache behaviors resource for this distribution. List from top to bottom in order of precedence. The topmost cache behavior will have precedence 0.
      • originGroups

        public com.pulumi.core.Output<java.util.Optional<java.util.List<DistributionOriginGroup>>> originGroups()
        Returns:
        One or more originGroup for this distribution (multiples allowed).
      • origins

        public com.pulumi.core.Output<java.util.List<DistributionOrigin>> origins()
        Returns:
        One or more origins for this distribution (multiples allowed).
      • priceClass

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> priceClass()
        Returns:
        Price class for this distribution. One of `PriceClass_All`, `PriceClass_200`, `PriceClass_100`.
      • restrictions

        public com.pulumi.core.Output<DistributionRestrictions> restrictions()
        Returns:
        The restriction configuration for this distribution (maximum one).
      • retainOnDelete

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> retainOnDelete()
        Returns:
        Disables the distribution instead of deleting it when destroying the resource through the provider. If this is set, the distribution needs to be deleted manually afterwards. Default: `false`.
      • staging

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> staging()
        Returns:
        A Boolean that indicates whether this is a staging distribution. Defaults to `false`.
      • status

        public com.pulumi.core.Output<java.lang.String> status()
        Returns:
        Current status of the distribution. `Deployed` if the distribution's information is fully propagated throughout the Amazon CloudFront system.
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        A map of tags to assign to the resource. 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.
      • trustedKeyGroups

        public com.pulumi.core.Output<java.util.List<DistributionTrustedKeyGroup>> trustedKeyGroups()
        Returns:
        List of nested attributes for active trusted key groups, if the distribution is set up to serve private content with signed URLs.
      • trustedSigners

        public com.pulumi.core.Output<java.util.List<DistributionTrustedSigner>> trustedSigners()
        Returns:
        List of nested attributes for active trusted signers, if the distribution is set up to serve private content with signed URLs.
      • viewerCertificate

        public com.pulumi.core.Output<DistributionViewerCertificate> viewerCertificate()
        Returns:
        The SSL configuration for this distribution (maximum one).
      • viewerMtlsConfig

        public com.pulumi.core.Output<java.util.Optional<DistributionViewerMtlsConfig>> viewerMtlsConfig()
        Returns:
        The viewer mTLS configuration for this distribution (maximum one).
      • waitForDeployment

        public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> waitForDeployment()
        Returns:
        If enabled, the resource will wait for the distribution status to change from `InProgress` to `Deployed`. Setting this to`false` will skip the process. Default: `true`.
      • webAclId

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> webAclId()
        Returns:
        Unique identifier that specifies the AWS WAF web ACL, if any, to associate with this distribution. To specify a web ACL created using the latest version of AWS WAF (WAFv2), use the ACL ARN, for example `aws_wafv2_web_acl.example.arn`. To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example `aws_waf_web_acl.example.id`. The WAF Web ACL must exist in the WAF Global (CloudFront) region and the credentials configuring this argument must have `waf:GetWebACL` permissions assigned.
      • 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.