/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace CloudFront { namespace Model { /** *

A complex type that controls:

  • 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.

See Also:

AWS * API Reference

*/ class CustomErrorResponse { public: AWS_CLOUDFRONT_API CustomErrorResponse(); AWS_CLOUDFRONT_API CustomErrorResponse(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_CLOUDFRONT_API CustomErrorResponse& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_CLOUDFRONT_API void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const; /** *

The HTTP status code for which you want to specify a custom error page and/or * a caching duration.

*/ inline int GetErrorCode() const{ return m_errorCode; } /** *

The HTTP status code for which you want to specify a custom error page and/or * a caching duration.

*/ inline bool ErrorCodeHasBeenSet() const { return m_errorCodeHasBeenSet; } /** *

The HTTP status code for which you want to specify a custom error page and/or * a caching duration.

*/ inline void SetErrorCode(int value) { m_errorCodeHasBeenSet = true; m_errorCode = value; } /** *

The HTTP status code for which you want to specify a custom error page and/or * a caching duration.

*/ inline CustomErrorResponse& WithErrorCode(int value) { SetErrorCode(value); return *this;} /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline const Aws::String& GetResponsePagePath() const{ return m_responsePagePath; } /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline bool ResponsePagePathHasBeenSet() const { return m_responsePagePathHasBeenSet; } /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline void SetResponsePagePath(const Aws::String& value) { m_responsePagePathHasBeenSet = true; m_responsePagePath = value; } /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline void SetResponsePagePath(Aws::String&& value) { m_responsePagePathHasBeenSet = true; m_responsePagePath = std::move(value); } /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline void SetResponsePagePath(const char* value) { m_responsePagePathHasBeenSet = true; m_responsePagePath.assign(value); } /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline CustomErrorResponse& WithResponsePagePath(const Aws::String& value) { SetResponsePagePath(value); return *this;} /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline CustomErrorResponse& WithResponsePagePath(Aws::String&& value) { SetResponsePagePath(std::move(value)); return *this;} /** *

The path to the custom error page that you want CloudFront to return to a * viewer when your origin returns the HTTP status code specified by * ErrorCode, for example, * /4xx-errors/403-forbidden.html. If you want to store your objects * and your custom error pages in different locations, your distribution must * include a cache behavior for which the following is true:

  • The * value of PathPattern matches the path to your custom error * messages. For example, suppose you saved custom error pages for 4xx errors in an * Amazon S3 bucket in a directory named /4xx-errors. Your * distribution must include a cache behavior for which the path pattern routes * requests for your custom error pages to that location, for example, * /4xx-errors/ *.

  • The value of * TargetOriginId specifies the value of the ID element * for the origin that contains your custom error pages.

If you * specify a value for ResponsePagePath, you must also specify a value * for ResponseCode.

We recommend that you store custom error * pages in an Amazon S3 bucket. If you store custom error pages on an HTTP server * and the server starts to return 5xx errors, CloudFront can't get the files that * you want to return to viewers because the origin server is unavailable.

*/ inline CustomErrorResponse& WithResponsePagePath(const char* value) { SetResponsePagePath(value); return *this;} /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline const Aws::String& GetResponseCode() const{ return m_responseCode; } /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline bool ResponseCodeHasBeenSet() const { return m_responseCodeHasBeenSet; } /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline void SetResponseCode(const Aws::String& value) { m_responseCodeHasBeenSet = true; m_responseCode = value; } /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline void SetResponseCode(Aws::String&& value) { m_responseCodeHasBeenSet = true; m_responseCode = std::move(value); } /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline void SetResponseCode(const char* value) { m_responseCodeHasBeenSet = true; m_responseCode.assign(value); } /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline CustomErrorResponse& WithResponseCode(const Aws::String& value) { SetResponseCode(value); return *this;} /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline CustomErrorResponse& WithResponseCode(Aws::String&& value) { SetResponseCode(std::move(value)); return *this;} /** *

The HTTP status code that you want CloudFront to return to the viewer along * with the custom error page. There are a variety of reasons that you might want * CloudFront to return a status code different from the status code that your * origin returned to CloudFront, for example:

  • Some Internet * devices (some firewalls and corporate proxies, for example) intercept HTTP 4xx * and 5xx and prevent the response from being returned to the viewer. If you * substitute 200, the response typically won't be intercepted.

    *
  • If you don't care about distinguishing among different client * errors or server errors, you can specify 400 or 500 as * the ResponseCode for all 4xx or 5xx errors.

  • You * might want to return a 200 status code (OK) and static website so * your customers don't know that your website is down.

If you * specify a value for ResponseCode, you must also specify a value for * ResponsePagePath.

*/ inline CustomErrorResponse& WithResponseCode(const char* value) { SetResponseCode(value); return *this;} /** *

The minimum amount of time, in seconds, that you want CloudFront to cache the * HTTP status code specified in ErrorCode. When this time period has * elapsed, CloudFront queries your origin to see whether the problem that caused * the error has been resolved and the requested object is now available.

*

For more information, see Customizing * Error Responses in the Amazon CloudFront Developer Guide.

*/ inline long long GetErrorCachingMinTTL() const{ return m_errorCachingMinTTL; } /** *

The minimum amount of time, in seconds, that you want CloudFront to cache the * HTTP status code specified in ErrorCode. When this time period has * elapsed, CloudFront queries your origin to see whether the problem that caused * the error has been resolved and the requested object is now available.

*

For more information, see Customizing * Error Responses in the Amazon CloudFront Developer Guide.

*/ inline bool ErrorCachingMinTTLHasBeenSet() const { return m_errorCachingMinTTLHasBeenSet; } /** *

The minimum amount of time, in seconds, that you want CloudFront to cache the * HTTP status code specified in ErrorCode. When this time period has * elapsed, CloudFront queries your origin to see whether the problem that caused * the error has been resolved and the requested object is now available.

*

For more information, see Customizing * Error Responses in the Amazon CloudFront Developer Guide.

*/ inline void SetErrorCachingMinTTL(long long value) { m_errorCachingMinTTLHasBeenSet = true; m_errorCachingMinTTL = value; } /** *

The minimum amount of time, in seconds, that you want CloudFront to cache the * HTTP status code specified in ErrorCode. When this time period has * elapsed, CloudFront queries your origin to see whether the problem that caused * the error has been resolved and the requested object is now available.

*

For more information, see Customizing * Error Responses in the Amazon CloudFront Developer Guide.

*/ inline CustomErrorResponse& WithErrorCachingMinTTL(long long value) { SetErrorCachingMinTTL(value); return *this;} private: int m_errorCode; bool m_errorCodeHasBeenSet = false; Aws::String m_responsePagePath; bool m_responsePagePathHasBeenSet = false; Aws::String m_responseCode; bool m_responseCodeHasBeenSet = false; long long m_errorCachingMinTTL; bool m_errorCachingMinTTLHasBeenSet = false; }; } // namespace Model } // namespace CloudFront } // namespace Aws