This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
pxz-hos-client-cpp-module/support/aws-sdk-cpp-master/aws-cpp-sdk-cloudfront/include/aws/cloudfront/model/DistributionConfig.h

1296 lines
74 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/cloudfront/CloudFront_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/cloudfront/model/Aliases.h>
#include <aws/cloudfront/model/Origins.h>
#include <aws/cloudfront/model/OriginGroups.h>
#include <aws/cloudfront/model/DefaultCacheBehavior.h>
#include <aws/cloudfront/model/CacheBehaviors.h>
#include <aws/cloudfront/model/CustomErrorResponses.h>
#include <aws/cloudfront/model/LoggingConfig.h>
#include <aws/cloudfront/model/PriceClass.h>
#include <aws/cloudfront/model/ViewerCertificate.h>
#include <aws/cloudfront/model/Restrictions.h>
#include <aws/cloudfront/model/HttpVersion.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Xml
{
class XmlNode;
} // namespace Xml
} // namespace Utils
namespace CloudFront
{
namespace Model
{
/**
* <p>A distribution configuration.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/cloudfront-2020-05-31/DistributionConfig">AWS
* API Reference</a></p>
*/
class AWS_CLOUDFRONT_API DistributionConfig
{
public:
DistributionConfig();
DistributionConfig(const Aws::Utils::Xml::XmlNode& xmlNode);
DistributionConfig& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const;
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline const Aws::String& GetCallerReference() const{ return m_callerReference; }
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline bool CallerReferenceHasBeenSet() const { return m_callerReferenceHasBeenSet; }
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline void SetCallerReference(const Aws::String& value) { m_callerReferenceHasBeenSet = true; m_callerReference = value; }
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline void SetCallerReference(Aws::String&& value) { m_callerReferenceHasBeenSet = true; m_callerReference = std::move(value); }
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline void SetCallerReference(const char* value) { m_callerReferenceHasBeenSet = true; m_callerReference.assign(value); }
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline DistributionConfig& WithCallerReference(const Aws::String& value) { SetCallerReference(value); return *this;}
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline DistributionConfig& WithCallerReference(Aws::String&& value) { SetCallerReference(std::move(value)); return *this;}
/**
* <p>A unique value (for example, a date-time stamp) that ensures that the request
* can't be replayed.</p> <p>If the value of <code>CallerReference</code> is new
* (regardless of the content of the <code>DistributionConfig</code> object),
* CloudFront creates a new distribution.</p> <p>If <code>CallerReference</code> is
* a value that you already sent in a previous request to create a distribution,
* CloudFront returns a <code>DistributionAlreadyExists</code> error.</p>
*/
inline DistributionConfig& WithCallerReference(const char* value) { SetCallerReference(value); return *this;}
/**
* <p>A complex type that contains information about CNAMEs (alternate domain
* names), if any, for this distribution.</p>
*/
inline const Aliases& GetAliases() const{ return m_aliases; }
/**
* <p>A complex type that contains information about CNAMEs (alternate domain
* names), if any, for this distribution.</p>
*/
inline bool AliasesHasBeenSet() const { return m_aliasesHasBeenSet; }
/**
* <p>A complex type that contains information about CNAMEs (alternate domain
* names), if any, for this distribution.</p>
*/
inline void SetAliases(const Aliases& value) { m_aliasesHasBeenSet = true; m_aliases = value; }
/**
* <p>A complex type that contains information about CNAMEs (alternate domain
* names), if any, for this distribution.</p>
*/
inline void SetAliases(Aliases&& value) { m_aliasesHasBeenSet = true; m_aliases = std::move(value); }
/**
* <p>A complex type that contains information about CNAMEs (alternate domain
* names), if any, for this distribution.</p>
*/
inline DistributionConfig& WithAliases(const Aliases& value) { SetAliases(value); return *this;}
/**
* <p>A complex type that contains information about CNAMEs (alternate domain
* names), if any, for this distribution.</p>
*/
inline DistributionConfig& WithAliases(Aliases&& value) { SetAliases(std::move(value)); return *this;}
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline const Aws::String& GetDefaultRootObject() const{ return m_defaultRootObject; }
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline bool DefaultRootObjectHasBeenSet() const { return m_defaultRootObjectHasBeenSet; }
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetDefaultRootObject(const Aws::String& value) { m_defaultRootObjectHasBeenSet = true; m_defaultRootObject = value; }
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetDefaultRootObject(Aws::String&& value) { m_defaultRootObjectHasBeenSet = true; m_defaultRootObject = std::move(value); }
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetDefaultRootObject(const char* value) { m_defaultRootObjectHasBeenSet = true; m_defaultRootObject.assign(value); }
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithDefaultRootObject(const Aws::String& value) { SetDefaultRootObject(value); return *this;}
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithDefaultRootObject(Aws::String&& value) { SetDefaultRootObject(std::move(value)); return *this;}
/**
* <p>The object that you want CloudFront to request from your origin (for example,
* <code>index.html</code>) when a viewer requests the root URL for your
* distribution (<code>http://www.example.com</code>) instead of an object in your
* distribution (<code>http://www.example.com/product-description.html</code>).
* Specifying a default root object avoids exposing the contents of your
* distribution.</p> <p>Specify only the object name, for example,
* <code>index.html</code>. Don't add a <code>/</code> before the object name.</p>
* <p>If you don't want to specify a default root object when you create a
* distribution, include an empty <code>DefaultRootObject</code> element.</p> <p>To
* delete the default root object from an existing distribution, update the
* distribution configuration and include an empty <code>DefaultRootObject</code>
* element.</p> <p>To replace the default root object, update the distribution
* configuration and specify the new object.</p> <p>For more information about the
* default root object, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html">Creating
* a Default Root Object</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithDefaultRootObject(const char* value) { SetDefaultRootObject(value); return *this;}
/**
* <p>A complex type that contains information about origins for this distribution.
* </p>
*/
inline const Origins& GetOrigins() const{ return m_origins; }
/**
* <p>A complex type that contains information about origins for this distribution.
* </p>
*/
inline bool OriginsHasBeenSet() const { return m_originsHasBeenSet; }
/**
* <p>A complex type that contains information about origins for this distribution.
* </p>
*/
inline void SetOrigins(const Origins& value) { m_originsHasBeenSet = true; m_origins = value; }
/**
* <p>A complex type that contains information about origins for this distribution.
* </p>
*/
inline void SetOrigins(Origins&& value) { m_originsHasBeenSet = true; m_origins = std::move(value); }
/**
* <p>A complex type that contains information about origins for this distribution.
* </p>
*/
inline DistributionConfig& WithOrigins(const Origins& value) { SetOrigins(value); return *this;}
/**
* <p>A complex type that contains information about origins for this distribution.
* </p>
*/
inline DistributionConfig& WithOrigins(Origins&& value) { SetOrigins(std::move(value)); return *this;}
/**
* <p> A complex type that contains information about origin groups for this
* distribution.</p>
*/
inline const OriginGroups& GetOriginGroups() const{ return m_originGroups; }
/**
* <p> A complex type that contains information about origin groups for this
* distribution.</p>
*/
inline bool OriginGroupsHasBeenSet() const { return m_originGroupsHasBeenSet; }
/**
* <p> A complex type that contains information about origin groups for this
* distribution.</p>
*/
inline void SetOriginGroups(const OriginGroups& value) { m_originGroupsHasBeenSet = true; m_originGroups = value; }
/**
* <p> A complex type that contains information about origin groups for this
* distribution.</p>
*/
inline void SetOriginGroups(OriginGroups&& value) { m_originGroupsHasBeenSet = true; m_originGroups = std::move(value); }
/**
* <p> A complex type that contains information about origin groups for this
* distribution.</p>
*/
inline DistributionConfig& WithOriginGroups(const OriginGroups& value) { SetOriginGroups(value); return *this;}
/**
* <p> A complex type that contains information about origin groups for this
* distribution.</p>
*/
inline DistributionConfig& WithOriginGroups(OriginGroups&& value) { SetOriginGroups(std::move(value)); return *this;}
/**
* <p>A complex type that describes the default cache behavior if you don't specify
* a <code>CacheBehavior</code> element or if files don't match any of the values
* of <code>PathPattern</code> in <code>CacheBehavior</code> elements. You must
* create exactly one default cache behavior.</p>
*/
inline const DefaultCacheBehavior& GetDefaultCacheBehavior() const{ return m_defaultCacheBehavior; }
/**
* <p>A complex type that describes the default cache behavior if you don't specify
* a <code>CacheBehavior</code> element or if files don't match any of the values
* of <code>PathPattern</code> in <code>CacheBehavior</code> elements. You must
* create exactly one default cache behavior.</p>
*/
inline bool DefaultCacheBehaviorHasBeenSet() const { return m_defaultCacheBehaviorHasBeenSet; }
/**
* <p>A complex type that describes the default cache behavior if you don't specify
* a <code>CacheBehavior</code> element or if files don't match any of the values
* of <code>PathPattern</code> in <code>CacheBehavior</code> elements. You must
* create exactly one default cache behavior.</p>
*/
inline void SetDefaultCacheBehavior(const DefaultCacheBehavior& value) { m_defaultCacheBehaviorHasBeenSet = true; m_defaultCacheBehavior = value; }
/**
* <p>A complex type that describes the default cache behavior if you don't specify
* a <code>CacheBehavior</code> element or if files don't match any of the values
* of <code>PathPattern</code> in <code>CacheBehavior</code> elements. You must
* create exactly one default cache behavior.</p>
*/
inline void SetDefaultCacheBehavior(DefaultCacheBehavior&& value) { m_defaultCacheBehaviorHasBeenSet = true; m_defaultCacheBehavior = std::move(value); }
/**
* <p>A complex type that describes the default cache behavior if you don't specify
* a <code>CacheBehavior</code> element or if files don't match any of the values
* of <code>PathPattern</code> in <code>CacheBehavior</code> elements. You must
* create exactly one default cache behavior.</p>
*/
inline DistributionConfig& WithDefaultCacheBehavior(const DefaultCacheBehavior& value) { SetDefaultCacheBehavior(value); return *this;}
/**
* <p>A complex type that describes the default cache behavior if you don't specify
* a <code>CacheBehavior</code> element or if files don't match any of the values
* of <code>PathPattern</code> in <code>CacheBehavior</code> elements. You must
* create exactly one default cache behavior.</p>
*/
inline DistributionConfig& WithDefaultCacheBehavior(DefaultCacheBehavior&& value) { SetDefaultCacheBehavior(std::move(value)); return *this;}
/**
* <p>A complex type that contains zero or more <code>CacheBehavior</code>
* elements. </p>
*/
inline const CacheBehaviors& GetCacheBehaviors() const{ return m_cacheBehaviors; }
/**
* <p>A complex type that contains zero or more <code>CacheBehavior</code>
* elements. </p>
*/
inline bool CacheBehaviorsHasBeenSet() const { return m_cacheBehaviorsHasBeenSet; }
/**
* <p>A complex type that contains zero or more <code>CacheBehavior</code>
* elements. </p>
*/
inline void SetCacheBehaviors(const CacheBehaviors& value) { m_cacheBehaviorsHasBeenSet = true; m_cacheBehaviors = value; }
/**
* <p>A complex type that contains zero or more <code>CacheBehavior</code>
* elements. </p>
*/
inline void SetCacheBehaviors(CacheBehaviors&& value) { m_cacheBehaviorsHasBeenSet = true; m_cacheBehaviors = std::move(value); }
/**
* <p>A complex type that contains zero or more <code>CacheBehavior</code>
* elements. </p>
*/
inline DistributionConfig& WithCacheBehaviors(const CacheBehaviors& value) { SetCacheBehaviors(value); return *this;}
/**
* <p>A complex type that contains zero or more <code>CacheBehavior</code>
* elements. </p>
*/
inline DistributionConfig& WithCacheBehaviors(CacheBehaviors&& value) { SetCacheBehaviors(std::move(value)); return *this;}
/**
* <p>A complex type that controls the following:</p> <ul> <li> <p>Whether
* CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error
* messages before returning the response to the viewer.</p> </li> <li> <p>How long
* CloudFront caches HTTP status codes in the 4xx and 5xx range.</p> </li> </ul>
* <p>For more information about custom error pages, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html">Customizing
* Error Responses</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline const CustomErrorResponses& GetCustomErrorResponses() const{ return m_customErrorResponses; }
/**
* <p>A complex type that controls the following:</p> <ul> <li> <p>Whether
* CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error
* messages before returning the response to the viewer.</p> </li> <li> <p>How long
* CloudFront caches HTTP status codes in the 4xx and 5xx range.</p> </li> </ul>
* <p>For more information about custom error pages, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html">Customizing
* Error Responses</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline bool CustomErrorResponsesHasBeenSet() const { return m_customErrorResponsesHasBeenSet; }
/**
* <p>A complex type that controls the following:</p> <ul> <li> <p>Whether
* CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error
* messages before returning the response to the viewer.</p> </li> <li> <p>How long
* CloudFront caches HTTP status codes in the 4xx and 5xx range.</p> </li> </ul>
* <p>For more information about custom error pages, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html">Customizing
* Error Responses</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetCustomErrorResponses(const CustomErrorResponses& value) { m_customErrorResponsesHasBeenSet = true; m_customErrorResponses = value; }
/**
* <p>A complex type that controls the following:</p> <ul> <li> <p>Whether
* CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error
* messages before returning the response to the viewer.</p> </li> <li> <p>How long
* CloudFront caches HTTP status codes in the 4xx and 5xx range.</p> </li> </ul>
* <p>For more information about custom error pages, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html">Customizing
* Error Responses</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetCustomErrorResponses(CustomErrorResponses&& value) { m_customErrorResponsesHasBeenSet = true; m_customErrorResponses = std::move(value); }
/**
* <p>A complex type that controls the following:</p> <ul> <li> <p>Whether
* CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error
* messages before returning the response to the viewer.</p> </li> <li> <p>How long
* CloudFront caches HTTP status codes in the 4xx and 5xx range.</p> </li> </ul>
* <p>For more information about custom error pages, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html">Customizing
* Error Responses</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithCustomErrorResponses(const CustomErrorResponses& value) { SetCustomErrorResponses(value); return *this;}
/**
* <p>A complex type that controls the following:</p> <ul> <li> <p>Whether
* CloudFront replaces HTTP status codes in the 4xx and 5xx range with custom error
* messages before returning the response to the viewer.</p> </li> <li> <p>How long
* CloudFront caches HTTP status codes in the 4xx and 5xx range.</p> </li> </ul>
* <p>For more information about custom error pages, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html">Customizing
* Error Responses</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithCustomErrorResponses(CustomErrorResponses&& value) { SetCustomErrorResponses(std::move(value)); return *this;}
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline const Aws::String& GetComment() const{ return m_comment; }
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline bool CommentHasBeenSet() const { return m_commentHasBeenSet; }
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline void SetComment(const Aws::String& value) { m_commentHasBeenSet = true; m_comment = value; }
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline void SetComment(Aws::String&& value) { m_commentHasBeenSet = true; m_comment = std::move(value); }
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline void SetComment(const char* value) { m_commentHasBeenSet = true; m_comment.assign(value); }
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline DistributionConfig& WithComment(const Aws::String& value) { SetComment(value); return *this;}
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline DistributionConfig& WithComment(Aws::String&& value) { SetComment(std::move(value)); return *this;}
/**
* <p>Any comments you want to include about the distribution.</p> <p>If you don't
* want to specify a comment, include an empty <code>Comment</code> element.</p>
* <p>To delete an existing comment, update the distribution configuration and
* include an empty <code>Comment</code> element.</p> <p>To add or change a
* comment, update the distribution configuration and specify the new comment.</p>
*/
inline DistributionConfig& WithComment(const char* value) { SetComment(value); return *this;}
/**
* <p>A complex type that controls whether access logs are written for the
* distribution.</p> <p>For more information about logging, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html">Access
* Logs</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline const LoggingConfig& GetLogging() const{ return m_logging; }
/**
* <p>A complex type that controls whether access logs are written for the
* distribution.</p> <p>For more information about logging, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html">Access
* Logs</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline bool LoggingHasBeenSet() const { return m_loggingHasBeenSet; }
/**
* <p>A complex type that controls whether access logs are written for the
* distribution.</p> <p>For more information about logging, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html">Access
* Logs</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetLogging(const LoggingConfig& value) { m_loggingHasBeenSet = true; m_logging = value; }
/**
* <p>A complex type that controls whether access logs are written for the
* distribution.</p> <p>For more information about logging, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html">Access
* Logs</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline void SetLogging(LoggingConfig&& value) { m_loggingHasBeenSet = true; m_logging = std::move(value); }
/**
* <p>A complex type that controls whether access logs are written for the
* distribution.</p> <p>For more information about logging, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html">Access
* Logs</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithLogging(const LoggingConfig& value) { SetLogging(value); return *this;}
/**
* <p>A complex type that controls whether access logs are written for the
* distribution.</p> <p>For more information about logging, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html">Access
* Logs</a> in the <i>Amazon CloudFront Developer Guide</i>.</p>
*/
inline DistributionConfig& WithLogging(LoggingConfig&& value) { SetLogging(std::move(value)); return *this;}
/**
* <p>The price class that corresponds with the maximum price that you want to pay
* for CloudFront service. If you specify <code>PriceClass_All</code>, CloudFront
* responds to requests for your objects from all CloudFront edge locations.</p>
* <p>If you specify a price class other than <code>PriceClass_All</code>,
* 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.</p> <p>For more information about price classes, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html">Choosing
* the Price Class for a CloudFront Distribution</a> in the <i>Amazon CloudFront
* Developer Guide</i>. For information about CloudFront pricing, including how
* price classes (such as Price Class 100) map to CloudFront regions, see <a
* href="http://aws.amazon.com/cloudfront/pricing/">Amazon CloudFront Pricing</a>.
* For price class information, scroll down to see the table at the bottom of the
* page.</p>
*/
inline const PriceClass& GetPriceClass() const{ return m_priceClass; }
/**
* <p>The price class that corresponds with the maximum price that you want to pay
* for CloudFront service. If you specify <code>PriceClass_All</code>, CloudFront
* responds to requests for your objects from all CloudFront edge locations.</p>
* <p>If you specify a price class other than <code>PriceClass_All</code>,
* 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.</p> <p>For more information about price classes, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html">Choosing
* the Price Class for a CloudFront Distribution</a> in the <i>Amazon CloudFront
* Developer Guide</i>. For information about CloudFront pricing, including how
* price classes (such as Price Class 100) map to CloudFront regions, see <a
* href="http://aws.amazon.com/cloudfront/pricing/">Amazon CloudFront Pricing</a>.
* For price class information, scroll down to see the table at the bottom of the
* page.</p>
*/
inline bool PriceClassHasBeenSet() const { return m_priceClassHasBeenSet; }
/**
* <p>The price class that corresponds with the maximum price that you want to pay
* for CloudFront service. If you specify <code>PriceClass_All</code>, CloudFront
* responds to requests for your objects from all CloudFront edge locations.</p>
* <p>If you specify a price class other than <code>PriceClass_All</code>,
* 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.</p> <p>For more information about price classes, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html">Choosing
* the Price Class for a CloudFront Distribution</a> in the <i>Amazon CloudFront
* Developer Guide</i>. For information about CloudFront pricing, including how
* price classes (such as Price Class 100) map to CloudFront regions, see <a
* href="http://aws.amazon.com/cloudfront/pricing/">Amazon CloudFront Pricing</a>.
* For price class information, scroll down to see the table at the bottom of the
* page.</p>
*/
inline void SetPriceClass(const PriceClass& value) { m_priceClassHasBeenSet = true; m_priceClass = value; }
/**
* <p>The price class that corresponds with the maximum price that you want to pay
* for CloudFront service. If you specify <code>PriceClass_All</code>, CloudFront
* responds to requests for your objects from all CloudFront edge locations.</p>
* <p>If you specify a price class other than <code>PriceClass_All</code>,
* 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.</p> <p>For more information about price classes, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html">Choosing
* the Price Class for a CloudFront Distribution</a> in the <i>Amazon CloudFront
* Developer Guide</i>. For information about CloudFront pricing, including how
* price classes (such as Price Class 100) map to CloudFront regions, see <a
* href="http://aws.amazon.com/cloudfront/pricing/">Amazon CloudFront Pricing</a>.
* For price class information, scroll down to see the table at the bottom of the
* page.</p>
*/
inline void SetPriceClass(PriceClass&& value) { m_priceClassHasBeenSet = true; m_priceClass = std::move(value); }
/**
* <p>The price class that corresponds with the maximum price that you want to pay
* for CloudFront service. If you specify <code>PriceClass_All</code>, CloudFront
* responds to requests for your objects from all CloudFront edge locations.</p>
* <p>If you specify a price class other than <code>PriceClass_All</code>,
* 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.</p> <p>For more information about price classes, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html">Choosing
* the Price Class for a CloudFront Distribution</a> in the <i>Amazon CloudFront
* Developer Guide</i>. For information about CloudFront pricing, including how
* price classes (such as Price Class 100) map to CloudFront regions, see <a
* href="http://aws.amazon.com/cloudfront/pricing/">Amazon CloudFront Pricing</a>.
* For price class information, scroll down to see the table at the bottom of the
* page.</p>
*/
inline DistributionConfig& WithPriceClass(const PriceClass& value) { SetPriceClass(value); return *this;}
/**
* <p>The price class that corresponds with the maximum price that you want to pay
* for CloudFront service. If you specify <code>PriceClass_All</code>, CloudFront
* responds to requests for your objects from all CloudFront edge locations.</p>
* <p>If you specify a price class other than <code>PriceClass_All</code>,
* 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.</p> <p>For more information about price classes, see <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html">Choosing
* the Price Class for a CloudFront Distribution</a> in the <i>Amazon CloudFront
* Developer Guide</i>. For information about CloudFront pricing, including how
* price classes (such as Price Class 100) map to CloudFront regions, see <a
* href="http://aws.amazon.com/cloudfront/pricing/">Amazon CloudFront Pricing</a>.
* For price class information, scroll down to see the table at the bottom of the
* page.</p>
*/
inline DistributionConfig& WithPriceClass(PriceClass&& value) { SetPriceClass(std::move(value)); return *this;}
/**
* <p>From this field, you can enable or disable the selected distribution.</p>
*/
inline bool GetEnabled() const{ return m_enabled; }
/**
* <p>From this field, you can enable or disable the selected distribution.</p>
*/
inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; }
/**
* <p>From this field, you can enable or disable the selected distribution.</p>
*/
inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; }
/**
* <p>From this field, you can enable or disable the selected distribution.</p>
*/
inline DistributionConfig& WithEnabled(bool value) { SetEnabled(value); return *this;}
/**
* <p>A complex type that determines the distributions SSL/TLS configuration for
* communicating with viewers.</p>
*/
inline const ViewerCertificate& GetViewerCertificate() const{ return m_viewerCertificate; }
/**
* <p>A complex type that determines the distributions SSL/TLS configuration for
* communicating with viewers.</p>
*/
inline bool ViewerCertificateHasBeenSet() const { return m_viewerCertificateHasBeenSet; }
/**
* <p>A complex type that determines the distributions SSL/TLS configuration for
* communicating with viewers.</p>
*/
inline void SetViewerCertificate(const ViewerCertificate& value) { m_viewerCertificateHasBeenSet = true; m_viewerCertificate = value; }
/**
* <p>A complex type that determines the distributions SSL/TLS configuration for
* communicating with viewers.</p>
*/
inline void SetViewerCertificate(ViewerCertificate&& value) { m_viewerCertificateHasBeenSet = true; m_viewerCertificate = std::move(value); }
/**
* <p>A complex type that determines the distributions SSL/TLS configuration for
* communicating with viewers.</p>
*/
inline DistributionConfig& WithViewerCertificate(const ViewerCertificate& value) { SetViewerCertificate(value); return *this;}
/**
* <p>A complex type that determines the distributions SSL/TLS configuration for
* communicating with viewers.</p>
*/
inline DistributionConfig& WithViewerCertificate(ViewerCertificate&& value) { SetViewerCertificate(std::move(value)); return *this;}
/**
* <p>A complex type that identifies ways in which you want to restrict
* distribution of your content.</p>
*/
inline const Restrictions& GetRestrictions() const{ return m_restrictions; }
/**
* <p>A complex type that identifies ways in which you want to restrict
* distribution of your content.</p>
*/
inline bool RestrictionsHasBeenSet() const { return m_restrictionsHasBeenSet; }
/**
* <p>A complex type that identifies ways in which you want to restrict
* distribution of your content.</p>
*/
inline void SetRestrictions(const Restrictions& value) { m_restrictionsHasBeenSet = true; m_restrictions = value; }
/**
* <p>A complex type that identifies ways in which you want to restrict
* distribution of your content.</p>
*/
inline void SetRestrictions(Restrictions&& value) { m_restrictionsHasBeenSet = true; m_restrictions = std::move(value); }
/**
* <p>A complex type that identifies ways in which you want to restrict
* distribution of your content.</p>
*/
inline DistributionConfig& WithRestrictions(const Restrictions& value) { SetRestrictions(value); return *this;}
/**
* <p>A complex type that identifies ways in which you want to restrict
* distribution of your content.</p>
*/
inline DistributionConfig& WithRestrictions(Restrictions&& value) { SetRestrictions(std::move(value)); return *this;}
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline const Aws::String& GetWebACLId() const{ return m_webACLId; }
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline bool WebACLIdHasBeenSet() const { return m_webACLIdHasBeenSet; }
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline void SetWebACLId(const Aws::String& value) { m_webACLIdHasBeenSet = true; m_webACLId = value; }
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline void SetWebACLId(Aws::String&& value) { m_webACLIdHasBeenSet = true; m_webACLId = std::move(value); }
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline void SetWebACLId(const char* value) { m_webACLIdHasBeenSet = true; m_webACLId.assign(value); }
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline DistributionConfig& WithWebACLId(const Aws::String& value) { SetWebACLId(value); return *this;}
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline DistributionConfig& WithWebACLId(Aws::String&& value) { SetWebACLId(std::move(value)); return *this;}
/**
* <p>A 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, use the ACL ARN, for example
* <code>arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a</code>.
* To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
* <code>473e64fd-f30b-4765-81a0-62ad96dd167a</code>.</p> <p>AWS 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 AWS WAF, see the <a
* href="https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html">AWS
* WAF Developer Guide</a>. </p>
*/
inline DistributionConfig& WithWebACLId(const char* value) { SetWebACLId(value); return *this;}
/**
* <p>(Optional) Specify the maximum HTTP version 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.</p> <p>For viewers and CloudFront to use HTTP/2, viewers must support
* TLS 1.2 or later, and must support Server Name Identification (SNI).</p> <p>In
* general, configuring CloudFront to communicate with viewers using HTTP/2 reduces
* latency. You can improve performance by optimizing for HTTP/2. For more
* information, do an Internet search for "http/2 optimization." </p>
*/
inline const HttpVersion& GetHttpVersion() const{ return m_httpVersion; }
/**
* <p>(Optional) Specify the maximum HTTP version 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.</p> <p>For viewers and CloudFront to use HTTP/2, viewers must support
* TLS 1.2 or later, and must support Server Name Identification (SNI).</p> <p>In
* general, configuring CloudFront to communicate with viewers using HTTP/2 reduces
* latency. You can improve performance by optimizing for HTTP/2. For more
* information, do an Internet search for "http/2 optimization." </p>
*/
inline bool HttpVersionHasBeenSet() const { return m_httpVersionHasBeenSet; }
/**
* <p>(Optional) Specify the maximum HTTP version 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.</p> <p>For viewers and CloudFront to use HTTP/2, viewers must support
* TLS 1.2 or later, and must support Server Name Identification (SNI).</p> <p>In
* general, configuring CloudFront to communicate with viewers using HTTP/2 reduces
* latency. You can improve performance by optimizing for HTTP/2. For more
* information, do an Internet search for "http/2 optimization." </p>
*/
inline void SetHttpVersion(const HttpVersion& value) { m_httpVersionHasBeenSet = true; m_httpVersion = value; }
/**
* <p>(Optional) Specify the maximum HTTP version 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.</p> <p>For viewers and CloudFront to use HTTP/2, viewers must support
* TLS 1.2 or later, and must support Server Name Identification (SNI).</p> <p>In
* general, configuring CloudFront to communicate with viewers using HTTP/2 reduces
* latency. You can improve performance by optimizing for HTTP/2. For more
* information, do an Internet search for "http/2 optimization." </p>
*/
inline void SetHttpVersion(HttpVersion&& value) { m_httpVersionHasBeenSet = true; m_httpVersion = std::move(value); }
/**
* <p>(Optional) Specify the maximum HTTP version 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.</p> <p>For viewers and CloudFront to use HTTP/2, viewers must support
* TLS 1.2 or later, and must support Server Name Identification (SNI).</p> <p>In
* general, configuring CloudFront to communicate with viewers using HTTP/2 reduces
* latency. You can improve performance by optimizing for HTTP/2. For more
* information, do an Internet search for "http/2 optimization." </p>
*/
inline DistributionConfig& WithHttpVersion(const HttpVersion& value) { SetHttpVersion(value); return *this;}
/**
* <p>(Optional) Specify the maximum HTTP version 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.</p> <p>For viewers and CloudFront to use HTTP/2, viewers must support
* TLS 1.2 or later, and must support Server Name Identification (SNI).</p> <p>In
* general, configuring CloudFront to communicate with viewers using HTTP/2 reduces
* latency. You can improve performance by optimizing for HTTP/2. For more
* information, do an Internet search for "http/2 optimization." </p>
*/
inline DistributionConfig& WithHttpVersion(HttpVersion&& value) { SetHttpVersion(std::move(value)); return *this;}
/**
* <p>If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address
* for your distribution, specify <code>true</code>. If you specify
* <code>false</code>, CloudFront responds to IPv6 DNS requests with the DNS
* response code <code>NOERROR</code> and with no IP addresses. This allows viewers
* to submit a second request, for an IPv4 address for your distribution. </p>
* <p>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 <code>IpAddress</code> 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 <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html">Creating
* a Signed URL Using a Custom Policy</a> in the <i>Amazon CloudFront Developer
* Guide</i>.</p> <p>If you're using an Amazon Route 53 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:</p> <ul> <li>
* <p>You enable IPv6 for the distribution</p> </li> <li> <p>You're using alternate
* domain names in the URLs for your objects</p> </li> </ul> <p>For more
* information, see <a
* href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html">Routing
* Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name</a>
* in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you created a CNAME
* resource record set, either with Amazon Route 53 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.</p>
*/
inline bool GetIsIPV6Enabled() const{ return m_isIPV6Enabled; }
/**
* <p>If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address
* for your distribution, specify <code>true</code>. If you specify
* <code>false</code>, CloudFront responds to IPv6 DNS requests with the DNS
* response code <code>NOERROR</code> and with no IP addresses. This allows viewers
* to submit a second request, for an IPv4 address for your distribution. </p>
* <p>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 <code>IpAddress</code> 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 <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html">Creating
* a Signed URL Using a Custom Policy</a> in the <i>Amazon CloudFront Developer
* Guide</i>.</p> <p>If you're using an Amazon Route 53 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:</p> <ul> <li>
* <p>You enable IPv6 for the distribution</p> </li> <li> <p>You're using alternate
* domain names in the URLs for your objects</p> </li> </ul> <p>For more
* information, see <a
* href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html">Routing
* Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name</a>
* in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you created a CNAME
* resource record set, either with Amazon Route 53 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.</p>
*/
inline bool IsIPV6EnabledHasBeenSet() const { return m_isIPV6EnabledHasBeenSet; }
/**
* <p>If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address
* for your distribution, specify <code>true</code>. If you specify
* <code>false</code>, CloudFront responds to IPv6 DNS requests with the DNS
* response code <code>NOERROR</code> and with no IP addresses. This allows viewers
* to submit a second request, for an IPv4 address for your distribution. </p>
* <p>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 <code>IpAddress</code> 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 <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html">Creating
* a Signed URL Using a Custom Policy</a> in the <i>Amazon CloudFront Developer
* Guide</i>.</p> <p>If you're using an Amazon Route 53 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:</p> <ul> <li>
* <p>You enable IPv6 for the distribution</p> </li> <li> <p>You're using alternate
* domain names in the URLs for your objects</p> </li> </ul> <p>For more
* information, see <a
* href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html">Routing
* Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name</a>
* in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you created a CNAME
* resource record set, either with Amazon Route 53 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.</p>
*/
inline void SetIsIPV6Enabled(bool value) { m_isIPV6EnabledHasBeenSet = true; m_isIPV6Enabled = value; }
/**
* <p>If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address
* for your distribution, specify <code>true</code>. If you specify
* <code>false</code>, CloudFront responds to IPv6 DNS requests with the DNS
* response code <code>NOERROR</code> and with no IP addresses. This allows viewers
* to submit a second request, for an IPv4 address for your distribution. </p>
* <p>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 <code>IpAddress</code> 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 <a
* href="https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html">Creating
* a Signed URL Using a Custom Policy</a> in the <i>Amazon CloudFront Developer
* Guide</i>.</p> <p>If you're using an Amazon Route 53 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:</p> <ul> <li>
* <p>You enable IPv6 for the distribution</p> </li> <li> <p>You're using alternate
* domain names in the URLs for your objects</p> </li> </ul> <p>For more
* information, see <a
* href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html">Routing
* Traffic to an Amazon CloudFront Web Distribution by Using Your Domain Name</a>
* in the <i>Amazon Route 53 Developer Guide</i>.</p> <p>If you created a CNAME
* resource record set, either with Amazon Route 53 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.</p>
*/
inline DistributionConfig& WithIsIPV6Enabled(bool value) { SetIsIPV6Enabled(value); return *this;}
private:
Aws::String m_callerReference;
bool m_callerReferenceHasBeenSet;
Aliases m_aliases;
bool m_aliasesHasBeenSet;
Aws::String m_defaultRootObject;
bool m_defaultRootObjectHasBeenSet;
Origins m_origins;
bool m_originsHasBeenSet;
OriginGroups m_originGroups;
bool m_originGroupsHasBeenSet;
DefaultCacheBehavior m_defaultCacheBehavior;
bool m_defaultCacheBehaviorHasBeenSet;
CacheBehaviors m_cacheBehaviors;
bool m_cacheBehaviorsHasBeenSet;
CustomErrorResponses m_customErrorResponses;
bool m_customErrorResponsesHasBeenSet;
Aws::String m_comment;
bool m_commentHasBeenSet;
LoggingConfig m_logging;
bool m_loggingHasBeenSet;
PriceClass m_priceClass;
bool m_priceClassHasBeenSet;
bool m_enabled;
bool m_enabledHasBeenSet;
ViewerCertificate m_viewerCertificate;
bool m_viewerCertificateHasBeenSet;
Restrictions m_restrictions;
bool m_restrictionsHasBeenSet;
Aws::String m_webACLId;
bool m_webACLIdHasBeenSet;
HttpVersion m_httpVersion;
bool m_httpVersionHasBeenSet;
bool m_isIPV6Enabled;
bool m_isIPV6EnabledHasBeenSet;
};
} // namespace Model
} // namespace CloudFront
} // namespace Aws