/*
* 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:
///
/// -
///
/// Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom
/// error messages before returning the response to the viewer.
///
///
-
///
/// How long CloudFront caches HTTP status codes in the 4xx and 5xx range.
///
///
///
/// 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:
///
/// -
///
/// You enable IPv6 for the distribution
///
///
-
///
/// You're using alternate domain names in the URLs for your objects
///
///
///
/// 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;
}
}
}