/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the cloudfront-2020-05-31.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.CloudFront.Model { /// /// A distribution configuration. /// public partial class DistributionConfig { private Aliases _aliases; private CacheBehaviors _cacheBehaviors; private string _callerReference; private string _comment; private string _continuousDeploymentPolicyId; private CustomErrorResponses _customErrorResponses; private DefaultCacheBehavior _defaultCacheBehavior; private string _defaultRootObject; private bool? _enabled; private HttpVersion _httpVersion; private bool? _isIPV6Enabled; private LoggingConfig _logging; private OriginGroups _originGroups; private Origins _origins; private PriceClass _priceClass; private Restrictions _restrictions; private bool? _staging; private ViewerCertificate _viewerCertificate; private string _webACLId; /// /// Empty constructor used to set properties independently even when a simple constructor is available /// public DistributionConfig() { } /// /// Instantiates DistributionConfig with the parameterized properties /// /// A unique value (for example, a date-time stamp) that ensures that the request can't be replayed. If the value of CallerReference is new (regardless of the content of the DistributionConfig object), CloudFront creates a new distribution. If CallerReference is a value that you already sent in a previous request to create a distribution, CloudFront returns a DistributionAlreadyExists error. /// From this field, you can enable or disable the selected distribution. public DistributionConfig(string callerReference, bool enabled) { _callerReference = callerReference; _enabled = enabled; } /// /// Gets and sets the property Aliases. /// /// A complex type that contains information about CNAMEs (alternate domain names), if /// any, for this distribution. /// /// public Aliases Aliases { get { return this._aliases; } set { this._aliases = value; } } // Check to see if Aliases property is set internal bool IsSetAliases() { return this._aliases != null; } /// /// Gets and sets the property CacheBehaviors. /// /// A complex type that contains zero or more CacheBehavior elements. /// /// public CacheBehaviors CacheBehaviors { get { return this._cacheBehaviors; } set { this._cacheBehaviors = value; } } // Check to see if CacheBehaviors property is set internal bool IsSetCacheBehaviors() { return this._cacheBehaviors != null; } /// /// Gets and sets the property CallerReference. /// /// A unique value (for example, a date-time stamp) that ensures that the request can't /// be replayed. /// /// /// /// If the value of CallerReference is new (regardless of the content of /// the DistributionConfig object), CloudFront creates a new distribution. /// /// /// /// If CallerReference is a value that you already sent in a previous request /// to create a distribution, CloudFront returns a DistributionAlreadyExists /// error. /// /// [AWSProperty(Required=true)] public string CallerReference { get { return this._callerReference; } set { this._callerReference = value; } } // Check to see if CallerReference property is set internal bool IsSetCallerReference() { return this._callerReference != null; } /// /// Gets and sets the property Comment. /// /// A comment to describe the distribution. The comment cannot be longer than 128 characters. /// /// [AWSProperty(Required=true, Sensitive=true)] public string Comment { get { return this._comment; } set { this._comment = value; } } // Check to see if Comment property is set internal bool IsSetComment() { return this._comment != null; } /// /// Gets and sets the property ContinuousDeploymentPolicyId. /// /// The identifier of a continuous deployment policy. For more information, see CreateContinuousDeploymentPolicy. /// /// public string ContinuousDeploymentPolicyId { get { return this._continuousDeploymentPolicyId; } set { this._continuousDeploymentPolicyId = value; } } // Check to see if ContinuousDeploymentPolicyId property is set internal bool IsSetContinuousDeploymentPolicyId() { return this._continuousDeploymentPolicyId != null; } /// /// Gets and sets the property CustomErrorResponses. /// /// A complex type that controls the following: /// /// /// /// For more information about custom error pages, see Customizing /// Error Responses in the Amazon CloudFront Developer Guide. /// /// public CustomErrorResponses CustomErrorResponses { get { return this._customErrorResponses; } set { this._customErrorResponses = value; } } // Check to see if CustomErrorResponses property is set internal bool IsSetCustomErrorResponses() { return this._customErrorResponses != null; } /// /// Gets and sets the property DefaultCacheBehavior. /// /// A complex type that describes the default cache behavior if you don't specify a CacheBehavior /// element or if files don't match any of the values of PathPattern in CacheBehavior /// elements. You must create exactly one default cache behavior. /// /// [AWSProperty(Required=true)] public DefaultCacheBehavior DefaultCacheBehavior { get { return this._defaultCacheBehavior; } set { this._defaultCacheBehavior = value; } } // Check to see if DefaultCacheBehavior property is set internal bool IsSetDefaultCacheBehavior() { return this._defaultCacheBehavior != null; } /// /// Gets and sets the property DefaultRootObject. /// /// The object that you want CloudFront to request from your origin (for example, index.html) /// when a viewer requests the root URL for your distribution (https://www.example.com) /// instead of an object in your distribution (https://www.example.com/product-description.html). /// Specifying a default root object avoids exposing the contents of your distribution. /// /// /// /// Specify only the object name, for example, index.html. Don't add a / /// before the object name. /// /// /// /// If you don't want to specify a default root object when you create a distribution, /// include an empty DefaultRootObject element. /// /// /// /// To delete the default root object from an existing distribution, update the distribution /// configuration and include an empty DefaultRootObject element. /// /// /// /// To replace the default root object, update the distribution configuration and specify /// the new object. /// /// /// /// For more information about the default root object, see Creating /// a Default Root Object in the Amazon CloudFront Developer Guide. /// /// public string DefaultRootObject { get { return this._defaultRootObject; } set { this._defaultRootObject = value; } } // Check to see if DefaultRootObject property is set internal bool IsSetDefaultRootObject() { return this._defaultRootObject != null; } /// /// Gets and sets the property Enabled. /// /// From this field, you can enable or disable the selected distribution. /// /// [AWSProperty(Required=true)] public bool Enabled { get { return this._enabled.GetValueOrDefault(); } set { this._enabled = value; } } // Check to see if Enabled property is set internal bool IsSetEnabled() { return this._enabled.HasValue; } /// /// Gets and sets the property HttpVersion. /// /// (Optional) Specify the maximum HTTP version(s) that you want viewers to use to communicate /// with CloudFront. The default value for new web distributions is http2. /// Viewers that don't support HTTP/2 automatically use an earlier HTTP version. /// /// /// /// For viewers and CloudFront to use HTTP/2, viewers must support TLSv1.2 or later, and /// must support Server Name Indication (SNI). /// /// /// /// For viewers and CloudFront to use HTTP/3, viewers must support TLSv1.3 and Server /// Name Indication (SNI). CloudFront supports HTTP/3 connection migration to allow the /// viewer to switch networks without losing connection. For more information about connection /// migration, see Connection /// Migration at RFC 9000. For more information about supported TLSv1.3 ciphers, see /// Supported /// protocols and ciphers between viewers and CloudFront. /// /// public HttpVersion HttpVersion { get { return this._httpVersion; } set { this._httpVersion = value; } } // Check to see if HttpVersion property is set internal bool IsSetHttpVersion() { return this._httpVersion != null; } /// /// Gets and sets the property IsIPV6Enabled. /// /// If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address for your /// distribution, specify true. If you specify false, CloudFront /// responds to IPv6 DNS requests with the DNS response code NOERROR and /// with no IP addresses. This allows viewers to submit a second request, for an IPv4 /// address for your distribution. /// /// /// /// In general, you should enable IPv6 if you have users on IPv6 networks who want to /// access your content. However, if you're using signed URLs or signed cookies to restrict /// access to your content, and if you're using a custom policy that includes the IpAddress /// parameter to restrict the IP addresses that can access your content, don't enable /// IPv6. If you want to restrict access to some content by IP address and not restrict /// access to other content (or restrict access but not by IP address), you can create /// two distributions. For more information, see Creating /// a Signed URL Using a Custom Policy in the Amazon CloudFront Developer Guide. /// /// /// /// If you're using an Route 53 Amazon Web Services Integration alias resource record /// set to route traffic to your CloudFront distribution, you need to create a second /// alias resource record set when both of the following are true: /// /// /// /// For more information, see Routing /// Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name in /// the Route 53 Amazon Web Services Integration Developer Guide. /// /// /// /// If you created a CNAME resource record set, either with Route 53 Amazon Web Services /// Integration or with another DNS service, you don't need to make any changes. A CNAME /// record will route traffic to your distribution regardless of the IP address format /// of the viewer request. /// /// public bool IsIPV6Enabled { get { return this._isIPV6Enabled.GetValueOrDefault(); } set { this._isIPV6Enabled = value; } } // Check to see if IsIPV6Enabled property is set internal bool IsSetIsIPV6Enabled() { return this._isIPV6Enabled.HasValue; } /// /// Gets and sets the property Logging. /// /// A complex type that controls whether access logs are written for the distribution. /// /// /// /// For more information about logging, see Access /// Logs in the Amazon CloudFront Developer Guide. /// /// public LoggingConfig Logging { get { return this._logging; } set { this._logging = value; } } // Check to see if Logging property is set internal bool IsSetLogging() { return this._logging != null; } /// /// Gets and sets the property OriginGroups. /// /// A complex type that contains information about origin groups for this distribution. /// /// public OriginGroups OriginGroups { get { return this._originGroups; } set { this._originGroups = value; } } // Check to see if OriginGroups property is set internal bool IsSetOriginGroups() { return this._originGroups != null; } /// /// Gets and sets the property Origins. /// /// A complex type that contains information about origins for this distribution. /// /// [AWSProperty(Required=true)] public Origins Origins { get { return this._origins; } set { this._origins = value; } } // Check to see if Origins property is set internal bool IsSetOrigins() { return this._origins != null; } /// /// Gets and sets the property PriceClass. /// /// The price class that corresponds with the maximum price that you want to pay for CloudFront /// service. If you specify PriceClass_All, CloudFront responds to requests /// for your objects from all CloudFront edge locations. /// /// /// /// If you specify a price class other than PriceClass_All, CloudFront serves /// your objects from the CloudFront edge location that has the lowest latency among the /// edge locations in your price class. Viewers who are in or near regions that are excluded /// from your specified price class may encounter slower performance. /// /// /// /// For more information about price classes, see Choosing /// the Price Class for a CloudFront Distribution in the Amazon CloudFront Developer /// Guide. For information about CloudFront pricing, including how price classes (such /// as Price Class 100) map to CloudFront regions, see Amazon /// CloudFront Pricing. /// /// public PriceClass PriceClass { get { return this._priceClass; } set { this._priceClass = value; } } // Check to see if PriceClass property is set internal bool IsSetPriceClass() { return this._priceClass != null; } /// /// Gets and sets the property Restrictions. /// /// A complex type that identifies ways in which you want to restrict distribution of /// your content. /// /// public Restrictions Restrictions { get { return this._restrictions; } set { this._restrictions = value; } } // Check to see if Restrictions property is set internal bool IsSetRestrictions() { return this._restrictions != null; } /// /// Gets and sets the property Staging. /// /// A Boolean that indicates whether this is a staging distribution. When this value is /// true, this is a staging distribution. When this value is false, /// this is not a staging distribution. /// /// public bool Staging { get { return this._staging.GetValueOrDefault(); } set { this._staging = value; } } // Check to see if Staging property is set internal bool IsSetStaging() { return this._staging.HasValue; } /// /// Gets and sets the property ViewerCertificate. /// /// A complex type that determines the distribution's SSL/TLS configuration for communicating /// with viewers. /// /// public ViewerCertificate ViewerCertificate { get { return this._viewerCertificate; } set { this._viewerCertificate = value; } } // Check to see if ViewerCertificate property is set internal bool IsSetViewerCertificate() { return this._viewerCertificate != null; } /// /// Gets and sets the property WebACLId. /// /// A unique identifier that specifies the WAF web ACL, if any, to associate with this /// distribution. To specify a web ACL created using the latest version of WAF, use the /// ACL ARN, for example arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a. /// To specify a web ACL created using WAF Classic, use the ACL ID, for example 473e64fd-f30b-4765-81a0-62ad96dd167a. /// /// /// /// WAF is a web application firewall that lets you monitor the HTTP and HTTPS requests /// that are forwarded to CloudFront, and lets you control access to your content. Based /// on conditions that you specify, such as the IP addresses that requests originate from /// or the values of query strings, CloudFront responds to requests either with the requested /// content or with an HTTP 403 status code (Forbidden). You can also configure CloudFront /// to return a custom error page when a request is blocked. For more information about /// WAF, see the WAF /// Developer Guide. /// /// public string WebACLId { get { return this._webACLId; } set { this._webACLId = value; } } // Check to see if WebACLId property is set internal bool IsSetWebACLId() { return this._webACLId != null; } } }