1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package cloudfront
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/restxml"
14)
15
16const opCreateCloudFrontOriginAccessIdentity = "CreateCloudFrontOriginAccessIdentity2019_03_26"
17
18// CreateCloudFrontOriginAccessIdentityRequest generates a "aws/request.Request" representing the
19// client's request for the CreateCloudFrontOriginAccessIdentity operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See CreateCloudFrontOriginAccessIdentity for more information on using the CreateCloudFrontOriginAccessIdentity
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the CreateCloudFrontOriginAccessIdentityRequest method.
34//    req, resp := client.CreateCloudFrontOriginAccessIdentityRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateCloudFrontOriginAccessIdentity
42func (c *CloudFront) CreateCloudFrontOriginAccessIdentityRequest(input *CreateCloudFrontOriginAccessIdentityInput) (req *request.Request, output *CreateCloudFrontOriginAccessIdentityOutput) {
43	op := &request.Operation{
44		Name:       opCreateCloudFrontOriginAccessIdentity,
45		HTTPMethod: "POST",
46		HTTPPath:   "/2019-03-26/origin-access-identity/cloudfront",
47	}
48
49	if input == nil {
50		input = &CreateCloudFrontOriginAccessIdentityInput{}
51	}
52
53	output = &CreateCloudFrontOriginAccessIdentityOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// CreateCloudFrontOriginAccessIdentity API operation for Amazon CloudFront.
59//
60// Creates a new origin access identity. If you're using Amazon S3 for your
61// origin, you can use an origin access identity to require users to access
62// your content using a CloudFront URL instead of the Amazon S3 URL. For more
63// information about how to use origin access identities, see Serving Private
64// Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
65// in the Amazon CloudFront Developer Guide.
66//
67// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
68// with awserr.Error's Code and Message methods to get detailed information about
69// the error.
70//
71// See the AWS API reference guide for Amazon CloudFront's
72// API operation CreateCloudFrontOriginAccessIdentity for usage and error information.
73//
74// Returned Error Codes:
75//   * ErrCodeOriginAccessIdentityAlreadyExists "CloudFrontOriginAccessIdentityAlreadyExists"
76//   If the CallerReference is a value you already sent in a previous request
77//   to create an identity but the content of the CloudFrontOriginAccessIdentityConfig
78//   is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists
79//   error.
80//
81//   * ErrCodeMissingBody "MissingBody"
82//   This operation requires a body. Ensure that the body is present and the Content-Type
83//   header is set.
84//
85//   * ErrCodeTooManyCloudFrontOriginAccessIdentities "TooManyCloudFrontOriginAccessIdentities"
86//   Processing your request would cause you to exceed the maximum number of origin
87//   access identities allowed.
88//
89//   * ErrCodeInvalidArgument "InvalidArgument"
90//   The argument is invalid.
91//
92//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
93//   The value of Quantity and the size of Items don't match.
94//
95// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateCloudFrontOriginAccessIdentity
96func (c *CloudFront) CreateCloudFrontOriginAccessIdentity(input *CreateCloudFrontOriginAccessIdentityInput) (*CreateCloudFrontOriginAccessIdentityOutput, error) {
97	req, out := c.CreateCloudFrontOriginAccessIdentityRequest(input)
98	return out, req.Send()
99}
100
101// CreateCloudFrontOriginAccessIdentityWithContext is the same as CreateCloudFrontOriginAccessIdentity with the addition of
102// the ability to pass a context and additional request options.
103//
104// See CreateCloudFrontOriginAccessIdentity for details on how to use this API operation.
105//
106// The context must be non-nil and will be used for request cancellation. If
107// the context is nil a panic will occur. In the future the SDK may create
108// sub-contexts for http.Requests. See https://golang.org/pkg/context/
109// for more information on using Contexts.
110func (c *CloudFront) CreateCloudFrontOriginAccessIdentityWithContext(ctx aws.Context, input *CreateCloudFrontOriginAccessIdentityInput, opts ...request.Option) (*CreateCloudFrontOriginAccessIdentityOutput, error) {
111	req, out := c.CreateCloudFrontOriginAccessIdentityRequest(input)
112	req.SetContext(ctx)
113	req.ApplyOptions(opts...)
114	return out, req.Send()
115}
116
117const opCreateDistribution = "CreateDistribution2019_03_26"
118
119// CreateDistributionRequest generates a "aws/request.Request" representing the
120// client's request for the CreateDistribution operation. The "output" return
121// value will be populated with the request's response once the request completes
122// successfully.
123//
124// Use "Send" method on the returned Request to send the API call to the service.
125// the "output" return value is not valid until after Send returns without error.
126//
127// See CreateDistribution for more information on using the CreateDistribution
128// API call, and error handling.
129//
130// This method is useful when you want to inject custom logic or configuration
131// into the SDK's request lifecycle. Such as custom headers, or retry logic.
132//
133//
134//    // Example sending a request using the CreateDistributionRequest method.
135//    req, resp := client.CreateDistributionRequest(params)
136//
137//    err := req.Send()
138//    if err == nil { // resp is now filled
139//        fmt.Println(resp)
140//    }
141//
142// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateDistribution
143func (c *CloudFront) CreateDistributionRequest(input *CreateDistributionInput) (req *request.Request, output *CreateDistributionOutput) {
144	op := &request.Operation{
145		Name:       opCreateDistribution,
146		HTTPMethod: "POST",
147		HTTPPath:   "/2019-03-26/distribution",
148	}
149
150	if input == nil {
151		input = &CreateDistributionInput{}
152	}
153
154	output = &CreateDistributionOutput{}
155	req = c.newRequest(op, input, output)
156	return
157}
158
159// CreateDistribution API operation for Amazon CloudFront.
160//
161// Creates a new web distribution. You create a CloudFront distribution to tell
162// CloudFront where you want content to be delivered from, and the details about
163// how to track and manage content delivery. Send a POST request to the /CloudFront
164// API version/distribution/distribution ID resource.
165//
166// When you update a distribution, there are more required fields than when
167// you create a distribution. When you update your distribution by using UpdateDistribution
168// (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html),
169// follow the steps included in the documentation to get the current configuration
170// and then make your updates. This helps to make sure that you include all
171// of the required fields. To view a summary, see Required Fields for Create
172// Distribution and Update Distribution (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-overview-required-fields.html)
173// in the Amazon CloudFront Developer Guide.
174//
175// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
176// with awserr.Error's Code and Message methods to get detailed information about
177// the error.
178//
179// See the AWS API reference guide for Amazon CloudFront's
180// API operation CreateDistribution for usage and error information.
181//
182// Returned Error Codes:
183//   * ErrCodeCNAMEAlreadyExists "CNAMEAlreadyExists"
184//   The CNAME specified is already defined for CloudFront.
185//
186//   * ErrCodeDistributionAlreadyExists "DistributionAlreadyExists"
187//   The caller reference you attempted to create the distribution with is associated
188//   with another distribution.
189//
190//   * ErrCodeInvalidOrigin "InvalidOrigin"
191//   The Amazon S3 origin server specified does not refer to a valid Amazon S3
192//   bucket.
193//
194//   * ErrCodeInvalidOriginAccessIdentity "InvalidOriginAccessIdentity"
195//   The origin access identity is not valid or doesn't exist.
196//
197//   * ErrCodeAccessDenied "AccessDenied"
198//   Access denied.
199//
200//   * ErrCodeTooManyTrustedSigners "TooManyTrustedSigners"
201//   Your request contains more trusted signers than are allowed per distribution.
202//
203//   * ErrCodeTrustedSignerDoesNotExist "TrustedSignerDoesNotExist"
204//   One or more of your trusted signers don't exist.
205//
206//   * ErrCodeInvalidViewerCertificate "InvalidViewerCertificate"
207//   A viewer certificate specified in the response body is not valid.
208//
209//   * ErrCodeInvalidMinimumProtocolVersion "InvalidMinimumProtocolVersion"
210//   The minimum protocol version specified is not valid.
211//
212//   * ErrCodeMissingBody "MissingBody"
213//   This operation requires a body. Ensure that the body is present and the Content-Type
214//   header is set.
215//
216//   * ErrCodeTooManyDistributionCNAMEs "TooManyDistributionCNAMEs"
217//   Your request contains more CNAMEs than are allowed per distribution.
218//
219//   * ErrCodeTooManyDistributions "TooManyDistributions"
220//   Processing your request would cause you to exceed the maximum number of distributions
221//   allowed.
222//
223//   * ErrCodeInvalidDefaultRootObject "InvalidDefaultRootObject"
224//   The default root object file name is too big or contains an invalid character.
225//
226//   * ErrCodeInvalidRelativePath "InvalidRelativePath"
227//   The relative path is too big, is not URL-encoded, or does not begin with
228//   a slash (/).
229//
230//   * ErrCodeInvalidErrorCode "InvalidErrorCode"
231//   An invalid error code was specified.
232//
233//   * ErrCodeInvalidResponseCode "InvalidResponseCode"
234//   A response code specified in the response body is not valid.
235//
236//   * ErrCodeInvalidArgument "InvalidArgument"
237//   The argument is invalid.
238//
239//   * ErrCodeInvalidRequiredProtocol "InvalidRequiredProtocol"
240//   This operation requires the HTTPS protocol. Ensure that you specify the HTTPS
241//   protocol in your request, or omit the RequiredProtocols element from your
242//   distribution configuration.
243//
244//   * ErrCodeNoSuchOrigin "NoSuchOrigin"
245//   No origin exists with the specified Origin Id.
246//
247//   * ErrCodeTooManyOrigins "TooManyOrigins"
248//   You cannot create more origins for the distribution.
249//
250//   * ErrCodeTooManyOriginGroupsPerDistribution "TooManyOriginGroupsPerDistribution"
251//   Processing your request would cause you to exceed the maximum number of origin
252//   groups allowed.
253//
254//   * ErrCodeTooManyCacheBehaviors "TooManyCacheBehaviors"
255//   You cannot create more cache behaviors for the distribution.
256//
257//   * ErrCodeTooManyCookieNamesInWhiteList "TooManyCookieNamesInWhiteList"
258//   Your request contains more cookie names in the whitelist than are allowed
259//   per cache behavior.
260//
261//   * ErrCodeInvalidForwardCookies "InvalidForwardCookies"
262//   Your request contains forward cookies option which doesn't match with the
263//   expectation for the whitelisted list of cookie names. Either list of cookie
264//   names has been specified when not allowed or list of cookie names is missing
265//   when expected.
266//
267//   * ErrCodeTooManyHeadersInForwardedValues "TooManyHeadersInForwardedValues"
268//   Your request contains too many headers in forwarded values.
269//
270//   * ErrCodeInvalidHeadersForS3Origin "InvalidHeadersForS3Origin"
271//   The headers specified are not valid for an Amazon S3 origin.
272//
273//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
274//   The value of Quantity and the size of Items don't match.
275//
276//   * ErrCodeTooManyCertificates "TooManyCertificates"
277//   You cannot create anymore custom SSL/TLS certificates.
278//
279//   * ErrCodeInvalidLocationCode "InvalidLocationCode"
280//   The location code specified is not valid.
281//
282//   * ErrCodeInvalidGeoRestrictionParameter "InvalidGeoRestrictionParameter"
283//   The specified geo restriction parameter is not valid.
284//
285//   * ErrCodeInvalidProtocolSettings "InvalidProtocolSettings"
286//   You cannot specify SSLv3 as the minimum protocol version if you only want
287//   to support only clients that support Server Name Indication (SNI).
288//
289//   * ErrCodeInvalidTTLOrder "InvalidTTLOrder"
290//   TTL order specified in the response body is not valid.
291//
292//   * ErrCodeInvalidWebACLId "InvalidWebACLId"
293//   A web ACL ID specified in the response body is not valid. To specify a web
294//   ACL created using the latest version of AWS WAF, use the ACL ARN, for example
295//   arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a.
296//   To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
297//   473e64fd-f30b-4765-81a0-62ad96dd167a.
298//
299//   * ErrCodeTooManyOriginCustomHeaders "TooManyOriginCustomHeaders"
300//   Your request contains too many origin custom headers.
301//
302//   * ErrCodeTooManyQueryStringParameters "TooManyQueryStringParameters"
303//   Your request contains too many query string parameters.
304//
305//   * ErrCodeInvalidQueryStringParameters "InvalidQueryStringParameters"
306//   Query string parameters specified in the response body are not valid.
307//
308//   * ErrCodeTooManyDistributionsWithLambdaAssociations "TooManyDistributionsWithLambdaAssociations"
309//   Processing your request would cause the maximum number of distributions with
310//   Lambda function associations per owner to be exceeded.
311//
312//   * ErrCodeTooManyLambdaFunctionAssociations "TooManyLambdaFunctionAssociations"
313//   Your request contains more Lambda function associations than are allowed
314//   per distribution.
315//
316//   * ErrCodeInvalidLambdaFunctionAssociation "InvalidLambdaFunctionAssociation"
317//   The specified Lambda function association is invalid.
318//
319//   * ErrCodeInvalidOriginReadTimeout "InvalidOriginReadTimeout"
320//   The read timeout specified for the origin is not valid.
321//
322//   * ErrCodeInvalidOriginKeepaliveTimeout "InvalidOriginKeepaliveTimeout"
323//   The keep alive timeout specified for the origin is not valid.
324//
325//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
326//   The specified configuration for field-level encryption doesn't exist.
327//
328//   * ErrCodeIllegalFieldLevelEncryptionConfigAssociationWithCacheBehavior "IllegalFieldLevelEncryptionConfigAssociationWithCacheBehavior"
329//   The specified configuration for field-level encryption can't be associated
330//   with the specified cache behavior.
331//
332//   * ErrCodeTooManyDistributionsAssociatedToFieldLevelEncryptionConfig "TooManyDistributionsAssociatedToFieldLevelEncryptionConfig"
333//   The maximum number of distributions have been associated with the specified
334//   configuration for field-level encryption.
335//
336// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateDistribution
337func (c *CloudFront) CreateDistribution(input *CreateDistributionInput) (*CreateDistributionOutput, error) {
338	req, out := c.CreateDistributionRequest(input)
339	return out, req.Send()
340}
341
342// CreateDistributionWithContext is the same as CreateDistribution with the addition of
343// the ability to pass a context and additional request options.
344//
345// See CreateDistribution for details on how to use this API operation.
346//
347// The context must be non-nil and will be used for request cancellation. If
348// the context is nil a panic will occur. In the future the SDK may create
349// sub-contexts for http.Requests. See https://golang.org/pkg/context/
350// for more information on using Contexts.
351func (c *CloudFront) CreateDistributionWithContext(ctx aws.Context, input *CreateDistributionInput, opts ...request.Option) (*CreateDistributionOutput, error) {
352	req, out := c.CreateDistributionRequest(input)
353	req.SetContext(ctx)
354	req.ApplyOptions(opts...)
355	return out, req.Send()
356}
357
358const opCreateDistributionWithTags = "CreateDistributionWithTags2019_03_26"
359
360// CreateDistributionWithTagsRequest generates a "aws/request.Request" representing the
361// client's request for the CreateDistributionWithTags operation. The "output" return
362// value will be populated with the request's response once the request completes
363// successfully.
364//
365// Use "Send" method on the returned Request to send the API call to the service.
366// the "output" return value is not valid until after Send returns without error.
367//
368// See CreateDistributionWithTags for more information on using the CreateDistributionWithTags
369// API call, and error handling.
370//
371// This method is useful when you want to inject custom logic or configuration
372// into the SDK's request lifecycle. Such as custom headers, or retry logic.
373//
374//
375//    // Example sending a request using the CreateDistributionWithTagsRequest method.
376//    req, resp := client.CreateDistributionWithTagsRequest(params)
377//
378//    err := req.Send()
379//    if err == nil { // resp is now filled
380//        fmt.Println(resp)
381//    }
382//
383// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateDistributionWithTags
384func (c *CloudFront) CreateDistributionWithTagsRequest(input *CreateDistributionWithTagsInput) (req *request.Request, output *CreateDistributionWithTagsOutput) {
385	op := &request.Operation{
386		Name:       opCreateDistributionWithTags,
387		HTTPMethod: "POST",
388		HTTPPath:   "/2019-03-26/distribution?WithTags",
389	}
390
391	if input == nil {
392		input = &CreateDistributionWithTagsInput{}
393	}
394
395	output = &CreateDistributionWithTagsOutput{}
396	req = c.newRequest(op, input, output)
397	return
398}
399
400// CreateDistributionWithTags API operation for Amazon CloudFront.
401//
402// Create a new distribution with tags.
403//
404// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
405// with awserr.Error's Code and Message methods to get detailed information about
406// the error.
407//
408// See the AWS API reference guide for Amazon CloudFront's
409// API operation CreateDistributionWithTags for usage and error information.
410//
411// Returned Error Codes:
412//   * ErrCodeCNAMEAlreadyExists "CNAMEAlreadyExists"
413//   The CNAME specified is already defined for CloudFront.
414//
415//   * ErrCodeDistributionAlreadyExists "DistributionAlreadyExists"
416//   The caller reference you attempted to create the distribution with is associated
417//   with another distribution.
418//
419//   * ErrCodeInvalidOrigin "InvalidOrigin"
420//   The Amazon S3 origin server specified does not refer to a valid Amazon S3
421//   bucket.
422//
423//   * ErrCodeInvalidOriginAccessIdentity "InvalidOriginAccessIdentity"
424//   The origin access identity is not valid or doesn't exist.
425//
426//   * ErrCodeAccessDenied "AccessDenied"
427//   Access denied.
428//
429//   * ErrCodeTooManyTrustedSigners "TooManyTrustedSigners"
430//   Your request contains more trusted signers than are allowed per distribution.
431//
432//   * ErrCodeTrustedSignerDoesNotExist "TrustedSignerDoesNotExist"
433//   One or more of your trusted signers don't exist.
434//
435//   * ErrCodeInvalidViewerCertificate "InvalidViewerCertificate"
436//   A viewer certificate specified in the response body is not valid.
437//
438//   * ErrCodeInvalidMinimumProtocolVersion "InvalidMinimumProtocolVersion"
439//   The minimum protocol version specified is not valid.
440//
441//   * ErrCodeMissingBody "MissingBody"
442//   This operation requires a body. Ensure that the body is present and the Content-Type
443//   header is set.
444//
445//   * ErrCodeTooManyDistributionCNAMEs "TooManyDistributionCNAMEs"
446//   Your request contains more CNAMEs than are allowed per distribution.
447//
448//   * ErrCodeTooManyDistributions "TooManyDistributions"
449//   Processing your request would cause you to exceed the maximum number of distributions
450//   allowed.
451//
452//   * ErrCodeInvalidDefaultRootObject "InvalidDefaultRootObject"
453//   The default root object file name is too big or contains an invalid character.
454//
455//   * ErrCodeInvalidRelativePath "InvalidRelativePath"
456//   The relative path is too big, is not URL-encoded, or does not begin with
457//   a slash (/).
458//
459//   * ErrCodeInvalidErrorCode "InvalidErrorCode"
460//   An invalid error code was specified.
461//
462//   * ErrCodeInvalidResponseCode "InvalidResponseCode"
463//   A response code specified in the response body is not valid.
464//
465//   * ErrCodeInvalidArgument "InvalidArgument"
466//   The argument is invalid.
467//
468//   * ErrCodeInvalidRequiredProtocol "InvalidRequiredProtocol"
469//   This operation requires the HTTPS protocol. Ensure that you specify the HTTPS
470//   protocol in your request, or omit the RequiredProtocols element from your
471//   distribution configuration.
472//
473//   * ErrCodeNoSuchOrigin "NoSuchOrigin"
474//   No origin exists with the specified Origin Id.
475//
476//   * ErrCodeTooManyOrigins "TooManyOrigins"
477//   You cannot create more origins for the distribution.
478//
479//   * ErrCodeTooManyOriginGroupsPerDistribution "TooManyOriginGroupsPerDistribution"
480//   Processing your request would cause you to exceed the maximum number of origin
481//   groups allowed.
482//
483//   * ErrCodeTooManyCacheBehaviors "TooManyCacheBehaviors"
484//   You cannot create more cache behaviors for the distribution.
485//
486//   * ErrCodeTooManyCookieNamesInWhiteList "TooManyCookieNamesInWhiteList"
487//   Your request contains more cookie names in the whitelist than are allowed
488//   per cache behavior.
489//
490//   * ErrCodeInvalidForwardCookies "InvalidForwardCookies"
491//   Your request contains forward cookies option which doesn't match with the
492//   expectation for the whitelisted list of cookie names. Either list of cookie
493//   names has been specified when not allowed or list of cookie names is missing
494//   when expected.
495//
496//   * ErrCodeTooManyHeadersInForwardedValues "TooManyHeadersInForwardedValues"
497//   Your request contains too many headers in forwarded values.
498//
499//   * ErrCodeInvalidHeadersForS3Origin "InvalidHeadersForS3Origin"
500//   The headers specified are not valid for an Amazon S3 origin.
501//
502//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
503//   The value of Quantity and the size of Items don't match.
504//
505//   * ErrCodeTooManyCertificates "TooManyCertificates"
506//   You cannot create anymore custom SSL/TLS certificates.
507//
508//   * ErrCodeInvalidLocationCode "InvalidLocationCode"
509//   The location code specified is not valid.
510//
511//   * ErrCodeInvalidGeoRestrictionParameter "InvalidGeoRestrictionParameter"
512//   The specified geo restriction parameter is not valid.
513//
514//   * ErrCodeInvalidProtocolSettings "InvalidProtocolSettings"
515//   You cannot specify SSLv3 as the minimum protocol version if you only want
516//   to support only clients that support Server Name Indication (SNI).
517//
518//   * ErrCodeInvalidTTLOrder "InvalidTTLOrder"
519//   TTL order specified in the response body is not valid.
520//
521//   * ErrCodeInvalidWebACLId "InvalidWebACLId"
522//   A web ACL ID specified in the response body is not valid. To specify a web
523//   ACL created using the latest version of AWS WAF, use the ACL ARN, for example
524//   arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a.
525//   To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
526//   473e64fd-f30b-4765-81a0-62ad96dd167a.
527//
528//   * ErrCodeTooManyOriginCustomHeaders "TooManyOriginCustomHeaders"
529//   Your request contains too many origin custom headers.
530//
531//   * ErrCodeInvalidTagging "InvalidTagging"
532//   Tagging specified in the response body is not valid.
533//
534//   * ErrCodeTooManyQueryStringParameters "TooManyQueryStringParameters"
535//   Your request contains too many query string parameters.
536//
537//   * ErrCodeInvalidQueryStringParameters "InvalidQueryStringParameters"
538//   Query string parameters specified in the response body are not valid.
539//
540//   * ErrCodeTooManyDistributionsWithLambdaAssociations "TooManyDistributionsWithLambdaAssociations"
541//   Processing your request would cause the maximum number of distributions with
542//   Lambda function associations per owner to be exceeded.
543//
544//   * ErrCodeTooManyLambdaFunctionAssociations "TooManyLambdaFunctionAssociations"
545//   Your request contains more Lambda function associations than are allowed
546//   per distribution.
547//
548//   * ErrCodeInvalidLambdaFunctionAssociation "InvalidLambdaFunctionAssociation"
549//   The specified Lambda function association is invalid.
550//
551//   * ErrCodeInvalidOriginReadTimeout "InvalidOriginReadTimeout"
552//   The read timeout specified for the origin is not valid.
553//
554//   * ErrCodeInvalidOriginKeepaliveTimeout "InvalidOriginKeepaliveTimeout"
555//   The keep alive timeout specified for the origin is not valid.
556//
557//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
558//   The specified configuration for field-level encryption doesn't exist.
559//
560//   * ErrCodeIllegalFieldLevelEncryptionConfigAssociationWithCacheBehavior "IllegalFieldLevelEncryptionConfigAssociationWithCacheBehavior"
561//   The specified configuration for field-level encryption can't be associated
562//   with the specified cache behavior.
563//
564//   * ErrCodeTooManyDistributionsAssociatedToFieldLevelEncryptionConfig "TooManyDistributionsAssociatedToFieldLevelEncryptionConfig"
565//   The maximum number of distributions have been associated with the specified
566//   configuration for field-level encryption.
567//
568// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateDistributionWithTags
569func (c *CloudFront) CreateDistributionWithTags(input *CreateDistributionWithTagsInput) (*CreateDistributionWithTagsOutput, error) {
570	req, out := c.CreateDistributionWithTagsRequest(input)
571	return out, req.Send()
572}
573
574// CreateDistributionWithTagsWithContext is the same as CreateDistributionWithTags with the addition of
575// the ability to pass a context and additional request options.
576//
577// See CreateDistributionWithTags for details on how to use this API operation.
578//
579// The context must be non-nil and will be used for request cancellation. If
580// the context is nil a panic will occur. In the future the SDK may create
581// sub-contexts for http.Requests. See https://golang.org/pkg/context/
582// for more information on using Contexts.
583func (c *CloudFront) CreateDistributionWithTagsWithContext(ctx aws.Context, input *CreateDistributionWithTagsInput, opts ...request.Option) (*CreateDistributionWithTagsOutput, error) {
584	req, out := c.CreateDistributionWithTagsRequest(input)
585	req.SetContext(ctx)
586	req.ApplyOptions(opts...)
587	return out, req.Send()
588}
589
590const opCreateFieldLevelEncryptionConfig = "CreateFieldLevelEncryptionConfig2019_03_26"
591
592// CreateFieldLevelEncryptionConfigRequest generates a "aws/request.Request" representing the
593// client's request for the CreateFieldLevelEncryptionConfig operation. The "output" return
594// value will be populated with the request's response once the request completes
595// successfully.
596//
597// Use "Send" method on the returned Request to send the API call to the service.
598// the "output" return value is not valid until after Send returns without error.
599//
600// See CreateFieldLevelEncryptionConfig for more information on using the CreateFieldLevelEncryptionConfig
601// API call, and error handling.
602//
603// This method is useful when you want to inject custom logic or configuration
604// into the SDK's request lifecycle. Such as custom headers, or retry logic.
605//
606//
607//    // Example sending a request using the CreateFieldLevelEncryptionConfigRequest method.
608//    req, resp := client.CreateFieldLevelEncryptionConfigRequest(params)
609//
610//    err := req.Send()
611//    if err == nil { // resp is now filled
612//        fmt.Println(resp)
613//    }
614//
615// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateFieldLevelEncryptionConfig
616func (c *CloudFront) CreateFieldLevelEncryptionConfigRequest(input *CreateFieldLevelEncryptionConfigInput) (req *request.Request, output *CreateFieldLevelEncryptionConfigOutput) {
617	op := &request.Operation{
618		Name:       opCreateFieldLevelEncryptionConfig,
619		HTTPMethod: "POST",
620		HTTPPath:   "/2019-03-26/field-level-encryption",
621	}
622
623	if input == nil {
624		input = &CreateFieldLevelEncryptionConfigInput{}
625	}
626
627	output = &CreateFieldLevelEncryptionConfigOutput{}
628	req = c.newRequest(op, input, output)
629	return
630}
631
632// CreateFieldLevelEncryptionConfig API operation for Amazon CloudFront.
633//
634// Create a new field-level encryption configuration.
635//
636// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
637// with awserr.Error's Code and Message methods to get detailed information about
638// the error.
639//
640// See the AWS API reference guide for Amazon CloudFront's
641// API operation CreateFieldLevelEncryptionConfig for usage and error information.
642//
643// Returned Error Codes:
644//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
645//   The value of Quantity and the size of Items don't match.
646//
647//   * ErrCodeInvalidArgument "InvalidArgument"
648//   The argument is invalid.
649//
650//   * ErrCodeNoSuchFieldLevelEncryptionProfile "NoSuchFieldLevelEncryptionProfile"
651//   The specified profile for field-level encryption doesn't exist.
652//
653//   * ErrCodeFieldLevelEncryptionConfigAlreadyExists "FieldLevelEncryptionConfigAlreadyExists"
654//   The specified configuration for field-level encryption already exists.
655//
656//   * ErrCodeTooManyFieldLevelEncryptionConfigs "TooManyFieldLevelEncryptionConfigs"
657//   The maximum number of configurations for field-level encryption have been
658//   created.
659//
660//   * ErrCodeTooManyFieldLevelEncryptionQueryArgProfiles "TooManyFieldLevelEncryptionQueryArgProfiles"
661//   The maximum number of query arg profiles for field-level encryption have
662//   been created.
663//
664//   * ErrCodeTooManyFieldLevelEncryptionContentTypeProfiles "TooManyFieldLevelEncryptionContentTypeProfiles"
665//   The maximum number of content type profiles for field-level encryption have
666//   been created.
667//
668//   * ErrCodeQueryArgProfileEmpty "QueryArgProfileEmpty"
669//   No profile specified for the field-level encryption query argument.
670//
671// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateFieldLevelEncryptionConfig
672func (c *CloudFront) CreateFieldLevelEncryptionConfig(input *CreateFieldLevelEncryptionConfigInput) (*CreateFieldLevelEncryptionConfigOutput, error) {
673	req, out := c.CreateFieldLevelEncryptionConfigRequest(input)
674	return out, req.Send()
675}
676
677// CreateFieldLevelEncryptionConfigWithContext is the same as CreateFieldLevelEncryptionConfig with the addition of
678// the ability to pass a context and additional request options.
679//
680// See CreateFieldLevelEncryptionConfig for details on how to use this API operation.
681//
682// The context must be non-nil and will be used for request cancellation. If
683// the context is nil a panic will occur. In the future the SDK may create
684// sub-contexts for http.Requests. See https://golang.org/pkg/context/
685// for more information on using Contexts.
686func (c *CloudFront) CreateFieldLevelEncryptionConfigWithContext(ctx aws.Context, input *CreateFieldLevelEncryptionConfigInput, opts ...request.Option) (*CreateFieldLevelEncryptionConfigOutput, error) {
687	req, out := c.CreateFieldLevelEncryptionConfigRequest(input)
688	req.SetContext(ctx)
689	req.ApplyOptions(opts...)
690	return out, req.Send()
691}
692
693const opCreateFieldLevelEncryptionProfile = "CreateFieldLevelEncryptionProfile2019_03_26"
694
695// CreateFieldLevelEncryptionProfileRequest generates a "aws/request.Request" representing the
696// client's request for the CreateFieldLevelEncryptionProfile operation. The "output" return
697// value will be populated with the request's response once the request completes
698// successfully.
699//
700// Use "Send" method on the returned Request to send the API call to the service.
701// the "output" return value is not valid until after Send returns without error.
702//
703// See CreateFieldLevelEncryptionProfile for more information on using the CreateFieldLevelEncryptionProfile
704// API call, and error handling.
705//
706// This method is useful when you want to inject custom logic or configuration
707// into the SDK's request lifecycle. Such as custom headers, or retry logic.
708//
709//
710//    // Example sending a request using the CreateFieldLevelEncryptionProfileRequest method.
711//    req, resp := client.CreateFieldLevelEncryptionProfileRequest(params)
712//
713//    err := req.Send()
714//    if err == nil { // resp is now filled
715//        fmt.Println(resp)
716//    }
717//
718// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateFieldLevelEncryptionProfile
719func (c *CloudFront) CreateFieldLevelEncryptionProfileRequest(input *CreateFieldLevelEncryptionProfileInput) (req *request.Request, output *CreateFieldLevelEncryptionProfileOutput) {
720	op := &request.Operation{
721		Name:       opCreateFieldLevelEncryptionProfile,
722		HTTPMethod: "POST",
723		HTTPPath:   "/2019-03-26/field-level-encryption-profile",
724	}
725
726	if input == nil {
727		input = &CreateFieldLevelEncryptionProfileInput{}
728	}
729
730	output = &CreateFieldLevelEncryptionProfileOutput{}
731	req = c.newRequest(op, input, output)
732	return
733}
734
735// CreateFieldLevelEncryptionProfile API operation for Amazon CloudFront.
736//
737// Create a field-level encryption profile.
738//
739// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
740// with awserr.Error's Code and Message methods to get detailed information about
741// the error.
742//
743// See the AWS API reference guide for Amazon CloudFront's
744// API operation CreateFieldLevelEncryptionProfile for usage and error information.
745//
746// Returned Error Codes:
747//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
748//   The value of Quantity and the size of Items don't match.
749//
750//   * ErrCodeInvalidArgument "InvalidArgument"
751//   The argument is invalid.
752//
753//   * ErrCodeNoSuchPublicKey "NoSuchPublicKey"
754//   The specified public key doesn't exist.
755//
756//   * ErrCodeFieldLevelEncryptionProfileAlreadyExists "FieldLevelEncryptionProfileAlreadyExists"
757//   The specified profile for field-level encryption already exists.
758//
759//   * ErrCodeFieldLevelEncryptionProfileSizeExceeded "FieldLevelEncryptionProfileSizeExceeded"
760//   The maximum size of a profile for field-level encryption was exceeded.
761//
762//   * ErrCodeTooManyFieldLevelEncryptionProfiles "TooManyFieldLevelEncryptionProfiles"
763//   The maximum number of profiles for field-level encryption have been created.
764//
765//   * ErrCodeTooManyFieldLevelEncryptionEncryptionEntities "TooManyFieldLevelEncryptionEncryptionEntities"
766//   The maximum number of encryption entities for field-level encryption have
767//   been created.
768//
769//   * ErrCodeTooManyFieldLevelEncryptionFieldPatterns "TooManyFieldLevelEncryptionFieldPatterns"
770//   The maximum number of field patterns for field-level encryption have been
771//   created.
772//
773// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateFieldLevelEncryptionProfile
774func (c *CloudFront) CreateFieldLevelEncryptionProfile(input *CreateFieldLevelEncryptionProfileInput) (*CreateFieldLevelEncryptionProfileOutput, error) {
775	req, out := c.CreateFieldLevelEncryptionProfileRequest(input)
776	return out, req.Send()
777}
778
779// CreateFieldLevelEncryptionProfileWithContext is the same as CreateFieldLevelEncryptionProfile with the addition of
780// the ability to pass a context and additional request options.
781//
782// See CreateFieldLevelEncryptionProfile for details on how to use this API operation.
783//
784// The context must be non-nil and will be used for request cancellation. If
785// the context is nil a panic will occur. In the future the SDK may create
786// sub-contexts for http.Requests. See https://golang.org/pkg/context/
787// for more information on using Contexts.
788func (c *CloudFront) CreateFieldLevelEncryptionProfileWithContext(ctx aws.Context, input *CreateFieldLevelEncryptionProfileInput, opts ...request.Option) (*CreateFieldLevelEncryptionProfileOutput, error) {
789	req, out := c.CreateFieldLevelEncryptionProfileRequest(input)
790	req.SetContext(ctx)
791	req.ApplyOptions(opts...)
792	return out, req.Send()
793}
794
795const opCreateInvalidation = "CreateInvalidation2019_03_26"
796
797// CreateInvalidationRequest generates a "aws/request.Request" representing the
798// client's request for the CreateInvalidation operation. The "output" return
799// value will be populated with the request's response once the request completes
800// successfully.
801//
802// Use "Send" method on the returned Request to send the API call to the service.
803// the "output" return value is not valid until after Send returns without error.
804//
805// See CreateInvalidation for more information on using the CreateInvalidation
806// API call, and error handling.
807//
808// This method is useful when you want to inject custom logic or configuration
809// into the SDK's request lifecycle. Such as custom headers, or retry logic.
810//
811//
812//    // Example sending a request using the CreateInvalidationRequest method.
813//    req, resp := client.CreateInvalidationRequest(params)
814//
815//    err := req.Send()
816//    if err == nil { // resp is now filled
817//        fmt.Println(resp)
818//    }
819//
820// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateInvalidation
821func (c *CloudFront) CreateInvalidationRequest(input *CreateInvalidationInput) (req *request.Request, output *CreateInvalidationOutput) {
822	op := &request.Operation{
823		Name:       opCreateInvalidation,
824		HTTPMethod: "POST",
825		HTTPPath:   "/2019-03-26/distribution/{DistributionId}/invalidation",
826	}
827
828	if input == nil {
829		input = &CreateInvalidationInput{}
830	}
831
832	output = &CreateInvalidationOutput{}
833	req = c.newRequest(op, input, output)
834	return
835}
836
837// CreateInvalidation API operation for Amazon CloudFront.
838//
839// Create a new invalidation.
840//
841// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
842// with awserr.Error's Code and Message methods to get detailed information about
843// the error.
844//
845// See the AWS API reference guide for Amazon CloudFront's
846// API operation CreateInvalidation for usage and error information.
847//
848// Returned Error Codes:
849//   * ErrCodeAccessDenied "AccessDenied"
850//   Access denied.
851//
852//   * ErrCodeMissingBody "MissingBody"
853//   This operation requires a body. Ensure that the body is present and the Content-Type
854//   header is set.
855//
856//   * ErrCodeInvalidArgument "InvalidArgument"
857//   The argument is invalid.
858//
859//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
860//   The specified distribution does not exist.
861//
862//   * ErrCodeBatchTooLarge "BatchTooLarge"
863//   Invalidation batch specified is too large.
864//
865//   * ErrCodeTooManyInvalidationsInProgress "TooManyInvalidationsInProgress"
866//   You have exceeded the maximum number of allowable InProgress invalidation
867//   batch requests, or invalidation objects.
868//
869//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
870//   The value of Quantity and the size of Items don't match.
871//
872// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateInvalidation
873func (c *CloudFront) CreateInvalidation(input *CreateInvalidationInput) (*CreateInvalidationOutput, error) {
874	req, out := c.CreateInvalidationRequest(input)
875	return out, req.Send()
876}
877
878// CreateInvalidationWithContext is the same as CreateInvalidation with the addition of
879// the ability to pass a context and additional request options.
880//
881// See CreateInvalidation for details on how to use this API operation.
882//
883// The context must be non-nil and will be used for request cancellation. If
884// the context is nil a panic will occur. In the future the SDK may create
885// sub-contexts for http.Requests. See https://golang.org/pkg/context/
886// for more information on using Contexts.
887func (c *CloudFront) CreateInvalidationWithContext(ctx aws.Context, input *CreateInvalidationInput, opts ...request.Option) (*CreateInvalidationOutput, error) {
888	req, out := c.CreateInvalidationRequest(input)
889	req.SetContext(ctx)
890	req.ApplyOptions(opts...)
891	return out, req.Send()
892}
893
894const opCreatePublicKey = "CreatePublicKey2019_03_26"
895
896// CreatePublicKeyRequest generates a "aws/request.Request" representing the
897// client's request for the CreatePublicKey operation. The "output" return
898// value will be populated with the request's response once the request completes
899// successfully.
900//
901// Use "Send" method on the returned Request to send the API call to the service.
902// the "output" return value is not valid until after Send returns without error.
903//
904// See CreatePublicKey for more information on using the CreatePublicKey
905// API call, and error handling.
906//
907// This method is useful when you want to inject custom logic or configuration
908// into the SDK's request lifecycle. Such as custom headers, or retry logic.
909//
910//
911//    // Example sending a request using the CreatePublicKeyRequest method.
912//    req, resp := client.CreatePublicKeyRequest(params)
913//
914//    err := req.Send()
915//    if err == nil { // resp is now filled
916//        fmt.Println(resp)
917//    }
918//
919// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreatePublicKey
920func (c *CloudFront) CreatePublicKeyRequest(input *CreatePublicKeyInput) (req *request.Request, output *CreatePublicKeyOutput) {
921	op := &request.Operation{
922		Name:       opCreatePublicKey,
923		HTTPMethod: "POST",
924		HTTPPath:   "/2019-03-26/public-key",
925	}
926
927	if input == nil {
928		input = &CreatePublicKeyInput{}
929	}
930
931	output = &CreatePublicKeyOutput{}
932	req = c.newRequest(op, input, output)
933	return
934}
935
936// CreatePublicKey API operation for Amazon CloudFront.
937//
938// Add a new public key to CloudFront to use, for example, for field-level encryption.
939// You can add a maximum of 10 public keys with one AWS account.
940//
941// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
942// with awserr.Error's Code and Message methods to get detailed information about
943// the error.
944//
945// See the AWS API reference guide for Amazon CloudFront's
946// API operation CreatePublicKey for usage and error information.
947//
948// Returned Error Codes:
949//   * ErrCodePublicKeyAlreadyExists "PublicKeyAlreadyExists"
950//   The specified public key already exists.
951//
952//   * ErrCodeInvalidArgument "InvalidArgument"
953//   The argument is invalid.
954//
955//   * ErrCodeTooManyPublicKeys "TooManyPublicKeys"
956//   The maximum number of public keys for field-level encryption have been created.
957//   To create a new public key, delete one of the existing keys.
958//
959// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreatePublicKey
960func (c *CloudFront) CreatePublicKey(input *CreatePublicKeyInput) (*CreatePublicKeyOutput, error) {
961	req, out := c.CreatePublicKeyRequest(input)
962	return out, req.Send()
963}
964
965// CreatePublicKeyWithContext is the same as CreatePublicKey with the addition of
966// the ability to pass a context and additional request options.
967//
968// See CreatePublicKey for details on how to use this API operation.
969//
970// The context must be non-nil and will be used for request cancellation. If
971// the context is nil a panic will occur. In the future the SDK may create
972// sub-contexts for http.Requests. See https://golang.org/pkg/context/
973// for more information on using Contexts.
974func (c *CloudFront) CreatePublicKeyWithContext(ctx aws.Context, input *CreatePublicKeyInput, opts ...request.Option) (*CreatePublicKeyOutput, error) {
975	req, out := c.CreatePublicKeyRequest(input)
976	req.SetContext(ctx)
977	req.ApplyOptions(opts...)
978	return out, req.Send()
979}
980
981const opCreateStreamingDistribution = "CreateStreamingDistribution2019_03_26"
982
983// CreateStreamingDistributionRequest generates a "aws/request.Request" representing the
984// client's request for the CreateStreamingDistribution operation. The "output" return
985// value will be populated with the request's response once the request completes
986// successfully.
987//
988// Use "Send" method on the returned Request to send the API call to the service.
989// the "output" return value is not valid until after Send returns without error.
990//
991// See CreateStreamingDistribution for more information on using the CreateStreamingDistribution
992// API call, and error handling.
993//
994// This method is useful when you want to inject custom logic or configuration
995// into the SDK's request lifecycle. Such as custom headers, or retry logic.
996//
997//
998//    // Example sending a request using the CreateStreamingDistributionRequest method.
999//    req, resp := client.CreateStreamingDistributionRequest(params)
1000//
1001//    err := req.Send()
1002//    if err == nil { // resp is now filled
1003//        fmt.Println(resp)
1004//    }
1005//
1006// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateStreamingDistribution
1007func (c *CloudFront) CreateStreamingDistributionRequest(input *CreateStreamingDistributionInput) (req *request.Request, output *CreateStreamingDistributionOutput) {
1008	op := &request.Operation{
1009		Name:       opCreateStreamingDistribution,
1010		HTTPMethod: "POST",
1011		HTTPPath:   "/2019-03-26/streaming-distribution",
1012	}
1013
1014	if input == nil {
1015		input = &CreateStreamingDistributionInput{}
1016	}
1017
1018	output = &CreateStreamingDistributionOutput{}
1019	req = c.newRequest(op, input, output)
1020	return
1021}
1022
1023// CreateStreamingDistribution API operation for Amazon CloudFront.
1024//
1025// Creates a new RTMP distribution. An RTMP distribution is similar to a web
1026// distribution, but an RTMP distribution streams media files using the Adobe
1027// Real-Time Messaging Protocol (RTMP) instead of serving files using HTTP.
1028//
1029// To create a new distribution, submit a POST request to the CloudFront API
1030// version/distribution resource. The request body must include a document with
1031// a StreamingDistributionConfig element. The response echoes the StreamingDistributionConfig
1032// element and returns other information about the RTMP distribution.
1033//
1034// To get the status of your request, use the GET StreamingDistribution API
1035// action. When the value of Enabled is true and the value of Status is Deployed,
1036// your distribution is ready. A distribution usually deploys in less than 15
1037// minutes.
1038//
1039// For more information about web distributions, see Working with RTMP Distributions
1040// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-rtmp.html)
1041// in the Amazon CloudFront Developer Guide.
1042//
1043// Beginning with the 2012-05-05 version of the CloudFront API, we made substantial
1044// changes to the format of the XML document that you include in the request
1045// body when you create or update a web distribution or an RTMP distribution,
1046// and when you invalidate objects. With previous versions of the API, we discovered
1047// that it was too easy to accidentally delete one or more values for an element
1048// that accepts multiple values, for example, CNAMEs and trusted signers. Our
1049// changes for the 2012-05-05 release are intended to prevent these accidental
1050// deletions and to notify you when there's a mismatch between the number of
1051// values you say you're specifying in the Quantity element and the number of
1052// values specified.
1053//
1054// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1055// with awserr.Error's Code and Message methods to get detailed information about
1056// the error.
1057//
1058// See the AWS API reference guide for Amazon CloudFront's
1059// API operation CreateStreamingDistribution for usage and error information.
1060//
1061// Returned Error Codes:
1062//   * ErrCodeCNAMEAlreadyExists "CNAMEAlreadyExists"
1063//   The CNAME specified is already defined for CloudFront.
1064//
1065//   * ErrCodeStreamingDistributionAlreadyExists "StreamingDistributionAlreadyExists"
1066//   The caller reference you attempted to create the streaming distribution with
1067//   is associated with another distribution
1068//
1069//   * ErrCodeInvalidOrigin "InvalidOrigin"
1070//   The Amazon S3 origin server specified does not refer to a valid Amazon S3
1071//   bucket.
1072//
1073//   * ErrCodeInvalidOriginAccessIdentity "InvalidOriginAccessIdentity"
1074//   The origin access identity is not valid or doesn't exist.
1075//
1076//   * ErrCodeAccessDenied "AccessDenied"
1077//   Access denied.
1078//
1079//   * ErrCodeTooManyTrustedSigners "TooManyTrustedSigners"
1080//   Your request contains more trusted signers than are allowed per distribution.
1081//
1082//   * ErrCodeTrustedSignerDoesNotExist "TrustedSignerDoesNotExist"
1083//   One or more of your trusted signers don't exist.
1084//
1085//   * ErrCodeMissingBody "MissingBody"
1086//   This operation requires a body. Ensure that the body is present and the Content-Type
1087//   header is set.
1088//
1089//   * ErrCodeTooManyStreamingDistributionCNAMEs "TooManyStreamingDistributionCNAMEs"
1090//   Your request contains more CNAMEs than are allowed per distribution.
1091//
1092//   * ErrCodeTooManyStreamingDistributions "TooManyStreamingDistributions"
1093//   Processing your request would cause you to exceed the maximum number of streaming
1094//   distributions allowed.
1095//
1096//   * ErrCodeInvalidArgument "InvalidArgument"
1097//   The argument is invalid.
1098//
1099//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
1100//   The value of Quantity and the size of Items don't match.
1101//
1102// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateStreamingDistribution
1103func (c *CloudFront) CreateStreamingDistribution(input *CreateStreamingDistributionInput) (*CreateStreamingDistributionOutput, error) {
1104	req, out := c.CreateStreamingDistributionRequest(input)
1105	return out, req.Send()
1106}
1107
1108// CreateStreamingDistributionWithContext is the same as CreateStreamingDistribution with the addition of
1109// the ability to pass a context and additional request options.
1110//
1111// See CreateStreamingDistribution for details on how to use this API operation.
1112//
1113// The context must be non-nil and will be used for request cancellation. If
1114// the context is nil a panic will occur. In the future the SDK may create
1115// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1116// for more information on using Contexts.
1117func (c *CloudFront) CreateStreamingDistributionWithContext(ctx aws.Context, input *CreateStreamingDistributionInput, opts ...request.Option) (*CreateStreamingDistributionOutput, error) {
1118	req, out := c.CreateStreamingDistributionRequest(input)
1119	req.SetContext(ctx)
1120	req.ApplyOptions(opts...)
1121	return out, req.Send()
1122}
1123
1124const opCreateStreamingDistributionWithTags = "CreateStreamingDistributionWithTags2019_03_26"
1125
1126// CreateStreamingDistributionWithTagsRequest generates a "aws/request.Request" representing the
1127// client's request for the CreateStreamingDistributionWithTags operation. The "output" return
1128// value will be populated with the request's response once the request completes
1129// successfully.
1130//
1131// Use "Send" method on the returned Request to send the API call to the service.
1132// the "output" return value is not valid until after Send returns without error.
1133//
1134// See CreateStreamingDistributionWithTags for more information on using the CreateStreamingDistributionWithTags
1135// API call, and error handling.
1136//
1137// This method is useful when you want to inject custom logic or configuration
1138// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1139//
1140//
1141//    // Example sending a request using the CreateStreamingDistributionWithTagsRequest method.
1142//    req, resp := client.CreateStreamingDistributionWithTagsRequest(params)
1143//
1144//    err := req.Send()
1145//    if err == nil { // resp is now filled
1146//        fmt.Println(resp)
1147//    }
1148//
1149// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateStreamingDistributionWithTags
1150func (c *CloudFront) CreateStreamingDistributionWithTagsRequest(input *CreateStreamingDistributionWithTagsInput) (req *request.Request, output *CreateStreamingDistributionWithTagsOutput) {
1151	op := &request.Operation{
1152		Name:       opCreateStreamingDistributionWithTags,
1153		HTTPMethod: "POST",
1154		HTTPPath:   "/2019-03-26/streaming-distribution?WithTags",
1155	}
1156
1157	if input == nil {
1158		input = &CreateStreamingDistributionWithTagsInput{}
1159	}
1160
1161	output = &CreateStreamingDistributionWithTagsOutput{}
1162	req = c.newRequest(op, input, output)
1163	return
1164}
1165
1166// CreateStreamingDistributionWithTags API operation for Amazon CloudFront.
1167//
1168// Create a new streaming distribution with tags.
1169//
1170// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1171// with awserr.Error's Code and Message methods to get detailed information about
1172// the error.
1173//
1174// See the AWS API reference guide for Amazon CloudFront's
1175// API operation CreateStreamingDistributionWithTags for usage and error information.
1176//
1177// Returned Error Codes:
1178//   * ErrCodeCNAMEAlreadyExists "CNAMEAlreadyExists"
1179//   The CNAME specified is already defined for CloudFront.
1180//
1181//   * ErrCodeStreamingDistributionAlreadyExists "StreamingDistributionAlreadyExists"
1182//   The caller reference you attempted to create the streaming distribution with
1183//   is associated with another distribution
1184//
1185//   * ErrCodeInvalidOrigin "InvalidOrigin"
1186//   The Amazon S3 origin server specified does not refer to a valid Amazon S3
1187//   bucket.
1188//
1189//   * ErrCodeInvalidOriginAccessIdentity "InvalidOriginAccessIdentity"
1190//   The origin access identity is not valid or doesn't exist.
1191//
1192//   * ErrCodeAccessDenied "AccessDenied"
1193//   Access denied.
1194//
1195//   * ErrCodeTooManyTrustedSigners "TooManyTrustedSigners"
1196//   Your request contains more trusted signers than are allowed per distribution.
1197//
1198//   * ErrCodeTrustedSignerDoesNotExist "TrustedSignerDoesNotExist"
1199//   One or more of your trusted signers don't exist.
1200//
1201//   * ErrCodeMissingBody "MissingBody"
1202//   This operation requires a body. Ensure that the body is present and the Content-Type
1203//   header is set.
1204//
1205//   * ErrCodeTooManyStreamingDistributionCNAMEs "TooManyStreamingDistributionCNAMEs"
1206//   Your request contains more CNAMEs than are allowed per distribution.
1207//
1208//   * ErrCodeTooManyStreamingDistributions "TooManyStreamingDistributions"
1209//   Processing your request would cause you to exceed the maximum number of streaming
1210//   distributions allowed.
1211//
1212//   * ErrCodeInvalidArgument "InvalidArgument"
1213//   The argument is invalid.
1214//
1215//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
1216//   The value of Quantity and the size of Items don't match.
1217//
1218//   * ErrCodeInvalidTagging "InvalidTagging"
1219//   Tagging specified in the response body is not valid.
1220//
1221// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/CreateStreamingDistributionWithTags
1222func (c *CloudFront) CreateStreamingDistributionWithTags(input *CreateStreamingDistributionWithTagsInput) (*CreateStreamingDistributionWithTagsOutput, error) {
1223	req, out := c.CreateStreamingDistributionWithTagsRequest(input)
1224	return out, req.Send()
1225}
1226
1227// CreateStreamingDistributionWithTagsWithContext is the same as CreateStreamingDistributionWithTags with the addition of
1228// the ability to pass a context and additional request options.
1229//
1230// See CreateStreamingDistributionWithTags for details on how to use this API operation.
1231//
1232// The context must be non-nil and will be used for request cancellation. If
1233// the context is nil a panic will occur. In the future the SDK may create
1234// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1235// for more information on using Contexts.
1236func (c *CloudFront) CreateStreamingDistributionWithTagsWithContext(ctx aws.Context, input *CreateStreamingDistributionWithTagsInput, opts ...request.Option) (*CreateStreamingDistributionWithTagsOutput, error) {
1237	req, out := c.CreateStreamingDistributionWithTagsRequest(input)
1238	req.SetContext(ctx)
1239	req.ApplyOptions(opts...)
1240	return out, req.Send()
1241}
1242
1243const opDeleteCloudFrontOriginAccessIdentity = "DeleteCloudFrontOriginAccessIdentity2019_03_26"
1244
1245// DeleteCloudFrontOriginAccessIdentityRequest generates a "aws/request.Request" representing the
1246// client's request for the DeleteCloudFrontOriginAccessIdentity operation. The "output" return
1247// value will be populated with the request's response once the request completes
1248// successfully.
1249//
1250// Use "Send" method on the returned Request to send the API call to the service.
1251// the "output" return value is not valid until after Send returns without error.
1252//
1253// See DeleteCloudFrontOriginAccessIdentity for more information on using the DeleteCloudFrontOriginAccessIdentity
1254// API call, and error handling.
1255//
1256// This method is useful when you want to inject custom logic or configuration
1257// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1258//
1259//
1260//    // Example sending a request using the DeleteCloudFrontOriginAccessIdentityRequest method.
1261//    req, resp := client.DeleteCloudFrontOriginAccessIdentityRequest(params)
1262//
1263//    err := req.Send()
1264//    if err == nil { // resp is now filled
1265//        fmt.Println(resp)
1266//    }
1267//
1268// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteCloudFrontOriginAccessIdentity
1269func (c *CloudFront) DeleteCloudFrontOriginAccessIdentityRequest(input *DeleteCloudFrontOriginAccessIdentityInput) (req *request.Request, output *DeleteCloudFrontOriginAccessIdentityOutput) {
1270	op := &request.Operation{
1271		Name:       opDeleteCloudFrontOriginAccessIdentity,
1272		HTTPMethod: "DELETE",
1273		HTTPPath:   "/2019-03-26/origin-access-identity/cloudfront/{Id}",
1274	}
1275
1276	if input == nil {
1277		input = &DeleteCloudFrontOriginAccessIdentityInput{}
1278	}
1279
1280	output = &DeleteCloudFrontOriginAccessIdentityOutput{}
1281	req = c.newRequest(op, input, output)
1282	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1283	return
1284}
1285
1286// DeleteCloudFrontOriginAccessIdentity API operation for Amazon CloudFront.
1287//
1288// Delete an origin access identity.
1289//
1290// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1291// with awserr.Error's Code and Message methods to get detailed information about
1292// the error.
1293//
1294// See the AWS API reference guide for Amazon CloudFront's
1295// API operation DeleteCloudFrontOriginAccessIdentity for usage and error information.
1296//
1297// Returned Error Codes:
1298//   * ErrCodeAccessDenied "AccessDenied"
1299//   Access denied.
1300//
1301//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
1302//   The If-Match version is missing or not valid for the distribution.
1303//
1304//   * ErrCodeNoSuchCloudFrontOriginAccessIdentity "NoSuchCloudFrontOriginAccessIdentity"
1305//   The specified origin access identity does not exist.
1306//
1307//   * ErrCodePreconditionFailed "PreconditionFailed"
1308//   The precondition given in one or more of the request-header fields evaluated
1309//   to false.
1310//
1311//   * ErrCodeOriginAccessIdentityInUse "CloudFrontOriginAccessIdentityInUse"
1312//   The Origin Access Identity specified is already in use.
1313//
1314// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteCloudFrontOriginAccessIdentity
1315func (c *CloudFront) DeleteCloudFrontOriginAccessIdentity(input *DeleteCloudFrontOriginAccessIdentityInput) (*DeleteCloudFrontOriginAccessIdentityOutput, error) {
1316	req, out := c.DeleteCloudFrontOriginAccessIdentityRequest(input)
1317	return out, req.Send()
1318}
1319
1320// DeleteCloudFrontOriginAccessIdentityWithContext is the same as DeleteCloudFrontOriginAccessIdentity with the addition of
1321// the ability to pass a context and additional request options.
1322//
1323// See DeleteCloudFrontOriginAccessIdentity for details on how to use this API operation.
1324//
1325// The context must be non-nil and will be used for request cancellation. If
1326// the context is nil a panic will occur. In the future the SDK may create
1327// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1328// for more information on using Contexts.
1329func (c *CloudFront) DeleteCloudFrontOriginAccessIdentityWithContext(ctx aws.Context, input *DeleteCloudFrontOriginAccessIdentityInput, opts ...request.Option) (*DeleteCloudFrontOriginAccessIdentityOutput, error) {
1330	req, out := c.DeleteCloudFrontOriginAccessIdentityRequest(input)
1331	req.SetContext(ctx)
1332	req.ApplyOptions(opts...)
1333	return out, req.Send()
1334}
1335
1336const opDeleteDistribution = "DeleteDistribution2019_03_26"
1337
1338// DeleteDistributionRequest generates a "aws/request.Request" representing the
1339// client's request for the DeleteDistribution operation. The "output" return
1340// value will be populated with the request's response once the request completes
1341// successfully.
1342//
1343// Use "Send" method on the returned Request to send the API call to the service.
1344// the "output" return value is not valid until after Send returns without error.
1345//
1346// See DeleteDistribution for more information on using the DeleteDistribution
1347// API call, and error handling.
1348//
1349// This method is useful when you want to inject custom logic or configuration
1350// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1351//
1352//
1353//    // Example sending a request using the DeleteDistributionRequest method.
1354//    req, resp := client.DeleteDistributionRequest(params)
1355//
1356//    err := req.Send()
1357//    if err == nil { // resp is now filled
1358//        fmt.Println(resp)
1359//    }
1360//
1361// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteDistribution
1362func (c *CloudFront) DeleteDistributionRequest(input *DeleteDistributionInput) (req *request.Request, output *DeleteDistributionOutput) {
1363	op := &request.Operation{
1364		Name:       opDeleteDistribution,
1365		HTTPMethod: "DELETE",
1366		HTTPPath:   "/2019-03-26/distribution/{Id}",
1367	}
1368
1369	if input == nil {
1370		input = &DeleteDistributionInput{}
1371	}
1372
1373	output = &DeleteDistributionOutput{}
1374	req = c.newRequest(op, input, output)
1375	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1376	return
1377}
1378
1379// DeleteDistribution API operation for Amazon CloudFront.
1380//
1381// Delete a distribution.
1382//
1383// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1384// with awserr.Error's Code and Message methods to get detailed information about
1385// the error.
1386//
1387// See the AWS API reference guide for Amazon CloudFront's
1388// API operation DeleteDistribution for usage and error information.
1389//
1390// Returned Error Codes:
1391//   * ErrCodeAccessDenied "AccessDenied"
1392//   Access denied.
1393//
1394//   * ErrCodeDistributionNotDisabled "DistributionNotDisabled"
1395//   The specified CloudFront distribution is not disabled. You must disable the
1396//   distribution before you can delete it.
1397//
1398//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
1399//   The If-Match version is missing or not valid for the distribution.
1400//
1401//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
1402//   The specified distribution does not exist.
1403//
1404//   * ErrCodePreconditionFailed "PreconditionFailed"
1405//   The precondition given in one or more of the request-header fields evaluated
1406//   to false.
1407//
1408// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteDistribution
1409func (c *CloudFront) DeleteDistribution(input *DeleteDistributionInput) (*DeleteDistributionOutput, error) {
1410	req, out := c.DeleteDistributionRequest(input)
1411	return out, req.Send()
1412}
1413
1414// DeleteDistributionWithContext is the same as DeleteDistribution with the addition of
1415// the ability to pass a context and additional request options.
1416//
1417// See DeleteDistribution for details on how to use this API operation.
1418//
1419// The context must be non-nil and will be used for request cancellation. If
1420// the context is nil a panic will occur. In the future the SDK may create
1421// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1422// for more information on using Contexts.
1423func (c *CloudFront) DeleteDistributionWithContext(ctx aws.Context, input *DeleteDistributionInput, opts ...request.Option) (*DeleteDistributionOutput, error) {
1424	req, out := c.DeleteDistributionRequest(input)
1425	req.SetContext(ctx)
1426	req.ApplyOptions(opts...)
1427	return out, req.Send()
1428}
1429
1430const opDeleteFieldLevelEncryptionConfig = "DeleteFieldLevelEncryptionConfig2019_03_26"
1431
1432// DeleteFieldLevelEncryptionConfigRequest generates a "aws/request.Request" representing the
1433// client's request for the DeleteFieldLevelEncryptionConfig operation. The "output" return
1434// value will be populated with the request's response once the request completes
1435// successfully.
1436//
1437// Use "Send" method on the returned Request to send the API call to the service.
1438// the "output" return value is not valid until after Send returns without error.
1439//
1440// See DeleteFieldLevelEncryptionConfig for more information on using the DeleteFieldLevelEncryptionConfig
1441// API call, and error handling.
1442//
1443// This method is useful when you want to inject custom logic or configuration
1444// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1445//
1446//
1447//    // Example sending a request using the DeleteFieldLevelEncryptionConfigRequest method.
1448//    req, resp := client.DeleteFieldLevelEncryptionConfigRequest(params)
1449//
1450//    err := req.Send()
1451//    if err == nil { // resp is now filled
1452//        fmt.Println(resp)
1453//    }
1454//
1455// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteFieldLevelEncryptionConfig
1456func (c *CloudFront) DeleteFieldLevelEncryptionConfigRequest(input *DeleteFieldLevelEncryptionConfigInput) (req *request.Request, output *DeleteFieldLevelEncryptionConfigOutput) {
1457	op := &request.Operation{
1458		Name:       opDeleteFieldLevelEncryptionConfig,
1459		HTTPMethod: "DELETE",
1460		HTTPPath:   "/2019-03-26/field-level-encryption/{Id}",
1461	}
1462
1463	if input == nil {
1464		input = &DeleteFieldLevelEncryptionConfigInput{}
1465	}
1466
1467	output = &DeleteFieldLevelEncryptionConfigOutput{}
1468	req = c.newRequest(op, input, output)
1469	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1470	return
1471}
1472
1473// DeleteFieldLevelEncryptionConfig API operation for Amazon CloudFront.
1474//
1475// Remove a field-level encryption configuration.
1476//
1477// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1478// with awserr.Error's Code and Message methods to get detailed information about
1479// the error.
1480//
1481// See the AWS API reference guide for Amazon CloudFront's
1482// API operation DeleteFieldLevelEncryptionConfig for usage and error information.
1483//
1484// Returned Error Codes:
1485//   * ErrCodeAccessDenied "AccessDenied"
1486//   Access denied.
1487//
1488//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
1489//   The If-Match version is missing or not valid for the distribution.
1490//
1491//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
1492//   The specified configuration for field-level encryption doesn't exist.
1493//
1494//   * ErrCodePreconditionFailed "PreconditionFailed"
1495//   The precondition given in one or more of the request-header fields evaluated
1496//   to false.
1497//
1498//   * ErrCodeFieldLevelEncryptionConfigInUse "FieldLevelEncryptionConfigInUse"
1499//   The specified configuration for field-level encryption is in use.
1500//
1501// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteFieldLevelEncryptionConfig
1502func (c *CloudFront) DeleteFieldLevelEncryptionConfig(input *DeleteFieldLevelEncryptionConfigInput) (*DeleteFieldLevelEncryptionConfigOutput, error) {
1503	req, out := c.DeleteFieldLevelEncryptionConfigRequest(input)
1504	return out, req.Send()
1505}
1506
1507// DeleteFieldLevelEncryptionConfigWithContext is the same as DeleteFieldLevelEncryptionConfig with the addition of
1508// the ability to pass a context and additional request options.
1509//
1510// See DeleteFieldLevelEncryptionConfig for details on how to use this API operation.
1511//
1512// The context must be non-nil and will be used for request cancellation. If
1513// the context is nil a panic will occur. In the future the SDK may create
1514// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1515// for more information on using Contexts.
1516func (c *CloudFront) DeleteFieldLevelEncryptionConfigWithContext(ctx aws.Context, input *DeleteFieldLevelEncryptionConfigInput, opts ...request.Option) (*DeleteFieldLevelEncryptionConfigOutput, error) {
1517	req, out := c.DeleteFieldLevelEncryptionConfigRequest(input)
1518	req.SetContext(ctx)
1519	req.ApplyOptions(opts...)
1520	return out, req.Send()
1521}
1522
1523const opDeleteFieldLevelEncryptionProfile = "DeleteFieldLevelEncryptionProfile2019_03_26"
1524
1525// DeleteFieldLevelEncryptionProfileRequest generates a "aws/request.Request" representing the
1526// client's request for the DeleteFieldLevelEncryptionProfile operation. The "output" return
1527// value will be populated with the request's response once the request completes
1528// successfully.
1529//
1530// Use "Send" method on the returned Request to send the API call to the service.
1531// the "output" return value is not valid until after Send returns without error.
1532//
1533// See DeleteFieldLevelEncryptionProfile for more information on using the DeleteFieldLevelEncryptionProfile
1534// API call, and error handling.
1535//
1536// This method is useful when you want to inject custom logic or configuration
1537// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1538//
1539//
1540//    // Example sending a request using the DeleteFieldLevelEncryptionProfileRequest method.
1541//    req, resp := client.DeleteFieldLevelEncryptionProfileRequest(params)
1542//
1543//    err := req.Send()
1544//    if err == nil { // resp is now filled
1545//        fmt.Println(resp)
1546//    }
1547//
1548// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteFieldLevelEncryptionProfile
1549func (c *CloudFront) DeleteFieldLevelEncryptionProfileRequest(input *DeleteFieldLevelEncryptionProfileInput) (req *request.Request, output *DeleteFieldLevelEncryptionProfileOutput) {
1550	op := &request.Operation{
1551		Name:       opDeleteFieldLevelEncryptionProfile,
1552		HTTPMethod: "DELETE",
1553		HTTPPath:   "/2019-03-26/field-level-encryption-profile/{Id}",
1554	}
1555
1556	if input == nil {
1557		input = &DeleteFieldLevelEncryptionProfileInput{}
1558	}
1559
1560	output = &DeleteFieldLevelEncryptionProfileOutput{}
1561	req = c.newRequest(op, input, output)
1562	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1563	return
1564}
1565
1566// DeleteFieldLevelEncryptionProfile API operation for Amazon CloudFront.
1567//
1568// Remove a field-level encryption profile.
1569//
1570// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1571// with awserr.Error's Code and Message methods to get detailed information about
1572// the error.
1573//
1574// See the AWS API reference guide for Amazon CloudFront's
1575// API operation DeleteFieldLevelEncryptionProfile for usage and error information.
1576//
1577// Returned Error Codes:
1578//   * ErrCodeAccessDenied "AccessDenied"
1579//   Access denied.
1580//
1581//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
1582//   The If-Match version is missing or not valid for the distribution.
1583//
1584//   * ErrCodeNoSuchFieldLevelEncryptionProfile "NoSuchFieldLevelEncryptionProfile"
1585//   The specified profile for field-level encryption doesn't exist.
1586//
1587//   * ErrCodePreconditionFailed "PreconditionFailed"
1588//   The precondition given in one or more of the request-header fields evaluated
1589//   to false.
1590//
1591//   * ErrCodeFieldLevelEncryptionProfileInUse "FieldLevelEncryptionProfileInUse"
1592//   The specified profile for field-level encryption is in use.
1593//
1594// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteFieldLevelEncryptionProfile
1595func (c *CloudFront) DeleteFieldLevelEncryptionProfile(input *DeleteFieldLevelEncryptionProfileInput) (*DeleteFieldLevelEncryptionProfileOutput, error) {
1596	req, out := c.DeleteFieldLevelEncryptionProfileRequest(input)
1597	return out, req.Send()
1598}
1599
1600// DeleteFieldLevelEncryptionProfileWithContext is the same as DeleteFieldLevelEncryptionProfile with the addition of
1601// the ability to pass a context and additional request options.
1602//
1603// See DeleteFieldLevelEncryptionProfile for details on how to use this API operation.
1604//
1605// The context must be non-nil and will be used for request cancellation. If
1606// the context is nil a panic will occur. In the future the SDK may create
1607// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1608// for more information on using Contexts.
1609func (c *CloudFront) DeleteFieldLevelEncryptionProfileWithContext(ctx aws.Context, input *DeleteFieldLevelEncryptionProfileInput, opts ...request.Option) (*DeleteFieldLevelEncryptionProfileOutput, error) {
1610	req, out := c.DeleteFieldLevelEncryptionProfileRequest(input)
1611	req.SetContext(ctx)
1612	req.ApplyOptions(opts...)
1613	return out, req.Send()
1614}
1615
1616const opDeletePublicKey = "DeletePublicKey2019_03_26"
1617
1618// DeletePublicKeyRequest generates a "aws/request.Request" representing the
1619// client's request for the DeletePublicKey operation. The "output" return
1620// value will be populated with the request's response once the request completes
1621// successfully.
1622//
1623// Use "Send" method on the returned Request to send the API call to the service.
1624// the "output" return value is not valid until after Send returns without error.
1625//
1626// See DeletePublicKey for more information on using the DeletePublicKey
1627// API call, and error handling.
1628//
1629// This method is useful when you want to inject custom logic or configuration
1630// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1631//
1632//
1633//    // Example sending a request using the DeletePublicKeyRequest method.
1634//    req, resp := client.DeletePublicKeyRequest(params)
1635//
1636//    err := req.Send()
1637//    if err == nil { // resp is now filled
1638//        fmt.Println(resp)
1639//    }
1640//
1641// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeletePublicKey
1642func (c *CloudFront) DeletePublicKeyRequest(input *DeletePublicKeyInput) (req *request.Request, output *DeletePublicKeyOutput) {
1643	op := &request.Operation{
1644		Name:       opDeletePublicKey,
1645		HTTPMethod: "DELETE",
1646		HTTPPath:   "/2019-03-26/public-key/{Id}",
1647	}
1648
1649	if input == nil {
1650		input = &DeletePublicKeyInput{}
1651	}
1652
1653	output = &DeletePublicKeyOutput{}
1654	req = c.newRequest(op, input, output)
1655	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1656	return
1657}
1658
1659// DeletePublicKey API operation for Amazon CloudFront.
1660//
1661// Remove a public key you previously added to CloudFront.
1662//
1663// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1664// with awserr.Error's Code and Message methods to get detailed information about
1665// the error.
1666//
1667// See the AWS API reference guide for Amazon CloudFront's
1668// API operation DeletePublicKey for usage and error information.
1669//
1670// Returned Error Codes:
1671//   * ErrCodeAccessDenied "AccessDenied"
1672//   Access denied.
1673//
1674//   * ErrCodePublicKeyInUse "PublicKeyInUse"
1675//   The specified public key is in use.
1676//
1677//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
1678//   The If-Match version is missing or not valid for the distribution.
1679//
1680//   * ErrCodeNoSuchPublicKey "NoSuchPublicKey"
1681//   The specified public key doesn't exist.
1682//
1683//   * ErrCodePreconditionFailed "PreconditionFailed"
1684//   The precondition given in one or more of the request-header fields evaluated
1685//   to false.
1686//
1687// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeletePublicKey
1688func (c *CloudFront) DeletePublicKey(input *DeletePublicKeyInput) (*DeletePublicKeyOutput, error) {
1689	req, out := c.DeletePublicKeyRequest(input)
1690	return out, req.Send()
1691}
1692
1693// DeletePublicKeyWithContext is the same as DeletePublicKey with the addition of
1694// the ability to pass a context and additional request options.
1695//
1696// See DeletePublicKey for details on how to use this API operation.
1697//
1698// The context must be non-nil and will be used for request cancellation. If
1699// the context is nil a panic will occur. In the future the SDK may create
1700// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1701// for more information on using Contexts.
1702func (c *CloudFront) DeletePublicKeyWithContext(ctx aws.Context, input *DeletePublicKeyInput, opts ...request.Option) (*DeletePublicKeyOutput, error) {
1703	req, out := c.DeletePublicKeyRequest(input)
1704	req.SetContext(ctx)
1705	req.ApplyOptions(opts...)
1706	return out, req.Send()
1707}
1708
1709const opDeleteStreamingDistribution = "DeleteStreamingDistribution2019_03_26"
1710
1711// DeleteStreamingDistributionRequest generates a "aws/request.Request" representing the
1712// client's request for the DeleteStreamingDistribution operation. The "output" return
1713// value will be populated with the request's response once the request completes
1714// successfully.
1715//
1716// Use "Send" method on the returned Request to send the API call to the service.
1717// the "output" return value is not valid until after Send returns without error.
1718//
1719// See DeleteStreamingDistribution for more information on using the DeleteStreamingDistribution
1720// API call, and error handling.
1721//
1722// This method is useful when you want to inject custom logic or configuration
1723// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1724//
1725//
1726//    // Example sending a request using the DeleteStreamingDistributionRequest method.
1727//    req, resp := client.DeleteStreamingDistributionRequest(params)
1728//
1729//    err := req.Send()
1730//    if err == nil { // resp is now filled
1731//        fmt.Println(resp)
1732//    }
1733//
1734// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteStreamingDistribution
1735func (c *CloudFront) DeleteStreamingDistributionRequest(input *DeleteStreamingDistributionInput) (req *request.Request, output *DeleteStreamingDistributionOutput) {
1736	op := &request.Operation{
1737		Name:       opDeleteStreamingDistribution,
1738		HTTPMethod: "DELETE",
1739		HTTPPath:   "/2019-03-26/streaming-distribution/{Id}",
1740	}
1741
1742	if input == nil {
1743		input = &DeleteStreamingDistributionInput{}
1744	}
1745
1746	output = &DeleteStreamingDistributionOutput{}
1747	req = c.newRequest(op, input, output)
1748	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1749	return
1750}
1751
1752// DeleteStreamingDistribution API operation for Amazon CloudFront.
1753//
1754// Delete a streaming distribution. To delete an RTMP distribution using the
1755// CloudFront API, perform the following steps.
1756//
1757// To delete an RTMP distribution using the CloudFront API:
1758//
1759// Disable the RTMP distribution.
1760//
1761// Submit a GET Streaming Distribution Config request to get the current configuration
1762// and the Etag header for the distribution.
1763//
1764// Update the XML document that was returned in the response to your GET Streaming
1765// Distribution Config request to change the value of Enabled to false.
1766//
1767// Submit a PUT Streaming Distribution Config request to update the configuration
1768// for your distribution. In the request body, include the XML document that
1769// you updated in Step 3. Then set the value of the HTTP If-Match header to
1770// the value of the ETag header that CloudFront returned when you submitted
1771// the GET Streaming Distribution Config request in Step 2.
1772//
1773// Review the response to the PUT Streaming Distribution Config request to confirm
1774// that the distribution was successfully disabled.
1775//
1776// Submit a GET Streaming Distribution Config request to confirm that your changes
1777// have propagated. When propagation is complete, the value of Status is Deployed.
1778//
1779// Submit a DELETE Streaming Distribution request. Set the value of the HTTP
1780// If-Match header to the value of the ETag header that CloudFront returned
1781// when you submitted the GET Streaming Distribution Config request in Step
1782// 2.
1783//
1784// Review the response to your DELETE Streaming Distribution request to confirm
1785// that the distribution was successfully deleted.
1786//
1787// For information about deleting a distribution using the CloudFront console,
1788// see Deleting a Distribution (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowToDeleteDistribution.html)
1789// in the Amazon CloudFront Developer Guide.
1790//
1791// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1792// with awserr.Error's Code and Message methods to get detailed information about
1793// the error.
1794//
1795// See the AWS API reference guide for Amazon CloudFront's
1796// API operation DeleteStreamingDistribution for usage and error information.
1797//
1798// Returned Error Codes:
1799//   * ErrCodeAccessDenied "AccessDenied"
1800//   Access denied.
1801//
1802//   * ErrCodeStreamingDistributionNotDisabled "StreamingDistributionNotDisabled"
1803//   The specified CloudFront distribution is not disabled. You must disable the
1804//   distribution before you can delete it.
1805//
1806//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
1807//   The If-Match version is missing or not valid for the distribution.
1808//
1809//   * ErrCodeNoSuchStreamingDistribution "NoSuchStreamingDistribution"
1810//   The specified streaming distribution does not exist.
1811//
1812//   * ErrCodePreconditionFailed "PreconditionFailed"
1813//   The precondition given in one or more of the request-header fields evaluated
1814//   to false.
1815//
1816// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/DeleteStreamingDistribution
1817func (c *CloudFront) DeleteStreamingDistribution(input *DeleteStreamingDistributionInput) (*DeleteStreamingDistributionOutput, error) {
1818	req, out := c.DeleteStreamingDistributionRequest(input)
1819	return out, req.Send()
1820}
1821
1822// DeleteStreamingDistributionWithContext is the same as DeleteStreamingDistribution with the addition of
1823// the ability to pass a context and additional request options.
1824//
1825// See DeleteStreamingDistribution for details on how to use this API operation.
1826//
1827// The context must be non-nil and will be used for request cancellation. If
1828// the context is nil a panic will occur. In the future the SDK may create
1829// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1830// for more information on using Contexts.
1831func (c *CloudFront) DeleteStreamingDistributionWithContext(ctx aws.Context, input *DeleteStreamingDistributionInput, opts ...request.Option) (*DeleteStreamingDistributionOutput, error) {
1832	req, out := c.DeleteStreamingDistributionRequest(input)
1833	req.SetContext(ctx)
1834	req.ApplyOptions(opts...)
1835	return out, req.Send()
1836}
1837
1838const opGetCloudFrontOriginAccessIdentity = "GetCloudFrontOriginAccessIdentity2019_03_26"
1839
1840// GetCloudFrontOriginAccessIdentityRequest generates a "aws/request.Request" representing the
1841// client's request for the GetCloudFrontOriginAccessIdentity operation. The "output" return
1842// value will be populated with the request's response once the request completes
1843// successfully.
1844//
1845// Use "Send" method on the returned Request to send the API call to the service.
1846// the "output" return value is not valid until after Send returns without error.
1847//
1848// See GetCloudFrontOriginAccessIdentity for more information on using the GetCloudFrontOriginAccessIdentity
1849// API call, and error handling.
1850//
1851// This method is useful when you want to inject custom logic or configuration
1852// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1853//
1854//
1855//    // Example sending a request using the GetCloudFrontOriginAccessIdentityRequest method.
1856//    req, resp := client.GetCloudFrontOriginAccessIdentityRequest(params)
1857//
1858//    err := req.Send()
1859//    if err == nil { // resp is now filled
1860//        fmt.Println(resp)
1861//    }
1862//
1863// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetCloudFrontOriginAccessIdentity
1864func (c *CloudFront) GetCloudFrontOriginAccessIdentityRequest(input *GetCloudFrontOriginAccessIdentityInput) (req *request.Request, output *GetCloudFrontOriginAccessIdentityOutput) {
1865	op := &request.Operation{
1866		Name:       opGetCloudFrontOriginAccessIdentity,
1867		HTTPMethod: "GET",
1868		HTTPPath:   "/2019-03-26/origin-access-identity/cloudfront/{Id}",
1869	}
1870
1871	if input == nil {
1872		input = &GetCloudFrontOriginAccessIdentityInput{}
1873	}
1874
1875	output = &GetCloudFrontOriginAccessIdentityOutput{}
1876	req = c.newRequest(op, input, output)
1877	return
1878}
1879
1880// GetCloudFrontOriginAccessIdentity API operation for Amazon CloudFront.
1881//
1882// Get the information about an origin access identity.
1883//
1884// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1885// with awserr.Error's Code and Message methods to get detailed information about
1886// the error.
1887//
1888// See the AWS API reference guide for Amazon CloudFront's
1889// API operation GetCloudFrontOriginAccessIdentity for usage and error information.
1890//
1891// Returned Error Codes:
1892//   * ErrCodeNoSuchCloudFrontOriginAccessIdentity "NoSuchCloudFrontOriginAccessIdentity"
1893//   The specified origin access identity does not exist.
1894//
1895//   * ErrCodeAccessDenied "AccessDenied"
1896//   Access denied.
1897//
1898// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetCloudFrontOriginAccessIdentity
1899func (c *CloudFront) GetCloudFrontOriginAccessIdentity(input *GetCloudFrontOriginAccessIdentityInput) (*GetCloudFrontOriginAccessIdentityOutput, error) {
1900	req, out := c.GetCloudFrontOriginAccessIdentityRequest(input)
1901	return out, req.Send()
1902}
1903
1904// GetCloudFrontOriginAccessIdentityWithContext is the same as GetCloudFrontOriginAccessIdentity with the addition of
1905// the ability to pass a context and additional request options.
1906//
1907// See GetCloudFrontOriginAccessIdentity for details on how to use this API operation.
1908//
1909// The context must be non-nil and will be used for request cancellation. If
1910// the context is nil a panic will occur. In the future the SDK may create
1911// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1912// for more information on using Contexts.
1913func (c *CloudFront) GetCloudFrontOriginAccessIdentityWithContext(ctx aws.Context, input *GetCloudFrontOriginAccessIdentityInput, opts ...request.Option) (*GetCloudFrontOriginAccessIdentityOutput, error) {
1914	req, out := c.GetCloudFrontOriginAccessIdentityRequest(input)
1915	req.SetContext(ctx)
1916	req.ApplyOptions(opts...)
1917	return out, req.Send()
1918}
1919
1920const opGetCloudFrontOriginAccessIdentityConfig = "GetCloudFrontOriginAccessIdentityConfig2019_03_26"
1921
1922// GetCloudFrontOriginAccessIdentityConfigRequest generates a "aws/request.Request" representing the
1923// client's request for the GetCloudFrontOriginAccessIdentityConfig operation. The "output" return
1924// value will be populated with the request's response once the request completes
1925// successfully.
1926//
1927// Use "Send" method on the returned Request to send the API call to the service.
1928// the "output" return value is not valid until after Send returns without error.
1929//
1930// See GetCloudFrontOriginAccessIdentityConfig for more information on using the GetCloudFrontOriginAccessIdentityConfig
1931// API call, and error handling.
1932//
1933// This method is useful when you want to inject custom logic or configuration
1934// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1935//
1936//
1937//    // Example sending a request using the GetCloudFrontOriginAccessIdentityConfigRequest method.
1938//    req, resp := client.GetCloudFrontOriginAccessIdentityConfigRequest(params)
1939//
1940//    err := req.Send()
1941//    if err == nil { // resp is now filled
1942//        fmt.Println(resp)
1943//    }
1944//
1945// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetCloudFrontOriginAccessIdentityConfig
1946func (c *CloudFront) GetCloudFrontOriginAccessIdentityConfigRequest(input *GetCloudFrontOriginAccessIdentityConfigInput) (req *request.Request, output *GetCloudFrontOriginAccessIdentityConfigOutput) {
1947	op := &request.Operation{
1948		Name:       opGetCloudFrontOriginAccessIdentityConfig,
1949		HTTPMethod: "GET",
1950		HTTPPath:   "/2019-03-26/origin-access-identity/cloudfront/{Id}/config",
1951	}
1952
1953	if input == nil {
1954		input = &GetCloudFrontOriginAccessIdentityConfigInput{}
1955	}
1956
1957	output = &GetCloudFrontOriginAccessIdentityConfigOutput{}
1958	req = c.newRequest(op, input, output)
1959	return
1960}
1961
1962// GetCloudFrontOriginAccessIdentityConfig API operation for Amazon CloudFront.
1963//
1964// Get the configuration information about an origin access identity.
1965//
1966// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1967// with awserr.Error's Code and Message methods to get detailed information about
1968// the error.
1969//
1970// See the AWS API reference guide for Amazon CloudFront's
1971// API operation GetCloudFrontOriginAccessIdentityConfig for usage and error information.
1972//
1973// Returned Error Codes:
1974//   * ErrCodeNoSuchCloudFrontOriginAccessIdentity "NoSuchCloudFrontOriginAccessIdentity"
1975//   The specified origin access identity does not exist.
1976//
1977//   * ErrCodeAccessDenied "AccessDenied"
1978//   Access denied.
1979//
1980// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetCloudFrontOriginAccessIdentityConfig
1981func (c *CloudFront) GetCloudFrontOriginAccessIdentityConfig(input *GetCloudFrontOriginAccessIdentityConfigInput) (*GetCloudFrontOriginAccessIdentityConfigOutput, error) {
1982	req, out := c.GetCloudFrontOriginAccessIdentityConfigRequest(input)
1983	return out, req.Send()
1984}
1985
1986// GetCloudFrontOriginAccessIdentityConfigWithContext is the same as GetCloudFrontOriginAccessIdentityConfig with the addition of
1987// the ability to pass a context and additional request options.
1988//
1989// See GetCloudFrontOriginAccessIdentityConfig for details on how to use this API operation.
1990//
1991// The context must be non-nil and will be used for request cancellation. If
1992// the context is nil a panic will occur. In the future the SDK may create
1993// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1994// for more information on using Contexts.
1995func (c *CloudFront) GetCloudFrontOriginAccessIdentityConfigWithContext(ctx aws.Context, input *GetCloudFrontOriginAccessIdentityConfigInput, opts ...request.Option) (*GetCloudFrontOriginAccessIdentityConfigOutput, error) {
1996	req, out := c.GetCloudFrontOriginAccessIdentityConfigRequest(input)
1997	req.SetContext(ctx)
1998	req.ApplyOptions(opts...)
1999	return out, req.Send()
2000}
2001
2002const opGetDistribution = "GetDistribution2019_03_26"
2003
2004// GetDistributionRequest generates a "aws/request.Request" representing the
2005// client's request for the GetDistribution operation. The "output" return
2006// value will be populated with the request's response once the request completes
2007// successfully.
2008//
2009// Use "Send" method on the returned Request to send the API call to the service.
2010// the "output" return value is not valid until after Send returns without error.
2011//
2012// See GetDistribution for more information on using the GetDistribution
2013// API call, and error handling.
2014//
2015// This method is useful when you want to inject custom logic or configuration
2016// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2017//
2018//
2019//    // Example sending a request using the GetDistributionRequest method.
2020//    req, resp := client.GetDistributionRequest(params)
2021//
2022//    err := req.Send()
2023//    if err == nil { // resp is now filled
2024//        fmt.Println(resp)
2025//    }
2026//
2027// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetDistribution
2028func (c *CloudFront) GetDistributionRequest(input *GetDistributionInput) (req *request.Request, output *GetDistributionOutput) {
2029	op := &request.Operation{
2030		Name:       opGetDistribution,
2031		HTTPMethod: "GET",
2032		HTTPPath:   "/2019-03-26/distribution/{Id}",
2033	}
2034
2035	if input == nil {
2036		input = &GetDistributionInput{}
2037	}
2038
2039	output = &GetDistributionOutput{}
2040	req = c.newRequest(op, input, output)
2041	return
2042}
2043
2044// GetDistribution API operation for Amazon CloudFront.
2045//
2046// Get the information about a distribution.
2047//
2048// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2049// with awserr.Error's Code and Message methods to get detailed information about
2050// the error.
2051//
2052// See the AWS API reference guide for Amazon CloudFront's
2053// API operation GetDistribution for usage and error information.
2054//
2055// Returned Error Codes:
2056//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
2057//   The specified distribution does not exist.
2058//
2059//   * ErrCodeAccessDenied "AccessDenied"
2060//   Access denied.
2061//
2062// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetDistribution
2063func (c *CloudFront) GetDistribution(input *GetDistributionInput) (*GetDistributionOutput, error) {
2064	req, out := c.GetDistributionRequest(input)
2065	return out, req.Send()
2066}
2067
2068// GetDistributionWithContext is the same as GetDistribution with the addition of
2069// the ability to pass a context and additional request options.
2070//
2071// See GetDistribution for details on how to use this API operation.
2072//
2073// The context must be non-nil and will be used for request cancellation. If
2074// the context is nil a panic will occur. In the future the SDK may create
2075// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2076// for more information on using Contexts.
2077func (c *CloudFront) GetDistributionWithContext(ctx aws.Context, input *GetDistributionInput, opts ...request.Option) (*GetDistributionOutput, error) {
2078	req, out := c.GetDistributionRequest(input)
2079	req.SetContext(ctx)
2080	req.ApplyOptions(opts...)
2081	return out, req.Send()
2082}
2083
2084const opGetDistributionConfig = "GetDistributionConfig2019_03_26"
2085
2086// GetDistributionConfigRequest generates a "aws/request.Request" representing the
2087// client's request for the GetDistributionConfig operation. The "output" return
2088// value will be populated with the request's response once the request completes
2089// successfully.
2090//
2091// Use "Send" method on the returned Request to send the API call to the service.
2092// the "output" return value is not valid until after Send returns without error.
2093//
2094// See GetDistributionConfig for more information on using the GetDistributionConfig
2095// API call, and error handling.
2096//
2097// This method is useful when you want to inject custom logic or configuration
2098// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2099//
2100//
2101//    // Example sending a request using the GetDistributionConfigRequest method.
2102//    req, resp := client.GetDistributionConfigRequest(params)
2103//
2104//    err := req.Send()
2105//    if err == nil { // resp is now filled
2106//        fmt.Println(resp)
2107//    }
2108//
2109// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetDistributionConfig
2110func (c *CloudFront) GetDistributionConfigRequest(input *GetDistributionConfigInput) (req *request.Request, output *GetDistributionConfigOutput) {
2111	op := &request.Operation{
2112		Name:       opGetDistributionConfig,
2113		HTTPMethod: "GET",
2114		HTTPPath:   "/2019-03-26/distribution/{Id}/config",
2115	}
2116
2117	if input == nil {
2118		input = &GetDistributionConfigInput{}
2119	}
2120
2121	output = &GetDistributionConfigOutput{}
2122	req = c.newRequest(op, input, output)
2123	return
2124}
2125
2126// GetDistributionConfig API operation for Amazon CloudFront.
2127//
2128// Get the configuration information about a distribution.
2129//
2130// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2131// with awserr.Error's Code and Message methods to get detailed information about
2132// the error.
2133//
2134// See the AWS API reference guide for Amazon CloudFront's
2135// API operation GetDistributionConfig for usage and error information.
2136//
2137// Returned Error Codes:
2138//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
2139//   The specified distribution does not exist.
2140//
2141//   * ErrCodeAccessDenied "AccessDenied"
2142//   Access denied.
2143//
2144// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetDistributionConfig
2145func (c *CloudFront) GetDistributionConfig(input *GetDistributionConfigInput) (*GetDistributionConfigOutput, error) {
2146	req, out := c.GetDistributionConfigRequest(input)
2147	return out, req.Send()
2148}
2149
2150// GetDistributionConfigWithContext is the same as GetDistributionConfig with the addition of
2151// the ability to pass a context and additional request options.
2152//
2153// See GetDistributionConfig for details on how to use this API operation.
2154//
2155// The context must be non-nil and will be used for request cancellation. If
2156// the context is nil a panic will occur. In the future the SDK may create
2157// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2158// for more information on using Contexts.
2159func (c *CloudFront) GetDistributionConfigWithContext(ctx aws.Context, input *GetDistributionConfigInput, opts ...request.Option) (*GetDistributionConfigOutput, error) {
2160	req, out := c.GetDistributionConfigRequest(input)
2161	req.SetContext(ctx)
2162	req.ApplyOptions(opts...)
2163	return out, req.Send()
2164}
2165
2166const opGetFieldLevelEncryption = "GetFieldLevelEncryption2019_03_26"
2167
2168// GetFieldLevelEncryptionRequest generates a "aws/request.Request" representing the
2169// client's request for the GetFieldLevelEncryption operation. The "output" return
2170// value will be populated with the request's response once the request completes
2171// successfully.
2172//
2173// Use "Send" method on the returned Request to send the API call to the service.
2174// the "output" return value is not valid until after Send returns without error.
2175//
2176// See GetFieldLevelEncryption for more information on using the GetFieldLevelEncryption
2177// API call, and error handling.
2178//
2179// This method is useful when you want to inject custom logic or configuration
2180// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2181//
2182//
2183//    // Example sending a request using the GetFieldLevelEncryptionRequest method.
2184//    req, resp := client.GetFieldLevelEncryptionRequest(params)
2185//
2186//    err := req.Send()
2187//    if err == nil { // resp is now filled
2188//        fmt.Println(resp)
2189//    }
2190//
2191// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryption
2192func (c *CloudFront) GetFieldLevelEncryptionRequest(input *GetFieldLevelEncryptionInput) (req *request.Request, output *GetFieldLevelEncryptionOutput) {
2193	op := &request.Operation{
2194		Name:       opGetFieldLevelEncryption,
2195		HTTPMethod: "GET",
2196		HTTPPath:   "/2019-03-26/field-level-encryption/{Id}",
2197	}
2198
2199	if input == nil {
2200		input = &GetFieldLevelEncryptionInput{}
2201	}
2202
2203	output = &GetFieldLevelEncryptionOutput{}
2204	req = c.newRequest(op, input, output)
2205	return
2206}
2207
2208// GetFieldLevelEncryption API operation for Amazon CloudFront.
2209//
2210// Get the field-level encryption configuration information.
2211//
2212// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2213// with awserr.Error's Code and Message methods to get detailed information about
2214// the error.
2215//
2216// See the AWS API reference guide for Amazon CloudFront's
2217// API operation GetFieldLevelEncryption for usage and error information.
2218//
2219// Returned Error Codes:
2220//   * ErrCodeAccessDenied "AccessDenied"
2221//   Access denied.
2222//
2223//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
2224//   The specified configuration for field-level encryption doesn't exist.
2225//
2226// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryption
2227func (c *CloudFront) GetFieldLevelEncryption(input *GetFieldLevelEncryptionInput) (*GetFieldLevelEncryptionOutput, error) {
2228	req, out := c.GetFieldLevelEncryptionRequest(input)
2229	return out, req.Send()
2230}
2231
2232// GetFieldLevelEncryptionWithContext is the same as GetFieldLevelEncryption with the addition of
2233// the ability to pass a context and additional request options.
2234//
2235// See GetFieldLevelEncryption for details on how to use this API operation.
2236//
2237// The context must be non-nil and will be used for request cancellation. If
2238// the context is nil a panic will occur. In the future the SDK may create
2239// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2240// for more information on using Contexts.
2241func (c *CloudFront) GetFieldLevelEncryptionWithContext(ctx aws.Context, input *GetFieldLevelEncryptionInput, opts ...request.Option) (*GetFieldLevelEncryptionOutput, error) {
2242	req, out := c.GetFieldLevelEncryptionRequest(input)
2243	req.SetContext(ctx)
2244	req.ApplyOptions(opts...)
2245	return out, req.Send()
2246}
2247
2248const opGetFieldLevelEncryptionConfig = "GetFieldLevelEncryptionConfig2019_03_26"
2249
2250// GetFieldLevelEncryptionConfigRequest generates a "aws/request.Request" representing the
2251// client's request for the GetFieldLevelEncryptionConfig operation. The "output" return
2252// value will be populated with the request's response once the request completes
2253// successfully.
2254//
2255// Use "Send" method on the returned Request to send the API call to the service.
2256// the "output" return value is not valid until after Send returns without error.
2257//
2258// See GetFieldLevelEncryptionConfig for more information on using the GetFieldLevelEncryptionConfig
2259// API call, and error handling.
2260//
2261// This method is useful when you want to inject custom logic or configuration
2262// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2263//
2264//
2265//    // Example sending a request using the GetFieldLevelEncryptionConfigRequest method.
2266//    req, resp := client.GetFieldLevelEncryptionConfigRequest(params)
2267//
2268//    err := req.Send()
2269//    if err == nil { // resp is now filled
2270//        fmt.Println(resp)
2271//    }
2272//
2273// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryptionConfig
2274func (c *CloudFront) GetFieldLevelEncryptionConfigRequest(input *GetFieldLevelEncryptionConfigInput) (req *request.Request, output *GetFieldLevelEncryptionConfigOutput) {
2275	op := &request.Operation{
2276		Name:       opGetFieldLevelEncryptionConfig,
2277		HTTPMethod: "GET",
2278		HTTPPath:   "/2019-03-26/field-level-encryption/{Id}/config",
2279	}
2280
2281	if input == nil {
2282		input = &GetFieldLevelEncryptionConfigInput{}
2283	}
2284
2285	output = &GetFieldLevelEncryptionConfigOutput{}
2286	req = c.newRequest(op, input, output)
2287	return
2288}
2289
2290// GetFieldLevelEncryptionConfig API operation for Amazon CloudFront.
2291//
2292// Get the field-level encryption configuration information.
2293//
2294// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2295// with awserr.Error's Code and Message methods to get detailed information about
2296// the error.
2297//
2298// See the AWS API reference guide for Amazon CloudFront's
2299// API operation GetFieldLevelEncryptionConfig for usage and error information.
2300//
2301// Returned Error Codes:
2302//   * ErrCodeAccessDenied "AccessDenied"
2303//   Access denied.
2304//
2305//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
2306//   The specified configuration for field-level encryption doesn't exist.
2307//
2308// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryptionConfig
2309func (c *CloudFront) GetFieldLevelEncryptionConfig(input *GetFieldLevelEncryptionConfigInput) (*GetFieldLevelEncryptionConfigOutput, error) {
2310	req, out := c.GetFieldLevelEncryptionConfigRequest(input)
2311	return out, req.Send()
2312}
2313
2314// GetFieldLevelEncryptionConfigWithContext is the same as GetFieldLevelEncryptionConfig with the addition of
2315// the ability to pass a context and additional request options.
2316//
2317// See GetFieldLevelEncryptionConfig for details on how to use this API operation.
2318//
2319// The context must be non-nil and will be used for request cancellation. If
2320// the context is nil a panic will occur. In the future the SDK may create
2321// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2322// for more information on using Contexts.
2323func (c *CloudFront) GetFieldLevelEncryptionConfigWithContext(ctx aws.Context, input *GetFieldLevelEncryptionConfigInput, opts ...request.Option) (*GetFieldLevelEncryptionConfigOutput, error) {
2324	req, out := c.GetFieldLevelEncryptionConfigRequest(input)
2325	req.SetContext(ctx)
2326	req.ApplyOptions(opts...)
2327	return out, req.Send()
2328}
2329
2330const opGetFieldLevelEncryptionProfile = "GetFieldLevelEncryptionProfile2019_03_26"
2331
2332// GetFieldLevelEncryptionProfileRequest generates a "aws/request.Request" representing the
2333// client's request for the GetFieldLevelEncryptionProfile operation. The "output" return
2334// value will be populated with the request's response once the request completes
2335// successfully.
2336//
2337// Use "Send" method on the returned Request to send the API call to the service.
2338// the "output" return value is not valid until after Send returns without error.
2339//
2340// See GetFieldLevelEncryptionProfile for more information on using the GetFieldLevelEncryptionProfile
2341// API call, and error handling.
2342//
2343// This method is useful when you want to inject custom logic or configuration
2344// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2345//
2346//
2347//    // Example sending a request using the GetFieldLevelEncryptionProfileRequest method.
2348//    req, resp := client.GetFieldLevelEncryptionProfileRequest(params)
2349//
2350//    err := req.Send()
2351//    if err == nil { // resp is now filled
2352//        fmt.Println(resp)
2353//    }
2354//
2355// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryptionProfile
2356func (c *CloudFront) GetFieldLevelEncryptionProfileRequest(input *GetFieldLevelEncryptionProfileInput) (req *request.Request, output *GetFieldLevelEncryptionProfileOutput) {
2357	op := &request.Operation{
2358		Name:       opGetFieldLevelEncryptionProfile,
2359		HTTPMethod: "GET",
2360		HTTPPath:   "/2019-03-26/field-level-encryption-profile/{Id}",
2361	}
2362
2363	if input == nil {
2364		input = &GetFieldLevelEncryptionProfileInput{}
2365	}
2366
2367	output = &GetFieldLevelEncryptionProfileOutput{}
2368	req = c.newRequest(op, input, output)
2369	return
2370}
2371
2372// GetFieldLevelEncryptionProfile API operation for Amazon CloudFront.
2373//
2374// Get the field-level encryption profile information.
2375//
2376// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2377// with awserr.Error's Code and Message methods to get detailed information about
2378// the error.
2379//
2380// See the AWS API reference guide for Amazon CloudFront's
2381// API operation GetFieldLevelEncryptionProfile for usage and error information.
2382//
2383// Returned Error Codes:
2384//   * ErrCodeAccessDenied "AccessDenied"
2385//   Access denied.
2386//
2387//   * ErrCodeNoSuchFieldLevelEncryptionProfile "NoSuchFieldLevelEncryptionProfile"
2388//   The specified profile for field-level encryption doesn't exist.
2389//
2390// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryptionProfile
2391func (c *CloudFront) GetFieldLevelEncryptionProfile(input *GetFieldLevelEncryptionProfileInput) (*GetFieldLevelEncryptionProfileOutput, error) {
2392	req, out := c.GetFieldLevelEncryptionProfileRequest(input)
2393	return out, req.Send()
2394}
2395
2396// GetFieldLevelEncryptionProfileWithContext is the same as GetFieldLevelEncryptionProfile with the addition of
2397// the ability to pass a context and additional request options.
2398//
2399// See GetFieldLevelEncryptionProfile for details on how to use this API operation.
2400//
2401// The context must be non-nil and will be used for request cancellation. If
2402// the context is nil a panic will occur. In the future the SDK may create
2403// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2404// for more information on using Contexts.
2405func (c *CloudFront) GetFieldLevelEncryptionProfileWithContext(ctx aws.Context, input *GetFieldLevelEncryptionProfileInput, opts ...request.Option) (*GetFieldLevelEncryptionProfileOutput, error) {
2406	req, out := c.GetFieldLevelEncryptionProfileRequest(input)
2407	req.SetContext(ctx)
2408	req.ApplyOptions(opts...)
2409	return out, req.Send()
2410}
2411
2412const opGetFieldLevelEncryptionProfileConfig = "GetFieldLevelEncryptionProfileConfig2019_03_26"
2413
2414// GetFieldLevelEncryptionProfileConfigRequest generates a "aws/request.Request" representing the
2415// client's request for the GetFieldLevelEncryptionProfileConfig operation. The "output" return
2416// value will be populated with the request's response once the request completes
2417// successfully.
2418//
2419// Use "Send" method on the returned Request to send the API call to the service.
2420// the "output" return value is not valid until after Send returns without error.
2421//
2422// See GetFieldLevelEncryptionProfileConfig for more information on using the GetFieldLevelEncryptionProfileConfig
2423// API call, and error handling.
2424//
2425// This method is useful when you want to inject custom logic or configuration
2426// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2427//
2428//
2429//    // Example sending a request using the GetFieldLevelEncryptionProfileConfigRequest method.
2430//    req, resp := client.GetFieldLevelEncryptionProfileConfigRequest(params)
2431//
2432//    err := req.Send()
2433//    if err == nil { // resp is now filled
2434//        fmt.Println(resp)
2435//    }
2436//
2437// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryptionProfileConfig
2438func (c *CloudFront) GetFieldLevelEncryptionProfileConfigRequest(input *GetFieldLevelEncryptionProfileConfigInput) (req *request.Request, output *GetFieldLevelEncryptionProfileConfigOutput) {
2439	op := &request.Operation{
2440		Name:       opGetFieldLevelEncryptionProfileConfig,
2441		HTTPMethod: "GET",
2442		HTTPPath:   "/2019-03-26/field-level-encryption-profile/{Id}/config",
2443	}
2444
2445	if input == nil {
2446		input = &GetFieldLevelEncryptionProfileConfigInput{}
2447	}
2448
2449	output = &GetFieldLevelEncryptionProfileConfigOutput{}
2450	req = c.newRequest(op, input, output)
2451	return
2452}
2453
2454// GetFieldLevelEncryptionProfileConfig API operation for Amazon CloudFront.
2455//
2456// Get the field-level encryption profile configuration information.
2457//
2458// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2459// with awserr.Error's Code and Message methods to get detailed information about
2460// the error.
2461//
2462// See the AWS API reference guide for Amazon CloudFront's
2463// API operation GetFieldLevelEncryptionProfileConfig for usage and error information.
2464//
2465// Returned Error Codes:
2466//   * ErrCodeAccessDenied "AccessDenied"
2467//   Access denied.
2468//
2469//   * ErrCodeNoSuchFieldLevelEncryptionProfile "NoSuchFieldLevelEncryptionProfile"
2470//   The specified profile for field-level encryption doesn't exist.
2471//
2472// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetFieldLevelEncryptionProfileConfig
2473func (c *CloudFront) GetFieldLevelEncryptionProfileConfig(input *GetFieldLevelEncryptionProfileConfigInput) (*GetFieldLevelEncryptionProfileConfigOutput, error) {
2474	req, out := c.GetFieldLevelEncryptionProfileConfigRequest(input)
2475	return out, req.Send()
2476}
2477
2478// GetFieldLevelEncryptionProfileConfigWithContext is the same as GetFieldLevelEncryptionProfileConfig with the addition of
2479// the ability to pass a context and additional request options.
2480//
2481// See GetFieldLevelEncryptionProfileConfig for details on how to use this API operation.
2482//
2483// The context must be non-nil and will be used for request cancellation. If
2484// the context is nil a panic will occur. In the future the SDK may create
2485// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2486// for more information on using Contexts.
2487func (c *CloudFront) GetFieldLevelEncryptionProfileConfigWithContext(ctx aws.Context, input *GetFieldLevelEncryptionProfileConfigInput, opts ...request.Option) (*GetFieldLevelEncryptionProfileConfigOutput, error) {
2488	req, out := c.GetFieldLevelEncryptionProfileConfigRequest(input)
2489	req.SetContext(ctx)
2490	req.ApplyOptions(opts...)
2491	return out, req.Send()
2492}
2493
2494const opGetInvalidation = "GetInvalidation2019_03_26"
2495
2496// GetInvalidationRequest generates a "aws/request.Request" representing the
2497// client's request for the GetInvalidation operation. The "output" return
2498// value will be populated with the request's response once the request completes
2499// successfully.
2500//
2501// Use "Send" method on the returned Request to send the API call to the service.
2502// the "output" return value is not valid until after Send returns without error.
2503//
2504// See GetInvalidation for more information on using the GetInvalidation
2505// API call, and error handling.
2506//
2507// This method is useful when you want to inject custom logic or configuration
2508// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2509//
2510//
2511//    // Example sending a request using the GetInvalidationRequest method.
2512//    req, resp := client.GetInvalidationRequest(params)
2513//
2514//    err := req.Send()
2515//    if err == nil { // resp is now filled
2516//        fmt.Println(resp)
2517//    }
2518//
2519// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetInvalidation
2520func (c *CloudFront) GetInvalidationRequest(input *GetInvalidationInput) (req *request.Request, output *GetInvalidationOutput) {
2521	op := &request.Operation{
2522		Name:       opGetInvalidation,
2523		HTTPMethod: "GET",
2524		HTTPPath:   "/2019-03-26/distribution/{DistributionId}/invalidation/{Id}",
2525	}
2526
2527	if input == nil {
2528		input = &GetInvalidationInput{}
2529	}
2530
2531	output = &GetInvalidationOutput{}
2532	req = c.newRequest(op, input, output)
2533	return
2534}
2535
2536// GetInvalidation API operation for Amazon CloudFront.
2537//
2538// Get the information about an invalidation.
2539//
2540// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2541// with awserr.Error's Code and Message methods to get detailed information about
2542// the error.
2543//
2544// See the AWS API reference guide for Amazon CloudFront's
2545// API operation GetInvalidation for usage and error information.
2546//
2547// Returned Error Codes:
2548//   * ErrCodeNoSuchInvalidation "NoSuchInvalidation"
2549//   The specified invalidation does not exist.
2550//
2551//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
2552//   The specified distribution does not exist.
2553//
2554//   * ErrCodeAccessDenied "AccessDenied"
2555//   Access denied.
2556//
2557// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetInvalidation
2558func (c *CloudFront) GetInvalidation(input *GetInvalidationInput) (*GetInvalidationOutput, error) {
2559	req, out := c.GetInvalidationRequest(input)
2560	return out, req.Send()
2561}
2562
2563// GetInvalidationWithContext is the same as GetInvalidation with the addition of
2564// the ability to pass a context and additional request options.
2565//
2566// See GetInvalidation for details on how to use this API operation.
2567//
2568// The context must be non-nil and will be used for request cancellation. If
2569// the context is nil a panic will occur. In the future the SDK may create
2570// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2571// for more information on using Contexts.
2572func (c *CloudFront) GetInvalidationWithContext(ctx aws.Context, input *GetInvalidationInput, opts ...request.Option) (*GetInvalidationOutput, error) {
2573	req, out := c.GetInvalidationRequest(input)
2574	req.SetContext(ctx)
2575	req.ApplyOptions(opts...)
2576	return out, req.Send()
2577}
2578
2579const opGetPublicKey = "GetPublicKey2019_03_26"
2580
2581// GetPublicKeyRequest generates a "aws/request.Request" representing the
2582// client's request for the GetPublicKey operation. The "output" return
2583// value will be populated with the request's response once the request completes
2584// successfully.
2585//
2586// Use "Send" method on the returned Request to send the API call to the service.
2587// the "output" return value is not valid until after Send returns without error.
2588//
2589// See GetPublicKey for more information on using the GetPublicKey
2590// API call, and error handling.
2591//
2592// This method is useful when you want to inject custom logic or configuration
2593// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2594//
2595//
2596//    // Example sending a request using the GetPublicKeyRequest method.
2597//    req, resp := client.GetPublicKeyRequest(params)
2598//
2599//    err := req.Send()
2600//    if err == nil { // resp is now filled
2601//        fmt.Println(resp)
2602//    }
2603//
2604// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetPublicKey
2605func (c *CloudFront) GetPublicKeyRequest(input *GetPublicKeyInput) (req *request.Request, output *GetPublicKeyOutput) {
2606	op := &request.Operation{
2607		Name:       opGetPublicKey,
2608		HTTPMethod: "GET",
2609		HTTPPath:   "/2019-03-26/public-key/{Id}",
2610	}
2611
2612	if input == nil {
2613		input = &GetPublicKeyInput{}
2614	}
2615
2616	output = &GetPublicKeyOutput{}
2617	req = c.newRequest(op, input, output)
2618	return
2619}
2620
2621// GetPublicKey API operation for Amazon CloudFront.
2622//
2623// Get the public key information.
2624//
2625// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2626// with awserr.Error's Code and Message methods to get detailed information about
2627// the error.
2628//
2629// See the AWS API reference guide for Amazon CloudFront's
2630// API operation GetPublicKey for usage and error information.
2631//
2632// Returned Error Codes:
2633//   * ErrCodeAccessDenied "AccessDenied"
2634//   Access denied.
2635//
2636//   * ErrCodeNoSuchPublicKey "NoSuchPublicKey"
2637//   The specified public key doesn't exist.
2638//
2639// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetPublicKey
2640func (c *CloudFront) GetPublicKey(input *GetPublicKeyInput) (*GetPublicKeyOutput, error) {
2641	req, out := c.GetPublicKeyRequest(input)
2642	return out, req.Send()
2643}
2644
2645// GetPublicKeyWithContext is the same as GetPublicKey with the addition of
2646// the ability to pass a context and additional request options.
2647//
2648// See GetPublicKey for details on how to use this API operation.
2649//
2650// The context must be non-nil and will be used for request cancellation. If
2651// the context is nil a panic will occur. In the future the SDK may create
2652// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2653// for more information on using Contexts.
2654func (c *CloudFront) GetPublicKeyWithContext(ctx aws.Context, input *GetPublicKeyInput, opts ...request.Option) (*GetPublicKeyOutput, error) {
2655	req, out := c.GetPublicKeyRequest(input)
2656	req.SetContext(ctx)
2657	req.ApplyOptions(opts...)
2658	return out, req.Send()
2659}
2660
2661const opGetPublicKeyConfig = "GetPublicKeyConfig2019_03_26"
2662
2663// GetPublicKeyConfigRequest generates a "aws/request.Request" representing the
2664// client's request for the GetPublicKeyConfig operation. The "output" return
2665// value will be populated with the request's response once the request completes
2666// successfully.
2667//
2668// Use "Send" method on the returned Request to send the API call to the service.
2669// the "output" return value is not valid until after Send returns without error.
2670//
2671// See GetPublicKeyConfig for more information on using the GetPublicKeyConfig
2672// API call, and error handling.
2673//
2674// This method is useful when you want to inject custom logic or configuration
2675// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2676//
2677//
2678//    // Example sending a request using the GetPublicKeyConfigRequest method.
2679//    req, resp := client.GetPublicKeyConfigRequest(params)
2680//
2681//    err := req.Send()
2682//    if err == nil { // resp is now filled
2683//        fmt.Println(resp)
2684//    }
2685//
2686// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetPublicKeyConfig
2687func (c *CloudFront) GetPublicKeyConfigRequest(input *GetPublicKeyConfigInput) (req *request.Request, output *GetPublicKeyConfigOutput) {
2688	op := &request.Operation{
2689		Name:       opGetPublicKeyConfig,
2690		HTTPMethod: "GET",
2691		HTTPPath:   "/2019-03-26/public-key/{Id}/config",
2692	}
2693
2694	if input == nil {
2695		input = &GetPublicKeyConfigInput{}
2696	}
2697
2698	output = &GetPublicKeyConfigOutput{}
2699	req = c.newRequest(op, input, output)
2700	return
2701}
2702
2703// GetPublicKeyConfig API operation for Amazon CloudFront.
2704//
2705// Return public key configuration informaation
2706//
2707// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2708// with awserr.Error's Code and Message methods to get detailed information about
2709// the error.
2710//
2711// See the AWS API reference guide for Amazon CloudFront's
2712// API operation GetPublicKeyConfig for usage and error information.
2713//
2714// Returned Error Codes:
2715//   * ErrCodeAccessDenied "AccessDenied"
2716//   Access denied.
2717//
2718//   * ErrCodeNoSuchPublicKey "NoSuchPublicKey"
2719//   The specified public key doesn't exist.
2720//
2721// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetPublicKeyConfig
2722func (c *CloudFront) GetPublicKeyConfig(input *GetPublicKeyConfigInput) (*GetPublicKeyConfigOutput, error) {
2723	req, out := c.GetPublicKeyConfigRequest(input)
2724	return out, req.Send()
2725}
2726
2727// GetPublicKeyConfigWithContext is the same as GetPublicKeyConfig with the addition of
2728// the ability to pass a context and additional request options.
2729//
2730// See GetPublicKeyConfig for details on how to use this API operation.
2731//
2732// The context must be non-nil and will be used for request cancellation. If
2733// the context is nil a panic will occur. In the future the SDK may create
2734// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2735// for more information on using Contexts.
2736func (c *CloudFront) GetPublicKeyConfigWithContext(ctx aws.Context, input *GetPublicKeyConfigInput, opts ...request.Option) (*GetPublicKeyConfigOutput, error) {
2737	req, out := c.GetPublicKeyConfigRequest(input)
2738	req.SetContext(ctx)
2739	req.ApplyOptions(opts...)
2740	return out, req.Send()
2741}
2742
2743const opGetStreamingDistribution = "GetStreamingDistribution2019_03_26"
2744
2745// GetStreamingDistributionRequest generates a "aws/request.Request" representing the
2746// client's request for the GetStreamingDistribution operation. The "output" return
2747// value will be populated with the request's response once the request completes
2748// successfully.
2749//
2750// Use "Send" method on the returned Request to send the API call to the service.
2751// the "output" return value is not valid until after Send returns without error.
2752//
2753// See GetStreamingDistribution for more information on using the GetStreamingDistribution
2754// API call, and error handling.
2755//
2756// This method is useful when you want to inject custom logic or configuration
2757// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2758//
2759//
2760//    // Example sending a request using the GetStreamingDistributionRequest method.
2761//    req, resp := client.GetStreamingDistributionRequest(params)
2762//
2763//    err := req.Send()
2764//    if err == nil { // resp is now filled
2765//        fmt.Println(resp)
2766//    }
2767//
2768// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetStreamingDistribution
2769func (c *CloudFront) GetStreamingDistributionRequest(input *GetStreamingDistributionInput) (req *request.Request, output *GetStreamingDistributionOutput) {
2770	op := &request.Operation{
2771		Name:       opGetStreamingDistribution,
2772		HTTPMethod: "GET",
2773		HTTPPath:   "/2019-03-26/streaming-distribution/{Id}",
2774	}
2775
2776	if input == nil {
2777		input = &GetStreamingDistributionInput{}
2778	}
2779
2780	output = &GetStreamingDistributionOutput{}
2781	req = c.newRequest(op, input, output)
2782	return
2783}
2784
2785// GetStreamingDistribution API operation for Amazon CloudFront.
2786//
2787// Gets information about a specified RTMP distribution, including the distribution
2788// configuration.
2789//
2790// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2791// with awserr.Error's Code and Message methods to get detailed information about
2792// the error.
2793//
2794// See the AWS API reference guide for Amazon CloudFront's
2795// API operation GetStreamingDistribution for usage and error information.
2796//
2797// Returned Error Codes:
2798//   * ErrCodeNoSuchStreamingDistribution "NoSuchStreamingDistribution"
2799//   The specified streaming distribution does not exist.
2800//
2801//   * ErrCodeAccessDenied "AccessDenied"
2802//   Access denied.
2803//
2804// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetStreamingDistribution
2805func (c *CloudFront) GetStreamingDistribution(input *GetStreamingDistributionInput) (*GetStreamingDistributionOutput, error) {
2806	req, out := c.GetStreamingDistributionRequest(input)
2807	return out, req.Send()
2808}
2809
2810// GetStreamingDistributionWithContext is the same as GetStreamingDistribution with the addition of
2811// the ability to pass a context and additional request options.
2812//
2813// See GetStreamingDistribution for details on how to use this API operation.
2814//
2815// The context must be non-nil and will be used for request cancellation. If
2816// the context is nil a panic will occur. In the future the SDK may create
2817// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2818// for more information on using Contexts.
2819func (c *CloudFront) GetStreamingDistributionWithContext(ctx aws.Context, input *GetStreamingDistributionInput, opts ...request.Option) (*GetStreamingDistributionOutput, error) {
2820	req, out := c.GetStreamingDistributionRequest(input)
2821	req.SetContext(ctx)
2822	req.ApplyOptions(opts...)
2823	return out, req.Send()
2824}
2825
2826const opGetStreamingDistributionConfig = "GetStreamingDistributionConfig2019_03_26"
2827
2828// GetStreamingDistributionConfigRequest generates a "aws/request.Request" representing the
2829// client's request for the GetStreamingDistributionConfig operation. The "output" return
2830// value will be populated with the request's response once the request completes
2831// successfully.
2832//
2833// Use "Send" method on the returned Request to send the API call to the service.
2834// the "output" return value is not valid until after Send returns without error.
2835//
2836// See GetStreamingDistributionConfig for more information on using the GetStreamingDistributionConfig
2837// API call, and error handling.
2838//
2839// This method is useful when you want to inject custom logic or configuration
2840// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2841//
2842//
2843//    // Example sending a request using the GetStreamingDistributionConfigRequest method.
2844//    req, resp := client.GetStreamingDistributionConfigRequest(params)
2845//
2846//    err := req.Send()
2847//    if err == nil { // resp is now filled
2848//        fmt.Println(resp)
2849//    }
2850//
2851// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetStreamingDistributionConfig
2852func (c *CloudFront) GetStreamingDistributionConfigRequest(input *GetStreamingDistributionConfigInput) (req *request.Request, output *GetStreamingDistributionConfigOutput) {
2853	op := &request.Operation{
2854		Name:       opGetStreamingDistributionConfig,
2855		HTTPMethod: "GET",
2856		HTTPPath:   "/2019-03-26/streaming-distribution/{Id}/config",
2857	}
2858
2859	if input == nil {
2860		input = &GetStreamingDistributionConfigInput{}
2861	}
2862
2863	output = &GetStreamingDistributionConfigOutput{}
2864	req = c.newRequest(op, input, output)
2865	return
2866}
2867
2868// GetStreamingDistributionConfig API operation for Amazon CloudFront.
2869//
2870// Get the configuration information about a streaming distribution.
2871//
2872// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2873// with awserr.Error's Code and Message methods to get detailed information about
2874// the error.
2875//
2876// See the AWS API reference guide for Amazon CloudFront's
2877// API operation GetStreamingDistributionConfig for usage and error information.
2878//
2879// Returned Error Codes:
2880//   * ErrCodeNoSuchStreamingDistribution "NoSuchStreamingDistribution"
2881//   The specified streaming distribution does not exist.
2882//
2883//   * ErrCodeAccessDenied "AccessDenied"
2884//   Access denied.
2885//
2886// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/GetStreamingDistributionConfig
2887func (c *CloudFront) GetStreamingDistributionConfig(input *GetStreamingDistributionConfigInput) (*GetStreamingDistributionConfigOutput, error) {
2888	req, out := c.GetStreamingDistributionConfigRequest(input)
2889	return out, req.Send()
2890}
2891
2892// GetStreamingDistributionConfigWithContext is the same as GetStreamingDistributionConfig with the addition of
2893// the ability to pass a context and additional request options.
2894//
2895// See GetStreamingDistributionConfig for details on how to use this API operation.
2896//
2897// The context must be non-nil and will be used for request cancellation. If
2898// the context is nil a panic will occur. In the future the SDK may create
2899// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2900// for more information on using Contexts.
2901func (c *CloudFront) GetStreamingDistributionConfigWithContext(ctx aws.Context, input *GetStreamingDistributionConfigInput, opts ...request.Option) (*GetStreamingDistributionConfigOutput, error) {
2902	req, out := c.GetStreamingDistributionConfigRequest(input)
2903	req.SetContext(ctx)
2904	req.ApplyOptions(opts...)
2905	return out, req.Send()
2906}
2907
2908const opListCloudFrontOriginAccessIdentities = "ListCloudFrontOriginAccessIdentities2019_03_26"
2909
2910// ListCloudFrontOriginAccessIdentitiesRequest generates a "aws/request.Request" representing the
2911// client's request for the ListCloudFrontOriginAccessIdentities operation. The "output" return
2912// value will be populated with the request's response once the request completes
2913// successfully.
2914//
2915// Use "Send" method on the returned Request to send the API call to the service.
2916// the "output" return value is not valid until after Send returns without error.
2917//
2918// See ListCloudFrontOriginAccessIdentities for more information on using the ListCloudFrontOriginAccessIdentities
2919// API call, and error handling.
2920//
2921// This method is useful when you want to inject custom logic or configuration
2922// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2923//
2924//
2925//    // Example sending a request using the ListCloudFrontOriginAccessIdentitiesRequest method.
2926//    req, resp := client.ListCloudFrontOriginAccessIdentitiesRequest(params)
2927//
2928//    err := req.Send()
2929//    if err == nil { // resp is now filled
2930//        fmt.Println(resp)
2931//    }
2932//
2933// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListCloudFrontOriginAccessIdentities
2934func (c *CloudFront) ListCloudFrontOriginAccessIdentitiesRequest(input *ListCloudFrontOriginAccessIdentitiesInput) (req *request.Request, output *ListCloudFrontOriginAccessIdentitiesOutput) {
2935	op := &request.Operation{
2936		Name:       opListCloudFrontOriginAccessIdentities,
2937		HTTPMethod: "GET",
2938		HTTPPath:   "/2019-03-26/origin-access-identity/cloudfront",
2939		Paginator: &request.Paginator{
2940			InputTokens:     []string{"Marker"},
2941			OutputTokens:    []string{"CloudFrontOriginAccessIdentityList.NextMarker"},
2942			LimitToken:      "MaxItems",
2943			TruncationToken: "CloudFrontOriginAccessIdentityList.IsTruncated",
2944		},
2945	}
2946
2947	if input == nil {
2948		input = &ListCloudFrontOriginAccessIdentitiesInput{}
2949	}
2950
2951	output = &ListCloudFrontOriginAccessIdentitiesOutput{}
2952	req = c.newRequest(op, input, output)
2953	return
2954}
2955
2956// ListCloudFrontOriginAccessIdentities API operation for Amazon CloudFront.
2957//
2958// Lists origin access identities.
2959//
2960// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2961// with awserr.Error's Code and Message methods to get detailed information about
2962// the error.
2963//
2964// See the AWS API reference guide for Amazon CloudFront's
2965// API operation ListCloudFrontOriginAccessIdentities for usage and error information.
2966//
2967// Returned Error Codes:
2968//   * ErrCodeInvalidArgument "InvalidArgument"
2969//   The argument is invalid.
2970//
2971// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListCloudFrontOriginAccessIdentities
2972func (c *CloudFront) ListCloudFrontOriginAccessIdentities(input *ListCloudFrontOriginAccessIdentitiesInput) (*ListCloudFrontOriginAccessIdentitiesOutput, error) {
2973	req, out := c.ListCloudFrontOriginAccessIdentitiesRequest(input)
2974	return out, req.Send()
2975}
2976
2977// ListCloudFrontOriginAccessIdentitiesWithContext is the same as ListCloudFrontOriginAccessIdentities with the addition of
2978// the ability to pass a context and additional request options.
2979//
2980// See ListCloudFrontOriginAccessIdentities for details on how to use this API operation.
2981//
2982// The context must be non-nil and will be used for request cancellation. If
2983// the context is nil a panic will occur. In the future the SDK may create
2984// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2985// for more information on using Contexts.
2986func (c *CloudFront) ListCloudFrontOriginAccessIdentitiesWithContext(ctx aws.Context, input *ListCloudFrontOriginAccessIdentitiesInput, opts ...request.Option) (*ListCloudFrontOriginAccessIdentitiesOutput, error) {
2987	req, out := c.ListCloudFrontOriginAccessIdentitiesRequest(input)
2988	req.SetContext(ctx)
2989	req.ApplyOptions(opts...)
2990	return out, req.Send()
2991}
2992
2993// ListCloudFrontOriginAccessIdentitiesPages iterates over the pages of a ListCloudFrontOriginAccessIdentities operation,
2994// calling the "fn" function with the response data for each page. To stop
2995// iterating, return false from the fn function.
2996//
2997// See ListCloudFrontOriginAccessIdentities method for more information on how to use this operation.
2998//
2999// Note: This operation can generate multiple requests to a service.
3000//
3001//    // Example iterating over at most 3 pages of a ListCloudFrontOriginAccessIdentities operation.
3002//    pageNum := 0
3003//    err := client.ListCloudFrontOriginAccessIdentitiesPages(params,
3004//        func(page *cloudfront.ListCloudFrontOriginAccessIdentitiesOutput, lastPage bool) bool {
3005//            pageNum++
3006//            fmt.Println(page)
3007//            return pageNum <= 3
3008//        })
3009//
3010func (c *CloudFront) ListCloudFrontOriginAccessIdentitiesPages(input *ListCloudFrontOriginAccessIdentitiesInput, fn func(*ListCloudFrontOriginAccessIdentitiesOutput, bool) bool) error {
3011	return c.ListCloudFrontOriginAccessIdentitiesPagesWithContext(aws.BackgroundContext(), input, fn)
3012}
3013
3014// ListCloudFrontOriginAccessIdentitiesPagesWithContext same as ListCloudFrontOriginAccessIdentitiesPages except
3015// it takes a Context and allows setting request options on the pages.
3016//
3017// The context must be non-nil and will be used for request cancellation. If
3018// the context is nil a panic will occur. In the future the SDK may create
3019// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3020// for more information on using Contexts.
3021func (c *CloudFront) ListCloudFrontOriginAccessIdentitiesPagesWithContext(ctx aws.Context, input *ListCloudFrontOriginAccessIdentitiesInput, fn func(*ListCloudFrontOriginAccessIdentitiesOutput, bool) bool, opts ...request.Option) error {
3022	p := request.Pagination{
3023		NewRequest: func() (*request.Request, error) {
3024			var inCpy *ListCloudFrontOriginAccessIdentitiesInput
3025			if input != nil {
3026				tmp := *input
3027				inCpy = &tmp
3028			}
3029			req, _ := c.ListCloudFrontOriginAccessIdentitiesRequest(inCpy)
3030			req.SetContext(ctx)
3031			req.ApplyOptions(opts...)
3032			return req, nil
3033		},
3034	}
3035
3036	for p.Next() {
3037		if !fn(p.Page().(*ListCloudFrontOriginAccessIdentitiesOutput), !p.HasNextPage()) {
3038			break
3039		}
3040	}
3041
3042	return p.Err()
3043}
3044
3045const opListDistributions = "ListDistributions2019_03_26"
3046
3047// ListDistributionsRequest generates a "aws/request.Request" representing the
3048// client's request for the ListDistributions operation. The "output" return
3049// value will be populated with the request's response once the request completes
3050// successfully.
3051//
3052// Use "Send" method on the returned Request to send the API call to the service.
3053// the "output" return value is not valid until after Send returns without error.
3054//
3055// See ListDistributions for more information on using the ListDistributions
3056// API call, and error handling.
3057//
3058// This method is useful when you want to inject custom logic or configuration
3059// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3060//
3061//
3062//    // Example sending a request using the ListDistributionsRequest method.
3063//    req, resp := client.ListDistributionsRequest(params)
3064//
3065//    err := req.Send()
3066//    if err == nil { // resp is now filled
3067//        fmt.Println(resp)
3068//    }
3069//
3070// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListDistributions
3071func (c *CloudFront) ListDistributionsRequest(input *ListDistributionsInput) (req *request.Request, output *ListDistributionsOutput) {
3072	op := &request.Operation{
3073		Name:       opListDistributions,
3074		HTTPMethod: "GET",
3075		HTTPPath:   "/2019-03-26/distribution",
3076		Paginator: &request.Paginator{
3077			InputTokens:     []string{"Marker"},
3078			OutputTokens:    []string{"DistributionList.NextMarker"},
3079			LimitToken:      "MaxItems",
3080			TruncationToken: "DistributionList.IsTruncated",
3081		},
3082	}
3083
3084	if input == nil {
3085		input = &ListDistributionsInput{}
3086	}
3087
3088	output = &ListDistributionsOutput{}
3089	req = c.newRequest(op, input, output)
3090	return
3091}
3092
3093// ListDistributions API operation for Amazon CloudFront.
3094//
3095// List CloudFront distributions.
3096//
3097// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3098// with awserr.Error's Code and Message methods to get detailed information about
3099// the error.
3100//
3101// See the AWS API reference guide for Amazon CloudFront's
3102// API operation ListDistributions for usage and error information.
3103//
3104// Returned Error Codes:
3105//   * ErrCodeInvalidArgument "InvalidArgument"
3106//   The argument is invalid.
3107//
3108// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListDistributions
3109func (c *CloudFront) ListDistributions(input *ListDistributionsInput) (*ListDistributionsOutput, error) {
3110	req, out := c.ListDistributionsRequest(input)
3111	return out, req.Send()
3112}
3113
3114// ListDistributionsWithContext is the same as ListDistributions with the addition of
3115// the ability to pass a context and additional request options.
3116//
3117// See ListDistributions for details on how to use this API operation.
3118//
3119// The context must be non-nil and will be used for request cancellation. If
3120// the context is nil a panic will occur. In the future the SDK may create
3121// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3122// for more information on using Contexts.
3123func (c *CloudFront) ListDistributionsWithContext(ctx aws.Context, input *ListDistributionsInput, opts ...request.Option) (*ListDistributionsOutput, error) {
3124	req, out := c.ListDistributionsRequest(input)
3125	req.SetContext(ctx)
3126	req.ApplyOptions(opts...)
3127	return out, req.Send()
3128}
3129
3130// ListDistributionsPages iterates over the pages of a ListDistributions operation,
3131// calling the "fn" function with the response data for each page. To stop
3132// iterating, return false from the fn function.
3133//
3134// See ListDistributions method for more information on how to use this operation.
3135//
3136// Note: This operation can generate multiple requests to a service.
3137//
3138//    // Example iterating over at most 3 pages of a ListDistributions operation.
3139//    pageNum := 0
3140//    err := client.ListDistributionsPages(params,
3141//        func(page *cloudfront.ListDistributionsOutput, lastPage bool) bool {
3142//            pageNum++
3143//            fmt.Println(page)
3144//            return pageNum <= 3
3145//        })
3146//
3147func (c *CloudFront) ListDistributionsPages(input *ListDistributionsInput, fn func(*ListDistributionsOutput, bool) bool) error {
3148	return c.ListDistributionsPagesWithContext(aws.BackgroundContext(), input, fn)
3149}
3150
3151// ListDistributionsPagesWithContext same as ListDistributionsPages except
3152// it takes a Context and allows setting request options on the pages.
3153//
3154// The context must be non-nil and will be used for request cancellation. If
3155// the context is nil a panic will occur. In the future the SDK may create
3156// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3157// for more information on using Contexts.
3158func (c *CloudFront) ListDistributionsPagesWithContext(ctx aws.Context, input *ListDistributionsInput, fn func(*ListDistributionsOutput, bool) bool, opts ...request.Option) error {
3159	p := request.Pagination{
3160		NewRequest: func() (*request.Request, error) {
3161			var inCpy *ListDistributionsInput
3162			if input != nil {
3163				tmp := *input
3164				inCpy = &tmp
3165			}
3166			req, _ := c.ListDistributionsRequest(inCpy)
3167			req.SetContext(ctx)
3168			req.ApplyOptions(opts...)
3169			return req, nil
3170		},
3171	}
3172
3173	for p.Next() {
3174		if !fn(p.Page().(*ListDistributionsOutput), !p.HasNextPage()) {
3175			break
3176		}
3177	}
3178
3179	return p.Err()
3180}
3181
3182const opListDistributionsByWebACLId = "ListDistributionsByWebACLId2019_03_26"
3183
3184// ListDistributionsByWebACLIdRequest generates a "aws/request.Request" representing the
3185// client's request for the ListDistributionsByWebACLId operation. The "output" return
3186// value will be populated with the request's response once the request completes
3187// successfully.
3188//
3189// Use "Send" method on the returned Request to send the API call to the service.
3190// the "output" return value is not valid until after Send returns without error.
3191//
3192// See ListDistributionsByWebACLId for more information on using the ListDistributionsByWebACLId
3193// API call, and error handling.
3194//
3195// This method is useful when you want to inject custom logic or configuration
3196// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3197//
3198//
3199//    // Example sending a request using the ListDistributionsByWebACLIdRequest method.
3200//    req, resp := client.ListDistributionsByWebACLIdRequest(params)
3201//
3202//    err := req.Send()
3203//    if err == nil { // resp is now filled
3204//        fmt.Println(resp)
3205//    }
3206//
3207// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListDistributionsByWebACLId
3208func (c *CloudFront) ListDistributionsByWebACLIdRequest(input *ListDistributionsByWebACLIdInput) (req *request.Request, output *ListDistributionsByWebACLIdOutput) {
3209	op := &request.Operation{
3210		Name:       opListDistributionsByWebACLId,
3211		HTTPMethod: "GET",
3212		HTTPPath:   "/2019-03-26/distributionsByWebACLId/{WebACLId}",
3213	}
3214
3215	if input == nil {
3216		input = &ListDistributionsByWebACLIdInput{}
3217	}
3218
3219	output = &ListDistributionsByWebACLIdOutput{}
3220	req = c.newRequest(op, input, output)
3221	return
3222}
3223
3224// ListDistributionsByWebACLId API operation for Amazon CloudFront.
3225//
3226// List the distributions that are associated with a specified AWS WAF web ACL.
3227//
3228// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3229// with awserr.Error's Code and Message methods to get detailed information about
3230// the error.
3231//
3232// See the AWS API reference guide for Amazon CloudFront's
3233// API operation ListDistributionsByWebACLId for usage and error information.
3234//
3235// Returned Error Codes:
3236//   * ErrCodeInvalidArgument "InvalidArgument"
3237//   The argument is invalid.
3238//
3239//   * ErrCodeInvalidWebACLId "InvalidWebACLId"
3240//   A web ACL ID specified in the response body is not valid. To specify a web
3241//   ACL created using the latest version of AWS WAF, use the ACL ARN, for example
3242//   arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a.
3243//   To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
3244//   473e64fd-f30b-4765-81a0-62ad96dd167a.
3245//
3246// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListDistributionsByWebACLId
3247func (c *CloudFront) ListDistributionsByWebACLId(input *ListDistributionsByWebACLIdInput) (*ListDistributionsByWebACLIdOutput, error) {
3248	req, out := c.ListDistributionsByWebACLIdRequest(input)
3249	return out, req.Send()
3250}
3251
3252// ListDistributionsByWebACLIdWithContext is the same as ListDistributionsByWebACLId with the addition of
3253// the ability to pass a context and additional request options.
3254//
3255// See ListDistributionsByWebACLId for details on how to use this API operation.
3256//
3257// The context must be non-nil and will be used for request cancellation. If
3258// the context is nil a panic will occur. In the future the SDK may create
3259// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3260// for more information on using Contexts.
3261func (c *CloudFront) ListDistributionsByWebACLIdWithContext(ctx aws.Context, input *ListDistributionsByWebACLIdInput, opts ...request.Option) (*ListDistributionsByWebACLIdOutput, error) {
3262	req, out := c.ListDistributionsByWebACLIdRequest(input)
3263	req.SetContext(ctx)
3264	req.ApplyOptions(opts...)
3265	return out, req.Send()
3266}
3267
3268const opListFieldLevelEncryptionConfigs = "ListFieldLevelEncryptionConfigs2019_03_26"
3269
3270// ListFieldLevelEncryptionConfigsRequest generates a "aws/request.Request" representing the
3271// client's request for the ListFieldLevelEncryptionConfigs operation. The "output" return
3272// value will be populated with the request's response once the request completes
3273// successfully.
3274//
3275// Use "Send" method on the returned Request to send the API call to the service.
3276// the "output" return value is not valid until after Send returns without error.
3277//
3278// See ListFieldLevelEncryptionConfigs for more information on using the ListFieldLevelEncryptionConfigs
3279// API call, and error handling.
3280//
3281// This method is useful when you want to inject custom logic or configuration
3282// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3283//
3284//
3285//    // Example sending a request using the ListFieldLevelEncryptionConfigsRequest method.
3286//    req, resp := client.ListFieldLevelEncryptionConfigsRequest(params)
3287//
3288//    err := req.Send()
3289//    if err == nil { // resp is now filled
3290//        fmt.Println(resp)
3291//    }
3292//
3293// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListFieldLevelEncryptionConfigs
3294func (c *CloudFront) ListFieldLevelEncryptionConfigsRequest(input *ListFieldLevelEncryptionConfigsInput) (req *request.Request, output *ListFieldLevelEncryptionConfigsOutput) {
3295	op := &request.Operation{
3296		Name:       opListFieldLevelEncryptionConfigs,
3297		HTTPMethod: "GET",
3298		HTTPPath:   "/2019-03-26/field-level-encryption",
3299	}
3300
3301	if input == nil {
3302		input = &ListFieldLevelEncryptionConfigsInput{}
3303	}
3304
3305	output = &ListFieldLevelEncryptionConfigsOutput{}
3306	req = c.newRequest(op, input, output)
3307	return
3308}
3309
3310// ListFieldLevelEncryptionConfigs API operation for Amazon CloudFront.
3311//
3312// List all field-level encryption configurations that have been created in
3313// CloudFront for this account.
3314//
3315// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3316// with awserr.Error's Code and Message methods to get detailed information about
3317// the error.
3318//
3319// See the AWS API reference guide for Amazon CloudFront's
3320// API operation ListFieldLevelEncryptionConfigs for usage and error information.
3321//
3322// Returned Error Codes:
3323//   * ErrCodeInvalidArgument "InvalidArgument"
3324//   The argument is invalid.
3325//
3326// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListFieldLevelEncryptionConfigs
3327func (c *CloudFront) ListFieldLevelEncryptionConfigs(input *ListFieldLevelEncryptionConfigsInput) (*ListFieldLevelEncryptionConfigsOutput, error) {
3328	req, out := c.ListFieldLevelEncryptionConfigsRequest(input)
3329	return out, req.Send()
3330}
3331
3332// ListFieldLevelEncryptionConfigsWithContext is the same as ListFieldLevelEncryptionConfigs with the addition of
3333// the ability to pass a context and additional request options.
3334//
3335// See ListFieldLevelEncryptionConfigs for details on how to use this API operation.
3336//
3337// The context must be non-nil and will be used for request cancellation. If
3338// the context is nil a panic will occur. In the future the SDK may create
3339// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3340// for more information on using Contexts.
3341func (c *CloudFront) ListFieldLevelEncryptionConfigsWithContext(ctx aws.Context, input *ListFieldLevelEncryptionConfigsInput, opts ...request.Option) (*ListFieldLevelEncryptionConfigsOutput, error) {
3342	req, out := c.ListFieldLevelEncryptionConfigsRequest(input)
3343	req.SetContext(ctx)
3344	req.ApplyOptions(opts...)
3345	return out, req.Send()
3346}
3347
3348const opListFieldLevelEncryptionProfiles = "ListFieldLevelEncryptionProfiles2019_03_26"
3349
3350// ListFieldLevelEncryptionProfilesRequest generates a "aws/request.Request" representing the
3351// client's request for the ListFieldLevelEncryptionProfiles operation. The "output" return
3352// value will be populated with the request's response once the request completes
3353// successfully.
3354//
3355// Use "Send" method on the returned Request to send the API call to the service.
3356// the "output" return value is not valid until after Send returns without error.
3357//
3358// See ListFieldLevelEncryptionProfiles for more information on using the ListFieldLevelEncryptionProfiles
3359// API call, and error handling.
3360//
3361// This method is useful when you want to inject custom logic or configuration
3362// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3363//
3364//
3365//    // Example sending a request using the ListFieldLevelEncryptionProfilesRequest method.
3366//    req, resp := client.ListFieldLevelEncryptionProfilesRequest(params)
3367//
3368//    err := req.Send()
3369//    if err == nil { // resp is now filled
3370//        fmt.Println(resp)
3371//    }
3372//
3373// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListFieldLevelEncryptionProfiles
3374func (c *CloudFront) ListFieldLevelEncryptionProfilesRequest(input *ListFieldLevelEncryptionProfilesInput) (req *request.Request, output *ListFieldLevelEncryptionProfilesOutput) {
3375	op := &request.Operation{
3376		Name:       opListFieldLevelEncryptionProfiles,
3377		HTTPMethod: "GET",
3378		HTTPPath:   "/2019-03-26/field-level-encryption-profile",
3379	}
3380
3381	if input == nil {
3382		input = &ListFieldLevelEncryptionProfilesInput{}
3383	}
3384
3385	output = &ListFieldLevelEncryptionProfilesOutput{}
3386	req = c.newRequest(op, input, output)
3387	return
3388}
3389
3390// ListFieldLevelEncryptionProfiles API operation for Amazon CloudFront.
3391//
3392// Request a list of field-level encryption profiles that have been created
3393// in CloudFront for this account.
3394//
3395// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3396// with awserr.Error's Code and Message methods to get detailed information about
3397// the error.
3398//
3399// See the AWS API reference guide for Amazon CloudFront's
3400// API operation ListFieldLevelEncryptionProfiles for usage and error information.
3401//
3402// Returned Error Codes:
3403//   * ErrCodeInvalidArgument "InvalidArgument"
3404//   The argument is invalid.
3405//
3406// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListFieldLevelEncryptionProfiles
3407func (c *CloudFront) ListFieldLevelEncryptionProfiles(input *ListFieldLevelEncryptionProfilesInput) (*ListFieldLevelEncryptionProfilesOutput, error) {
3408	req, out := c.ListFieldLevelEncryptionProfilesRequest(input)
3409	return out, req.Send()
3410}
3411
3412// ListFieldLevelEncryptionProfilesWithContext is the same as ListFieldLevelEncryptionProfiles with the addition of
3413// the ability to pass a context and additional request options.
3414//
3415// See ListFieldLevelEncryptionProfiles for details on how to use this API operation.
3416//
3417// The context must be non-nil and will be used for request cancellation. If
3418// the context is nil a panic will occur. In the future the SDK may create
3419// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3420// for more information on using Contexts.
3421func (c *CloudFront) ListFieldLevelEncryptionProfilesWithContext(ctx aws.Context, input *ListFieldLevelEncryptionProfilesInput, opts ...request.Option) (*ListFieldLevelEncryptionProfilesOutput, error) {
3422	req, out := c.ListFieldLevelEncryptionProfilesRequest(input)
3423	req.SetContext(ctx)
3424	req.ApplyOptions(opts...)
3425	return out, req.Send()
3426}
3427
3428const opListInvalidations = "ListInvalidations2019_03_26"
3429
3430// ListInvalidationsRequest generates a "aws/request.Request" representing the
3431// client's request for the ListInvalidations operation. The "output" return
3432// value will be populated with the request's response once the request completes
3433// successfully.
3434//
3435// Use "Send" method on the returned Request to send the API call to the service.
3436// the "output" return value is not valid until after Send returns without error.
3437//
3438// See ListInvalidations for more information on using the ListInvalidations
3439// API call, and error handling.
3440//
3441// This method is useful when you want to inject custom logic or configuration
3442// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3443//
3444//
3445//    // Example sending a request using the ListInvalidationsRequest method.
3446//    req, resp := client.ListInvalidationsRequest(params)
3447//
3448//    err := req.Send()
3449//    if err == nil { // resp is now filled
3450//        fmt.Println(resp)
3451//    }
3452//
3453// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListInvalidations
3454func (c *CloudFront) ListInvalidationsRequest(input *ListInvalidationsInput) (req *request.Request, output *ListInvalidationsOutput) {
3455	op := &request.Operation{
3456		Name:       opListInvalidations,
3457		HTTPMethod: "GET",
3458		HTTPPath:   "/2019-03-26/distribution/{DistributionId}/invalidation",
3459		Paginator: &request.Paginator{
3460			InputTokens:     []string{"Marker"},
3461			OutputTokens:    []string{"InvalidationList.NextMarker"},
3462			LimitToken:      "MaxItems",
3463			TruncationToken: "InvalidationList.IsTruncated",
3464		},
3465	}
3466
3467	if input == nil {
3468		input = &ListInvalidationsInput{}
3469	}
3470
3471	output = &ListInvalidationsOutput{}
3472	req = c.newRequest(op, input, output)
3473	return
3474}
3475
3476// ListInvalidations API operation for Amazon CloudFront.
3477//
3478// Lists invalidation batches.
3479//
3480// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3481// with awserr.Error's Code and Message methods to get detailed information about
3482// the error.
3483//
3484// See the AWS API reference guide for Amazon CloudFront's
3485// API operation ListInvalidations for usage and error information.
3486//
3487// Returned Error Codes:
3488//   * ErrCodeInvalidArgument "InvalidArgument"
3489//   The argument is invalid.
3490//
3491//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
3492//   The specified distribution does not exist.
3493//
3494//   * ErrCodeAccessDenied "AccessDenied"
3495//   Access denied.
3496//
3497// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListInvalidations
3498func (c *CloudFront) ListInvalidations(input *ListInvalidationsInput) (*ListInvalidationsOutput, error) {
3499	req, out := c.ListInvalidationsRequest(input)
3500	return out, req.Send()
3501}
3502
3503// ListInvalidationsWithContext is the same as ListInvalidations with the addition of
3504// the ability to pass a context and additional request options.
3505//
3506// See ListInvalidations for details on how to use this API operation.
3507//
3508// The context must be non-nil and will be used for request cancellation. If
3509// the context is nil a panic will occur. In the future the SDK may create
3510// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3511// for more information on using Contexts.
3512func (c *CloudFront) ListInvalidationsWithContext(ctx aws.Context, input *ListInvalidationsInput, opts ...request.Option) (*ListInvalidationsOutput, error) {
3513	req, out := c.ListInvalidationsRequest(input)
3514	req.SetContext(ctx)
3515	req.ApplyOptions(opts...)
3516	return out, req.Send()
3517}
3518
3519// ListInvalidationsPages iterates over the pages of a ListInvalidations operation,
3520// calling the "fn" function with the response data for each page. To stop
3521// iterating, return false from the fn function.
3522//
3523// See ListInvalidations method for more information on how to use this operation.
3524//
3525// Note: This operation can generate multiple requests to a service.
3526//
3527//    // Example iterating over at most 3 pages of a ListInvalidations operation.
3528//    pageNum := 0
3529//    err := client.ListInvalidationsPages(params,
3530//        func(page *cloudfront.ListInvalidationsOutput, lastPage bool) bool {
3531//            pageNum++
3532//            fmt.Println(page)
3533//            return pageNum <= 3
3534//        })
3535//
3536func (c *CloudFront) ListInvalidationsPages(input *ListInvalidationsInput, fn func(*ListInvalidationsOutput, bool) bool) error {
3537	return c.ListInvalidationsPagesWithContext(aws.BackgroundContext(), input, fn)
3538}
3539
3540// ListInvalidationsPagesWithContext same as ListInvalidationsPages except
3541// it takes a Context and allows setting request options on the pages.
3542//
3543// The context must be non-nil and will be used for request cancellation. If
3544// the context is nil a panic will occur. In the future the SDK may create
3545// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3546// for more information on using Contexts.
3547func (c *CloudFront) ListInvalidationsPagesWithContext(ctx aws.Context, input *ListInvalidationsInput, fn func(*ListInvalidationsOutput, bool) bool, opts ...request.Option) error {
3548	p := request.Pagination{
3549		NewRequest: func() (*request.Request, error) {
3550			var inCpy *ListInvalidationsInput
3551			if input != nil {
3552				tmp := *input
3553				inCpy = &tmp
3554			}
3555			req, _ := c.ListInvalidationsRequest(inCpy)
3556			req.SetContext(ctx)
3557			req.ApplyOptions(opts...)
3558			return req, nil
3559		},
3560	}
3561
3562	for p.Next() {
3563		if !fn(p.Page().(*ListInvalidationsOutput), !p.HasNextPage()) {
3564			break
3565		}
3566	}
3567
3568	return p.Err()
3569}
3570
3571const opListPublicKeys = "ListPublicKeys2019_03_26"
3572
3573// ListPublicKeysRequest generates a "aws/request.Request" representing the
3574// client's request for the ListPublicKeys operation. The "output" return
3575// value will be populated with the request's response once the request completes
3576// successfully.
3577//
3578// Use "Send" method on the returned Request to send the API call to the service.
3579// the "output" return value is not valid until after Send returns without error.
3580//
3581// See ListPublicKeys for more information on using the ListPublicKeys
3582// API call, and error handling.
3583//
3584// This method is useful when you want to inject custom logic or configuration
3585// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3586//
3587//
3588//    // Example sending a request using the ListPublicKeysRequest method.
3589//    req, resp := client.ListPublicKeysRequest(params)
3590//
3591//    err := req.Send()
3592//    if err == nil { // resp is now filled
3593//        fmt.Println(resp)
3594//    }
3595//
3596// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListPublicKeys
3597func (c *CloudFront) ListPublicKeysRequest(input *ListPublicKeysInput) (req *request.Request, output *ListPublicKeysOutput) {
3598	op := &request.Operation{
3599		Name:       opListPublicKeys,
3600		HTTPMethod: "GET",
3601		HTTPPath:   "/2019-03-26/public-key",
3602	}
3603
3604	if input == nil {
3605		input = &ListPublicKeysInput{}
3606	}
3607
3608	output = &ListPublicKeysOutput{}
3609	req = c.newRequest(op, input, output)
3610	return
3611}
3612
3613// ListPublicKeys API operation for Amazon CloudFront.
3614//
3615// List all public keys that have been added to CloudFront for this account.
3616//
3617// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3618// with awserr.Error's Code and Message methods to get detailed information about
3619// the error.
3620//
3621// See the AWS API reference guide for Amazon CloudFront's
3622// API operation ListPublicKeys for usage and error information.
3623//
3624// Returned Error Codes:
3625//   * ErrCodeInvalidArgument "InvalidArgument"
3626//   The argument is invalid.
3627//
3628// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListPublicKeys
3629func (c *CloudFront) ListPublicKeys(input *ListPublicKeysInput) (*ListPublicKeysOutput, error) {
3630	req, out := c.ListPublicKeysRequest(input)
3631	return out, req.Send()
3632}
3633
3634// ListPublicKeysWithContext is the same as ListPublicKeys with the addition of
3635// the ability to pass a context and additional request options.
3636//
3637// See ListPublicKeys for details on how to use this API operation.
3638//
3639// The context must be non-nil and will be used for request cancellation. If
3640// the context is nil a panic will occur. In the future the SDK may create
3641// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3642// for more information on using Contexts.
3643func (c *CloudFront) ListPublicKeysWithContext(ctx aws.Context, input *ListPublicKeysInput, opts ...request.Option) (*ListPublicKeysOutput, error) {
3644	req, out := c.ListPublicKeysRequest(input)
3645	req.SetContext(ctx)
3646	req.ApplyOptions(opts...)
3647	return out, req.Send()
3648}
3649
3650const opListStreamingDistributions = "ListStreamingDistributions2019_03_26"
3651
3652// ListStreamingDistributionsRequest generates a "aws/request.Request" representing the
3653// client's request for the ListStreamingDistributions operation. The "output" return
3654// value will be populated with the request's response once the request completes
3655// successfully.
3656//
3657// Use "Send" method on the returned Request to send the API call to the service.
3658// the "output" return value is not valid until after Send returns without error.
3659//
3660// See ListStreamingDistributions for more information on using the ListStreamingDistributions
3661// API call, and error handling.
3662//
3663// This method is useful when you want to inject custom logic or configuration
3664// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3665//
3666//
3667//    // Example sending a request using the ListStreamingDistributionsRequest method.
3668//    req, resp := client.ListStreamingDistributionsRequest(params)
3669//
3670//    err := req.Send()
3671//    if err == nil { // resp is now filled
3672//        fmt.Println(resp)
3673//    }
3674//
3675// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListStreamingDistributions
3676func (c *CloudFront) ListStreamingDistributionsRequest(input *ListStreamingDistributionsInput) (req *request.Request, output *ListStreamingDistributionsOutput) {
3677	op := &request.Operation{
3678		Name:       opListStreamingDistributions,
3679		HTTPMethod: "GET",
3680		HTTPPath:   "/2019-03-26/streaming-distribution",
3681		Paginator: &request.Paginator{
3682			InputTokens:     []string{"Marker"},
3683			OutputTokens:    []string{"StreamingDistributionList.NextMarker"},
3684			LimitToken:      "MaxItems",
3685			TruncationToken: "StreamingDistributionList.IsTruncated",
3686		},
3687	}
3688
3689	if input == nil {
3690		input = &ListStreamingDistributionsInput{}
3691	}
3692
3693	output = &ListStreamingDistributionsOutput{}
3694	req = c.newRequest(op, input, output)
3695	return
3696}
3697
3698// ListStreamingDistributions API operation for Amazon CloudFront.
3699//
3700// List streaming distributions.
3701//
3702// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3703// with awserr.Error's Code and Message methods to get detailed information about
3704// the error.
3705//
3706// See the AWS API reference guide for Amazon CloudFront's
3707// API operation ListStreamingDistributions for usage and error information.
3708//
3709// Returned Error Codes:
3710//   * ErrCodeInvalidArgument "InvalidArgument"
3711//   The argument is invalid.
3712//
3713// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListStreamingDistributions
3714func (c *CloudFront) ListStreamingDistributions(input *ListStreamingDistributionsInput) (*ListStreamingDistributionsOutput, error) {
3715	req, out := c.ListStreamingDistributionsRequest(input)
3716	return out, req.Send()
3717}
3718
3719// ListStreamingDistributionsWithContext is the same as ListStreamingDistributions with the addition of
3720// the ability to pass a context and additional request options.
3721//
3722// See ListStreamingDistributions for details on how to use this API operation.
3723//
3724// The context must be non-nil and will be used for request cancellation. If
3725// the context is nil a panic will occur. In the future the SDK may create
3726// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3727// for more information on using Contexts.
3728func (c *CloudFront) ListStreamingDistributionsWithContext(ctx aws.Context, input *ListStreamingDistributionsInput, opts ...request.Option) (*ListStreamingDistributionsOutput, error) {
3729	req, out := c.ListStreamingDistributionsRequest(input)
3730	req.SetContext(ctx)
3731	req.ApplyOptions(opts...)
3732	return out, req.Send()
3733}
3734
3735// ListStreamingDistributionsPages iterates over the pages of a ListStreamingDistributions operation,
3736// calling the "fn" function with the response data for each page. To stop
3737// iterating, return false from the fn function.
3738//
3739// See ListStreamingDistributions method for more information on how to use this operation.
3740//
3741// Note: This operation can generate multiple requests to a service.
3742//
3743//    // Example iterating over at most 3 pages of a ListStreamingDistributions operation.
3744//    pageNum := 0
3745//    err := client.ListStreamingDistributionsPages(params,
3746//        func(page *cloudfront.ListStreamingDistributionsOutput, lastPage bool) bool {
3747//            pageNum++
3748//            fmt.Println(page)
3749//            return pageNum <= 3
3750//        })
3751//
3752func (c *CloudFront) ListStreamingDistributionsPages(input *ListStreamingDistributionsInput, fn func(*ListStreamingDistributionsOutput, bool) bool) error {
3753	return c.ListStreamingDistributionsPagesWithContext(aws.BackgroundContext(), input, fn)
3754}
3755
3756// ListStreamingDistributionsPagesWithContext same as ListStreamingDistributionsPages except
3757// it takes a Context and allows setting request options on the pages.
3758//
3759// The context must be non-nil and will be used for request cancellation. If
3760// the context is nil a panic will occur. In the future the SDK may create
3761// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3762// for more information on using Contexts.
3763func (c *CloudFront) ListStreamingDistributionsPagesWithContext(ctx aws.Context, input *ListStreamingDistributionsInput, fn func(*ListStreamingDistributionsOutput, bool) bool, opts ...request.Option) error {
3764	p := request.Pagination{
3765		NewRequest: func() (*request.Request, error) {
3766			var inCpy *ListStreamingDistributionsInput
3767			if input != nil {
3768				tmp := *input
3769				inCpy = &tmp
3770			}
3771			req, _ := c.ListStreamingDistributionsRequest(inCpy)
3772			req.SetContext(ctx)
3773			req.ApplyOptions(opts...)
3774			return req, nil
3775		},
3776	}
3777
3778	for p.Next() {
3779		if !fn(p.Page().(*ListStreamingDistributionsOutput), !p.HasNextPage()) {
3780			break
3781		}
3782	}
3783
3784	return p.Err()
3785}
3786
3787const opListTagsForResource = "ListTagsForResource2019_03_26"
3788
3789// ListTagsForResourceRequest generates a "aws/request.Request" representing the
3790// client's request for the ListTagsForResource operation. The "output" return
3791// value will be populated with the request's response once the request completes
3792// successfully.
3793//
3794// Use "Send" method on the returned Request to send the API call to the service.
3795// the "output" return value is not valid until after Send returns without error.
3796//
3797// See ListTagsForResource for more information on using the ListTagsForResource
3798// API call, and error handling.
3799//
3800// This method is useful when you want to inject custom logic or configuration
3801// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3802//
3803//
3804//    // Example sending a request using the ListTagsForResourceRequest method.
3805//    req, resp := client.ListTagsForResourceRequest(params)
3806//
3807//    err := req.Send()
3808//    if err == nil { // resp is now filled
3809//        fmt.Println(resp)
3810//    }
3811//
3812// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListTagsForResource
3813func (c *CloudFront) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
3814	op := &request.Operation{
3815		Name:       opListTagsForResource,
3816		HTTPMethod: "GET",
3817		HTTPPath:   "/2019-03-26/tagging",
3818	}
3819
3820	if input == nil {
3821		input = &ListTagsForResourceInput{}
3822	}
3823
3824	output = &ListTagsForResourceOutput{}
3825	req = c.newRequest(op, input, output)
3826	return
3827}
3828
3829// ListTagsForResource API operation for Amazon CloudFront.
3830//
3831// List tags for a CloudFront resource.
3832//
3833// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3834// with awserr.Error's Code and Message methods to get detailed information about
3835// the error.
3836//
3837// See the AWS API reference guide for Amazon CloudFront's
3838// API operation ListTagsForResource for usage and error information.
3839//
3840// Returned Error Codes:
3841//   * ErrCodeAccessDenied "AccessDenied"
3842//   Access denied.
3843//
3844//   * ErrCodeInvalidArgument "InvalidArgument"
3845//   The argument is invalid.
3846//
3847//   * ErrCodeInvalidTagging "InvalidTagging"
3848//   Tagging specified in the response body is not valid.
3849//
3850//   * ErrCodeNoSuchResource "NoSuchResource"
3851//   A resource that was specified is not valid.
3852//
3853// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/ListTagsForResource
3854func (c *CloudFront) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
3855	req, out := c.ListTagsForResourceRequest(input)
3856	return out, req.Send()
3857}
3858
3859// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
3860// the ability to pass a context and additional request options.
3861//
3862// See ListTagsForResource for details on how to use this API operation.
3863//
3864// The context must be non-nil and will be used for request cancellation. If
3865// the context is nil a panic will occur. In the future the SDK may create
3866// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3867// for more information on using Contexts.
3868func (c *CloudFront) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
3869	req, out := c.ListTagsForResourceRequest(input)
3870	req.SetContext(ctx)
3871	req.ApplyOptions(opts...)
3872	return out, req.Send()
3873}
3874
3875const opTagResource = "TagResource2019_03_26"
3876
3877// TagResourceRequest generates a "aws/request.Request" representing the
3878// client's request for the TagResource operation. The "output" return
3879// value will be populated with the request's response once the request completes
3880// successfully.
3881//
3882// Use "Send" method on the returned Request to send the API call to the service.
3883// the "output" return value is not valid until after Send returns without error.
3884//
3885// See TagResource for more information on using the TagResource
3886// API call, and error handling.
3887//
3888// This method is useful when you want to inject custom logic or configuration
3889// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3890//
3891//
3892//    // Example sending a request using the TagResourceRequest method.
3893//    req, resp := client.TagResourceRequest(params)
3894//
3895//    err := req.Send()
3896//    if err == nil { // resp is now filled
3897//        fmt.Println(resp)
3898//    }
3899//
3900// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/TagResource
3901func (c *CloudFront) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
3902	op := &request.Operation{
3903		Name:       opTagResource,
3904		HTTPMethod: "POST",
3905		HTTPPath:   "/2019-03-26/tagging?Operation=Tag",
3906	}
3907
3908	if input == nil {
3909		input = &TagResourceInput{}
3910	}
3911
3912	output = &TagResourceOutput{}
3913	req = c.newRequest(op, input, output)
3914	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3915	return
3916}
3917
3918// TagResource API operation for Amazon CloudFront.
3919//
3920// Add tags to a CloudFront resource.
3921//
3922// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3923// with awserr.Error's Code and Message methods to get detailed information about
3924// the error.
3925//
3926// See the AWS API reference guide for Amazon CloudFront's
3927// API operation TagResource for usage and error information.
3928//
3929// Returned Error Codes:
3930//   * ErrCodeAccessDenied "AccessDenied"
3931//   Access denied.
3932//
3933//   * ErrCodeInvalidArgument "InvalidArgument"
3934//   The argument is invalid.
3935//
3936//   * ErrCodeInvalidTagging "InvalidTagging"
3937//   Tagging specified in the response body is not valid.
3938//
3939//   * ErrCodeNoSuchResource "NoSuchResource"
3940//   A resource that was specified is not valid.
3941//
3942// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/TagResource
3943func (c *CloudFront) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
3944	req, out := c.TagResourceRequest(input)
3945	return out, req.Send()
3946}
3947
3948// TagResourceWithContext is the same as TagResource with the addition of
3949// the ability to pass a context and additional request options.
3950//
3951// See TagResource for details on how to use this API operation.
3952//
3953// The context must be non-nil and will be used for request cancellation. If
3954// the context is nil a panic will occur. In the future the SDK may create
3955// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3956// for more information on using Contexts.
3957func (c *CloudFront) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
3958	req, out := c.TagResourceRequest(input)
3959	req.SetContext(ctx)
3960	req.ApplyOptions(opts...)
3961	return out, req.Send()
3962}
3963
3964const opUntagResource = "UntagResource2019_03_26"
3965
3966// UntagResourceRequest generates a "aws/request.Request" representing the
3967// client's request for the UntagResource operation. The "output" return
3968// value will be populated with the request's response once the request completes
3969// successfully.
3970//
3971// Use "Send" method on the returned Request to send the API call to the service.
3972// the "output" return value is not valid until after Send returns without error.
3973//
3974// See UntagResource for more information on using the UntagResource
3975// API call, and error handling.
3976//
3977// This method is useful when you want to inject custom logic or configuration
3978// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3979//
3980//
3981//    // Example sending a request using the UntagResourceRequest method.
3982//    req, resp := client.UntagResourceRequest(params)
3983//
3984//    err := req.Send()
3985//    if err == nil { // resp is now filled
3986//        fmt.Println(resp)
3987//    }
3988//
3989// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UntagResource
3990func (c *CloudFront) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
3991	op := &request.Operation{
3992		Name:       opUntagResource,
3993		HTTPMethod: "POST",
3994		HTTPPath:   "/2019-03-26/tagging?Operation=Untag",
3995	}
3996
3997	if input == nil {
3998		input = &UntagResourceInput{}
3999	}
4000
4001	output = &UntagResourceOutput{}
4002	req = c.newRequest(op, input, output)
4003	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4004	return
4005}
4006
4007// UntagResource API operation for Amazon CloudFront.
4008//
4009// Remove tags from a CloudFront resource.
4010//
4011// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4012// with awserr.Error's Code and Message methods to get detailed information about
4013// the error.
4014//
4015// See the AWS API reference guide for Amazon CloudFront's
4016// API operation UntagResource for usage and error information.
4017//
4018// Returned Error Codes:
4019//   * ErrCodeAccessDenied "AccessDenied"
4020//   Access denied.
4021//
4022//   * ErrCodeInvalidArgument "InvalidArgument"
4023//   The argument is invalid.
4024//
4025//   * ErrCodeInvalidTagging "InvalidTagging"
4026//   Tagging specified in the response body is not valid.
4027//
4028//   * ErrCodeNoSuchResource "NoSuchResource"
4029//   A resource that was specified is not valid.
4030//
4031// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UntagResource
4032func (c *CloudFront) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
4033	req, out := c.UntagResourceRequest(input)
4034	return out, req.Send()
4035}
4036
4037// UntagResourceWithContext is the same as UntagResource with the addition of
4038// the ability to pass a context and additional request options.
4039//
4040// See UntagResource for details on how to use this API operation.
4041//
4042// The context must be non-nil and will be used for request cancellation. If
4043// the context is nil a panic will occur. In the future the SDK may create
4044// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4045// for more information on using Contexts.
4046func (c *CloudFront) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
4047	req, out := c.UntagResourceRequest(input)
4048	req.SetContext(ctx)
4049	req.ApplyOptions(opts...)
4050	return out, req.Send()
4051}
4052
4053const opUpdateCloudFrontOriginAccessIdentity = "UpdateCloudFrontOriginAccessIdentity2019_03_26"
4054
4055// UpdateCloudFrontOriginAccessIdentityRequest generates a "aws/request.Request" representing the
4056// client's request for the UpdateCloudFrontOriginAccessIdentity operation. The "output" return
4057// value will be populated with the request's response once the request completes
4058// successfully.
4059//
4060// Use "Send" method on the returned Request to send the API call to the service.
4061// the "output" return value is not valid until after Send returns without error.
4062//
4063// See UpdateCloudFrontOriginAccessIdentity for more information on using the UpdateCloudFrontOriginAccessIdentity
4064// API call, and error handling.
4065//
4066// This method is useful when you want to inject custom logic or configuration
4067// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4068//
4069//
4070//    // Example sending a request using the UpdateCloudFrontOriginAccessIdentityRequest method.
4071//    req, resp := client.UpdateCloudFrontOriginAccessIdentityRequest(params)
4072//
4073//    err := req.Send()
4074//    if err == nil { // resp is now filled
4075//        fmt.Println(resp)
4076//    }
4077//
4078// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateCloudFrontOriginAccessIdentity
4079func (c *CloudFront) UpdateCloudFrontOriginAccessIdentityRequest(input *UpdateCloudFrontOriginAccessIdentityInput) (req *request.Request, output *UpdateCloudFrontOriginAccessIdentityOutput) {
4080	op := &request.Operation{
4081		Name:       opUpdateCloudFrontOriginAccessIdentity,
4082		HTTPMethod: "PUT",
4083		HTTPPath:   "/2019-03-26/origin-access-identity/cloudfront/{Id}/config",
4084	}
4085
4086	if input == nil {
4087		input = &UpdateCloudFrontOriginAccessIdentityInput{}
4088	}
4089
4090	output = &UpdateCloudFrontOriginAccessIdentityOutput{}
4091	req = c.newRequest(op, input, output)
4092	return
4093}
4094
4095// UpdateCloudFrontOriginAccessIdentity API operation for Amazon CloudFront.
4096//
4097// Update an origin access identity.
4098//
4099// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4100// with awserr.Error's Code and Message methods to get detailed information about
4101// the error.
4102//
4103// See the AWS API reference guide for Amazon CloudFront's
4104// API operation UpdateCloudFrontOriginAccessIdentity for usage and error information.
4105//
4106// Returned Error Codes:
4107//   * ErrCodeAccessDenied "AccessDenied"
4108//   Access denied.
4109//
4110//   * ErrCodeIllegalUpdate "IllegalUpdate"
4111//   Origin and CallerReference cannot be updated.
4112//
4113//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
4114//   The If-Match version is missing or not valid for the distribution.
4115//
4116//   * ErrCodeMissingBody "MissingBody"
4117//   This operation requires a body. Ensure that the body is present and the Content-Type
4118//   header is set.
4119//
4120//   * ErrCodeNoSuchCloudFrontOriginAccessIdentity "NoSuchCloudFrontOriginAccessIdentity"
4121//   The specified origin access identity does not exist.
4122//
4123//   * ErrCodePreconditionFailed "PreconditionFailed"
4124//   The precondition given in one or more of the request-header fields evaluated
4125//   to false.
4126//
4127//   * ErrCodeInvalidArgument "InvalidArgument"
4128//   The argument is invalid.
4129//
4130//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
4131//   The value of Quantity and the size of Items don't match.
4132//
4133// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateCloudFrontOriginAccessIdentity
4134func (c *CloudFront) UpdateCloudFrontOriginAccessIdentity(input *UpdateCloudFrontOriginAccessIdentityInput) (*UpdateCloudFrontOriginAccessIdentityOutput, error) {
4135	req, out := c.UpdateCloudFrontOriginAccessIdentityRequest(input)
4136	return out, req.Send()
4137}
4138
4139// UpdateCloudFrontOriginAccessIdentityWithContext is the same as UpdateCloudFrontOriginAccessIdentity with the addition of
4140// the ability to pass a context and additional request options.
4141//
4142// See UpdateCloudFrontOriginAccessIdentity for details on how to use this API operation.
4143//
4144// The context must be non-nil and will be used for request cancellation. If
4145// the context is nil a panic will occur. In the future the SDK may create
4146// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4147// for more information on using Contexts.
4148func (c *CloudFront) UpdateCloudFrontOriginAccessIdentityWithContext(ctx aws.Context, input *UpdateCloudFrontOriginAccessIdentityInput, opts ...request.Option) (*UpdateCloudFrontOriginAccessIdentityOutput, error) {
4149	req, out := c.UpdateCloudFrontOriginAccessIdentityRequest(input)
4150	req.SetContext(ctx)
4151	req.ApplyOptions(opts...)
4152	return out, req.Send()
4153}
4154
4155const opUpdateDistribution = "UpdateDistribution2019_03_26"
4156
4157// UpdateDistributionRequest generates a "aws/request.Request" representing the
4158// client's request for the UpdateDistribution operation. The "output" return
4159// value will be populated with the request's response once the request completes
4160// successfully.
4161//
4162// Use "Send" method on the returned Request to send the API call to the service.
4163// the "output" return value is not valid until after Send returns without error.
4164//
4165// See UpdateDistribution for more information on using the UpdateDistribution
4166// API call, and error handling.
4167//
4168// This method is useful when you want to inject custom logic or configuration
4169// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4170//
4171//
4172//    // Example sending a request using the UpdateDistributionRequest method.
4173//    req, resp := client.UpdateDistributionRequest(params)
4174//
4175//    err := req.Send()
4176//    if err == nil { // resp is now filled
4177//        fmt.Println(resp)
4178//    }
4179//
4180// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateDistribution
4181func (c *CloudFront) UpdateDistributionRequest(input *UpdateDistributionInput) (req *request.Request, output *UpdateDistributionOutput) {
4182	op := &request.Operation{
4183		Name:       opUpdateDistribution,
4184		HTTPMethod: "PUT",
4185		HTTPPath:   "/2019-03-26/distribution/{Id}/config",
4186	}
4187
4188	if input == nil {
4189		input = &UpdateDistributionInput{}
4190	}
4191
4192	output = &UpdateDistributionOutput{}
4193	req = c.newRequest(op, input, output)
4194	return
4195}
4196
4197// UpdateDistribution API operation for Amazon CloudFront.
4198//
4199// Updates the configuration for a web distribution.
4200//
4201// When you update a distribution, there are more required fields than when
4202// you create a distribution. When you update your distribution by using this
4203// API action, follow the steps here to get the current configuration and then
4204// make your updates, to make sure that you include all of the required fields.
4205// To view a summary, see Required Fields for Create Distribution and Update
4206// Distribution (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-overview-required-fields.html)
4207// in the Amazon CloudFront Developer Guide.
4208//
4209// The update process includes getting the current distribution configuration,
4210// updating the XML document that is returned to make your changes, and then
4211// submitting an UpdateDistribution request to make the updates.
4212//
4213// For information about updating a distribution using the CloudFront console
4214// instead, see Creating a Distribution (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-creating-console.html)
4215// in the Amazon CloudFront Developer Guide.
4216//
4217// To update a web distribution using the CloudFront API
4218//
4219// Submit a GetDistributionConfig (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistributionConfig.html)
4220// request to get the current configuration and an Etag header for the distribution.
4221//
4222// If you update the distribution again, you must get a new Etag header.
4223//
4224// Update the XML document that was returned in the response to your GetDistributionConfig
4225// request to include your changes.
4226//
4227// When you edit the XML file, be aware of the following:
4228//
4229//    * You must strip out the ETag parameter that is returned.
4230//
4231//    * Additional fields are required when you update a distribution. There
4232//    may be fields included in the XML file for features that you haven't configured
4233//    for your distribution. This is expected and required to successfully update
4234//    the distribution.
4235//
4236//    * You can't change the value of CallerReference. If you try to change
4237//    this value, CloudFront returns an IllegalUpdate error.
4238//
4239//    * The new configuration replaces the existing configuration; the values
4240//    that you specify in an UpdateDistribution request are not merged into
4241//    your existing configuration. When you add, delete, or replace values in
4242//    an element that allows multiple values (for example, CNAME), you must
4243//    specify all of the values that you want to appear in the updated distribution.
4244//    In addition, you must update the corresponding Quantity element.
4245//
4246// Submit an UpdateDistribution request to update the configuration for your
4247// distribution:
4248//
4249//    * In the request body, include the XML document that you updated in Step
4250//    2. The request body must include an XML document with a DistributionConfig
4251//    element.
4252//
4253//    * Set the value of the HTTP If-Match header to the value of the ETag header
4254//    that CloudFront returned when you submitted the GetDistributionConfig
4255//    request in Step 1.
4256//
4257// Review the response to the UpdateDistribution request to confirm that the
4258// configuration was successfully updated.
4259//
4260// Optional: Submit a GetDistribution (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_GetDistribution.html)
4261// request to confirm that your changes have propagated. When propagation is
4262// complete, the value of Status is Deployed.
4263//
4264// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4265// with awserr.Error's Code and Message methods to get detailed information about
4266// the error.
4267//
4268// See the AWS API reference guide for Amazon CloudFront's
4269// API operation UpdateDistribution for usage and error information.
4270//
4271// Returned Error Codes:
4272//   * ErrCodeAccessDenied "AccessDenied"
4273//   Access denied.
4274//
4275//   * ErrCodeCNAMEAlreadyExists "CNAMEAlreadyExists"
4276//   The CNAME specified is already defined for CloudFront.
4277//
4278//   * ErrCodeIllegalUpdate "IllegalUpdate"
4279//   Origin and CallerReference cannot be updated.
4280//
4281//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
4282//   The If-Match version is missing or not valid for the distribution.
4283//
4284//   * ErrCodeMissingBody "MissingBody"
4285//   This operation requires a body. Ensure that the body is present and the Content-Type
4286//   header is set.
4287//
4288//   * ErrCodeNoSuchDistribution "NoSuchDistribution"
4289//   The specified distribution does not exist.
4290//
4291//   * ErrCodePreconditionFailed "PreconditionFailed"
4292//   The precondition given in one or more of the request-header fields evaluated
4293//   to false.
4294//
4295//   * ErrCodeTooManyDistributionCNAMEs "TooManyDistributionCNAMEs"
4296//   Your request contains more CNAMEs than are allowed per distribution.
4297//
4298//   * ErrCodeInvalidDefaultRootObject "InvalidDefaultRootObject"
4299//   The default root object file name is too big or contains an invalid character.
4300//
4301//   * ErrCodeInvalidRelativePath "InvalidRelativePath"
4302//   The relative path is too big, is not URL-encoded, or does not begin with
4303//   a slash (/).
4304//
4305//   * ErrCodeInvalidErrorCode "InvalidErrorCode"
4306//   An invalid error code was specified.
4307//
4308//   * ErrCodeInvalidResponseCode "InvalidResponseCode"
4309//   A response code specified in the response body is not valid.
4310//
4311//   * ErrCodeInvalidArgument "InvalidArgument"
4312//   The argument is invalid.
4313//
4314//   * ErrCodeInvalidOriginAccessIdentity "InvalidOriginAccessIdentity"
4315//   The origin access identity is not valid or doesn't exist.
4316//
4317//   * ErrCodeTooManyTrustedSigners "TooManyTrustedSigners"
4318//   Your request contains more trusted signers than are allowed per distribution.
4319//
4320//   * ErrCodeTrustedSignerDoesNotExist "TrustedSignerDoesNotExist"
4321//   One or more of your trusted signers don't exist.
4322//
4323//   * ErrCodeInvalidViewerCertificate "InvalidViewerCertificate"
4324//   A viewer certificate specified in the response body is not valid.
4325//
4326//   * ErrCodeInvalidMinimumProtocolVersion "InvalidMinimumProtocolVersion"
4327//   The minimum protocol version specified is not valid.
4328//
4329//   * ErrCodeInvalidRequiredProtocol "InvalidRequiredProtocol"
4330//   This operation requires the HTTPS protocol. Ensure that you specify the HTTPS
4331//   protocol in your request, or omit the RequiredProtocols element from your
4332//   distribution configuration.
4333//
4334//   * ErrCodeNoSuchOrigin "NoSuchOrigin"
4335//   No origin exists with the specified Origin Id.
4336//
4337//   * ErrCodeTooManyOrigins "TooManyOrigins"
4338//   You cannot create more origins for the distribution.
4339//
4340//   * ErrCodeTooManyOriginGroupsPerDistribution "TooManyOriginGroupsPerDistribution"
4341//   Processing your request would cause you to exceed the maximum number of origin
4342//   groups allowed.
4343//
4344//   * ErrCodeTooManyCacheBehaviors "TooManyCacheBehaviors"
4345//   You cannot create more cache behaviors for the distribution.
4346//
4347//   * ErrCodeTooManyCookieNamesInWhiteList "TooManyCookieNamesInWhiteList"
4348//   Your request contains more cookie names in the whitelist than are allowed
4349//   per cache behavior.
4350//
4351//   * ErrCodeInvalidForwardCookies "InvalidForwardCookies"
4352//   Your request contains forward cookies option which doesn't match with the
4353//   expectation for the whitelisted list of cookie names. Either list of cookie
4354//   names has been specified when not allowed or list of cookie names is missing
4355//   when expected.
4356//
4357//   * ErrCodeTooManyHeadersInForwardedValues "TooManyHeadersInForwardedValues"
4358//   Your request contains too many headers in forwarded values.
4359//
4360//   * ErrCodeInvalidHeadersForS3Origin "InvalidHeadersForS3Origin"
4361//   The headers specified are not valid for an Amazon S3 origin.
4362//
4363//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
4364//   The value of Quantity and the size of Items don't match.
4365//
4366//   * ErrCodeTooManyCertificates "TooManyCertificates"
4367//   You cannot create anymore custom SSL/TLS certificates.
4368//
4369//   * ErrCodeInvalidLocationCode "InvalidLocationCode"
4370//   The location code specified is not valid.
4371//
4372//   * ErrCodeInvalidGeoRestrictionParameter "InvalidGeoRestrictionParameter"
4373//   The specified geo restriction parameter is not valid.
4374//
4375//   * ErrCodeInvalidTTLOrder "InvalidTTLOrder"
4376//   TTL order specified in the response body is not valid.
4377//
4378//   * ErrCodeInvalidWebACLId "InvalidWebACLId"
4379//   A web ACL ID specified in the response body is not valid. To specify a web
4380//   ACL created using the latest version of AWS WAF, use the ACL ARN, for example
4381//   arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a.
4382//   To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
4383//   473e64fd-f30b-4765-81a0-62ad96dd167a.
4384//
4385//   * ErrCodeTooManyOriginCustomHeaders "TooManyOriginCustomHeaders"
4386//   Your request contains too many origin custom headers.
4387//
4388//   * ErrCodeTooManyQueryStringParameters "TooManyQueryStringParameters"
4389//   Your request contains too many query string parameters.
4390//
4391//   * ErrCodeInvalidQueryStringParameters "InvalidQueryStringParameters"
4392//   Query string parameters specified in the response body are not valid.
4393//
4394//   * ErrCodeTooManyDistributionsWithLambdaAssociations "TooManyDistributionsWithLambdaAssociations"
4395//   Processing your request would cause the maximum number of distributions with
4396//   Lambda function associations per owner to be exceeded.
4397//
4398//   * ErrCodeTooManyLambdaFunctionAssociations "TooManyLambdaFunctionAssociations"
4399//   Your request contains more Lambda function associations than are allowed
4400//   per distribution.
4401//
4402//   * ErrCodeInvalidLambdaFunctionAssociation "InvalidLambdaFunctionAssociation"
4403//   The specified Lambda function association is invalid.
4404//
4405//   * ErrCodeInvalidOriginReadTimeout "InvalidOriginReadTimeout"
4406//   The read timeout specified for the origin is not valid.
4407//
4408//   * ErrCodeInvalidOriginKeepaliveTimeout "InvalidOriginKeepaliveTimeout"
4409//   The keep alive timeout specified for the origin is not valid.
4410//
4411//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
4412//   The specified configuration for field-level encryption doesn't exist.
4413//
4414//   * ErrCodeIllegalFieldLevelEncryptionConfigAssociationWithCacheBehavior "IllegalFieldLevelEncryptionConfigAssociationWithCacheBehavior"
4415//   The specified configuration for field-level encryption can't be associated
4416//   with the specified cache behavior.
4417//
4418//   * ErrCodeTooManyDistributionsAssociatedToFieldLevelEncryptionConfig "TooManyDistributionsAssociatedToFieldLevelEncryptionConfig"
4419//   The maximum number of distributions have been associated with the specified
4420//   configuration for field-level encryption.
4421//
4422// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateDistribution
4423func (c *CloudFront) UpdateDistribution(input *UpdateDistributionInput) (*UpdateDistributionOutput, error) {
4424	req, out := c.UpdateDistributionRequest(input)
4425	return out, req.Send()
4426}
4427
4428// UpdateDistributionWithContext is the same as UpdateDistribution with the addition of
4429// the ability to pass a context and additional request options.
4430//
4431// See UpdateDistribution for details on how to use this API operation.
4432//
4433// The context must be non-nil and will be used for request cancellation. If
4434// the context is nil a panic will occur. In the future the SDK may create
4435// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4436// for more information on using Contexts.
4437func (c *CloudFront) UpdateDistributionWithContext(ctx aws.Context, input *UpdateDistributionInput, opts ...request.Option) (*UpdateDistributionOutput, error) {
4438	req, out := c.UpdateDistributionRequest(input)
4439	req.SetContext(ctx)
4440	req.ApplyOptions(opts...)
4441	return out, req.Send()
4442}
4443
4444const opUpdateFieldLevelEncryptionConfig = "UpdateFieldLevelEncryptionConfig2019_03_26"
4445
4446// UpdateFieldLevelEncryptionConfigRequest generates a "aws/request.Request" representing the
4447// client's request for the UpdateFieldLevelEncryptionConfig operation. The "output" return
4448// value will be populated with the request's response once the request completes
4449// successfully.
4450//
4451// Use "Send" method on the returned Request to send the API call to the service.
4452// the "output" return value is not valid until after Send returns without error.
4453//
4454// See UpdateFieldLevelEncryptionConfig for more information on using the UpdateFieldLevelEncryptionConfig
4455// API call, and error handling.
4456//
4457// This method is useful when you want to inject custom logic or configuration
4458// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4459//
4460//
4461//    // Example sending a request using the UpdateFieldLevelEncryptionConfigRequest method.
4462//    req, resp := client.UpdateFieldLevelEncryptionConfigRequest(params)
4463//
4464//    err := req.Send()
4465//    if err == nil { // resp is now filled
4466//        fmt.Println(resp)
4467//    }
4468//
4469// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateFieldLevelEncryptionConfig
4470func (c *CloudFront) UpdateFieldLevelEncryptionConfigRequest(input *UpdateFieldLevelEncryptionConfigInput) (req *request.Request, output *UpdateFieldLevelEncryptionConfigOutput) {
4471	op := &request.Operation{
4472		Name:       opUpdateFieldLevelEncryptionConfig,
4473		HTTPMethod: "PUT",
4474		HTTPPath:   "/2019-03-26/field-level-encryption/{Id}/config",
4475	}
4476
4477	if input == nil {
4478		input = &UpdateFieldLevelEncryptionConfigInput{}
4479	}
4480
4481	output = &UpdateFieldLevelEncryptionConfigOutput{}
4482	req = c.newRequest(op, input, output)
4483	return
4484}
4485
4486// UpdateFieldLevelEncryptionConfig API operation for Amazon CloudFront.
4487//
4488// Update a field-level encryption configuration.
4489//
4490// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4491// with awserr.Error's Code and Message methods to get detailed information about
4492// the error.
4493//
4494// See the AWS API reference guide for Amazon CloudFront's
4495// API operation UpdateFieldLevelEncryptionConfig for usage and error information.
4496//
4497// Returned Error Codes:
4498//   * ErrCodeAccessDenied "AccessDenied"
4499//   Access denied.
4500//
4501//   * ErrCodeIllegalUpdate "IllegalUpdate"
4502//   Origin and CallerReference cannot be updated.
4503//
4504//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
4505//   The value of Quantity and the size of Items don't match.
4506//
4507//   * ErrCodeInvalidArgument "InvalidArgument"
4508//   The argument is invalid.
4509//
4510//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
4511//   The If-Match version is missing or not valid for the distribution.
4512//
4513//   * ErrCodeNoSuchFieldLevelEncryptionProfile "NoSuchFieldLevelEncryptionProfile"
4514//   The specified profile for field-level encryption doesn't exist.
4515//
4516//   * ErrCodeNoSuchFieldLevelEncryptionConfig "NoSuchFieldLevelEncryptionConfig"
4517//   The specified configuration for field-level encryption doesn't exist.
4518//
4519//   * ErrCodePreconditionFailed "PreconditionFailed"
4520//   The precondition given in one or more of the request-header fields evaluated
4521//   to false.
4522//
4523//   * ErrCodeTooManyFieldLevelEncryptionQueryArgProfiles "TooManyFieldLevelEncryptionQueryArgProfiles"
4524//   The maximum number of query arg profiles for field-level encryption have
4525//   been created.
4526//
4527//   * ErrCodeTooManyFieldLevelEncryptionContentTypeProfiles "TooManyFieldLevelEncryptionContentTypeProfiles"
4528//   The maximum number of content type profiles for field-level encryption have
4529//   been created.
4530//
4531//   * ErrCodeQueryArgProfileEmpty "QueryArgProfileEmpty"
4532//   No profile specified for the field-level encryption query argument.
4533//
4534// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateFieldLevelEncryptionConfig
4535func (c *CloudFront) UpdateFieldLevelEncryptionConfig(input *UpdateFieldLevelEncryptionConfigInput) (*UpdateFieldLevelEncryptionConfigOutput, error) {
4536	req, out := c.UpdateFieldLevelEncryptionConfigRequest(input)
4537	return out, req.Send()
4538}
4539
4540// UpdateFieldLevelEncryptionConfigWithContext is the same as UpdateFieldLevelEncryptionConfig with the addition of
4541// the ability to pass a context and additional request options.
4542//
4543// See UpdateFieldLevelEncryptionConfig for details on how to use this API operation.
4544//
4545// The context must be non-nil and will be used for request cancellation. If
4546// the context is nil a panic will occur. In the future the SDK may create
4547// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4548// for more information on using Contexts.
4549func (c *CloudFront) UpdateFieldLevelEncryptionConfigWithContext(ctx aws.Context, input *UpdateFieldLevelEncryptionConfigInput, opts ...request.Option) (*UpdateFieldLevelEncryptionConfigOutput, error) {
4550	req, out := c.UpdateFieldLevelEncryptionConfigRequest(input)
4551	req.SetContext(ctx)
4552	req.ApplyOptions(opts...)
4553	return out, req.Send()
4554}
4555
4556const opUpdateFieldLevelEncryptionProfile = "UpdateFieldLevelEncryptionProfile2019_03_26"
4557
4558// UpdateFieldLevelEncryptionProfileRequest generates a "aws/request.Request" representing the
4559// client's request for the UpdateFieldLevelEncryptionProfile operation. The "output" return
4560// value will be populated with the request's response once the request completes
4561// successfully.
4562//
4563// Use "Send" method on the returned Request to send the API call to the service.
4564// the "output" return value is not valid until after Send returns without error.
4565//
4566// See UpdateFieldLevelEncryptionProfile for more information on using the UpdateFieldLevelEncryptionProfile
4567// API call, and error handling.
4568//
4569// This method is useful when you want to inject custom logic or configuration
4570// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4571//
4572//
4573//    // Example sending a request using the UpdateFieldLevelEncryptionProfileRequest method.
4574//    req, resp := client.UpdateFieldLevelEncryptionProfileRequest(params)
4575//
4576//    err := req.Send()
4577//    if err == nil { // resp is now filled
4578//        fmt.Println(resp)
4579//    }
4580//
4581// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateFieldLevelEncryptionProfile
4582func (c *CloudFront) UpdateFieldLevelEncryptionProfileRequest(input *UpdateFieldLevelEncryptionProfileInput) (req *request.Request, output *UpdateFieldLevelEncryptionProfileOutput) {
4583	op := &request.Operation{
4584		Name:       opUpdateFieldLevelEncryptionProfile,
4585		HTTPMethod: "PUT",
4586		HTTPPath:   "/2019-03-26/field-level-encryption-profile/{Id}/config",
4587	}
4588
4589	if input == nil {
4590		input = &UpdateFieldLevelEncryptionProfileInput{}
4591	}
4592
4593	output = &UpdateFieldLevelEncryptionProfileOutput{}
4594	req = c.newRequest(op, input, output)
4595	return
4596}
4597
4598// UpdateFieldLevelEncryptionProfile API operation for Amazon CloudFront.
4599//
4600// Update a field-level encryption profile.
4601//
4602// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4603// with awserr.Error's Code and Message methods to get detailed information about
4604// the error.
4605//
4606// See the AWS API reference guide for Amazon CloudFront's
4607// API operation UpdateFieldLevelEncryptionProfile for usage and error information.
4608//
4609// Returned Error Codes:
4610//   * ErrCodeAccessDenied "AccessDenied"
4611//   Access denied.
4612//
4613//   * ErrCodeFieldLevelEncryptionProfileAlreadyExists "FieldLevelEncryptionProfileAlreadyExists"
4614//   The specified profile for field-level encryption already exists.
4615//
4616//   * ErrCodeIllegalUpdate "IllegalUpdate"
4617//   Origin and CallerReference cannot be updated.
4618//
4619//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
4620//   The value of Quantity and the size of Items don't match.
4621//
4622//   * ErrCodeInvalidArgument "InvalidArgument"
4623//   The argument is invalid.
4624//
4625//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
4626//   The If-Match version is missing or not valid for the distribution.
4627//
4628//   * ErrCodeNoSuchPublicKey "NoSuchPublicKey"
4629//   The specified public key doesn't exist.
4630//
4631//   * ErrCodeNoSuchFieldLevelEncryptionProfile "NoSuchFieldLevelEncryptionProfile"
4632//   The specified profile for field-level encryption doesn't exist.
4633//
4634//   * ErrCodePreconditionFailed "PreconditionFailed"
4635//   The precondition given in one or more of the request-header fields evaluated
4636//   to false.
4637//
4638//   * ErrCodeFieldLevelEncryptionProfileSizeExceeded "FieldLevelEncryptionProfileSizeExceeded"
4639//   The maximum size of a profile for field-level encryption was exceeded.
4640//
4641//   * ErrCodeTooManyFieldLevelEncryptionEncryptionEntities "TooManyFieldLevelEncryptionEncryptionEntities"
4642//   The maximum number of encryption entities for field-level encryption have
4643//   been created.
4644//
4645//   * ErrCodeTooManyFieldLevelEncryptionFieldPatterns "TooManyFieldLevelEncryptionFieldPatterns"
4646//   The maximum number of field patterns for field-level encryption have been
4647//   created.
4648//
4649// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateFieldLevelEncryptionProfile
4650func (c *CloudFront) UpdateFieldLevelEncryptionProfile(input *UpdateFieldLevelEncryptionProfileInput) (*UpdateFieldLevelEncryptionProfileOutput, error) {
4651	req, out := c.UpdateFieldLevelEncryptionProfileRequest(input)
4652	return out, req.Send()
4653}
4654
4655// UpdateFieldLevelEncryptionProfileWithContext is the same as UpdateFieldLevelEncryptionProfile with the addition of
4656// the ability to pass a context and additional request options.
4657//
4658// See UpdateFieldLevelEncryptionProfile for details on how to use this API operation.
4659//
4660// The context must be non-nil and will be used for request cancellation. If
4661// the context is nil a panic will occur. In the future the SDK may create
4662// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4663// for more information on using Contexts.
4664func (c *CloudFront) UpdateFieldLevelEncryptionProfileWithContext(ctx aws.Context, input *UpdateFieldLevelEncryptionProfileInput, opts ...request.Option) (*UpdateFieldLevelEncryptionProfileOutput, error) {
4665	req, out := c.UpdateFieldLevelEncryptionProfileRequest(input)
4666	req.SetContext(ctx)
4667	req.ApplyOptions(opts...)
4668	return out, req.Send()
4669}
4670
4671const opUpdatePublicKey = "UpdatePublicKey2019_03_26"
4672
4673// UpdatePublicKeyRequest generates a "aws/request.Request" representing the
4674// client's request for the UpdatePublicKey operation. The "output" return
4675// value will be populated with the request's response once the request completes
4676// successfully.
4677//
4678// Use "Send" method on the returned Request to send the API call to the service.
4679// the "output" return value is not valid until after Send returns without error.
4680//
4681// See UpdatePublicKey for more information on using the UpdatePublicKey
4682// API call, and error handling.
4683//
4684// This method is useful when you want to inject custom logic or configuration
4685// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4686//
4687//
4688//    // Example sending a request using the UpdatePublicKeyRequest method.
4689//    req, resp := client.UpdatePublicKeyRequest(params)
4690//
4691//    err := req.Send()
4692//    if err == nil { // resp is now filled
4693//        fmt.Println(resp)
4694//    }
4695//
4696// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdatePublicKey
4697func (c *CloudFront) UpdatePublicKeyRequest(input *UpdatePublicKeyInput) (req *request.Request, output *UpdatePublicKeyOutput) {
4698	op := &request.Operation{
4699		Name:       opUpdatePublicKey,
4700		HTTPMethod: "PUT",
4701		HTTPPath:   "/2019-03-26/public-key/{Id}/config",
4702	}
4703
4704	if input == nil {
4705		input = &UpdatePublicKeyInput{}
4706	}
4707
4708	output = &UpdatePublicKeyOutput{}
4709	req = c.newRequest(op, input, output)
4710	return
4711}
4712
4713// UpdatePublicKey API operation for Amazon CloudFront.
4714//
4715// Update public key information. Note that the only value you can change is
4716// the comment.
4717//
4718// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4719// with awserr.Error's Code and Message methods to get detailed information about
4720// the error.
4721//
4722// See the AWS API reference guide for Amazon CloudFront's
4723// API operation UpdatePublicKey for usage and error information.
4724//
4725// Returned Error Codes:
4726//   * ErrCodeAccessDenied "AccessDenied"
4727//   Access denied.
4728//
4729//   * ErrCodeCannotChangeImmutablePublicKeyFields "CannotChangeImmutablePublicKeyFields"
4730//   You can't change the value of a public key.
4731//
4732//   * ErrCodeInvalidArgument "InvalidArgument"
4733//   The argument is invalid.
4734//
4735//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
4736//   The If-Match version is missing or not valid for the distribution.
4737//
4738//   * ErrCodeIllegalUpdate "IllegalUpdate"
4739//   Origin and CallerReference cannot be updated.
4740//
4741//   * ErrCodeNoSuchPublicKey "NoSuchPublicKey"
4742//   The specified public key doesn't exist.
4743//
4744//   * ErrCodePreconditionFailed "PreconditionFailed"
4745//   The precondition given in one or more of the request-header fields evaluated
4746//   to false.
4747//
4748// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdatePublicKey
4749func (c *CloudFront) UpdatePublicKey(input *UpdatePublicKeyInput) (*UpdatePublicKeyOutput, error) {
4750	req, out := c.UpdatePublicKeyRequest(input)
4751	return out, req.Send()
4752}
4753
4754// UpdatePublicKeyWithContext is the same as UpdatePublicKey with the addition of
4755// the ability to pass a context and additional request options.
4756//
4757// See UpdatePublicKey for details on how to use this API operation.
4758//
4759// The context must be non-nil and will be used for request cancellation. If
4760// the context is nil a panic will occur. In the future the SDK may create
4761// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4762// for more information on using Contexts.
4763func (c *CloudFront) UpdatePublicKeyWithContext(ctx aws.Context, input *UpdatePublicKeyInput, opts ...request.Option) (*UpdatePublicKeyOutput, error) {
4764	req, out := c.UpdatePublicKeyRequest(input)
4765	req.SetContext(ctx)
4766	req.ApplyOptions(opts...)
4767	return out, req.Send()
4768}
4769
4770const opUpdateStreamingDistribution = "UpdateStreamingDistribution2019_03_26"
4771
4772// UpdateStreamingDistributionRequest generates a "aws/request.Request" representing the
4773// client's request for the UpdateStreamingDistribution operation. The "output" return
4774// value will be populated with the request's response once the request completes
4775// successfully.
4776//
4777// Use "Send" method on the returned Request to send the API call to the service.
4778// the "output" return value is not valid until after Send returns without error.
4779//
4780// See UpdateStreamingDistribution for more information on using the UpdateStreamingDistribution
4781// API call, and error handling.
4782//
4783// This method is useful when you want to inject custom logic or configuration
4784// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4785//
4786//
4787//    // Example sending a request using the UpdateStreamingDistributionRequest method.
4788//    req, resp := client.UpdateStreamingDistributionRequest(params)
4789//
4790//    err := req.Send()
4791//    if err == nil { // resp is now filled
4792//        fmt.Println(resp)
4793//    }
4794//
4795// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateStreamingDistribution
4796func (c *CloudFront) UpdateStreamingDistributionRequest(input *UpdateStreamingDistributionInput) (req *request.Request, output *UpdateStreamingDistributionOutput) {
4797	op := &request.Operation{
4798		Name:       opUpdateStreamingDistribution,
4799		HTTPMethod: "PUT",
4800		HTTPPath:   "/2019-03-26/streaming-distribution/{Id}/config",
4801	}
4802
4803	if input == nil {
4804		input = &UpdateStreamingDistributionInput{}
4805	}
4806
4807	output = &UpdateStreamingDistributionOutput{}
4808	req = c.newRequest(op, input, output)
4809	return
4810}
4811
4812// UpdateStreamingDistribution API operation for Amazon CloudFront.
4813//
4814// Update a streaming distribution.
4815//
4816// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4817// with awserr.Error's Code and Message methods to get detailed information about
4818// the error.
4819//
4820// See the AWS API reference guide for Amazon CloudFront's
4821// API operation UpdateStreamingDistribution for usage and error information.
4822//
4823// Returned Error Codes:
4824//   * ErrCodeAccessDenied "AccessDenied"
4825//   Access denied.
4826//
4827//   * ErrCodeCNAMEAlreadyExists "CNAMEAlreadyExists"
4828//   The CNAME specified is already defined for CloudFront.
4829//
4830//   * ErrCodeIllegalUpdate "IllegalUpdate"
4831//   Origin and CallerReference cannot be updated.
4832//
4833//   * ErrCodeInvalidIfMatchVersion "InvalidIfMatchVersion"
4834//   The If-Match version is missing or not valid for the distribution.
4835//
4836//   * ErrCodeMissingBody "MissingBody"
4837//   This operation requires a body. Ensure that the body is present and the Content-Type
4838//   header is set.
4839//
4840//   * ErrCodeNoSuchStreamingDistribution "NoSuchStreamingDistribution"
4841//   The specified streaming distribution does not exist.
4842//
4843//   * ErrCodePreconditionFailed "PreconditionFailed"
4844//   The precondition given in one or more of the request-header fields evaluated
4845//   to false.
4846//
4847//   * ErrCodeTooManyStreamingDistributionCNAMEs "TooManyStreamingDistributionCNAMEs"
4848//   Your request contains more CNAMEs than are allowed per distribution.
4849//
4850//   * ErrCodeInvalidArgument "InvalidArgument"
4851//   The argument is invalid.
4852//
4853//   * ErrCodeInvalidOriginAccessIdentity "InvalidOriginAccessIdentity"
4854//   The origin access identity is not valid or doesn't exist.
4855//
4856//   * ErrCodeTooManyTrustedSigners "TooManyTrustedSigners"
4857//   Your request contains more trusted signers than are allowed per distribution.
4858//
4859//   * ErrCodeTrustedSignerDoesNotExist "TrustedSignerDoesNotExist"
4860//   One or more of your trusted signers don't exist.
4861//
4862//   * ErrCodeInconsistentQuantities "InconsistentQuantities"
4863//   The value of Quantity and the size of Items don't match.
4864//
4865// See also, https://docs.aws.amazon.com/goto/WebAPI/cloudfront-2019-03-26/UpdateStreamingDistribution
4866func (c *CloudFront) UpdateStreamingDistribution(input *UpdateStreamingDistributionInput) (*UpdateStreamingDistributionOutput, error) {
4867	req, out := c.UpdateStreamingDistributionRequest(input)
4868	return out, req.Send()
4869}
4870
4871// UpdateStreamingDistributionWithContext is the same as UpdateStreamingDistribution with the addition of
4872// the ability to pass a context and additional request options.
4873//
4874// See UpdateStreamingDistribution for details on how to use this API operation.
4875//
4876// The context must be non-nil and will be used for request cancellation. If
4877// the context is nil a panic will occur. In the future the SDK may create
4878// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4879// for more information on using Contexts.
4880func (c *CloudFront) UpdateStreamingDistributionWithContext(ctx aws.Context, input *UpdateStreamingDistributionInput, opts ...request.Option) (*UpdateStreamingDistributionOutput, error) {
4881	req, out := c.UpdateStreamingDistributionRequest(input)
4882	req.SetContext(ctx)
4883	req.ApplyOptions(opts...)
4884	return out, req.Send()
4885}
4886
4887// A complex type that lists the AWS accounts, if any, that you included in
4888// the TrustedSigners complex type for this distribution. These are the accounts
4889// that you want to allow to create signed URLs for private content.
4890//
4891// The Signer complex type lists the AWS account number of the trusted signer
4892// or self if the signer is the AWS account that created the distribution. The
4893// Signer element also includes the IDs of any active CloudFront key pairs that
4894// are associated with the trusted signer's AWS account. If no KeyPairId element
4895// appears for a Signer, that signer can't create signed URLs.
4896//
4897// For more information, see Serving Private Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
4898// in the Amazon CloudFront Developer Guide.
4899type ActiveTrustedSigners struct {
4900	_ struct{} `type:"structure"`
4901
4902	// Enabled is true if any of the AWS accounts listed in the TrustedSigners complex
4903	// type for this distribution have active CloudFront key pairs. If not, Enabled
4904	// is false.
4905	//
4906	// Enabled is a required field
4907	Enabled *bool `type:"boolean" required:"true"`
4908
4909	// A complex type that contains one Signer complex type for each trusted signer
4910	// that is specified in the TrustedSigners complex type.
4911	Items []*Signer `locationNameList:"Signer" type:"list"`
4912
4913	// The number of trusted signers specified in the TrustedSigners complex type.
4914	//
4915	// Quantity is a required field
4916	Quantity *int64 `type:"integer" required:"true"`
4917}
4918
4919// String returns the string representation
4920func (s ActiveTrustedSigners) String() string {
4921	return awsutil.Prettify(s)
4922}
4923
4924// GoString returns the string representation
4925func (s ActiveTrustedSigners) GoString() string {
4926	return s.String()
4927}
4928
4929// SetEnabled sets the Enabled field's value.
4930func (s *ActiveTrustedSigners) SetEnabled(v bool) *ActiveTrustedSigners {
4931	s.Enabled = &v
4932	return s
4933}
4934
4935// SetItems sets the Items field's value.
4936func (s *ActiveTrustedSigners) SetItems(v []*Signer) *ActiveTrustedSigners {
4937	s.Items = v
4938	return s
4939}
4940
4941// SetQuantity sets the Quantity field's value.
4942func (s *ActiveTrustedSigners) SetQuantity(v int64) *ActiveTrustedSigners {
4943	s.Quantity = &v
4944	return s
4945}
4946
4947// AWS services in China customers must file for an Internet Content Provider
4948// (ICP) recordal if they want to serve content publicly on an alternate domain
4949// name, also known as a CNAME, that they've added to CloudFront. AliasICPRecordal
4950// provides the ICP recordal status for CNAMEs associated with distributions.
4951// The status is returned in the CloudFront response; you can't configure it
4952// yourself.
4953//
4954// For more information about ICP recordals, see Signup, Accounts, and Credentials
4955// (https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html)
4956// in Getting Started with AWS services in China.
4957type AliasICPRecordal struct {
4958	_ struct{} `type:"structure"`
4959
4960	// A domain name associated with a distribution.
4961	CNAME *string `type:"string"`
4962
4963	// The Internet Content Provider (ICP) recordal status for a CNAME. The ICPRecordalStatus
4964	// is set to APPROVED for all CNAMEs (aliases) in regions outside of China.
4965	//
4966	// The status values returned are the following:
4967	//
4968	//    * APPROVED indicates that the associated CNAME has a valid ICP recordal
4969	//    number. Multiple CNAMEs can be associated with a distribution, and CNAMEs
4970	//    can correspond to different ICP recordals. To be marked as APPROVED, that
4971	//    is, valid to use with China region, a CNAME must have one ICP recordal
4972	//    number associated with it.
4973	//
4974	//    * SUSPENDED indicates that the associated CNAME does not have a valid
4975	//    ICP recordal number.
4976	//
4977	//    * PENDING indicates that CloudFront can't determine the ICP recordal status
4978	//    of the CNAME associated with the distribution because there was an error
4979	//    in trying to determine the status. You can try again to see if the error
4980	//    is resolved in which case CloudFront returns an APPROVED or SUSPENDED
4981	//    status.
4982	ICPRecordalStatus *string `type:"string" enum:"ICPRecordalStatus"`
4983}
4984
4985// String returns the string representation
4986func (s AliasICPRecordal) String() string {
4987	return awsutil.Prettify(s)
4988}
4989
4990// GoString returns the string representation
4991func (s AliasICPRecordal) GoString() string {
4992	return s.String()
4993}
4994
4995// SetCNAME sets the CNAME field's value.
4996func (s *AliasICPRecordal) SetCNAME(v string) *AliasICPRecordal {
4997	s.CNAME = &v
4998	return s
4999}
5000
5001// SetICPRecordalStatus sets the ICPRecordalStatus field's value.
5002func (s *AliasICPRecordal) SetICPRecordalStatus(v string) *AliasICPRecordal {
5003	s.ICPRecordalStatus = &v
5004	return s
5005}
5006
5007// A complex type that contains information about CNAMEs (alternate domain names),
5008// if any, for this distribution.
5009type Aliases struct {
5010	_ struct{} `type:"structure"`
5011
5012	// A complex type that contains the CNAME aliases, if any, that you want to
5013	// associate with this distribution.
5014	Items []*string `locationNameList:"CNAME" type:"list"`
5015
5016	// The number of CNAME aliases, if any, that you want to associate with this
5017	// distribution.
5018	//
5019	// Quantity is a required field
5020	Quantity *int64 `type:"integer" required:"true"`
5021}
5022
5023// String returns the string representation
5024func (s Aliases) String() string {
5025	return awsutil.Prettify(s)
5026}
5027
5028// GoString returns the string representation
5029func (s Aliases) GoString() string {
5030	return s.String()
5031}
5032
5033// Validate inspects the fields of the type to determine if they are valid.
5034func (s *Aliases) Validate() error {
5035	invalidParams := request.ErrInvalidParams{Context: "Aliases"}
5036	if s.Quantity == nil {
5037		invalidParams.Add(request.NewErrParamRequired("Quantity"))
5038	}
5039
5040	if invalidParams.Len() > 0 {
5041		return invalidParams
5042	}
5043	return nil
5044}
5045
5046// SetItems sets the Items field's value.
5047func (s *Aliases) SetItems(v []*string) *Aliases {
5048	s.Items = v
5049	return s
5050}
5051
5052// SetQuantity sets the Quantity field's value.
5053func (s *Aliases) SetQuantity(v int64) *Aliases {
5054	s.Quantity = &v
5055	return s
5056}
5057
5058// A complex type that controls which HTTP methods CloudFront processes and
5059// forwards to your Amazon S3 bucket or your custom origin. There are three
5060// choices:
5061//
5062//    * CloudFront forwards only GET and HEAD requests.
5063//
5064//    * CloudFront forwards only GET, HEAD, and OPTIONS requests.
5065//
5066//    * CloudFront forwards GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE
5067//    requests.
5068//
5069// If you pick the third choice, you may need to restrict access to your Amazon
5070// S3 bucket or to your custom origin so users can't perform operations that
5071// you don't want them to. For example, you might not want users to have permissions
5072// to delete objects from your origin.
5073type AllowedMethods struct {
5074	_ struct{} `type:"structure"`
5075
5076	// A complex type that controls whether CloudFront caches the response to requests
5077	// using the specified HTTP methods. There are two choices:
5078	//
5079	//    * CloudFront caches responses to GET and HEAD requests.
5080	//
5081	//    * CloudFront caches responses to GET, HEAD, and OPTIONS requests.
5082	//
5083	// If you pick the second choice for your Amazon S3 Origin, you may need to
5084	// forward Access-Control-Request-Method, Access-Control-Request-Headers, and
5085	// Origin headers for the responses to be cached correctly.
5086	CachedMethods *CachedMethods `type:"structure"`
5087
5088	// A complex type that contains the HTTP methods that you want CloudFront to
5089	// process and forward to your origin.
5090	//
5091	// Items is a required field
5092	Items []*string `locationNameList:"Method" type:"list" required:"true"`
5093
5094	// The number of HTTP methods that you want CloudFront to forward to your origin.
5095	// Valid values are 2 (for GET and HEAD requests), 3 (for GET, HEAD, and OPTIONS
5096	// requests) and 7 (for GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE requests).
5097	//
5098	// Quantity is a required field
5099	Quantity *int64 `type:"integer" required:"true"`
5100}
5101
5102// String returns the string representation
5103func (s AllowedMethods) String() string {
5104	return awsutil.Prettify(s)
5105}
5106
5107// GoString returns the string representation
5108func (s AllowedMethods) GoString() string {
5109	return s.String()
5110}
5111
5112// Validate inspects the fields of the type to determine if they are valid.
5113func (s *AllowedMethods) Validate() error {
5114	invalidParams := request.ErrInvalidParams{Context: "AllowedMethods"}
5115	if s.Items == nil {
5116		invalidParams.Add(request.NewErrParamRequired("Items"))
5117	}
5118	if s.Quantity == nil {
5119		invalidParams.Add(request.NewErrParamRequired("Quantity"))
5120	}
5121	if s.CachedMethods != nil {
5122		if err := s.CachedMethods.Validate(); err != nil {
5123			invalidParams.AddNested("CachedMethods", err.(request.ErrInvalidParams))
5124		}
5125	}
5126
5127	if invalidParams.Len() > 0 {
5128		return invalidParams
5129	}
5130	return nil
5131}
5132
5133// SetCachedMethods sets the CachedMethods field's value.
5134func (s *AllowedMethods) SetCachedMethods(v *CachedMethods) *AllowedMethods {
5135	s.CachedMethods = v
5136	return s
5137}
5138
5139// SetItems sets the Items field's value.
5140func (s *AllowedMethods) SetItems(v []*string) *AllowedMethods {
5141	s.Items = v
5142	return s
5143}
5144
5145// SetQuantity sets the Quantity field's value.
5146func (s *AllowedMethods) SetQuantity(v int64) *AllowedMethods {
5147	s.Quantity = &v
5148	return s
5149}
5150
5151// A complex type that describes how CloudFront processes requests.
5152//
5153// You must create at least as many cache behaviors (including the default cache
5154// behavior) as you have origins if you want CloudFront to distribute objects
5155// from all of the origins. Each cache behavior specifies the one origin from
5156// which you want CloudFront to get objects. If you have two origins and only
5157// the default cache behavior, the default cache behavior will cause CloudFront
5158// to get objects from one of the origins, but the other origin is never used.
5159//
5160// For the current limit on the number of cache behaviors that you can add to
5161// a distribution, see Amazon CloudFront Limits (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_cloudfront)
5162// in the AWS General Reference.
5163//
5164// If you don't want to specify any cache behaviors, include only an empty CacheBehaviors
5165// element. Don't include an empty CacheBehavior element, or CloudFront returns
5166// a MalformedXML error.
5167//
5168// To delete all cache behaviors in an existing distribution, update the distribution
5169// configuration and include only an empty CacheBehaviors element.
5170//
5171// To add, change, or remove one or more cache behaviors, update the distribution
5172// configuration and specify all of the cache behaviors that you want to include
5173// in the updated distribution.
5174//
5175// For more information about cache behaviors, see Cache Behaviors (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior)
5176// in the Amazon CloudFront Developer Guide.
5177type CacheBehavior struct {
5178	_ struct{} `type:"structure"`
5179
5180	// A complex type that controls which HTTP methods CloudFront processes and
5181	// forwards to your Amazon S3 bucket or your custom origin. There are three
5182	// choices:
5183	//
5184	//    * CloudFront forwards only GET and HEAD requests.
5185	//
5186	//    * CloudFront forwards only GET, HEAD, and OPTIONS requests.
5187	//
5188	//    * CloudFront forwards GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE
5189	//    requests.
5190	//
5191	// If you pick the third choice, you may need to restrict access to your Amazon
5192	// S3 bucket or to your custom origin so users can't perform operations that
5193	// you don't want them to. For example, you might not want users to have permissions
5194	// to delete objects from your origin.
5195	AllowedMethods *AllowedMethods `type:"structure"`
5196
5197	// Whether you want CloudFront to automatically compress certain files for this
5198	// cache behavior. If so, specify true; if not, specify false. For more information,
5199	// see Serving Compressed Files (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html)
5200	// in the Amazon CloudFront Developer Guide.
5201	Compress *bool `type:"boolean"`
5202
5203	// The default amount of time that you want objects to stay in CloudFront caches
5204	// before CloudFront forwards another request to your origin to determine whether
5205	// the object has been updated. The value that you specify applies only when
5206	// your origin does not add HTTP headers such as Cache-Control max-age, Cache-Control
5207	// s-maxage, and Expires to objects. For more information, see Managing How
5208	// Long Content Stays in an Edge Cache (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
5209	// in the Amazon CloudFront Developer Guide.
5210	DefaultTTL *int64 `type:"long"`
5211
5212	// The value of ID for the field-level encryption configuration that you want
5213	// CloudFront to use for encrypting specific fields of data for a cache behavior
5214	// or for the default cache behavior in your distribution.
5215	FieldLevelEncryptionId *string `type:"string"`
5216
5217	// A complex type that specifies how CloudFront handles query strings, cookies,
5218	// and HTTP headers.
5219	//
5220	// ForwardedValues is a required field
5221	ForwardedValues *ForwardedValues `type:"structure" required:"true"`
5222
5223	// A complex type that contains zero or more Lambda function associations for
5224	// a cache behavior.
5225	LambdaFunctionAssociations *LambdaFunctionAssociations `type:"structure"`
5226
5227	// The maximum amount of time that you want objects to stay in CloudFront caches
5228	// before CloudFront forwards another request to your origin to determine whether
5229	// the object has been updated. The value that you specify applies only when
5230	// your origin adds HTTP headers such as Cache-Control max-age, Cache-Control
5231	// s-maxage, and Expires to objects. For more information, see Managing How
5232	// Long Content Stays in an Edge Cache (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
5233	// in the Amazon CloudFront Developer Guide.
5234	MaxTTL *int64 `type:"long"`
5235
5236	// The minimum amount of time that you want objects to stay in CloudFront caches
5237	// before CloudFront forwards another request to your origin to determine whether
5238	// the object has been updated. For more information, see Managing How Long
5239	// Content Stays in an Edge Cache (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
5240	// in the Amazon CloudFront Developer Guide.
5241	//
5242	// You must specify 0 for MinTTL if you configure CloudFront to forward all
5243	// headers to your origin (under Headers, if you specify 1 for Quantity and
5244	// * for Name).
5245	//
5246	// MinTTL is a required field
5247	MinTTL *int64 `type:"long" required:"true"`
5248
5249	// The pattern (for example, images/*.jpg) that specifies which requests to
5250	// apply the behavior to. When CloudFront receives a viewer request, the requested
5251	// path is compared with path patterns in the order in which cache behaviors
5252	// are listed in the distribution.
5253	//
5254	// You can optionally include a slash (/) at the beginning of the path pattern.
5255	// For example, /images/*.jpg. CloudFront behavior is the same with or without
5256	// the leading /.
5257	//
5258	// The path pattern for the default cache behavior is * and cannot be changed.
5259	// If the request for an object does not match the path pattern for any cache
5260	// behaviors, CloudFront applies the behavior in the default cache behavior.
5261	//
5262	// For more information, see Path Pattern (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern)
5263	// in the Amazon CloudFront Developer Guide.
5264	//
5265	// PathPattern is a required field
5266	PathPattern *string `type:"string" required:"true"`
5267
5268	// Indicates whether you want to distribute media files in the Microsoft Smooth
5269	// Streaming format using the origin that is associated with this cache behavior.
5270	// If so, specify true; if not, specify false. If you specify true for SmoothStreaming,
5271	// you can still distribute other content using this cache behavior if the content
5272	// matches the value of PathPattern.
5273	SmoothStreaming *bool `type:"boolean"`
5274
5275	// The value of ID for the origin that you want CloudFront to route requests
5276	// to when a request matches the path pattern either for a cache behavior or
5277	// for the default cache behavior in your distribution.
5278	//
5279	// TargetOriginId is a required field
5280	TargetOriginId *string `type:"string" required:"true"`
5281
5282	// A complex type that specifies the AWS accounts, if any, that you want to
5283	// allow to create signed URLs for private content.
5284	//
5285	// If you want to require signed URLs in requests for objects in the target
5286	// origin that match the PathPattern for this cache behavior, specify true for
5287	// Enabled, and specify the applicable values for Quantity and Items. For more
5288	// information, see Serving Private Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
5289	// in the Amazon CloudFront Developer Guide.
5290	//
5291	// If you don't want to require signed URLs in requests for objects that match
5292	// PathPattern, specify false for Enabled and 0 for Quantity. Omit Items.
5293	//
5294	// To add, change, or remove one or more trusted signers, change Enabled to
5295	// true (if it's currently false), change Quantity as applicable, and specify
5296	// all of the trusted signers that you want to include in the updated distribution.
5297	//
5298	// TrustedSigners is a required field
5299	TrustedSigners *TrustedSigners `type:"structure" required:"true"`
5300
5301	// The protocol that viewers can use to access the files in the origin specified
5302	// by TargetOriginId when a request matches the path pattern in PathPattern.
5303	// You can specify the following options:
5304	//
5305	//    * allow-all: Viewers can use HTTP or HTTPS.
5306	//
5307	//    * redirect-to-https: If a viewer submits an HTTP request, CloudFront returns
5308	//    an HTTP status code of 301 (Moved Permanently) to the viewer along with
5309	//    the HTTPS URL. The viewer then resubmits the request using the new URL.
5310	//
5311	//    * https-only: If a viewer sends an HTTP request, CloudFront returns an
5312	//    HTTP status code of 403 (Forbidden).
5313	//
5314	// For more information about requiring the HTTPS protocol, see Using an HTTPS
5315	// Connection to Access Your Objects (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html)
5316	// in the Amazon CloudFront Developer Guide.
5317	//
5318	// The only way to guarantee that viewers retrieve an object that was fetched
5319	// from the origin using HTTPS is never to use any other protocol to fetch the
5320	// object. If you have recently changed from HTTP to HTTPS, we recommend that
5321	// you clear your objects' cache because cached objects are protocol agnostic.
5322	// That means that an edge location will return an object from the cache regardless
5323	// of whether the current request protocol matches the protocol used previously.
5324	// For more information, see Managing How Long Content Stays in an Edge Cache
5325	// (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
5326	// in the Amazon CloudFront Developer Guide.
5327	//
5328	// ViewerProtocolPolicy is a required field
5329	ViewerProtocolPolicy *string `type:"string" required:"true" enum:"ViewerProtocolPolicy"`
5330}
5331
5332// String returns the string representation
5333func (s CacheBehavior) String() string {
5334	return awsutil.Prettify(s)
5335}
5336
5337// GoString returns the string representation
5338func (s CacheBehavior) GoString() string {
5339	return s.String()
5340}
5341
5342// Validate inspects the fields of the type to determine if they are valid.
5343func (s *CacheBehavior) Validate() error {
5344	invalidParams := request.ErrInvalidParams{Context: "CacheBehavior"}
5345	if s.ForwardedValues == nil {
5346		invalidParams.Add(request.NewErrParamRequired("ForwardedValues"))
5347	}
5348	if s.MinTTL == nil {
5349		invalidParams.Add(request.NewErrParamRequired("MinTTL"))
5350	}
5351	if s.PathPattern == nil {
5352		invalidParams.Add(request.NewErrParamRequired("PathPattern"))
5353	}
5354	if s.TargetOriginId == nil {
5355		invalidParams.Add(request.NewErrParamRequired("TargetOriginId"))
5356	}
5357	if s.TrustedSigners == nil {
5358		invalidParams.Add(request.NewErrParamRequired("TrustedSigners"))
5359	}
5360	if s.ViewerProtocolPolicy == nil {
5361		invalidParams.Add(request.NewErrParamRequired("ViewerProtocolPolicy"))
5362	}
5363	if s.AllowedMethods != nil {
5364		if err := s.AllowedMethods.Validate(); err != nil {
5365			invalidParams.AddNested("AllowedMethods", err.(request.ErrInvalidParams))
5366		}
5367	}
5368	if s.ForwardedValues != nil {
5369		if err := s.ForwardedValues.Validate(); err != nil {
5370			invalidParams.AddNested("ForwardedValues", err.(request.ErrInvalidParams))
5371		}
5372	}
5373	if s.LambdaFunctionAssociations != nil {
5374		if err := s.LambdaFunctionAssociations.Validate(); err != nil {
5375			invalidParams.AddNested("LambdaFunctionAssociations", err.(request.ErrInvalidParams))
5376		}
5377	}
5378	if s.TrustedSigners != nil {
5379		if err := s.TrustedSigners.Validate(); err != nil {
5380			invalidParams.AddNested("TrustedSigners", err.(request.ErrInvalidParams))
5381		}
5382	}
5383
5384	if invalidParams.Len() > 0 {
5385		return invalidParams
5386	}
5387	return nil
5388}
5389
5390// SetAllowedMethods sets the AllowedMethods field's value.
5391func (s *CacheBehavior) SetAllowedMethods(v *AllowedMethods) *CacheBehavior {
5392	s.AllowedMethods = v
5393	return s
5394}
5395
5396// SetCompress sets the Compress field's value.
5397func (s *CacheBehavior) SetCompress(v bool) *CacheBehavior {
5398	s.Compress = &v
5399	return s
5400}
5401
5402// SetDefaultTTL sets the DefaultTTL field's value.
5403func (s *CacheBehavior) SetDefaultTTL(v int64) *CacheBehavior {
5404	s.DefaultTTL = &v
5405	return s
5406}
5407
5408// SetFieldLevelEncryptionId sets the FieldLevelEncryptionId field's value.
5409func (s *CacheBehavior) SetFieldLevelEncryptionId(v string) *CacheBehavior {
5410	s.FieldLevelEncryptionId = &v
5411	return s
5412}
5413
5414// SetForwardedValues sets the ForwardedValues field's value.
5415func (s *CacheBehavior) SetForwardedValues(v *ForwardedValues) *CacheBehavior {
5416	s.ForwardedValues = v
5417	return s
5418}
5419
5420// SetLambdaFunctionAssociations sets the LambdaFunctionAssociations field's value.
5421func (s *CacheBehavior) SetLambdaFunctionAssociations(v *LambdaFunctionAssociations) *CacheBehavior {
5422	s.LambdaFunctionAssociations = v
5423	return s
5424}
5425
5426// SetMaxTTL sets the MaxTTL field's value.
5427func (s *CacheBehavior) SetMaxTTL(v int64) *CacheBehavior {
5428	s.MaxTTL = &v
5429	return s
5430}
5431
5432// SetMinTTL sets the MinTTL field's value.
5433func (s *CacheBehavior) SetMinTTL(v int64) *CacheBehavior {
5434	s.MinTTL = &v
5435	return s
5436}
5437
5438// SetPathPattern sets the PathPattern field's value.
5439func (s *CacheBehavior) SetPathPattern(v string) *CacheBehavior {
5440	s.PathPattern = &v
5441	return s
5442}
5443
5444// SetSmoothStreaming sets the SmoothStreaming field's value.
5445func (s *CacheBehavior) SetSmoothStreaming(v bool) *CacheBehavior {
5446	s.SmoothStreaming = &v
5447	return s
5448}
5449
5450// SetTargetOriginId sets the TargetOriginId field's value.
5451func (s *CacheBehavior) SetTargetOriginId(v string) *CacheBehavior {
5452	s.TargetOriginId = &v
5453	return s
5454}
5455
5456// SetTrustedSigners sets the TrustedSigners field's value.
5457func (s *CacheBehavior) SetTrustedSigners(v *TrustedSigners) *CacheBehavior {
5458	s.TrustedSigners = v
5459	return s
5460}
5461
5462// SetViewerProtocolPolicy sets the ViewerProtocolPolicy field's value.
5463func (s *CacheBehavior) SetViewerProtocolPolicy(v string) *CacheBehavior {
5464	s.ViewerProtocolPolicy = &v
5465	return s
5466}
5467
5468// A complex type that contains zero or more CacheBehavior elements.
5469type CacheBehaviors struct {
5470	_ struct{} `type:"structure"`
5471
5472	// Optional: A complex type that contains cache behaviors for this distribution.
5473	// If Quantity is 0, you can omit Items.
5474	Items []*CacheBehavior `locationNameList:"CacheBehavior" type:"list"`
5475
5476	// The number of cache behaviors for this distribution.
5477	//
5478	// Quantity is a required field
5479	Quantity *int64 `type:"integer" required:"true"`
5480}
5481
5482// String returns the string representation
5483func (s CacheBehaviors) String() string {
5484	return awsutil.Prettify(s)
5485}
5486
5487// GoString returns the string representation
5488func (s CacheBehaviors) GoString() string {
5489	return s.String()
5490}
5491
5492// Validate inspects the fields of the type to determine if they are valid.
5493func (s *CacheBehaviors) Validate() error {
5494	invalidParams := request.ErrInvalidParams{Context: "CacheBehaviors"}
5495	if s.Quantity == nil {
5496		invalidParams.Add(request.NewErrParamRequired("Quantity"))
5497	}
5498	if s.Items != nil {
5499		for i, v := range s.Items {
5500			if v == nil {
5501				continue
5502			}
5503			if err := v.Validate(); err != nil {
5504				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
5505			}
5506		}
5507	}
5508
5509	if invalidParams.Len() > 0 {
5510		return invalidParams
5511	}
5512	return nil
5513}
5514
5515// SetItems sets the Items field's value.
5516func (s *CacheBehaviors) SetItems(v []*CacheBehavior) *CacheBehaviors {
5517	s.Items = v
5518	return s
5519}
5520
5521// SetQuantity sets the Quantity field's value.
5522func (s *CacheBehaviors) SetQuantity(v int64) *CacheBehaviors {
5523	s.Quantity = &v
5524	return s
5525}
5526
5527// A complex type that controls whether CloudFront caches the response to requests
5528// using the specified HTTP methods. There are two choices:
5529//
5530//    * CloudFront caches responses to GET and HEAD requests.
5531//
5532//    * CloudFront caches responses to GET, HEAD, and OPTIONS requests.
5533//
5534// If you pick the second choice for your Amazon S3 Origin, you may need to
5535// forward Access-Control-Request-Method, Access-Control-Request-Headers, and
5536// Origin headers for the responses to be cached correctly.
5537type CachedMethods struct {
5538	_ struct{} `type:"structure"`
5539
5540	// A complex type that contains the HTTP methods that you want CloudFront to
5541	// cache responses to.
5542	//
5543	// Items is a required field
5544	Items []*string `locationNameList:"Method" type:"list" required:"true"`
5545
5546	// The number of HTTP methods for which you want CloudFront to cache responses.
5547	// Valid values are 2 (for caching responses to GET and HEAD requests) and 3
5548	// (for caching responses to GET, HEAD, and OPTIONS requests).
5549	//
5550	// Quantity is a required field
5551	Quantity *int64 `type:"integer" required:"true"`
5552}
5553
5554// String returns the string representation
5555func (s CachedMethods) String() string {
5556	return awsutil.Prettify(s)
5557}
5558
5559// GoString returns the string representation
5560func (s CachedMethods) GoString() string {
5561	return s.String()
5562}
5563
5564// Validate inspects the fields of the type to determine if they are valid.
5565func (s *CachedMethods) Validate() error {
5566	invalidParams := request.ErrInvalidParams{Context: "CachedMethods"}
5567	if s.Items == nil {
5568		invalidParams.Add(request.NewErrParamRequired("Items"))
5569	}
5570	if s.Quantity == nil {
5571		invalidParams.Add(request.NewErrParamRequired("Quantity"))
5572	}
5573
5574	if invalidParams.Len() > 0 {
5575		return invalidParams
5576	}
5577	return nil
5578}
5579
5580// SetItems sets the Items field's value.
5581func (s *CachedMethods) SetItems(v []*string) *CachedMethods {
5582	s.Items = v
5583	return s
5584}
5585
5586// SetQuantity sets the Quantity field's value.
5587func (s *CachedMethods) SetQuantity(v int64) *CachedMethods {
5588	s.Quantity = &v
5589	return s
5590}
5591
5592// A field-level encryption content type profile.
5593type ContentTypeProfile struct {
5594	_ struct{} `type:"structure"`
5595
5596	// The content type for a field-level encryption content type-profile mapping.
5597	//
5598	// ContentType is a required field
5599	ContentType *string `type:"string" required:"true"`
5600
5601	// The format for a field-level encryption content type-profile mapping.
5602	//
5603	// Format is a required field
5604	Format *string `type:"string" required:"true" enum:"Format"`
5605
5606	// The profile ID for a field-level encryption content type-profile mapping.
5607	ProfileId *string `type:"string"`
5608}
5609
5610// String returns the string representation
5611func (s ContentTypeProfile) String() string {
5612	return awsutil.Prettify(s)
5613}
5614
5615// GoString returns the string representation
5616func (s ContentTypeProfile) GoString() string {
5617	return s.String()
5618}
5619
5620// Validate inspects the fields of the type to determine if they are valid.
5621func (s *ContentTypeProfile) Validate() error {
5622	invalidParams := request.ErrInvalidParams{Context: "ContentTypeProfile"}
5623	if s.ContentType == nil {
5624		invalidParams.Add(request.NewErrParamRequired("ContentType"))
5625	}
5626	if s.Format == nil {
5627		invalidParams.Add(request.NewErrParamRequired("Format"))
5628	}
5629
5630	if invalidParams.Len() > 0 {
5631		return invalidParams
5632	}
5633	return nil
5634}
5635
5636// SetContentType sets the ContentType field's value.
5637func (s *ContentTypeProfile) SetContentType(v string) *ContentTypeProfile {
5638	s.ContentType = &v
5639	return s
5640}
5641
5642// SetFormat sets the Format field's value.
5643func (s *ContentTypeProfile) SetFormat(v string) *ContentTypeProfile {
5644	s.Format = &v
5645	return s
5646}
5647
5648// SetProfileId sets the ProfileId field's value.
5649func (s *ContentTypeProfile) SetProfileId(v string) *ContentTypeProfile {
5650	s.ProfileId = &v
5651	return s
5652}
5653
5654// The configuration for a field-level encryption content type-profile mapping.
5655type ContentTypeProfileConfig struct {
5656	_ struct{} `type:"structure"`
5657
5658	// The configuration for a field-level encryption content type-profile.
5659	ContentTypeProfiles *ContentTypeProfiles `type:"structure"`
5660
5661	// The setting in a field-level encryption content type-profile mapping that
5662	// specifies what to do when an unknown content type is provided for the profile.
5663	// If true, content is forwarded without being encrypted when the content type
5664	// is unknown. If false (the default), an error is returned when the content
5665	// type is unknown.
5666	//
5667	// ForwardWhenContentTypeIsUnknown is a required field
5668	ForwardWhenContentTypeIsUnknown *bool `type:"boolean" required:"true"`
5669}
5670
5671// String returns the string representation
5672func (s ContentTypeProfileConfig) String() string {
5673	return awsutil.Prettify(s)
5674}
5675
5676// GoString returns the string representation
5677func (s ContentTypeProfileConfig) GoString() string {
5678	return s.String()
5679}
5680
5681// Validate inspects the fields of the type to determine if they are valid.
5682func (s *ContentTypeProfileConfig) Validate() error {
5683	invalidParams := request.ErrInvalidParams{Context: "ContentTypeProfileConfig"}
5684	if s.ForwardWhenContentTypeIsUnknown == nil {
5685		invalidParams.Add(request.NewErrParamRequired("ForwardWhenContentTypeIsUnknown"))
5686	}
5687	if s.ContentTypeProfiles != nil {
5688		if err := s.ContentTypeProfiles.Validate(); err != nil {
5689			invalidParams.AddNested("ContentTypeProfiles", err.(request.ErrInvalidParams))
5690		}
5691	}
5692
5693	if invalidParams.Len() > 0 {
5694		return invalidParams
5695	}
5696	return nil
5697}
5698
5699// SetContentTypeProfiles sets the ContentTypeProfiles field's value.
5700func (s *ContentTypeProfileConfig) SetContentTypeProfiles(v *ContentTypeProfiles) *ContentTypeProfileConfig {
5701	s.ContentTypeProfiles = v
5702	return s
5703}
5704
5705// SetForwardWhenContentTypeIsUnknown sets the ForwardWhenContentTypeIsUnknown field's value.
5706func (s *ContentTypeProfileConfig) SetForwardWhenContentTypeIsUnknown(v bool) *ContentTypeProfileConfig {
5707	s.ForwardWhenContentTypeIsUnknown = &v
5708	return s
5709}
5710
5711// Field-level encryption content type-profile.
5712type ContentTypeProfiles struct {
5713	_ struct{} `type:"structure"`
5714
5715	// Items in a field-level encryption content type-profile mapping.
5716	Items []*ContentTypeProfile `locationNameList:"ContentTypeProfile" type:"list"`
5717
5718	// The number of field-level encryption content type-profile mappings.
5719	//
5720	// Quantity is a required field
5721	Quantity *int64 `type:"integer" required:"true"`
5722}
5723
5724// String returns the string representation
5725func (s ContentTypeProfiles) String() string {
5726	return awsutil.Prettify(s)
5727}
5728
5729// GoString returns the string representation
5730func (s ContentTypeProfiles) GoString() string {
5731	return s.String()
5732}
5733
5734// Validate inspects the fields of the type to determine if they are valid.
5735func (s *ContentTypeProfiles) Validate() error {
5736	invalidParams := request.ErrInvalidParams{Context: "ContentTypeProfiles"}
5737	if s.Quantity == nil {
5738		invalidParams.Add(request.NewErrParamRequired("Quantity"))
5739	}
5740	if s.Items != nil {
5741		for i, v := range s.Items {
5742			if v == nil {
5743				continue
5744			}
5745			if err := v.Validate(); err != nil {
5746				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
5747			}
5748		}
5749	}
5750
5751	if invalidParams.Len() > 0 {
5752		return invalidParams
5753	}
5754	return nil
5755}
5756
5757// SetItems sets the Items field's value.
5758func (s *ContentTypeProfiles) SetItems(v []*ContentTypeProfile) *ContentTypeProfiles {
5759	s.Items = v
5760	return s
5761}
5762
5763// SetQuantity sets the Quantity field's value.
5764func (s *ContentTypeProfiles) SetQuantity(v int64) *ContentTypeProfiles {
5765	s.Quantity = &v
5766	return s
5767}
5768
5769// A complex type that specifies whether you want CloudFront to forward cookies
5770// to the origin and, if so, which ones. For more information about forwarding
5771// cookies to the origin, see Caching Content Based on Request Headers (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html)
5772// in the Amazon CloudFront Developer Guide.
5773type CookieNames struct {
5774	_ struct{} `type:"structure"`
5775
5776	// A complex type that contains one Name element for each cookie that you want
5777	// CloudFront to forward to the origin for this cache behavior.
5778	Items []*string `locationNameList:"Name" type:"list"`
5779
5780	// The number of different cookies that you want CloudFront to forward to the
5781	// origin for this cache behavior.
5782	//
5783	// Quantity is a required field
5784	Quantity *int64 `type:"integer" required:"true"`
5785}
5786
5787// String returns the string representation
5788func (s CookieNames) String() string {
5789	return awsutil.Prettify(s)
5790}
5791
5792// GoString returns the string representation
5793func (s CookieNames) GoString() string {
5794	return s.String()
5795}
5796
5797// Validate inspects the fields of the type to determine if they are valid.
5798func (s *CookieNames) Validate() error {
5799	invalidParams := request.ErrInvalidParams{Context: "CookieNames"}
5800	if s.Quantity == nil {
5801		invalidParams.Add(request.NewErrParamRequired("Quantity"))
5802	}
5803
5804	if invalidParams.Len() > 0 {
5805		return invalidParams
5806	}
5807	return nil
5808}
5809
5810// SetItems sets the Items field's value.
5811func (s *CookieNames) SetItems(v []*string) *CookieNames {
5812	s.Items = v
5813	return s
5814}
5815
5816// SetQuantity sets the Quantity field's value.
5817func (s *CookieNames) SetQuantity(v int64) *CookieNames {
5818	s.Quantity = &v
5819	return s
5820}
5821
5822// A complex type that specifies whether you want CloudFront to forward cookies
5823// to the origin and, if so, which ones. For more information about forwarding
5824// cookies to the origin, see Caching Content Based on Cookies (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html)
5825// in the Amazon CloudFront Developer Guide.
5826type CookiePreference struct {
5827	_ struct{} `type:"structure"`
5828
5829	// Specifies which cookies to forward to the origin for this cache behavior:
5830	// all, none, or the list of cookies specified in the WhitelistedNames complex
5831	// type.
5832	//
5833	// Amazon S3 doesn't process cookies. When the cache behavior is forwarding
5834	// requests to an Amazon S3 origin, specify none for the Forward element.
5835	//
5836	// Forward is a required field
5837	Forward *string `type:"string" required:"true" enum:"ItemSelection"`
5838
5839	// Required if you specify whitelist for the value of Forward:. A complex type
5840	// that specifies how many different cookies you want CloudFront to forward
5841	// to the origin for this cache behavior and, if you want to forward selected
5842	// cookies, the names of those cookies.
5843	//
5844	// If you specify all or none for the value of Forward, omit WhitelistedNames.
5845	// If you change the value of Forward from whitelist to all or none and you
5846	// don't delete the WhitelistedNames element and its child elements, CloudFront
5847	// deletes them automatically.
5848	//
5849	// For the current limit on the number of cookie names that you can whitelist
5850	// for each cache behavior, see CloudFront Limits (https://docs.aws.amazon.com/general/latest/gr/xrefaws_service_limits.html#limits_cloudfront)
5851	// in the AWS General Reference.
5852	WhitelistedNames *CookieNames `type:"structure"`
5853}
5854
5855// String returns the string representation
5856func (s CookiePreference) String() string {
5857	return awsutil.Prettify(s)
5858}
5859
5860// GoString returns the string representation
5861func (s CookiePreference) GoString() string {
5862	return s.String()
5863}
5864
5865// Validate inspects the fields of the type to determine if they are valid.
5866func (s *CookiePreference) Validate() error {
5867	invalidParams := request.ErrInvalidParams{Context: "CookiePreference"}
5868	if s.Forward == nil {
5869		invalidParams.Add(request.NewErrParamRequired("Forward"))
5870	}
5871	if s.WhitelistedNames != nil {
5872		if err := s.WhitelistedNames.Validate(); err != nil {
5873			invalidParams.AddNested("WhitelistedNames", err.(request.ErrInvalidParams))
5874		}
5875	}
5876
5877	if invalidParams.Len() > 0 {
5878		return invalidParams
5879	}
5880	return nil
5881}
5882
5883// SetForward sets the Forward field's value.
5884func (s *CookiePreference) SetForward(v string) *CookiePreference {
5885	s.Forward = &v
5886	return s
5887}
5888
5889// SetWhitelistedNames sets the WhitelistedNames field's value.
5890func (s *CookiePreference) SetWhitelistedNames(v *CookieNames) *CookiePreference {
5891	s.WhitelistedNames = v
5892	return s
5893}
5894
5895// The request to create a new origin access identity (OAI). An origin access
5896// identity is a special CloudFront user that you can associate with Amazon
5897// S3 origins, so that you can secure all or just some of your Amazon S3 content.
5898// For more information, see Restricting Access to Amazon S3 Content by Using
5899// an Origin Access Identity (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)
5900// in the Amazon CloudFront Developer Guide.
5901type CreateCloudFrontOriginAccessIdentityInput struct {
5902	_ struct{} `locationName:"CreateCloudFrontOriginAccessIdentityRequest" type:"structure" payload:"CloudFrontOriginAccessIdentityConfig"`
5903
5904	// The current configuration information for the identity.
5905	//
5906	// CloudFrontOriginAccessIdentityConfig is a required field
5907	CloudFrontOriginAccessIdentityConfig *OriginAccessIdentityConfig `locationName:"CloudFrontOriginAccessIdentityConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
5908}
5909
5910// String returns the string representation
5911func (s CreateCloudFrontOriginAccessIdentityInput) String() string {
5912	return awsutil.Prettify(s)
5913}
5914
5915// GoString returns the string representation
5916func (s CreateCloudFrontOriginAccessIdentityInput) GoString() string {
5917	return s.String()
5918}
5919
5920// Validate inspects the fields of the type to determine if they are valid.
5921func (s *CreateCloudFrontOriginAccessIdentityInput) Validate() error {
5922	invalidParams := request.ErrInvalidParams{Context: "CreateCloudFrontOriginAccessIdentityInput"}
5923	if s.CloudFrontOriginAccessIdentityConfig == nil {
5924		invalidParams.Add(request.NewErrParamRequired("CloudFrontOriginAccessIdentityConfig"))
5925	}
5926	if s.CloudFrontOriginAccessIdentityConfig != nil {
5927		if err := s.CloudFrontOriginAccessIdentityConfig.Validate(); err != nil {
5928			invalidParams.AddNested("CloudFrontOriginAccessIdentityConfig", err.(request.ErrInvalidParams))
5929		}
5930	}
5931
5932	if invalidParams.Len() > 0 {
5933		return invalidParams
5934	}
5935	return nil
5936}
5937
5938// SetCloudFrontOriginAccessIdentityConfig sets the CloudFrontOriginAccessIdentityConfig field's value.
5939func (s *CreateCloudFrontOriginAccessIdentityInput) SetCloudFrontOriginAccessIdentityConfig(v *OriginAccessIdentityConfig) *CreateCloudFrontOriginAccessIdentityInput {
5940	s.CloudFrontOriginAccessIdentityConfig = v
5941	return s
5942}
5943
5944// The returned result of the corresponding request.
5945type CreateCloudFrontOriginAccessIdentityOutput struct {
5946	_ struct{} `type:"structure" payload:"CloudFrontOriginAccessIdentity"`
5947
5948	// The origin access identity's information.
5949	CloudFrontOriginAccessIdentity *OriginAccessIdentity `type:"structure"`
5950
5951	// The current version of the origin access identity created.
5952	ETag *string `location:"header" locationName:"ETag" type:"string"`
5953
5954	// The fully qualified URI of the new origin access identity just created. For
5955	// example: https://cloudfront.amazonaws.com/2010-11-01/origin-access-identity/cloudfront/E74FTE3AJFJ256A.
5956	Location *string `location:"header" locationName:"Location" type:"string"`
5957}
5958
5959// String returns the string representation
5960func (s CreateCloudFrontOriginAccessIdentityOutput) String() string {
5961	return awsutil.Prettify(s)
5962}
5963
5964// GoString returns the string representation
5965func (s CreateCloudFrontOriginAccessIdentityOutput) GoString() string {
5966	return s.String()
5967}
5968
5969// SetCloudFrontOriginAccessIdentity sets the CloudFrontOriginAccessIdentity field's value.
5970func (s *CreateCloudFrontOriginAccessIdentityOutput) SetCloudFrontOriginAccessIdentity(v *OriginAccessIdentity) *CreateCloudFrontOriginAccessIdentityOutput {
5971	s.CloudFrontOriginAccessIdentity = v
5972	return s
5973}
5974
5975// SetETag sets the ETag field's value.
5976func (s *CreateCloudFrontOriginAccessIdentityOutput) SetETag(v string) *CreateCloudFrontOriginAccessIdentityOutput {
5977	s.ETag = &v
5978	return s
5979}
5980
5981// SetLocation sets the Location field's value.
5982func (s *CreateCloudFrontOriginAccessIdentityOutput) SetLocation(v string) *CreateCloudFrontOriginAccessIdentityOutput {
5983	s.Location = &v
5984	return s
5985}
5986
5987// The request to create a new distribution.
5988type CreateDistributionInput struct {
5989	_ struct{} `locationName:"CreateDistributionRequest" type:"structure" payload:"DistributionConfig"`
5990
5991	// The distribution's configuration information.
5992	//
5993	// DistributionConfig is a required field
5994	DistributionConfig *DistributionConfig `locationName:"DistributionConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
5995}
5996
5997// String returns the string representation
5998func (s CreateDistributionInput) String() string {
5999	return awsutil.Prettify(s)
6000}
6001
6002// GoString returns the string representation
6003func (s CreateDistributionInput) GoString() string {
6004	return s.String()
6005}
6006
6007// Validate inspects the fields of the type to determine if they are valid.
6008func (s *CreateDistributionInput) Validate() error {
6009	invalidParams := request.ErrInvalidParams{Context: "CreateDistributionInput"}
6010	if s.DistributionConfig == nil {
6011		invalidParams.Add(request.NewErrParamRequired("DistributionConfig"))
6012	}
6013	if s.DistributionConfig != nil {
6014		if err := s.DistributionConfig.Validate(); err != nil {
6015			invalidParams.AddNested("DistributionConfig", err.(request.ErrInvalidParams))
6016		}
6017	}
6018
6019	if invalidParams.Len() > 0 {
6020		return invalidParams
6021	}
6022	return nil
6023}
6024
6025// SetDistributionConfig sets the DistributionConfig field's value.
6026func (s *CreateDistributionInput) SetDistributionConfig(v *DistributionConfig) *CreateDistributionInput {
6027	s.DistributionConfig = v
6028	return s
6029}
6030
6031// The returned result of the corresponding request.
6032type CreateDistributionOutput struct {
6033	_ struct{} `type:"structure" payload:"Distribution"`
6034
6035	// The distribution's information.
6036	Distribution *Distribution `type:"structure"`
6037
6038	// The current version of the distribution created.
6039	ETag *string `location:"header" locationName:"ETag" type:"string"`
6040
6041	// The fully qualified URI of the new distribution resource just created. For
6042	// example: https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5.
6043	Location *string `location:"header" locationName:"Location" type:"string"`
6044}
6045
6046// String returns the string representation
6047func (s CreateDistributionOutput) String() string {
6048	return awsutil.Prettify(s)
6049}
6050
6051// GoString returns the string representation
6052func (s CreateDistributionOutput) GoString() string {
6053	return s.String()
6054}
6055
6056// SetDistribution sets the Distribution field's value.
6057func (s *CreateDistributionOutput) SetDistribution(v *Distribution) *CreateDistributionOutput {
6058	s.Distribution = v
6059	return s
6060}
6061
6062// SetETag sets the ETag field's value.
6063func (s *CreateDistributionOutput) SetETag(v string) *CreateDistributionOutput {
6064	s.ETag = &v
6065	return s
6066}
6067
6068// SetLocation sets the Location field's value.
6069func (s *CreateDistributionOutput) SetLocation(v string) *CreateDistributionOutput {
6070	s.Location = &v
6071	return s
6072}
6073
6074// The request to create a new distribution with tags.
6075type CreateDistributionWithTagsInput struct {
6076	_ struct{} `locationName:"CreateDistributionWithTagsRequest" type:"structure" payload:"DistributionConfigWithTags"`
6077
6078	// The distribution's configuration information.
6079	//
6080	// DistributionConfigWithTags is a required field
6081	DistributionConfigWithTags *DistributionConfigWithTags `locationName:"DistributionConfigWithTags" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6082}
6083
6084// String returns the string representation
6085func (s CreateDistributionWithTagsInput) String() string {
6086	return awsutil.Prettify(s)
6087}
6088
6089// GoString returns the string representation
6090func (s CreateDistributionWithTagsInput) GoString() string {
6091	return s.String()
6092}
6093
6094// Validate inspects the fields of the type to determine if they are valid.
6095func (s *CreateDistributionWithTagsInput) Validate() error {
6096	invalidParams := request.ErrInvalidParams{Context: "CreateDistributionWithTagsInput"}
6097	if s.DistributionConfigWithTags == nil {
6098		invalidParams.Add(request.NewErrParamRequired("DistributionConfigWithTags"))
6099	}
6100	if s.DistributionConfigWithTags != nil {
6101		if err := s.DistributionConfigWithTags.Validate(); err != nil {
6102			invalidParams.AddNested("DistributionConfigWithTags", err.(request.ErrInvalidParams))
6103		}
6104	}
6105
6106	if invalidParams.Len() > 0 {
6107		return invalidParams
6108	}
6109	return nil
6110}
6111
6112// SetDistributionConfigWithTags sets the DistributionConfigWithTags field's value.
6113func (s *CreateDistributionWithTagsInput) SetDistributionConfigWithTags(v *DistributionConfigWithTags) *CreateDistributionWithTagsInput {
6114	s.DistributionConfigWithTags = v
6115	return s
6116}
6117
6118// The returned result of the corresponding request.
6119type CreateDistributionWithTagsOutput struct {
6120	_ struct{} `type:"structure" payload:"Distribution"`
6121
6122	// The distribution's information.
6123	Distribution *Distribution `type:"structure"`
6124
6125	// The current version of the distribution created.
6126	ETag *string `location:"header" locationName:"ETag" type:"string"`
6127
6128	// The fully qualified URI of the new distribution resource just created. For
6129	// example: https://cloudfront.amazonaws.com/2010-11-01/distribution/EDFDVBD632BHDS5.
6130	Location *string `location:"header" locationName:"Location" type:"string"`
6131}
6132
6133// String returns the string representation
6134func (s CreateDistributionWithTagsOutput) String() string {
6135	return awsutil.Prettify(s)
6136}
6137
6138// GoString returns the string representation
6139func (s CreateDistributionWithTagsOutput) GoString() string {
6140	return s.String()
6141}
6142
6143// SetDistribution sets the Distribution field's value.
6144func (s *CreateDistributionWithTagsOutput) SetDistribution(v *Distribution) *CreateDistributionWithTagsOutput {
6145	s.Distribution = v
6146	return s
6147}
6148
6149// SetETag sets the ETag field's value.
6150func (s *CreateDistributionWithTagsOutput) SetETag(v string) *CreateDistributionWithTagsOutput {
6151	s.ETag = &v
6152	return s
6153}
6154
6155// SetLocation sets the Location field's value.
6156func (s *CreateDistributionWithTagsOutput) SetLocation(v string) *CreateDistributionWithTagsOutput {
6157	s.Location = &v
6158	return s
6159}
6160
6161type CreateFieldLevelEncryptionConfigInput struct {
6162	_ struct{} `locationName:"CreateFieldLevelEncryptionConfigRequest" type:"structure" payload:"FieldLevelEncryptionConfig"`
6163
6164	// The request to create a new field-level encryption configuration.
6165	//
6166	// FieldLevelEncryptionConfig is a required field
6167	FieldLevelEncryptionConfig *FieldLevelEncryptionConfig `locationName:"FieldLevelEncryptionConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6168}
6169
6170// String returns the string representation
6171func (s CreateFieldLevelEncryptionConfigInput) String() string {
6172	return awsutil.Prettify(s)
6173}
6174
6175// GoString returns the string representation
6176func (s CreateFieldLevelEncryptionConfigInput) GoString() string {
6177	return s.String()
6178}
6179
6180// Validate inspects the fields of the type to determine if they are valid.
6181func (s *CreateFieldLevelEncryptionConfigInput) Validate() error {
6182	invalidParams := request.ErrInvalidParams{Context: "CreateFieldLevelEncryptionConfigInput"}
6183	if s.FieldLevelEncryptionConfig == nil {
6184		invalidParams.Add(request.NewErrParamRequired("FieldLevelEncryptionConfig"))
6185	}
6186	if s.FieldLevelEncryptionConfig != nil {
6187		if err := s.FieldLevelEncryptionConfig.Validate(); err != nil {
6188			invalidParams.AddNested("FieldLevelEncryptionConfig", err.(request.ErrInvalidParams))
6189		}
6190	}
6191
6192	if invalidParams.Len() > 0 {
6193		return invalidParams
6194	}
6195	return nil
6196}
6197
6198// SetFieldLevelEncryptionConfig sets the FieldLevelEncryptionConfig field's value.
6199func (s *CreateFieldLevelEncryptionConfigInput) SetFieldLevelEncryptionConfig(v *FieldLevelEncryptionConfig) *CreateFieldLevelEncryptionConfigInput {
6200	s.FieldLevelEncryptionConfig = v
6201	return s
6202}
6203
6204type CreateFieldLevelEncryptionConfigOutput struct {
6205	_ struct{} `type:"structure" payload:"FieldLevelEncryption"`
6206
6207	// The current version of the field level encryption configuration. For example:
6208	// E2QWRUHAPOMQZL.
6209	ETag *string `location:"header" locationName:"ETag" type:"string"`
6210
6211	// Returned when you create a new field-level encryption configuration.
6212	FieldLevelEncryption *FieldLevelEncryption `type:"structure"`
6213
6214	// The fully qualified URI of the new configuration resource just created. For
6215	// example: https://cloudfront.amazonaws.com/2010-11-01/field-level-encryption-config/EDFDVBD632BHDS5.
6216	Location *string `location:"header" locationName:"Location" type:"string"`
6217}
6218
6219// String returns the string representation
6220func (s CreateFieldLevelEncryptionConfigOutput) String() string {
6221	return awsutil.Prettify(s)
6222}
6223
6224// GoString returns the string representation
6225func (s CreateFieldLevelEncryptionConfigOutput) GoString() string {
6226	return s.String()
6227}
6228
6229// SetETag sets the ETag field's value.
6230func (s *CreateFieldLevelEncryptionConfigOutput) SetETag(v string) *CreateFieldLevelEncryptionConfigOutput {
6231	s.ETag = &v
6232	return s
6233}
6234
6235// SetFieldLevelEncryption sets the FieldLevelEncryption field's value.
6236func (s *CreateFieldLevelEncryptionConfigOutput) SetFieldLevelEncryption(v *FieldLevelEncryption) *CreateFieldLevelEncryptionConfigOutput {
6237	s.FieldLevelEncryption = v
6238	return s
6239}
6240
6241// SetLocation sets the Location field's value.
6242func (s *CreateFieldLevelEncryptionConfigOutput) SetLocation(v string) *CreateFieldLevelEncryptionConfigOutput {
6243	s.Location = &v
6244	return s
6245}
6246
6247type CreateFieldLevelEncryptionProfileInput struct {
6248	_ struct{} `locationName:"CreateFieldLevelEncryptionProfileRequest" type:"structure" payload:"FieldLevelEncryptionProfileConfig"`
6249
6250	// The request to create a field-level encryption profile.
6251	//
6252	// FieldLevelEncryptionProfileConfig is a required field
6253	FieldLevelEncryptionProfileConfig *FieldLevelEncryptionProfileConfig `locationName:"FieldLevelEncryptionProfileConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6254}
6255
6256// String returns the string representation
6257func (s CreateFieldLevelEncryptionProfileInput) String() string {
6258	return awsutil.Prettify(s)
6259}
6260
6261// GoString returns the string representation
6262func (s CreateFieldLevelEncryptionProfileInput) GoString() string {
6263	return s.String()
6264}
6265
6266// Validate inspects the fields of the type to determine if they are valid.
6267func (s *CreateFieldLevelEncryptionProfileInput) Validate() error {
6268	invalidParams := request.ErrInvalidParams{Context: "CreateFieldLevelEncryptionProfileInput"}
6269	if s.FieldLevelEncryptionProfileConfig == nil {
6270		invalidParams.Add(request.NewErrParamRequired("FieldLevelEncryptionProfileConfig"))
6271	}
6272	if s.FieldLevelEncryptionProfileConfig != nil {
6273		if err := s.FieldLevelEncryptionProfileConfig.Validate(); err != nil {
6274			invalidParams.AddNested("FieldLevelEncryptionProfileConfig", err.(request.ErrInvalidParams))
6275		}
6276	}
6277
6278	if invalidParams.Len() > 0 {
6279		return invalidParams
6280	}
6281	return nil
6282}
6283
6284// SetFieldLevelEncryptionProfileConfig sets the FieldLevelEncryptionProfileConfig field's value.
6285func (s *CreateFieldLevelEncryptionProfileInput) SetFieldLevelEncryptionProfileConfig(v *FieldLevelEncryptionProfileConfig) *CreateFieldLevelEncryptionProfileInput {
6286	s.FieldLevelEncryptionProfileConfig = v
6287	return s
6288}
6289
6290type CreateFieldLevelEncryptionProfileOutput struct {
6291	_ struct{} `type:"structure" payload:"FieldLevelEncryptionProfile"`
6292
6293	// The current version of the field level encryption profile. For example: E2QWRUHAPOMQZL.
6294	ETag *string `location:"header" locationName:"ETag" type:"string"`
6295
6296	// Returned when you create a new field-level encryption profile.
6297	FieldLevelEncryptionProfile *FieldLevelEncryptionProfile `type:"structure"`
6298
6299	// The fully qualified URI of the new profile resource just created. For example:
6300	// https://cloudfront.amazonaws.com/2010-11-01/field-level-encryption-profile/EDFDVBD632BHDS5.
6301	Location *string `location:"header" locationName:"Location" type:"string"`
6302}
6303
6304// String returns the string representation
6305func (s CreateFieldLevelEncryptionProfileOutput) String() string {
6306	return awsutil.Prettify(s)
6307}
6308
6309// GoString returns the string representation
6310func (s CreateFieldLevelEncryptionProfileOutput) GoString() string {
6311	return s.String()
6312}
6313
6314// SetETag sets the ETag field's value.
6315func (s *CreateFieldLevelEncryptionProfileOutput) SetETag(v string) *CreateFieldLevelEncryptionProfileOutput {
6316	s.ETag = &v
6317	return s
6318}
6319
6320// SetFieldLevelEncryptionProfile sets the FieldLevelEncryptionProfile field's value.
6321func (s *CreateFieldLevelEncryptionProfileOutput) SetFieldLevelEncryptionProfile(v *FieldLevelEncryptionProfile) *CreateFieldLevelEncryptionProfileOutput {
6322	s.FieldLevelEncryptionProfile = v
6323	return s
6324}
6325
6326// SetLocation sets the Location field's value.
6327func (s *CreateFieldLevelEncryptionProfileOutput) SetLocation(v string) *CreateFieldLevelEncryptionProfileOutput {
6328	s.Location = &v
6329	return s
6330}
6331
6332// The request to create an invalidation.
6333type CreateInvalidationInput struct {
6334	_ struct{} `locationName:"CreateInvalidationRequest" type:"structure" payload:"InvalidationBatch"`
6335
6336	// The distribution's id.
6337	//
6338	// DistributionId is a required field
6339	DistributionId *string `location:"uri" locationName:"DistributionId" type:"string" required:"true"`
6340
6341	// The batch information for the invalidation.
6342	//
6343	// InvalidationBatch is a required field
6344	InvalidationBatch *InvalidationBatch `locationName:"InvalidationBatch" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6345}
6346
6347// String returns the string representation
6348func (s CreateInvalidationInput) String() string {
6349	return awsutil.Prettify(s)
6350}
6351
6352// GoString returns the string representation
6353func (s CreateInvalidationInput) GoString() string {
6354	return s.String()
6355}
6356
6357// Validate inspects the fields of the type to determine if they are valid.
6358func (s *CreateInvalidationInput) Validate() error {
6359	invalidParams := request.ErrInvalidParams{Context: "CreateInvalidationInput"}
6360	if s.DistributionId == nil {
6361		invalidParams.Add(request.NewErrParamRequired("DistributionId"))
6362	}
6363	if s.DistributionId != nil && len(*s.DistributionId) < 1 {
6364		invalidParams.Add(request.NewErrParamMinLen("DistributionId", 1))
6365	}
6366	if s.InvalidationBatch == nil {
6367		invalidParams.Add(request.NewErrParamRequired("InvalidationBatch"))
6368	}
6369	if s.InvalidationBatch != nil {
6370		if err := s.InvalidationBatch.Validate(); err != nil {
6371			invalidParams.AddNested("InvalidationBatch", err.(request.ErrInvalidParams))
6372		}
6373	}
6374
6375	if invalidParams.Len() > 0 {
6376		return invalidParams
6377	}
6378	return nil
6379}
6380
6381// SetDistributionId sets the DistributionId field's value.
6382func (s *CreateInvalidationInput) SetDistributionId(v string) *CreateInvalidationInput {
6383	s.DistributionId = &v
6384	return s
6385}
6386
6387// SetInvalidationBatch sets the InvalidationBatch field's value.
6388func (s *CreateInvalidationInput) SetInvalidationBatch(v *InvalidationBatch) *CreateInvalidationInput {
6389	s.InvalidationBatch = v
6390	return s
6391}
6392
6393// The returned result of the corresponding request.
6394type CreateInvalidationOutput struct {
6395	_ struct{} `type:"structure" payload:"Invalidation"`
6396
6397	// The invalidation's information.
6398	Invalidation *Invalidation `type:"structure"`
6399
6400	// The fully qualified URI of the distribution and invalidation batch request,
6401	// including the Invalidation ID.
6402	Location *string `location:"header" locationName:"Location" type:"string"`
6403}
6404
6405// String returns the string representation
6406func (s CreateInvalidationOutput) String() string {
6407	return awsutil.Prettify(s)
6408}
6409
6410// GoString returns the string representation
6411func (s CreateInvalidationOutput) GoString() string {
6412	return s.String()
6413}
6414
6415// SetInvalidation sets the Invalidation field's value.
6416func (s *CreateInvalidationOutput) SetInvalidation(v *Invalidation) *CreateInvalidationOutput {
6417	s.Invalidation = v
6418	return s
6419}
6420
6421// SetLocation sets the Location field's value.
6422func (s *CreateInvalidationOutput) SetLocation(v string) *CreateInvalidationOutput {
6423	s.Location = &v
6424	return s
6425}
6426
6427type CreatePublicKeyInput struct {
6428	_ struct{} `locationName:"CreatePublicKeyRequest" type:"structure" payload:"PublicKeyConfig"`
6429
6430	// The request to add a public key to CloudFront.
6431	//
6432	// PublicKeyConfig is a required field
6433	PublicKeyConfig *PublicKeyConfig `locationName:"PublicKeyConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6434}
6435
6436// String returns the string representation
6437func (s CreatePublicKeyInput) String() string {
6438	return awsutil.Prettify(s)
6439}
6440
6441// GoString returns the string representation
6442func (s CreatePublicKeyInput) GoString() string {
6443	return s.String()
6444}
6445
6446// Validate inspects the fields of the type to determine if they are valid.
6447func (s *CreatePublicKeyInput) Validate() error {
6448	invalidParams := request.ErrInvalidParams{Context: "CreatePublicKeyInput"}
6449	if s.PublicKeyConfig == nil {
6450		invalidParams.Add(request.NewErrParamRequired("PublicKeyConfig"))
6451	}
6452	if s.PublicKeyConfig != nil {
6453		if err := s.PublicKeyConfig.Validate(); err != nil {
6454			invalidParams.AddNested("PublicKeyConfig", err.(request.ErrInvalidParams))
6455		}
6456	}
6457
6458	if invalidParams.Len() > 0 {
6459		return invalidParams
6460	}
6461	return nil
6462}
6463
6464// SetPublicKeyConfig sets the PublicKeyConfig field's value.
6465func (s *CreatePublicKeyInput) SetPublicKeyConfig(v *PublicKeyConfig) *CreatePublicKeyInput {
6466	s.PublicKeyConfig = v
6467	return s
6468}
6469
6470type CreatePublicKeyOutput struct {
6471	_ struct{} `type:"structure" payload:"PublicKey"`
6472
6473	// The current version of the public key. For example: E2QWRUHAPOMQZL.
6474	ETag *string `location:"header" locationName:"ETag" type:"string"`
6475
6476	// The fully qualified URI of the new public key resource just created. For
6477	// example: https://cloudfront.amazonaws.com/2010-11-01/cloudfront-public-key/EDFDVBD632BHDS5.
6478	Location *string `location:"header" locationName:"Location" type:"string"`
6479
6480	// Returned when you add a public key.
6481	PublicKey *PublicKey `type:"structure"`
6482}
6483
6484// String returns the string representation
6485func (s CreatePublicKeyOutput) String() string {
6486	return awsutil.Prettify(s)
6487}
6488
6489// GoString returns the string representation
6490func (s CreatePublicKeyOutput) GoString() string {
6491	return s.String()
6492}
6493
6494// SetETag sets the ETag field's value.
6495func (s *CreatePublicKeyOutput) SetETag(v string) *CreatePublicKeyOutput {
6496	s.ETag = &v
6497	return s
6498}
6499
6500// SetLocation sets the Location field's value.
6501func (s *CreatePublicKeyOutput) SetLocation(v string) *CreatePublicKeyOutput {
6502	s.Location = &v
6503	return s
6504}
6505
6506// SetPublicKey sets the PublicKey field's value.
6507func (s *CreatePublicKeyOutput) SetPublicKey(v *PublicKey) *CreatePublicKeyOutput {
6508	s.PublicKey = v
6509	return s
6510}
6511
6512// The request to create a new streaming distribution.
6513type CreateStreamingDistributionInput struct {
6514	_ struct{} `locationName:"CreateStreamingDistributionRequest" type:"structure" payload:"StreamingDistributionConfig"`
6515
6516	// The streaming distribution's configuration information.
6517	//
6518	// StreamingDistributionConfig is a required field
6519	StreamingDistributionConfig *StreamingDistributionConfig `locationName:"StreamingDistributionConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6520}
6521
6522// String returns the string representation
6523func (s CreateStreamingDistributionInput) String() string {
6524	return awsutil.Prettify(s)
6525}
6526
6527// GoString returns the string representation
6528func (s CreateStreamingDistributionInput) GoString() string {
6529	return s.String()
6530}
6531
6532// Validate inspects the fields of the type to determine if they are valid.
6533func (s *CreateStreamingDistributionInput) Validate() error {
6534	invalidParams := request.ErrInvalidParams{Context: "CreateStreamingDistributionInput"}
6535	if s.StreamingDistributionConfig == nil {
6536		invalidParams.Add(request.NewErrParamRequired("StreamingDistributionConfig"))
6537	}
6538	if s.StreamingDistributionConfig != nil {
6539		if err := s.StreamingDistributionConfig.Validate(); err != nil {
6540			invalidParams.AddNested("StreamingDistributionConfig", err.(request.ErrInvalidParams))
6541		}
6542	}
6543
6544	if invalidParams.Len() > 0 {
6545		return invalidParams
6546	}
6547	return nil
6548}
6549
6550// SetStreamingDistributionConfig sets the StreamingDistributionConfig field's value.
6551func (s *CreateStreamingDistributionInput) SetStreamingDistributionConfig(v *StreamingDistributionConfig) *CreateStreamingDistributionInput {
6552	s.StreamingDistributionConfig = v
6553	return s
6554}
6555
6556// The returned result of the corresponding request.
6557type CreateStreamingDistributionOutput struct {
6558	_ struct{} `type:"structure" payload:"StreamingDistribution"`
6559
6560	// The current version of the streaming distribution created.
6561	ETag *string `location:"header" locationName:"ETag" type:"string"`
6562
6563	// The fully qualified URI of the new streaming distribution resource just created.
6564	// For example: https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8.
6565	Location *string `location:"header" locationName:"Location" type:"string"`
6566
6567	// The streaming distribution's information.
6568	StreamingDistribution *StreamingDistribution `type:"structure"`
6569}
6570
6571// String returns the string representation
6572func (s CreateStreamingDistributionOutput) String() string {
6573	return awsutil.Prettify(s)
6574}
6575
6576// GoString returns the string representation
6577func (s CreateStreamingDistributionOutput) GoString() string {
6578	return s.String()
6579}
6580
6581// SetETag sets the ETag field's value.
6582func (s *CreateStreamingDistributionOutput) SetETag(v string) *CreateStreamingDistributionOutput {
6583	s.ETag = &v
6584	return s
6585}
6586
6587// SetLocation sets the Location field's value.
6588func (s *CreateStreamingDistributionOutput) SetLocation(v string) *CreateStreamingDistributionOutput {
6589	s.Location = &v
6590	return s
6591}
6592
6593// SetStreamingDistribution sets the StreamingDistribution field's value.
6594func (s *CreateStreamingDistributionOutput) SetStreamingDistribution(v *StreamingDistribution) *CreateStreamingDistributionOutput {
6595	s.StreamingDistribution = v
6596	return s
6597}
6598
6599// The request to create a new streaming distribution with tags.
6600type CreateStreamingDistributionWithTagsInput struct {
6601	_ struct{} `locationName:"CreateStreamingDistributionWithTagsRequest" type:"structure" payload:"StreamingDistributionConfigWithTags"`
6602
6603	// The streaming distribution's configuration information.
6604	//
6605	// StreamingDistributionConfigWithTags is a required field
6606	StreamingDistributionConfigWithTags *StreamingDistributionConfigWithTags `locationName:"StreamingDistributionConfigWithTags" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
6607}
6608
6609// String returns the string representation
6610func (s CreateStreamingDistributionWithTagsInput) String() string {
6611	return awsutil.Prettify(s)
6612}
6613
6614// GoString returns the string representation
6615func (s CreateStreamingDistributionWithTagsInput) GoString() string {
6616	return s.String()
6617}
6618
6619// Validate inspects the fields of the type to determine if they are valid.
6620func (s *CreateStreamingDistributionWithTagsInput) Validate() error {
6621	invalidParams := request.ErrInvalidParams{Context: "CreateStreamingDistributionWithTagsInput"}
6622	if s.StreamingDistributionConfigWithTags == nil {
6623		invalidParams.Add(request.NewErrParamRequired("StreamingDistributionConfigWithTags"))
6624	}
6625	if s.StreamingDistributionConfigWithTags != nil {
6626		if err := s.StreamingDistributionConfigWithTags.Validate(); err != nil {
6627			invalidParams.AddNested("StreamingDistributionConfigWithTags", err.(request.ErrInvalidParams))
6628		}
6629	}
6630
6631	if invalidParams.Len() > 0 {
6632		return invalidParams
6633	}
6634	return nil
6635}
6636
6637// SetStreamingDistributionConfigWithTags sets the StreamingDistributionConfigWithTags field's value.
6638func (s *CreateStreamingDistributionWithTagsInput) SetStreamingDistributionConfigWithTags(v *StreamingDistributionConfigWithTags) *CreateStreamingDistributionWithTagsInput {
6639	s.StreamingDistributionConfigWithTags = v
6640	return s
6641}
6642
6643// The returned result of the corresponding request.
6644type CreateStreamingDistributionWithTagsOutput struct {
6645	_ struct{} `type:"structure" payload:"StreamingDistribution"`
6646
6647	// The current version of the distribution created.
6648	ETag *string `location:"header" locationName:"ETag" type:"string"`
6649
6650	// The fully qualified URI of the new streaming distribution resource just created.
6651	// For example:https://cloudfront.amazonaws.com/2010-11-01/streaming-distribution/EGTXBD79H29TRA8.
6652	Location *string `location:"header" locationName:"Location" type:"string"`
6653
6654	// The streaming distribution's information.
6655	StreamingDistribution *StreamingDistribution `type:"structure"`
6656}
6657
6658// String returns the string representation
6659func (s CreateStreamingDistributionWithTagsOutput) String() string {
6660	return awsutil.Prettify(s)
6661}
6662
6663// GoString returns the string representation
6664func (s CreateStreamingDistributionWithTagsOutput) GoString() string {
6665	return s.String()
6666}
6667
6668// SetETag sets the ETag field's value.
6669func (s *CreateStreamingDistributionWithTagsOutput) SetETag(v string) *CreateStreamingDistributionWithTagsOutput {
6670	s.ETag = &v
6671	return s
6672}
6673
6674// SetLocation sets the Location field's value.
6675func (s *CreateStreamingDistributionWithTagsOutput) SetLocation(v string) *CreateStreamingDistributionWithTagsOutput {
6676	s.Location = &v
6677	return s
6678}
6679
6680// SetStreamingDistribution sets the StreamingDistribution field's value.
6681func (s *CreateStreamingDistributionWithTagsOutput) SetStreamingDistribution(v *StreamingDistribution) *CreateStreamingDistributionWithTagsOutput {
6682	s.StreamingDistribution = v
6683	return s
6684}
6685
6686// A complex type that controls:
6687//
6688//    * Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range
6689//    with custom error messages before returning the response to the viewer.
6690//
6691//    * How long CloudFront caches HTTP status codes in the 4xx and 5xx range.
6692//
6693// For more information about custom error pages, see Customizing Error Responses
6694// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html)
6695// in the Amazon CloudFront Developer Guide.
6696type CustomErrorResponse struct {
6697	_ struct{} `type:"structure"`
6698
6699	// The minimum amount of time, in seconds, that you want CloudFront to cache
6700	// the HTTP status code specified in ErrorCode. When this time period has elapsed,
6701	// CloudFront queries your origin to see whether the problem that caused the
6702	// error has been resolved and the requested object is now available.
6703	//
6704	// For more information, see Customizing Error Responses (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html)
6705	// in the Amazon CloudFront Developer Guide.
6706	ErrorCachingMinTTL *int64 `type:"long"`
6707
6708	// The HTTP status code for which you want to specify a custom error page and/or
6709	// a caching duration.
6710	//
6711	// ErrorCode is a required field
6712	ErrorCode *int64 `type:"integer" required:"true"`
6713
6714	// The HTTP status code that you want CloudFront to return to the viewer along
6715	// with the custom error page. There are a variety of reasons that you might
6716	// want CloudFront to return a status code different from the status code that
6717	// your origin returned to CloudFront, for example:
6718	//
6719	//    * Some Internet devices (some firewalls and corporate proxies, for example)
6720	//    intercept HTTP 4xx and 5xx and prevent the response from being returned
6721	//    to the viewer. If you substitute 200, the response typically won't be
6722	//    intercepted.
6723	//
6724	//    * If you don't care about distinguishing among different client errors
6725	//    or server errors, you can specify 400 or 500 as the ResponseCode for all
6726	//    4xx or 5xx errors.
6727	//
6728	//    * You might want to return a 200 status code (OK) and static website so
6729	//    your customers don't know that your website is down.
6730	//
6731	// If you specify a value for ResponseCode, you must also specify a value for
6732	// ResponsePagePath.
6733	ResponseCode *string `type:"string"`
6734
6735	// The path to the custom error page that you want CloudFront to return to a
6736	// viewer when your origin returns the HTTP status code specified by ErrorCode,
6737	// for example, /4xx-errors/403-forbidden.html. If you want to store your objects
6738	// and your custom error pages in different locations, your distribution must
6739	// include a cache behavior for which the following is true:
6740	//
6741	//    * The value of PathPattern matches the path to your custom error messages.
6742	//    For example, suppose you saved custom error pages for 4xx errors in an
6743	//    Amazon S3 bucket in a directory named /4xx-errors. Your distribution must
6744	//    include a cache behavior for which the path pattern routes requests for
6745	//    your custom error pages to that location, for example, /4xx-errors/*.
6746	//
6747	//    * The value of TargetOriginId specifies the value of the ID element for
6748	//    the origin that contains your custom error pages.
6749	//
6750	// If you specify a value for ResponsePagePath, you must also specify a value
6751	// for ResponseCode.
6752	//
6753	// We recommend that you store custom error pages in an Amazon S3 bucket. If
6754	// you store custom error pages on an HTTP server and the server starts to return
6755	// 5xx errors, CloudFront can't get the files that you want to return to viewers
6756	// because the origin server is unavailable.
6757	ResponsePagePath *string `type:"string"`
6758}
6759
6760// String returns the string representation
6761func (s CustomErrorResponse) String() string {
6762	return awsutil.Prettify(s)
6763}
6764
6765// GoString returns the string representation
6766func (s CustomErrorResponse) GoString() string {
6767	return s.String()
6768}
6769
6770// Validate inspects the fields of the type to determine if they are valid.
6771func (s *CustomErrorResponse) Validate() error {
6772	invalidParams := request.ErrInvalidParams{Context: "CustomErrorResponse"}
6773	if s.ErrorCode == nil {
6774		invalidParams.Add(request.NewErrParamRequired("ErrorCode"))
6775	}
6776
6777	if invalidParams.Len() > 0 {
6778		return invalidParams
6779	}
6780	return nil
6781}
6782
6783// SetErrorCachingMinTTL sets the ErrorCachingMinTTL field's value.
6784func (s *CustomErrorResponse) SetErrorCachingMinTTL(v int64) *CustomErrorResponse {
6785	s.ErrorCachingMinTTL = &v
6786	return s
6787}
6788
6789// SetErrorCode sets the ErrorCode field's value.
6790func (s *CustomErrorResponse) SetErrorCode(v int64) *CustomErrorResponse {
6791	s.ErrorCode = &v
6792	return s
6793}
6794
6795// SetResponseCode sets the ResponseCode field's value.
6796func (s *CustomErrorResponse) SetResponseCode(v string) *CustomErrorResponse {
6797	s.ResponseCode = &v
6798	return s
6799}
6800
6801// SetResponsePagePath sets the ResponsePagePath field's value.
6802func (s *CustomErrorResponse) SetResponsePagePath(v string) *CustomErrorResponse {
6803	s.ResponsePagePath = &v
6804	return s
6805}
6806
6807// A complex type that controls:
6808//
6809//    * Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range
6810//    with custom error messages before returning the response to the viewer.
6811//
6812//    * How long CloudFront caches HTTP status codes in the 4xx and 5xx range.
6813//
6814// For more information about custom error pages, see Customizing Error Responses
6815// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html)
6816// in the Amazon CloudFront Developer Guide.
6817type CustomErrorResponses struct {
6818	_ struct{} `type:"structure"`
6819
6820	// A complex type that contains a CustomErrorResponse element for each HTTP
6821	// status code for which you want to specify a custom error page and/or a caching
6822	// duration.
6823	Items []*CustomErrorResponse `locationNameList:"CustomErrorResponse" type:"list"`
6824
6825	// The number of HTTP status codes for which you want to specify a custom error
6826	// page and/or a caching duration. If Quantity is 0, you can omit Items.
6827	//
6828	// Quantity is a required field
6829	Quantity *int64 `type:"integer" required:"true"`
6830}
6831
6832// String returns the string representation
6833func (s CustomErrorResponses) String() string {
6834	return awsutil.Prettify(s)
6835}
6836
6837// GoString returns the string representation
6838func (s CustomErrorResponses) GoString() string {
6839	return s.String()
6840}
6841
6842// Validate inspects the fields of the type to determine if they are valid.
6843func (s *CustomErrorResponses) Validate() error {
6844	invalidParams := request.ErrInvalidParams{Context: "CustomErrorResponses"}
6845	if s.Quantity == nil {
6846		invalidParams.Add(request.NewErrParamRequired("Quantity"))
6847	}
6848	if s.Items != nil {
6849		for i, v := range s.Items {
6850			if v == nil {
6851				continue
6852			}
6853			if err := v.Validate(); err != nil {
6854				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
6855			}
6856		}
6857	}
6858
6859	if invalidParams.Len() > 0 {
6860		return invalidParams
6861	}
6862	return nil
6863}
6864
6865// SetItems sets the Items field's value.
6866func (s *CustomErrorResponses) SetItems(v []*CustomErrorResponse) *CustomErrorResponses {
6867	s.Items = v
6868	return s
6869}
6870
6871// SetQuantity sets the Quantity field's value.
6872func (s *CustomErrorResponses) SetQuantity(v int64) *CustomErrorResponses {
6873	s.Quantity = &v
6874	return s
6875}
6876
6877// A complex type that contains the list of Custom Headers for each origin.
6878type CustomHeaders struct {
6879	_ struct{} `type:"structure"`
6880
6881	// Optional: A list that contains one OriginCustomHeader element for each custom
6882	// header that you want CloudFront to forward to the origin. If Quantity is
6883	// 0, omit Items.
6884	Items []*OriginCustomHeader `locationNameList:"OriginCustomHeader" type:"list"`
6885
6886	// The number of custom headers, if any, for this distribution.
6887	//
6888	// Quantity is a required field
6889	Quantity *int64 `type:"integer" required:"true"`
6890}
6891
6892// String returns the string representation
6893func (s CustomHeaders) String() string {
6894	return awsutil.Prettify(s)
6895}
6896
6897// GoString returns the string representation
6898func (s CustomHeaders) GoString() string {
6899	return s.String()
6900}
6901
6902// Validate inspects the fields of the type to determine if they are valid.
6903func (s *CustomHeaders) Validate() error {
6904	invalidParams := request.ErrInvalidParams{Context: "CustomHeaders"}
6905	if s.Quantity == nil {
6906		invalidParams.Add(request.NewErrParamRequired("Quantity"))
6907	}
6908	if s.Items != nil {
6909		for i, v := range s.Items {
6910			if v == nil {
6911				continue
6912			}
6913			if err := v.Validate(); err != nil {
6914				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
6915			}
6916		}
6917	}
6918
6919	if invalidParams.Len() > 0 {
6920		return invalidParams
6921	}
6922	return nil
6923}
6924
6925// SetItems sets the Items field's value.
6926func (s *CustomHeaders) SetItems(v []*OriginCustomHeader) *CustomHeaders {
6927	s.Items = v
6928	return s
6929}
6930
6931// SetQuantity sets the Quantity field's value.
6932func (s *CustomHeaders) SetQuantity(v int64) *CustomHeaders {
6933	s.Quantity = &v
6934	return s
6935}
6936
6937// A custom origin or an Amazon S3 bucket configured as a website endpoint.
6938type CustomOriginConfig struct {
6939	_ struct{} `type:"structure"`
6940
6941	// The HTTP port the custom origin listens on.
6942	//
6943	// HTTPPort is a required field
6944	HTTPPort *int64 `type:"integer" required:"true"`
6945
6946	// The HTTPS port the custom origin listens on.
6947	//
6948	// HTTPSPort is a required field
6949	HTTPSPort *int64 `type:"integer" required:"true"`
6950
6951	// You can create a custom keep-alive timeout. All timeout units are in seconds.
6952	// The default keep-alive timeout is 5 seconds, but you can configure custom
6953	// timeout lengths using the CloudFront API. The minimum timeout length is 1
6954	// second; the maximum is 60 seconds.
6955	//
6956	// If you need to increase the maximum time limit, contact the AWS Support Center
6957	// (https://console.aws.amazon.com/support/home#/).
6958	OriginKeepaliveTimeout *int64 `type:"integer"`
6959
6960	// The origin protocol policy to apply to your origin.
6961	//
6962	// OriginProtocolPolicy is a required field
6963	OriginProtocolPolicy *string `type:"string" required:"true" enum:"OriginProtocolPolicy"`
6964
6965	// You can create a custom origin read timeout. All timeout units are in seconds.
6966	// The default origin read timeout is 30 seconds, but you can configure custom
6967	// timeout lengths using the CloudFront API. The minimum timeout length is 4
6968	// seconds; the maximum is 60 seconds.
6969	//
6970	// If you need to increase the maximum time limit, contact the AWS Support Center
6971	// (https://console.aws.amazon.com/support/home#/).
6972	OriginReadTimeout *int64 `type:"integer"`
6973
6974	// The SSL/TLS protocols that you want CloudFront to use when communicating
6975	// with your origin over HTTPS.
6976	OriginSslProtocols *OriginSslProtocols `type:"structure"`
6977}
6978
6979// String returns the string representation
6980func (s CustomOriginConfig) String() string {
6981	return awsutil.Prettify(s)
6982}
6983
6984// GoString returns the string representation
6985func (s CustomOriginConfig) GoString() string {
6986	return s.String()
6987}
6988
6989// Validate inspects the fields of the type to determine if they are valid.
6990func (s *CustomOriginConfig) Validate() error {
6991	invalidParams := request.ErrInvalidParams{Context: "CustomOriginConfig"}
6992	if s.HTTPPort == nil {
6993		invalidParams.Add(request.NewErrParamRequired("HTTPPort"))
6994	}
6995	if s.HTTPSPort == nil {
6996		invalidParams.Add(request.NewErrParamRequired("HTTPSPort"))
6997	}
6998	if s.OriginProtocolPolicy == nil {
6999		invalidParams.Add(request.NewErrParamRequired("OriginProtocolPolicy"))
7000	}
7001	if s.OriginSslProtocols != nil {
7002		if err := s.OriginSslProtocols.Validate(); err != nil {
7003			invalidParams.AddNested("OriginSslProtocols", err.(request.ErrInvalidParams))
7004		}
7005	}
7006
7007	if invalidParams.Len() > 0 {
7008		return invalidParams
7009	}
7010	return nil
7011}
7012
7013// SetHTTPPort sets the HTTPPort field's value.
7014func (s *CustomOriginConfig) SetHTTPPort(v int64) *CustomOriginConfig {
7015	s.HTTPPort = &v
7016	return s
7017}
7018
7019// SetHTTPSPort sets the HTTPSPort field's value.
7020func (s *CustomOriginConfig) SetHTTPSPort(v int64) *CustomOriginConfig {
7021	s.HTTPSPort = &v
7022	return s
7023}
7024
7025// SetOriginKeepaliveTimeout sets the OriginKeepaliveTimeout field's value.
7026func (s *CustomOriginConfig) SetOriginKeepaliveTimeout(v int64) *CustomOriginConfig {
7027	s.OriginKeepaliveTimeout = &v
7028	return s
7029}
7030
7031// SetOriginProtocolPolicy sets the OriginProtocolPolicy field's value.
7032func (s *CustomOriginConfig) SetOriginProtocolPolicy(v string) *CustomOriginConfig {
7033	s.OriginProtocolPolicy = &v
7034	return s
7035}
7036
7037// SetOriginReadTimeout sets the OriginReadTimeout field's value.
7038func (s *CustomOriginConfig) SetOriginReadTimeout(v int64) *CustomOriginConfig {
7039	s.OriginReadTimeout = &v
7040	return s
7041}
7042
7043// SetOriginSslProtocols sets the OriginSslProtocols field's value.
7044func (s *CustomOriginConfig) SetOriginSslProtocols(v *OriginSslProtocols) *CustomOriginConfig {
7045	s.OriginSslProtocols = v
7046	return s
7047}
7048
7049// A complex type that describes the default cache behavior if you don't specify
7050// a CacheBehavior element or if files don't match any of the values of PathPattern
7051// in CacheBehavior elements. You must create exactly one default cache behavior.
7052type DefaultCacheBehavior struct {
7053	_ struct{} `type:"structure"`
7054
7055	// A complex type that controls which HTTP methods CloudFront processes and
7056	// forwards to your Amazon S3 bucket or your custom origin. There are three
7057	// choices:
7058	//
7059	//    * CloudFront forwards only GET and HEAD requests.
7060	//
7061	//    * CloudFront forwards only GET, HEAD, and OPTIONS requests.
7062	//
7063	//    * CloudFront forwards GET, HEAD, OPTIONS, PUT, PATCH, POST, and DELETE
7064	//    requests.
7065	//
7066	// If you pick the third choice, you may need to restrict access to your Amazon
7067	// S3 bucket or to your custom origin so users can't perform operations that
7068	// you don't want them to. For example, you might not want users to have permissions
7069	// to delete objects from your origin.
7070	AllowedMethods *AllowedMethods `type:"structure"`
7071
7072	// Whether you want CloudFront to automatically compress certain files for this
7073	// cache behavior. If so, specify true; if not, specify false. For more information,
7074	// see Serving Compressed Files (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html)
7075	// in the Amazon CloudFront Developer Guide.
7076	Compress *bool `type:"boolean"`
7077
7078	// The default amount of time that you want objects to stay in CloudFront caches
7079	// before CloudFront forwards another request to your origin to determine whether
7080	// the object has been updated. The value that you specify applies only when
7081	// your origin does not add HTTP headers such as Cache-Control max-age, Cache-Control
7082	// s-maxage, and Expires to objects. For more information, see Managing How
7083	// Long Content Stays in an Edge Cache (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
7084	// in the Amazon CloudFront Developer Guide.
7085	DefaultTTL *int64 `type:"long"`
7086
7087	// The value of ID for the field-level encryption configuration that you want
7088	// CloudFront to use for encrypting specific fields of data for a cache behavior
7089	// or for the default cache behavior in your distribution.
7090	FieldLevelEncryptionId *string `type:"string"`
7091
7092	// A complex type that specifies how CloudFront handles query strings, cookies,
7093	// and HTTP headers.
7094	//
7095	// ForwardedValues is a required field
7096	ForwardedValues *ForwardedValues `type:"structure" required:"true"`
7097
7098	// A complex type that contains zero or more Lambda function associations for
7099	// a cache behavior.
7100	LambdaFunctionAssociations *LambdaFunctionAssociations `type:"structure"`
7101
7102	// The maximum amount of time that you want objects to stay in CloudFront caches
7103	// before CloudFront forwards another request to your origin to determine whether
7104	// the object has been updated. The value that you specify applies only when
7105	// your origin adds HTTP headers such as Cache-Control max-age, Cache-Control
7106	// s-maxage, and Expires to objects. For more information, see Managing How
7107	// Long Content Stays in an Edge Cache (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
7108	// in the Amazon CloudFront Developer Guide.
7109	MaxTTL *int64 `type:"long"`
7110
7111	// The minimum amount of time that you want objects to stay in CloudFront caches
7112	// before CloudFront forwards another request to your origin to determine whether
7113	// the object has been updated. For more information, see Managing How Long
7114	// Content Stays in an Edge Cache (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
7115	// in the Amazon CloudFront Developer Guide.
7116	//
7117	// You must specify 0 for MinTTL if you configure CloudFront to forward all
7118	// headers to your origin (under Headers, if you specify 1 for Quantity and
7119	// * for Name).
7120	//
7121	// MinTTL is a required field
7122	MinTTL *int64 `type:"long" required:"true"`
7123
7124	// Indicates whether you want to distribute media files in the Microsoft Smooth
7125	// Streaming format using the origin that is associated with this cache behavior.
7126	// If so, specify true; if not, specify false. If you specify true for SmoothStreaming,
7127	// you can still distribute other content using this cache behavior if the content
7128	// matches the value of PathPattern.
7129	SmoothStreaming *bool `type:"boolean"`
7130
7131	// The value of ID for the origin that you want CloudFront to route requests
7132	// to when a request matches the path pattern either for a cache behavior or
7133	// for the default cache behavior in your distribution.
7134	//
7135	// TargetOriginId is a required field
7136	TargetOriginId *string `type:"string" required:"true"`
7137
7138	// A complex type that specifies the AWS accounts, if any, that you want to
7139	// allow to create signed URLs for private content.
7140	//
7141	// If you want to require signed URLs in requests for objects in the target
7142	// origin that match the PathPattern for this cache behavior, specify true for
7143	// Enabled, and specify the applicable values for Quantity and Items. For more
7144	// information, see Serving Private Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
7145	// in the Amazon CloudFront Developer Guide.
7146	//
7147	// If you don't want to require signed URLs in requests for objects that match
7148	// PathPattern, specify false for Enabled and 0 for Quantity. Omit Items.
7149	//
7150	// To add, change, or remove one or more trusted signers, change Enabled to
7151	// true (if it's currently false), change Quantity as applicable, and specify
7152	// all of the trusted signers that you want to include in the updated distribution.
7153	//
7154	// TrustedSigners is a required field
7155	TrustedSigners *TrustedSigners `type:"structure" required:"true"`
7156
7157	// The protocol that viewers can use to access the files in the origin specified
7158	// by TargetOriginId when a request matches the path pattern in PathPattern.
7159	// You can specify the following options:
7160	//
7161	//    * allow-all: Viewers can use HTTP or HTTPS.
7162	//
7163	//    * redirect-to-https: If a viewer submits an HTTP request, CloudFront returns
7164	//    an HTTP status code of 301 (Moved Permanently) to the viewer along with
7165	//    the HTTPS URL. The viewer then resubmits the request using the new URL.
7166	//
7167	//    * https-only: If a viewer sends an HTTP request, CloudFront returns an
7168	//    HTTP status code of 403 (Forbidden).
7169	//
7170	// For more information about requiring the HTTPS protocol, see Using an HTTPS
7171	// Connection to Access Your Objects (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html)
7172	// in the Amazon CloudFront Developer Guide.
7173	//
7174	// The only way to guarantee that viewers retrieve an object that was fetched
7175	// from the origin using HTTPS is never to use any other protocol to fetch the
7176	// object. If you have recently changed from HTTP to HTTPS, we recommend that
7177	// you clear your objects' cache because cached objects are protocol agnostic.
7178	// That means that an edge location will return an object from the cache regardless
7179	// of whether the current request protocol matches the protocol used previously.
7180	// For more information, see Managing How Long Content Stays in an Edge Cache
7181	// (Expiration) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)
7182	// in the Amazon CloudFront Developer Guide.
7183	//
7184	// ViewerProtocolPolicy is a required field
7185	ViewerProtocolPolicy *string `type:"string" required:"true" enum:"ViewerProtocolPolicy"`
7186}
7187
7188// String returns the string representation
7189func (s DefaultCacheBehavior) String() string {
7190	return awsutil.Prettify(s)
7191}
7192
7193// GoString returns the string representation
7194func (s DefaultCacheBehavior) GoString() string {
7195	return s.String()
7196}
7197
7198// Validate inspects the fields of the type to determine if they are valid.
7199func (s *DefaultCacheBehavior) Validate() error {
7200	invalidParams := request.ErrInvalidParams{Context: "DefaultCacheBehavior"}
7201	if s.ForwardedValues == nil {
7202		invalidParams.Add(request.NewErrParamRequired("ForwardedValues"))
7203	}
7204	if s.MinTTL == nil {
7205		invalidParams.Add(request.NewErrParamRequired("MinTTL"))
7206	}
7207	if s.TargetOriginId == nil {
7208		invalidParams.Add(request.NewErrParamRequired("TargetOriginId"))
7209	}
7210	if s.TrustedSigners == nil {
7211		invalidParams.Add(request.NewErrParamRequired("TrustedSigners"))
7212	}
7213	if s.ViewerProtocolPolicy == nil {
7214		invalidParams.Add(request.NewErrParamRequired("ViewerProtocolPolicy"))
7215	}
7216	if s.AllowedMethods != nil {
7217		if err := s.AllowedMethods.Validate(); err != nil {
7218			invalidParams.AddNested("AllowedMethods", err.(request.ErrInvalidParams))
7219		}
7220	}
7221	if s.ForwardedValues != nil {
7222		if err := s.ForwardedValues.Validate(); err != nil {
7223			invalidParams.AddNested("ForwardedValues", err.(request.ErrInvalidParams))
7224		}
7225	}
7226	if s.LambdaFunctionAssociations != nil {
7227		if err := s.LambdaFunctionAssociations.Validate(); err != nil {
7228			invalidParams.AddNested("LambdaFunctionAssociations", err.(request.ErrInvalidParams))
7229		}
7230	}
7231	if s.TrustedSigners != nil {
7232		if err := s.TrustedSigners.Validate(); err != nil {
7233			invalidParams.AddNested("TrustedSigners", err.(request.ErrInvalidParams))
7234		}
7235	}
7236
7237	if invalidParams.Len() > 0 {
7238		return invalidParams
7239	}
7240	return nil
7241}
7242
7243// SetAllowedMethods sets the AllowedMethods field's value.
7244func (s *DefaultCacheBehavior) SetAllowedMethods(v *AllowedMethods) *DefaultCacheBehavior {
7245	s.AllowedMethods = v
7246	return s
7247}
7248
7249// SetCompress sets the Compress field's value.
7250func (s *DefaultCacheBehavior) SetCompress(v bool) *DefaultCacheBehavior {
7251	s.Compress = &v
7252	return s
7253}
7254
7255// SetDefaultTTL sets the DefaultTTL field's value.
7256func (s *DefaultCacheBehavior) SetDefaultTTL(v int64) *DefaultCacheBehavior {
7257	s.DefaultTTL = &v
7258	return s
7259}
7260
7261// SetFieldLevelEncryptionId sets the FieldLevelEncryptionId field's value.
7262func (s *DefaultCacheBehavior) SetFieldLevelEncryptionId(v string) *DefaultCacheBehavior {
7263	s.FieldLevelEncryptionId = &v
7264	return s
7265}
7266
7267// SetForwardedValues sets the ForwardedValues field's value.
7268func (s *DefaultCacheBehavior) SetForwardedValues(v *ForwardedValues) *DefaultCacheBehavior {
7269	s.ForwardedValues = v
7270	return s
7271}
7272
7273// SetLambdaFunctionAssociations sets the LambdaFunctionAssociations field's value.
7274func (s *DefaultCacheBehavior) SetLambdaFunctionAssociations(v *LambdaFunctionAssociations) *DefaultCacheBehavior {
7275	s.LambdaFunctionAssociations = v
7276	return s
7277}
7278
7279// SetMaxTTL sets the MaxTTL field's value.
7280func (s *DefaultCacheBehavior) SetMaxTTL(v int64) *DefaultCacheBehavior {
7281	s.MaxTTL = &v
7282	return s
7283}
7284
7285// SetMinTTL sets the MinTTL field's value.
7286func (s *DefaultCacheBehavior) SetMinTTL(v int64) *DefaultCacheBehavior {
7287	s.MinTTL = &v
7288	return s
7289}
7290
7291// SetSmoothStreaming sets the SmoothStreaming field's value.
7292func (s *DefaultCacheBehavior) SetSmoothStreaming(v bool) *DefaultCacheBehavior {
7293	s.SmoothStreaming = &v
7294	return s
7295}
7296
7297// SetTargetOriginId sets the TargetOriginId field's value.
7298func (s *DefaultCacheBehavior) SetTargetOriginId(v string) *DefaultCacheBehavior {
7299	s.TargetOriginId = &v
7300	return s
7301}
7302
7303// SetTrustedSigners sets the TrustedSigners field's value.
7304func (s *DefaultCacheBehavior) SetTrustedSigners(v *TrustedSigners) *DefaultCacheBehavior {
7305	s.TrustedSigners = v
7306	return s
7307}
7308
7309// SetViewerProtocolPolicy sets the ViewerProtocolPolicy field's value.
7310func (s *DefaultCacheBehavior) SetViewerProtocolPolicy(v string) *DefaultCacheBehavior {
7311	s.ViewerProtocolPolicy = &v
7312	return s
7313}
7314
7315// Deletes a origin access identity.
7316type DeleteCloudFrontOriginAccessIdentityInput struct {
7317	_ struct{} `locationName:"DeleteCloudFrontOriginAccessIdentityRequest" type:"structure"`
7318
7319	// The origin access identity's ID.
7320	//
7321	// Id is a required field
7322	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
7323
7324	// The value of the ETag header you received from a previous GET or PUT request.
7325	// For example: E2QWRUHAPOMQZL.
7326	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
7327}
7328
7329// String returns the string representation
7330func (s DeleteCloudFrontOriginAccessIdentityInput) String() string {
7331	return awsutil.Prettify(s)
7332}
7333
7334// GoString returns the string representation
7335func (s DeleteCloudFrontOriginAccessIdentityInput) GoString() string {
7336	return s.String()
7337}
7338
7339// Validate inspects the fields of the type to determine if they are valid.
7340func (s *DeleteCloudFrontOriginAccessIdentityInput) Validate() error {
7341	invalidParams := request.ErrInvalidParams{Context: "DeleteCloudFrontOriginAccessIdentityInput"}
7342	if s.Id == nil {
7343		invalidParams.Add(request.NewErrParamRequired("Id"))
7344	}
7345	if s.Id != nil && len(*s.Id) < 1 {
7346		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
7347	}
7348
7349	if invalidParams.Len() > 0 {
7350		return invalidParams
7351	}
7352	return nil
7353}
7354
7355// SetId sets the Id field's value.
7356func (s *DeleteCloudFrontOriginAccessIdentityInput) SetId(v string) *DeleteCloudFrontOriginAccessIdentityInput {
7357	s.Id = &v
7358	return s
7359}
7360
7361// SetIfMatch sets the IfMatch field's value.
7362func (s *DeleteCloudFrontOriginAccessIdentityInput) SetIfMatch(v string) *DeleteCloudFrontOriginAccessIdentityInput {
7363	s.IfMatch = &v
7364	return s
7365}
7366
7367type DeleteCloudFrontOriginAccessIdentityOutput struct {
7368	_ struct{} `type:"structure"`
7369}
7370
7371// String returns the string representation
7372func (s DeleteCloudFrontOriginAccessIdentityOutput) String() string {
7373	return awsutil.Prettify(s)
7374}
7375
7376// GoString returns the string representation
7377func (s DeleteCloudFrontOriginAccessIdentityOutput) GoString() string {
7378	return s.String()
7379}
7380
7381// This action deletes a web distribution. To delete a web distribution using
7382// the CloudFront API, perform the following steps.
7383//
7384// To delete a web distribution using the CloudFront API:
7385//
7386// Disable the web distribution
7387//
7388// Submit a GET Distribution Config request to get the current configuration
7389// and the Etag header for the distribution.
7390//
7391// Update the XML document that was returned in the response to your GET Distribution
7392// Config request to change the value of Enabled to false.
7393//
7394// Submit a PUT Distribution Config request to update the configuration for
7395// your distribution. In the request body, include the XML document that you
7396// updated in Step 3. Set the value of the HTTP If-Match header to the value
7397// of the ETag header that CloudFront returned when you submitted the GET Distribution
7398// Config request in Step 2.
7399//
7400// Review the response to the PUT Distribution Config request to confirm that
7401// the distribution was successfully disabled.
7402//
7403// Submit a GET Distribution request to confirm that your changes have propagated.
7404// When propagation is complete, the value of Status is Deployed.
7405//
7406// Submit a DELETE Distribution request. Set the value of the HTTP If-Match
7407// header to the value of the ETag header that CloudFront returned when you
7408// submitted the GET Distribution Config request in Step 6.
7409//
7410// Review the response to your DELETE Distribution request to confirm that the
7411// distribution was successfully deleted.
7412//
7413// For information about deleting a distribution using the CloudFront console,
7414// see Deleting a Distribution (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HowToDeleteDistribution.html)
7415// in the Amazon CloudFront Developer Guide.
7416type DeleteDistributionInput struct {
7417	_ struct{} `locationName:"DeleteDistributionRequest" type:"structure"`
7418
7419	// The distribution ID.
7420	//
7421	// Id is a required field
7422	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
7423
7424	// The value of the ETag header that you received when you disabled the distribution.
7425	// For example: E2QWRUHAPOMQZL.
7426	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
7427}
7428
7429// String returns the string representation
7430func (s DeleteDistributionInput) String() string {
7431	return awsutil.Prettify(s)
7432}
7433
7434// GoString returns the string representation
7435func (s DeleteDistributionInput) GoString() string {
7436	return s.String()
7437}
7438
7439// Validate inspects the fields of the type to determine if they are valid.
7440func (s *DeleteDistributionInput) Validate() error {
7441	invalidParams := request.ErrInvalidParams{Context: "DeleteDistributionInput"}
7442	if s.Id == nil {
7443		invalidParams.Add(request.NewErrParamRequired("Id"))
7444	}
7445	if s.Id != nil && len(*s.Id) < 1 {
7446		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
7447	}
7448
7449	if invalidParams.Len() > 0 {
7450		return invalidParams
7451	}
7452	return nil
7453}
7454
7455// SetId sets the Id field's value.
7456func (s *DeleteDistributionInput) SetId(v string) *DeleteDistributionInput {
7457	s.Id = &v
7458	return s
7459}
7460
7461// SetIfMatch sets the IfMatch field's value.
7462func (s *DeleteDistributionInput) SetIfMatch(v string) *DeleteDistributionInput {
7463	s.IfMatch = &v
7464	return s
7465}
7466
7467type DeleteDistributionOutput struct {
7468	_ struct{} `type:"structure"`
7469}
7470
7471// String returns the string representation
7472func (s DeleteDistributionOutput) String() string {
7473	return awsutil.Prettify(s)
7474}
7475
7476// GoString returns the string representation
7477func (s DeleteDistributionOutput) GoString() string {
7478	return s.String()
7479}
7480
7481type DeleteFieldLevelEncryptionConfigInput struct {
7482	_ struct{} `locationName:"DeleteFieldLevelEncryptionConfigRequest" type:"structure"`
7483
7484	// The ID of the configuration you want to delete from CloudFront.
7485	//
7486	// Id is a required field
7487	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
7488
7489	// The value of the ETag header that you received when retrieving the configuration
7490	// identity to delete. For example: E2QWRUHAPOMQZL.
7491	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
7492}
7493
7494// String returns the string representation
7495func (s DeleteFieldLevelEncryptionConfigInput) String() string {
7496	return awsutil.Prettify(s)
7497}
7498
7499// GoString returns the string representation
7500func (s DeleteFieldLevelEncryptionConfigInput) GoString() string {
7501	return s.String()
7502}
7503
7504// Validate inspects the fields of the type to determine if they are valid.
7505func (s *DeleteFieldLevelEncryptionConfigInput) Validate() error {
7506	invalidParams := request.ErrInvalidParams{Context: "DeleteFieldLevelEncryptionConfigInput"}
7507	if s.Id == nil {
7508		invalidParams.Add(request.NewErrParamRequired("Id"))
7509	}
7510	if s.Id != nil && len(*s.Id) < 1 {
7511		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
7512	}
7513
7514	if invalidParams.Len() > 0 {
7515		return invalidParams
7516	}
7517	return nil
7518}
7519
7520// SetId sets the Id field's value.
7521func (s *DeleteFieldLevelEncryptionConfigInput) SetId(v string) *DeleteFieldLevelEncryptionConfigInput {
7522	s.Id = &v
7523	return s
7524}
7525
7526// SetIfMatch sets the IfMatch field's value.
7527func (s *DeleteFieldLevelEncryptionConfigInput) SetIfMatch(v string) *DeleteFieldLevelEncryptionConfigInput {
7528	s.IfMatch = &v
7529	return s
7530}
7531
7532type DeleteFieldLevelEncryptionConfigOutput struct {
7533	_ struct{} `type:"structure"`
7534}
7535
7536// String returns the string representation
7537func (s DeleteFieldLevelEncryptionConfigOutput) String() string {
7538	return awsutil.Prettify(s)
7539}
7540
7541// GoString returns the string representation
7542func (s DeleteFieldLevelEncryptionConfigOutput) GoString() string {
7543	return s.String()
7544}
7545
7546type DeleteFieldLevelEncryptionProfileInput struct {
7547	_ struct{} `locationName:"DeleteFieldLevelEncryptionProfileRequest" type:"structure"`
7548
7549	// Request the ID of the profile you want to delete from CloudFront.
7550	//
7551	// Id is a required field
7552	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
7553
7554	// The value of the ETag header that you received when retrieving the profile
7555	// to delete. For example: E2QWRUHAPOMQZL.
7556	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
7557}
7558
7559// String returns the string representation
7560func (s DeleteFieldLevelEncryptionProfileInput) String() string {
7561	return awsutil.Prettify(s)
7562}
7563
7564// GoString returns the string representation
7565func (s DeleteFieldLevelEncryptionProfileInput) GoString() string {
7566	return s.String()
7567}
7568
7569// Validate inspects the fields of the type to determine if they are valid.
7570func (s *DeleteFieldLevelEncryptionProfileInput) Validate() error {
7571	invalidParams := request.ErrInvalidParams{Context: "DeleteFieldLevelEncryptionProfileInput"}
7572	if s.Id == nil {
7573		invalidParams.Add(request.NewErrParamRequired("Id"))
7574	}
7575	if s.Id != nil && len(*s.Id) < 1 {
7576		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
7577	}
7578
7579	if invalidParams.Len() > 0 {
7580		return invalidParams
7581	}
7582	return nil
7583}
7584
7585// SetId sets the Id field's value.
7586func (s *DeleteFieldLevelEncryptionProfileInput) SetId(v string) *DeleteFieldLevelEncryptionProfileInput {
7587	s.Id = &v
7588	return s
7589}
7590
7591// SetIfMatch sets the IfMatch field's value.
7592func (s *DeleteFieldLevelEncryptionProfileInput) SetIfMatch(v string) *DeleteFieldLevelEncryptionProfileInput {
7593	s.IfMatch = &v
7594	return s
7595}
7596
7597type DeleteFieldLevelEncryptionProfileOutput struct {
7598	_ struct{} `type:"structure"`
7599}
7600
7601// String returns the string representation
7602func (s DeleteFieldLevelEncryptionProfileOutput) String() string {
7603	return awsutil.Prettify(s)
7604}
7605
7606// GoString returns the string representation
7607func (s DeleteFieldLevelEncryptionProfileOutput) GoString() string {
7608	return s.String()
7609}
7610
7611type DeletePublicKeyInput struct {
7612	_ struct{} `locationName:"DeletePublicKeyRequest" type:"structure"`
7613
7614	// The ID of the public key you want to remove from CloudFront.
7615	//
7616	// Id is a required field
7617	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
7618
7619	// The value of the ETag header that you received when retrieving the public
7620	// key identity to delete. For example: E2QWRUHAPOMQZL.
7621	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
7622}
7623
7624// String returns the string representation
7625func (s DeletePublicKeyInput) String() string {
7626	return awsutil.Prettify(s)
7627}
7628
7629// GoString returns the string representation
7630func (s DeletePublicKeyInput) GoString() string {
7631	return s.String()
7632}
7633
7634// Validate inspects the fields of the type to determine if they are valid.
7635func (s *DeletePublicKeyInput) Validate() error {
7636	invalidParams := request.ErrInvalidParams{Context: "DeletePublicKeyInput"}
7637	if s.Id == nil {
7638		invalidParams.Add(request.NewErrParamRequired("Id"))
7639	}
7640	if s.Id != nil && len(*s.Id) < 1 {
7641		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
7642	}
7643
7644	if invalidParams.Len() > 0 {
7645		return invalidParams
7646	}
7647	return nil
7648}
7649
7650// SetId sets the Id field's value.
7651func (s *DeletePublicKeyInput) SetId(v string) *DeletePublicKeyInput {
7652	s.Id = &v
7653	return s
7654}
7655
7656// SetIfMatch sets the IfMatch field's value.
7657func (s *DeletePublicKeyInput) SetIfMatch(v string) *DeletePublicKeyInput {
7658	s.IfMatch = &v
7659	return s
7660}
7661
7662type DeletePublicKeyOutput struct {
7663	_ struct{} `type:"structure"`
7664}
7665
7666// String returns the string representation
7667func (s DeletePublicKeyOutput) String() string {
7668	return awsutil.Prettify(s)
7669}
7670
7671// GoString returns the string representation
7672func (s DeletePublicKeyOutput) GoString() string {
7673	return s.String()
7674}
7675
7676// The request to delete a streaming distribution.
7677type DeleteStreamingDistributionInput struct {
7678	_ struct{} `locationName:"DeleteStreamingDistributionRequest" type:"structure"`
7679
7680	// The distribution ID.
7681	//
7682	// Id is a required field
7683	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
7684
7685	// The value of the ETag header that you received when you disabled the streaming
7686	// distribution. For example: E2QWRUHAPOMQZL.
7687	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
7688}
7689
7690// String returns the string representation
7691func (s DeleteStreamingDistributionInput) String() string {
7692	return awsutil.Prettify(s)
7693}
7694
7695// GoString returns the string representation
7696func (s DeleteStreamingDistributionInput) GoString() string {
7697	return s.String()
7698}
7699
7700// Validate inspects the fields of the type to determine if they are valid.
7701func (s *DeleteStreamingDistributionInput) Validate() error {
7702	invalidParams := request.ErrInvalidParams{Context: "DeleteStreamingDistributionInput"}
7703	if s.Id == nil {
7704		invalidParams.Add(request.NewErrParamRequired("Id"))
7705	}
7706	if s.Id != nil && len(*s.Id) < 1 {
7707		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
7708	}
7709
7710	if invalidParams.Len() > 0 {
7711		return invalidParams
7712	}
7713	return nil
7714}
7715
7716// SetId sets the Id field's value.
7717func (s *DeleteStreamingDistributionInput) SetId(v string) *DeleteStreamingDistributionInput {
7718	s.Id = &v
7719	return s
7720}
7721
7722// SetIfMatch sets the IfMatch field's value.
7723func (s *DeleteStreamingDistributionInput) SetIfMatch(v string) *DeleteStreamingDistributionInput {
7724	s.IfMatch = &v
7725	return s
7726}
7727
7728type DeleteStreamingDistributionOutput struct {
7729	_ struct{} `type:"structure"`
7730}
7731
7732// String returns the string representation
7733func (s DeleteStreamingDistributionOutput) String() string {
7734	return awsutil.Prettify(s)
7735}
7736
7737// GoString returns the string representation
7738func (s DeleteStreamingDistributionOutput) GoString() string {
7739	return s.String()
7740}
7741
7742// A distribution tells CloudFront where you want content to be delivered from,
7743// and the details about how to track and manage content delivery.
7744type Distribution struct {
7745	_ struct{} `type:"structure"`
7746
7747	// The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5,
7748	// where 123456789012 is your AWS account ID.
7749	//
7750	// ARN is a required field
7751	ARN *string `type:"string" required:"true"`
7752
7753	// CloudFront automatically adds this element to the response only if you've
7754	// set up the distribution to serve private content with signed URLs. The element
7755	// lists the key pair IDs that CloudFront is aware of for each trusted signer.
7756	// The Signer child element lists the AWS account number of the trusted signer
7757	// (or an empty Self element if the signer is you). The Signer element also
7758	// includes the IDs of any active key pairs associated with the trusted signer's
7759	// AWS account. If no KeyPairId element appears for a Signer, that signer can't
7760	// create working signed URLs.
7761	//
7762	// ActiveTrustedSigners is a required field
7763	ActiveTrustedSigners *ActiveTrustedSigners `type:"structure" required:"true"`
7764
7765	// AWS services in China customers must file for an Internet Content Provider
7766	// (ICP) recordal if they want to serve content publicly on an alternate domain
7767	// name, also known as a CNAME, that they've added to CloudFront. AliasICPRecordal
7768	// provides the ICP recordal status for CNAMEs associated with distributions.
7769	//
7770	// For more information about ICP recordals, see Signup, Accounts, and Credentials
7771	// (https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html)
7772	// in Getting Started with AWS services in China.
7773	AliasICPRecordals []*AliasICPRecordal `locationNameList:"AliasICPRecordal" type:"list"`
7774
7775	// The current configuration information for the distribution. Send a GET request
7776	// to the /CloudFront API version/distribution ID/config resource.
7777	//
7778	// DistributionConfig is a required field
7779	DistributionConfig *DistributionConfig `type:"structure" required:"true"`
7780
7781	// The domain name corresponding to the distribution, for example, d111111abcdef8.cloudfront.net.
7782	//
7783	// DomainName is a required field
7784	DomainName *string `type:"string" required:"true"`
7785
7786	// The identifier for the distribution. For example: EDFDVBD632BHDS5.
7787	//
7788	// Id is a required field
7789	Id *string `type:"string" required:"true"`
7790
7791	// The number of invalidation batches currently in progress.
7792	//
7793	// InProgressInvalidationBatches is a required field
7794	InProgressInvalidationBatches *int64 `type:"integer" required:"true"`
7795
7796	// The date and time the distribution was last modified.
7797	//
7798	// LastModifiedTime is a required field
7799	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
7800
7801	// This response element indicates the current status of the distribution. When
7802	// the status is Deployed, the distribution's information is fully propagated
7803	// to all CloudFront edge locations.
7804	//
7805	// Status is a required field
7806	Status *string `type:"string" required:"true"`
7807}
7808
7809// String returns the string representation
7810func (s Distribution) String() string {
7811	return awsutil.Prettify(s)
7812}
7813
7814// GoString returns the string representation
7815func (s Distribution) GoString() string {
7816	return s.String()
7817}
7818
7819// SetARN sets the ARN field's value.
7820func (s *Distribution) SetARN(v string) *Distribution {
7821	s.ARN = &v
7822	return s
7823}
7824
7825// SetActiveTrustedSigners sets the ActiveTrustedSigners field's value.
7826func (s *Distribution) SetActiveTrustedSigners(v *ActiveTrustedSigners) *Distribution {
7827	s.ActiveTrustedSigners = v
7828	return s
7829}
7830
7831// SetAliasICPRecordals sets the AliasICPRecordals field's value.
7832func (s *Distribution) SetAliasICPRecordals(v []*AliasICPRecordal) *Distribution {
7833	s.AliasICPRecordals = v
7834	return s
7835}
7836
7837// SetDistributionConfig sets the DistributionConfig field's value.
7838func (s *Distribution) SetDistributionConfig(v *DistributionConfig) *Distribution {
7839	s.DistributionConfig = v
7840	return s
7841}
7842
7843// SetDomainName sets the DomainName field's value.
7844func (s *Distribution) SetDomainName(v string) *Distribution {
7845	s.DomainName = &v
7846	return s
7847}
7848
7849// SetId sets the Id field's value.
7850func (s *Distribution) SetId(v string) *Distribution {
7851	s.Id = &v
7852	return s
7853}
7854
7855// SetInProgressInvalidationBatches sets the InProgressInvalidationBatches field's value.
7856func (s *Distribution) SetInProgressInvalidationBatches(v int64) *Distribution {
7857	s.InProgressInvalidationBatches = &v
7858	return s
7859}
7860
7861// SetLastModifiedTime sets the LastModifiedTime field's value.
7862func (s *Distribution) SetLastModifiedTime(v time.Time) *Distribution {
7863	s.LastModifiedTime = &v
7864	return s
7865}
7866
7867// SetStatus sets the Status field's value.
7868func (s *Distribution) SetStatus(v string) *Distribution {
7869	s.Status = &v
7870	return s
7871}
7872
7873// A distribution configuration.
7874type DistributionConfig struct {
7875	_ struct{} `type:"structure"`
7876
7877	// A complex type that contains information about CNAMEs (alternate domain names),
7878	// if any, for this distribution.
7879	Aliases *Aliases `type:"structure"`
7880
7881	// A complex type that contains zero or more CacheBehavior elements.
7882	CacheBehaviors *CacheBehaviors `type:"structure"`
7883
7884	// A unique value (for example, a date-time stamp) that ensures that the request
7885	// can't be replayed.
7886	//
7887	// If the value of CallerReference is new (regardless of the content of the
7888	// DistributionConfig object), CloudFront creates a new distribution.
7889	//
7890	// If CallerReference is a value that you already sent in a previous request
7891	// to create a distribution, CloudFront returns a DistributionAlreadyExists
7892	// error.
7893	//
7894	// CallerReference is a required field
7895	CallerReference *string `type:"string" required:"true"`
7896
7897	// Any comments you want to include about the distribution.
7898	//
7899	// If you don't want to specify a comment, include an empty Comment element.
7900	//
7901	// To delete an existing comment, update the distribution configuration and
7902	// include an empty Comment element.
7903	//
7904	// To add or change a comment, update the distribution configuration and specify
7905	// the new comment.
7906	//
7907	// Comment is a required field
7908	Comment *string `type:"string" required:"true" sensitive:"true"`
7909
7910	// A complex type that controls the following:
7911	//
7912	//    * Whether CloudFront replaces HTTP status codes in the 4xx and 5xx range
7913	//    with custom error messages before returning the response to the viewer.
7914	//
7915	//    * How long CloudFront caches HTTP status codes in the 4xx and 5xx range.
7916	//
7917	// For more information about custom error pages, see Customizing Error Responses
7918	// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/custom-error-pages.html)
7919	// in the Amazon CloudFront Developer Guide.
7920	CustomErrorResponses *CustomErrorResponses `type:"structure"`
7921
7922	// A complex type that describes the default cache behavior if you don't specify
7923	// a CacheBehavior element or if files don't match any of the values of PathPattern
7924	// in CacheBehavior elements. You must create exactly one default cache behavior.
7925	//
7926	// DefaultCacheBehavior is a required field
7927	DefaultCacheBehavior *DefaultCacheBehavior `type:"structure" required:"true"`
7928
7929	// The object that you want CloudFront to request from your origin (for example,
7930	// index.html) when a viewer requests the root URL for your distribution (http://www.example.com)
7931	// instead of an object in your distribution (http://www.example.com/product-description.html).
7932	// Specifying a default root object avoids exposing the contents of your distribution.
7933	//
7934	// Specify only the object name, for example, index.html. Don't add a / before
7935	// the object name.
7936	//
7937	// If you don't want to specify a default root object when you create a distribution,
7938	// include an empty DefaultRootObject element.
7939	//
7940	// To delete the default root object from an existing distribution, update the
7941	// distribution configuration and include an empty DefaultRootObject element.
7942	//
7943	// To replace the default root object, update the distribution configuration
7944	// and specify the new object.
7945	//
7946	// For more information about the default root object, see Creating a Default
7947	// Root Object (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DefaultRootObject.html)
7948	// in the Amazon CloudFront Developer Guide.
7949	DefaultRootObject *string `type:"string"`
7950
7951	// From this field, you can enable or disable the selected distribution.
7952	//
7953	// Enabled is a required field
7954	Enabled *bool `type:"boolean" required:"true"`
7955
7956	// (Optional) Specify the maximum HTTP version that you want viewers to use
7957	// to communicate with CloudFront. The default value for new web distributions
7958	// is http2. Viewers that don't support HTTP/2 automatically use an earlier
7959	// HTTP version.
7960	//
7961	// For viewers and CloudFront to use HTTP/2, viewers must support TLS 1.2 or
7962	// later, and must support Server Name Identification (SNI).
7963	//
7964	// In general, configuring CloudFront to communicate with viewers using HTTP/2
7965	// reduces latency. You can improve performance by optimizing for HTTP/2. For
7966	// more information, do an Internet search for "http/2 optimization."
7967	HttpVersion *string `type:"string" enum:"HttpVersion"`
7968
7969	// If you want CloudFront to respond to IPv6 DNS requests with an IPv6 address
7970	// for your distribution, specify true. If you specify false, CloudFront responds
7971	// to IPv6 DNS requests with the DNS response code NOERROR and with no IP addresses.
7972	// This allows viewers to submit a second request, for an IPv4 address for your
7973	// distribution.
7974	//
7975	// In general, you should enable IPv6 if you have users on IPv6 networks who
7976	// want to access your content. However, if you're using signed URLs or signed
7977	// cookies to restrict access to your content, and if you're using a custom
7978	// policy that includes the IpAddress parameter to restrict the IP addresses
7979	// that can access your content, don't enable IPv6. If you want to restrict
7980	// access to some content by IP address and not restrict access to other content
7981	// (or restrict access but not by IP address), you can create two distributions.
7982	// For more information, see Creating a Signed URL Using a Custom Policy (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-custom-policy.html)
7983	// in the Amazon CloudFront Developer Guide.
7984	//
7985	// If you're using an Amazon Route 53 alias resource record set to route traffic
7986	// to your CloudFront distribution, you need to create a second alias resource
7987	// record set when both of the following are true:
7988	//
7989	//    * You enable IPv6 for the distribution
7990	//
7991	//    * You're using alternate domain names in the URLs for your objects
7992	//
7993	// For more information, see Routing Traffic to an Amazon CloudFront Web Distribution
7994	// by Using Your Domain Name (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-to-cloudfront-distribution.html)
7995	// in the Amazon Route 53 Developer Guide.
7996	//
7997	// If you created a CNAME resource record set, either with Amazon Route 53 or
7998	// with another DNS service, you don't need to make any changes. A CNAME record
7999	// will route traffic to your distribution regardless of the IP address format
8000	// of the viewer request.
8001	IsIPV6Enabled *bool `type:"boolean"`
8002
8003	// A complex type that controls whether access logs are written for the distribution.
8004	//
8005	// For more information about logging, see Access Logs (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html)
8006	// in the Amazon CloudFront Developer Guide.
8007	Logging *LoggingConfig `type:"structure"`
8008
8009	// A complex type that contains information about origin groups for this distribution.
8010	OriginGroups *OriginGroups `type:"structure"`
8011
8012	// A complex type that contains information about origins for this distribution.
8013	//
8014	// Origins is a required field
8015	Origins *Origins `type:"structure" required:"true"`
8016
8017	// The price class that corresponds with the maximum price that you want to
8018	// pay for CloudFront service. If you specify PriceClass_All, CloudFront responds
8019	// to requests for your objects from all CloudFront edge locations.
8020	//
8021	// If you specify a price class other than PriceClass_All, CloudFront serves
8022	// your objects from the CloudFront edge location that has the lowest latency
8023	// among the edge locations in your price class. Viewers who are in or near
8024	// regions that are excluded from your specified price class may encounter slower
8025	// performance.
8026	//
8027	// For more information about price classes, see Choosing the Price Class for
8028	// a CloudFront Distribution (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PriceClass.html)
8029	// in the Amazon CloudFront Developer Guide. For information about CloudFront
8030	// pricing, including how price classes (such as Price Class 100) map to CloudFront
8031	// regions, see Amazon CloudFront Pricing (http://aws.amazon.com/cloudfront/pricing/).
8032	// For price class information, scroll down to see the table at the bottom of
8033	// the page.
8034	PriceClass *string `type:"string" enum:"PriceClass"`
8035
8036	// A complex type that identifies ways in which you want to restrict distribution
8037	// of your content.
8038	Restrictions *Restrictions `type:"structure"`
8039
8040	// A complex type that specifies whether you want viewers to use HTTP or HTTPS
8041	// to request your objects, whether you're using an alternate domain name with
8042	// HTTPS, and if so, if you're using AWS Certificate Manager (ACM) or a third-party
8043	// certificate authority.
8044	ViewerCertificate *ViewerCertificate `type:"structure"`
8045
8046	// A unique identifier that specifies the AWS WAF web ACL, if any, to associate
8047	// with this distribution. To specify a web ACL created using the latest version
8048	// of AWS WAF, use the ACL ARN, for example arn:aws:wafv2:us-east-1:123456789012:global/webacl/ExampleWebACL/473e64fd-f30b-4765-81a0-62ad96dd167a.
8049	// To specify a web ACL created using AWS WAF Classic, use the ACL ID, for example
8050	// 473e64fd-f30b-4765-81a0-62ad96dd167a.
8051	//
8052	// AWS WAF is a web application firewall that lets you monitor the HTTP and
8053	// HTTPS requests that are forwarded to CloudFront, and lets you control access
8054	// to your content. Based on conditions that you specify, such as the IP addresses
8055	// that requests originate from or the values of query strings, CloudFront responds
8056	// to requests either with the requested content or with an HTTP 403 status
8057	// code (Forbidden). You can also configure CloudFront to return a custom error
8058	// page when a request is blocked. For more information about AWS WAF, see the
8059	// AWS WAF Developer Guide (https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html).
8060	WebACLId *string `type:"string"`
8061}
8062
8063// String returns the string representation
8064func (s DistributionConfig) String() string {
8065	return awsutil.Prettify(s)
8066}
8067
8068// GoString returns the string representation
8069func (s DistributionConfig) GoString() string {
8070	return s.String()
8071}
8072
8073// Validate inspects the fields of the type to determine if they are valid.
8074func (s *DistributionConfig) Validate() error {
8075	invalidParams := request.ErrInvalidParams{Context: "DistributionConfig"}
8076	if s.CallerReference == nil {
8077		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
8078	}
8079	if s.Comment == nil {
8080		invalidParams.Add(request.NewErrParamRequired("Comment"))
8081	}
8082	if s.DefaultCacheBehavior == nil {
8083		invalidParams.Add(request.NewErrParamRequired("DefaultCacheBehavior"))
8084	}
8085	if s.Enabled == nil {
8086		invalidParams.Add(request.NewErrParamRequired("Enabled"))
8087	}
8088	if s.Origins == nil {
8089		invalidParams.Add(request.NewErrParamRequired("Origins"))
8090	}
8091	if s.Aliases != nil {
8092		if err := s.Aliases.Validate(); err != nil {
8093			invalidParams.AddNested("Aliases", err.(request.ErrInvalidParams))
8094		}
8095	}
8096	if s.CacheBehaviors != nil {
8097		if err := s.CacheBehaviors.Validate(); err != nil {
8098			invalidParams.AddNested("CacheBehaviors", err.(request.ErrInvalidParams))
8099		}
8100	}
8101	if s.CustomErrorResponses != nil {
8102		if err := s.CustomErrorResponses.Validate(); err != nil {
8103			invalidParams.AddNested("CustomErrorResponses", err.(request.ErrInvalidParams))
8104		}
8105	}
8106	if s.DefaultCacheBehavior != nil {
8107		if err := s.DefaultCacheBehavior.Validate(); err != nil {
8108			invalidParams.AddNested("DefaultCacheBehavior", err.(request.ErrInvalidParams))
8109		}
8110	}
8111	if s.Logging != nil {
8112		if err := s.Logging.Validate(); err != nil {
8113			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
8114		}
8115	}
8116	if s.OriginGroups != nil {
8117		if err := s.OriginGroups.Validate(); err != nil {
8118			invalidParams.AddNested("OriginGroups", err.(request.ErrInvalidParams))
8119		}
8120	}
8121	if s.Origins != nil {
8122		if err := s.Origins.Validate(); err != nil {
8123			invalidParams.AddNested("Origins", err.(request.ErrInvalidParams))
8124		}
8125	}
8126	if s.Restrictions != nil {
8127		if err := s.Restrictions.Validate(); err != nil {
8128			invalidParams.AddNested("Restrictions", err.(request.ErrInvalidParams))
8129		}
8130	}
8131
8132	if invalidParams.Len() > 0 {
8133		return invalidParams
8134	}
8135	return nil
8136}
8137
8138// SetAliases sets the Aliases field's value.
8139func (s *DistributionConfig) SetAliases(v *Aliases) *DistributionConfig {
8140	s.Aliases = v
8141	return s
8142}
8143
8144// SetCacheBehaviors sets the CacheBehaviors field's value.
8145func (s *DistributionConfig) SetCacheBehaviors(v *CacheBehaviors) *DistributionConfig {
8146	s.CacheBehaviors = v
8147	return s
8148}
8149
8150// SetCallerReference sets the CallerReference field's value.
8151func (s *DistributionConfig) SetCallerReference(v string) *DistributionConfig {
8152	s.CallerReference = &v
8153	return s
8154}
8155
8156// SetComment sets the Comment field's value.
8157func (s *DistributionConfig) SetComment(v string) *DistributionConfig {
8158	s.Comment = &v
8159	return s
8160}
8161
8162// SetCustomErrorResponses sets the CustomErrorResponses field's value.
8163func (s *DistributionConfig) SetCustomErrorResponses(v *CustomErrorResponses) *DistributionConfig {
8164	s.CustomErrorResponses = v
8165	return s
8166}
8167
8168// SetDefaultCacheBehavior sets the DefaultCacheBehavior field's value.
8169func (s *DistributionConfig) SetDefaultCacheBehavior(v *DefaultCacheBehavior) *DistributionConfig {
8170	s.DefaultCacheBehavior = v
8171	return s
8172}
8173
8174// SetDefaultRootObject sets the DefaultRootObject field's value.
8175func (s *DistributionConfig) SetDefaultRootObject(v string) *DistributionConfig {
8176	s.DefaultRootObject = &v
8177	return s
8178}
8179
8180// SetEnabled sets the Enabled field's value.
8181func (s *DistributionConfig) SetEnabled(v bool) *DistributionConfig {
8182	s.Enabled = &v
8183	return s
8184}
8185
8186// SetHttpVersion sets the HttpVersion field's value.
8187func (s *DistributionConfig) SetHttpVersion(v string) *DistributionConfig {
8188	s.HttpVersion = &v
8189	return s
8190}
8191
8192// SetIsIPV6Enabled sets the IsIPV6Enabled field's value.
8193func (s *DistributionConfig) SetIsIPV6Enabled(v bool) *DistributionConfig {
8194	s.IsIPV6Enabled = &v
8195	return s
8196}
8197
8198// SetLogging sets the Logging field's value.
8199func (s *DistributionConfig) SetLogging(v *LoggingConfig) *DistributionConfig {
8200	s.Logging = v
8201	return s
8202}
8203
8204// SetOriginGroups sets the OriginGroups field's value.
8205func (s *DistributionConfig) SetOriginGroups(v *OriginGroups) *DistributionConfig {
8206	s.OriginGroups = v
8207	return s
8208}
8209
8210// SetOrigins sets the Origins field's value.
8211func (s *DistributionConfig) SetOrigins(v *Origins) *DistributionConfig {
8212	s.Origins = v
8213	return s
8214}
8215
8216// SetPriceClass sets the PriceClass field's value.
8217func (s *DistributionConfig) SetPriceClass(v string) *DistributionConfig {
8218	s.PriceClass = &v
8219	return s
8220}
8221
8222// SetRestrictions sets the Restrictions field's value.
8223func (s *DistributionConfig) SetRestrictions(v *Restrictions) *DistributionConfig {
8224	s.Restrictions = v
8225	return s
8226}
8227
8228// SetViewerCertificate sets the ViewerCertificate field's value.
8229func (s *DistributionConfig) SetViewerCertificate(v *ViewerCertificate) *DistributionConfig {
8230	s.ViewerCertificate = v
8231	return s
8232}
8233
8234// SetWebACLId sets the WebACLId field's value.
8235func (s *DistributionConfig) SetWebACLId(v string) *DistributionConfig {
8236	s.WebACLId = &v
8237	return s
8238}
8239
8240// A distribution Configuration and a list of tags to be associated with the
8241// distribution.
8242type DistributionConfigWithTags struct {
8243	_ struct{} `type:"structure"`
8244
8245	// A distribution configuration.
8246	//
8247	// DistributionConfig is a required field
8248	DistributionConfig *DistributionConfig `type:"structure" required:"true"`
8249
8250	// A complex type that contains zero or more Tag elements.
8251	//
8252	// Tags is a required field
8253	Tags *Tags `type:"structure" required:"true"`
8254}
8255
8256// String returns the string representation
8257func (s DistributionConfigWithTags) String() string {
8258	return awsutil.Prettify(s)
8259}
8260
8261// GoString returns the string representation
8262func (s DistributionConfigWithTags) GoString() string {
8263	return s.String()
8264}
8265
8266// Validate inspects the fields of the type to determine if they are valid.
8267func (s *DistributionConfigWithTags) Validate() error {
8268	invalidParams := request.ErrInvalidParams{Context: "DistributionConfigWithTags"}
8269	if s.DistributionConfig == nil {
8270		invalidParams.Add(request.NewErrParamRequired("DistributionConfig"))
8271	}
8272	if s.Tags == nil {
8273		invalidParams.Add(request.NewErrParamRequired("Tags"))
8274	}
8275	if s.DistributionConfig != nil {
8276		if err := s.DistributionConfig.Validate(); err != nil {
8277			invalidParams.AddNested("DistributionConfig", err.(request.ErrInvalidParams))
8278		}
8279	}
8280	if s.Tags != nil {
8281		if err := s.Tags.Validate(); err != nil {
8282			invalidParams.AddNested("Tags", err.(request.ErrInvalidParams))
8283		}
8284	}
8285
8286	if invalidParams.Len() > 0 {
8287		return invalidParams
8288	}
8289	return nil
8290}
8291
8292// SetDistributionConfig sets the DistributionConfig field's value.
8293func (s *DistributionConfigWithTags) SetDistributionConfig(v *DistributionConfig) *DistributionConfigWithTags {
8294	s.DistributionConfig = v
8295	return s
8296}
8297
8298// SetTags sets the Tags field's value.
8299func (s *DistributionConfigWithTags) SetTags(v *Tags) *DistributionConfigWithTags {
8300	s.Tags = v
8301	return s
8302}
8303
8304// A distribution list.
8305type DistributionList struct {
8306	_ struct{} `type:"structure"`
8307
8308	// A flag that indicates whether more distributions remain to be listed. If
8309	// your results were truncated, you can make a follow-up pagination request
8310	// using the Marker request parameter to retrieve more distributions in the
8311	// list.
8312	//
8313	// IsTruncated is a required field
8314	IsTruncated *bool `type:"boolean" required:"true"`
8315
8316	// A complex type that contains one DistributionSummary element for each distribution
8317	// that was created by the current AWS account.
8318	Items []*DistributionSummary `locationNameList:"DistributionSummary" type:"list"`
8319
8320	// The value you provided for the Marker request parameter.
8321	//
8322	// Marker is a required field
8323	Marker *string `type:"string" required:"true"`
8324
8325	// The value you provided for the MaxItems request parameter.
8326	//
8327	// MaxItems is a required field
8328	MaxItems *int64 `type:"integer" required:"true"`
8329
8330	// If IsTruncated is true, this element is present and contains the value you
8331	// can use for the Marker request parameter to continue listing your distributions
8332	// where they left off.
8333	NextMarker *string `type:"string"`
8334
8335	// The number of distributions that were created by the current AWS account.
8336	//
8337	// Quantity is a required field
8338	Quantity *int64 `type:"integer" required:"true"`
8339}
8340
8341// String returns the string representation
8342func (s DistributionList) String() string {
8343	return awsutil.Prettify(s)
8344}
8345
8346// GoString returns the string representation
8347func (s DistributionList) GoString() string {
8348	return s.String()
8349}
8350
8351// SetIsTruncated sets the IsTruncated field's value.
8352func (s *DistributionList) SetIsTruncated(v bool) *DistributionList {
8353	s.IsTruncated = &v
8354	return s
8355}
8356
8357// SetItems sets the Items field's value.
8358func (s *DistributionList) SetItems(v []*DistributionSummary) *DistributionList {
8359	s.Items = v
8360	return s
8361}
8362
8363// SetMarker sets the Marker field's value.
8364func (s *DistributionList) SetMarker(v string) *DistributionList {
8365	s.Marker = &v
8366	return s
8367}
8368
8369// SetMaxItems sets the MaxItems field's value.
8370func (s *DistributionList) SetMaxItems(v int64) *DistributionList {
8371	s.MaxItems = &v
8372	return s
8373}
8374
8375// SetNextMarker sets the NextMarker field's value.
8376func (s *DistributionList) SetNextMarker(v string) *DistributionList {
8377	s.NextMarker = &v
8378	return s
8379}
8380
8381// SetQuantity sets the Quantity field's value.
8382func (s *DistributionList) SetQuantity(v int64) *DistributionList {
8383	s.Quantity = &v
8384	return s
8385}
8386
8387// A summary of the information about a CloudFront distribution.
8388type DistributionSummary struct {
8389	_ struct{} `type:"structure"`
8390
8391	// The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5,
8392	// where 123456789012 is your AWS account ID.
8393	//
8394	// ARN is a required field
8395	ARN *string `type:"string" required:"true"`
8396
8397	// AWS services in China customers must file for an Internet Content Provider
8398	// (ICP) recordal if they want to serve content publicly on an alternate domain
8399	// name, also known as a CNAME, that they've added to CloudFront. AliasICPRecordal
8400	// provides the ICP recordal status for CNAMEs associated with distributions.
8401	//
8402	// For more information about ICP recordals, see Signup, Accounts, and Credentials
8403	// (https://docs.amazonaws.cn/en_us/aws/latest/userguide/accounts-and-credentials.html)
8404	// in Getting Started with AWS services in China.
8405	AliasICPRecordals []*AliasICPRecordal `locationNameList:"AliasICPRecordal" type:"list"`
8406
8407	// A complex type that contains information about CNAMEs (alternate domain names),
8408	// if any, for this distribution.
8409	//
8410	// Aliases is a required field
8411	Aliases *Aliases `type:"structure" required:"true"`
8412
8413	// A complex type that contains zero or more CacheBehavior elements.
8414	//
8415	// CacheBehaviors is a required field
8416	CacheBehaviors *CacheBehaviors `type:"structure" required:"true"`
8417
8418	// The comment originally specified when this distribution was created.
8419	//
8420	// Comment is a required field
8421	Comment *string `type:"string" required:"true"`
8422
8423	// A complex type that contains zero or more CustomErrorResponses elements.
8424	//
8425	// CustomErrorResponses is a required field
8426	CustomErrorResponses *CustomErrorResponses `type:"structure" required:"true"`
8427
8428	// A complex type that describes the default cache behavior if you don't specify
8429	// a CacheBehavior element or if files don't match any of the values of PathPattern
8430	// in CacheBehavior elements. You must create exactly one default cache behavior.
8431	//
8432	// DefaultCacheBehavior is a required field
8433	DefaultCacheBehavior *DefaultCacheBehavior `type:"structure" required:"true"`
8434
8435	// The domain name that corresponds to the distribution, for example, d111111abcdef8.cloudfront.net.
8436	//
8437	// DomainName is a required field
8438	DomainName *string `type:"string" required:"true"`
8439
8440	// Whether the distribution is enabled to accept user requests for content.
8441	//
8442	// Enabled is a required field
8443	Enabled *bool `type:"boolean" required:"true"`
8444
8445	// Specify the maximum HTTP version that you want viewers to use to communicate
8446	// with CloudFront. The default value for new web distributions is http2. Viewers
8447	// that don't support HTTP/2 will automatically use an earlier version.
8448	//
8449	// HttpVersion is a required field
8450	HttpVersion *string `type:"string" required:"true" enum:"HttpVersion"`
8451
8452	// The identifier for the distribution. For example: EDFDVBD632BHDS5.
8453	//
8454	// Id is a required field
8455	Id *string `type:"string" required:"true"`
8456
8457	// Whether CloudFront responds to IPv6 DNS requests with an IPv6 address for
8458	// your distribution.
8459	//
8460	// IsIPV6Enabled is a required field
8461	IsIPV6Enabled *bool `type:"boolean" required:"true"`
8462
8463	// The date and time the distribution was last modified.
8464	//
8465	// LastModifiedTime is a required field
8466	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
8467
8468	// A complex type that contains information about origin groups for this distribution.
8469	OriginGroups *OriginGroups `type:"structure"`
8470
8471	// A complex type that contains information about origins for this distribution.
8472	//
8473	// Origins is a required field
8474	Origins *Origins `type:"structure" required:"true"`
8475
8476	// A complex type that contains information about price class for this streaming
8477	// distribution.
8478	//
8479	// PriceClass is a required field
8480	PriceClass *string `type:"string" required:"true" enum:"PriceClass"`
8481
8482	// A complex type that identifies ways in which you want to restrict distribution
8483	// of your content.
8484	//
8485	// Restrictions is a required field
8486	Restrictions *Restrictions `type:"structure" required:"true"`
8487
8488	// The current status of the distribution. When the status is Deployed, the
8489	// distribution's information is propagated to all CloudFront edge locations.
8490	//
8491	// Status is a required field
8492	Status *string `type:"string" required:"true"`
8493
8494	// A complex type that specifies whether you want viewers to use HTTP or HTTPS
8495	// to request your objects, whether you're using an alternate domain name with
8496	// HTTPS, and if so, if you're using AWS Certificate Manager (ACM) or a third-party
8497	// certificate authority.
8498	//
8499	// ViewerCertificate is a required field
8500	ViewerCertificate *ViewerCertificate `type:"structure" required:"true"`
8501
8502	// The Web ACL Id (if any) associated with the distribution.
8503	//
8504	// WebACLId is a required field
8505	WebACLId *string `type:"string" required:"true"`
8506}
8507
8508// String returns the string representation
8509func (s DistributionSummary) String() string {
8510	return awsutil.Prettify(s)
8511}
8512
8513// GoString returns the string representation
8514func (s DistributionSummary) GoString() string {
8515	return s.String()
8516}
8517
8518// SetARN sets the ARN field's value.
8519func (s *DistributionSummary) SetARN(v string) *DistributionSummary {
8520	s.ARN = &v
8521	return s
8522}
8523
8524// SetAliasICPRecordals sets the AliasICPRecordals field's value.
8525func (s *DistributionSummary) SetAliasICPRecordals(v []*AliasICPRecordal) *DistributionSummary {
8526	s.AliasICPRecordals = v
8527	return s
8528}
8529
8530// SetAliases sets the Aliases field's value.
8531func (s *DistributionSummary) SetAliases(v *Aliases) *DistributionSummary {
8532	s.Aliases = v
8533	return s
8534}
8535
8536// SetCacheBehaviors sets the CacheBehaviors field's value.
8537func (s *DistributionSummary) SetCacheBehaviors(v *CacheBehaviors) *DistributionSummary {
8538	s.CacheBehaviors = v
8539	return s
8540}
8541
8542// SetComment sets the Comment field's value.
8543func (s *DistributionSummary) SetComment(v string) *DistributionSummary {
8544	s.Comment = &v
8545	return s
8546}
8547
8548// SetCustomErrorResponses sets the CustomErrorResponses field's value.
8549func (s *DistributionSummary) SetCustomErrorResponses(v *CustomErrorResponses) *DistributionSummary {
8550	s.CustomErrorResponses = v
8551	return s
8552}
8553
8554// SetDefaultCacheBehavior sets the DefaultCacheBehavior field's value.
8555func (s *DistributionSummary) SetDefaultCacheBehavior(v *DefaultCacheBehavior) *DistributionSummary {
8556	s.DefaultCacheBehavior = v
8557	return s
8558}
8559
8560// SetDomainName sets the DomainName field's value.
8561func (s *DistributionSummary) SetDomainName(v string) *DistributionSummary {
8562	s.DomainName = &v
8563	return s
8564}
8565
8566// SetEnabled sets the Enabled field's value.
8567func (s *DistributionSummary) SetEnabled(v bool) *DistributionSummary {
8568	s.Enabled = &v
8569	return s
8570}
8571
8572// SetHttpVersion sets the HttpVersion field's value.
8573func (s *DistributionSummary) SetHttpVersion(v string) *DistributionSummary {
8574	s.HttpVersion = &v
8575	return s
8576}
8577
8578// SetId sets the Id field's value.
8579func (s *DistributionSummary) SetId(v string) *DistributionSummary {
8580	s.Id = &v
8581	return s
8582}
8583
8584// SetIsIPV6Enabled sets the IsIPV6Enabled field's value.
8585func (s *DistributionSummary) SetIsIPV6Enabled(v bool) *DistributionSummary {
8586	s.IsIPV6Enabled = &v
8587	return s
8588}
8589
8590// SetLastModifiedTime sets the LastModifiedTime field's value.
8591func (s *DistributionSummary) SetLastModifiedTime(v time.Time) *DistributionSummary {
8592	s.LastModifiedTime = &v
8593	return s
8594}
8595
8596// SetOriginGroups sets the OriginGroups field's value.
8597func (s *DistributionSummary) SetOriginGroups(v *OriginGroups) *DistributionSummary {
8598	s.OriginGroups = v
8599	return s
8600}
8601
8602// SetOrigins sets the Origins field's value.
8603func (s *DistributionSummary) SetOrigins(v *Origins) *DistributionSummary {
8604	s.Origins = v
8605	return s
8606}
8607
8608// SetPriceClass sets the PriceClass field's value.
8609func (s *DistributionSummary) SetPriceClass(v string) *DistributionSummary {
8610	s.PriceClass = &v
8611	return s
8612}
8613
8614// SetRestrictions sets the Restrictions field's value.
8615func (s *DistributionSummary) SetRestrictions(v *Restrictions) *DistributionSummary {
8616	s.Restrictions = v
8617	return s
8618}
8619
8620// SetStatus sets the Status field's value.
8621func (s *DistributionSummary) SetStatus(v string) *DistributionSummary {
8622	s.Status = &v
8623	return s
8624}
8625
8626// SetViewerCertificate sets the ViewerCertificate field's value.
8627func (s *DistributionSummary) SetViewerCertificate(v *ViewerCertificate) *DistributionSummary {
8628	s.ViewerCertificate = v
8629	return s
8630}
8631
8632// SetWebACLId sets the WebACLId field's value.
8633func (s *DistributionSummary) SetWebACLId(v string) *DistributionSummary {
8634	s.WebACLId = &v
8635	return s
8636}
8637
8638// Complex data type for field-level encryption profiles that includes all of
8639// the encryption entities.
8640type EncryptionEntities struct {
8641	_ struct{} `type:"structure"`
8642
8643	// An array of field patterns in a field-level encryption content type-profile
8644	// mapping.
8645	Items []*EncryptionEntity `locationNameList:"EncryptionEntity" type:"list"`
8646
8647	// Number of field pattern items in a field-level encryption content type-profile
8648	// mapping.
8649	//
8650	// Quantity is a required field
8651	Quantity *int64 `type:"integer" required:"true"`
8652}
8653
8654// String returns the string representation
8655func (s EncryptionEntities) String() string {
8656	return awsutil.Prettify(s)
8657}
8658
8659// GoString returns the string representation
8660func (s EncryptionEntities) GoString() string {
8661	return s.String()
8662}
8663
8664// Validate inspects the fields of the type to determine if they are valid.
8665func (s *EncryptionEntities) Validate() error {
8666	invalidParams := request.ErrInvalidParams{Context: "EncryptionEntities"}
8667	if s.Quantity == nil {
8668		invalidParams.Add(request.NewErrParamRequired("Quantity"))
8669	}
8670	if s.Items != nil {
8671		for i, v := range s.Items {
8672			if v == nil {
8673				continue
8674			}
8675			if err := v.Validate(); err != nil {
8676				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
8677			}
8678		}
8679	}
8680
8681	if invalidParams.Len() > 0 {
8682		return invalidParams
8683	}
8684	return nil
8685}
8686
8687// SetItems sets the Items field's value.
8688func (s *EncryptionEntities) SetItems(v []*EncryptionEntity) *EncryptionEntities {
8689	s.Items = v
8690	return s
8691}
8692
8693// SetQuantity sets the Quantity field's value.
8694func (s *EncryptionEntities) SetQuantity(v int64) *EncryptionEntities {
8695	s.Quantity = &v
8696	return s
8697}
8698
8699// Complex data type for field-level encryption profiles that includes the encryption
8700// key and field pattern specifications.
8701type EncryptionEntity struct {
8702	_ struct{} `type:"structure"`
8703
8704	// Field patterns in a field-level encryption content type profile specify the
8705	// fields that you want to be encrypted. You can provide the full field name,
8706	// or any beginning characters followed by a wildcard (*). You can't overlap
8707	// field patterns. For example, you can't have both ABC* and AB*. Note that
8708	// field patterns are case-sensitive.
8709	//
8710	// FieldPatterns is a required field
8711	FieldPatterns *FieldPatterns `type:"structure" required:"true"`
8712
8713	// The provider associated with the public key being used for encryption. This
8714	// value must also be provided with the private key for applications to be able
8715	// to decrypt data.
8716	//
8717	// ProviderId is a required field
8718	ProviderId *string `type:"string" required:"true"`
8719
8720	// The public key associated with a set of field-level encryption patterns,
8721	// to be used when encrypting the fields that match the patterns.
8722	//
8723	// PublicKeyId is a required field
8724	PublicKeyId *string `type:"string" required:"true"`
8725}
8726
8727// String returns the string representation
8728func (s EncryptionEntity) String() string {
8729	return awsutil.Prettify(s)
8730}
8731
8732// GoString returns the string representation
8733func (s EncryptionEntity) GoString() string {
8734	return s.String()
8735}
8736
8737// Validate inspects the fields of the type to determine if they are valid.
8738func (s *EncryptionEntity) Validate() error {
8739	invalidParams := request.ErrInvalidParams{Context: "EncryptionEntity"}
8740	if s.FieldPatterns == nil {
8741		invalidParams.Add(request.NewErrParamRequired("FieldPatterns"))
8742	}
8743	if s.ProviderId == nil {
8744		invalidParams.Add(request.NewErrParamRequired("ProviderId"))
8745	}
8746	if s.PublicKeyId == nil {
8747		invalidParams.Add(request.NewErrParamRequired("PublicKeyId"))
8748	}
8749	if s.FieldPatterns != nil {
8750		if err := s.FieldPatterns.Validate(); err != nil {
8751			invalidParams.AddNested("FieldPatterns", err.(request.ErrInvalidParams))
8752		}
8753	}
8754
8755	if invalidParams.Len() > 0 {
8756		return invalidParams
8757	}
8758	return nil
8759}
8760
8761// SetFieldPatterns sets the FieldPatterns field's value.
8762func (s *EncryptionEntity) SetFieldPatterns(v *FieldPatterns) *EncryptionEntity {
8763	s.FieldPatterns = v
8764	return s
8765}
8766
8767// SetProviderId sets the ProviderId field's value.
8768func (s *EncryptionEntity) SetProviderId(v string) *EncryptionEntity {
8769	s.ProviderId = &v
8770	return s
8771}
8772
8773// SetPublicKeyId sets the PublicKeyId field's value.
8774func (s *EncryptionEntity) SetPublicKeyId(v string) *EncryptionEntity {
8775	s.PublicKeyId = &v
8776	return s
8777}
8778
8779// A complex data type that includes the profile configurations and other options
8780// specified for field-level encryption.
8781type FieldLevelEncryption struct {
8782	_ struct{} `type:"structure"`
8783
8784	// A complex data type that includes the profile configurations specified for
8785	// field-level encryption.
8786	//
8787	// FieldLevelEncryptionConfig is a required field
8788	FieldLevelEncryptionConfig *FieldLevelEncryptionConfig `type:"structure" required:"true"`
8789
8790	// The configuration ID for a field-level encryption configuration which includes
8791	// a set of profiles that specify certain selected data fields to be encrypted
8792	// by specific public keys.
8793	//
8794	// Id is a required field
8795	Id *string `type:"string" required:"true"`
8796
8797	// The last time the field-level encryption configuration was changed.
8798	//
8799	// LastModifiedTime is a required field
8800	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
8801}
8802
8803// String returns the string representation
8804func (s FieldLevelEncryption) String() string {
8805	return awsutil.Prettify(s)
8806}
8807
8808// GoString returns the string representation
8809func (s FieldLevelEncryption) GoString() string {
8810	return s.String()
8811}
8812
8813// SetFieldLevelEncryptionConfig sets the FieldLevelEncryptionConfig field's value.
8814func (s *FieldLevelEncryption) SetFieldLevelEncryptionConfig(v *FieldLevelEncryptionConfig) *FieldLevelEncryption {
8815	s.FieldLevelEncryptionConfig = v
8816	return s
8817}
8818
8819// SetId sets the Id field's value.
8820func (s *FieldLevelEncryption) SetId(v string) *FieldLevelEncryption {
8821	s.Id = &v
8822	return s
8823}
8824
8825// SetLastModifiedTime sets the LastModifiedTime field's value.
8826func (s *FieldLevelEncryption) SetLastModifiedTime(v time.Time) *FieldLevelEncryption {
8827	s.LastModifiedTime = &v
8828	return s
8829}
8830
8831// A complex data type that includes the profile configurations specified for
8832// field-level encryption.
8833type FieldLevelEncryptionConfig struct {
8834	_ struct{} `type:"structure"`
8835
8836	// A unique number that ensures the request can't be replayed.
8837	//
8838	// CallerReference is a required field
8839	CallerReference *string `type:"string" required:"true"`
8840
8841	// An optional comment about the configuration.
8842	Comment *string `type:"string"`
8843
8844	// A complex data type that specifies when to forward content if a content type
8845	// isn't recognized and profiles to use as by default in a request if a query
8846	// argument doesn't specify a profile to use.
8847	ContentTypeProfileConfig *ContentTypeProfileConfig `type:"structure"`
8848
8849	// A complex data type that specifies when to forward content if a profile isn't
8850	// found and the profile that can be provided as a query argument in a request.
8851	QueryArgProfileConfig *QueryArgProfileConfig `type:"structure"`
8852}
8853
8854// String returns the string representation
8855func (s FieldLevelEncryptionConfig) String() string {
8856	return awsutil.Prettify(s)
8857}
8858
8859// GoString returns the string representation
8860func (s FieldLevelEncryptionConfig) GoString() string {
8861	return s.String()
8862}
8863
8864// Validate inspects the fields of the type to determine if they are valid.
8865func (s *FieldLevelEncryptionConfig) Validate() error {
8866	invalidParams := request.ErrInvalidParams{Context: "FieldLevelEncryptionConfig"}
8867	if s.CallerReference == nil {
8868		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
8869	}
8870	if s.ContentTypeProfileConfig != nil {
8871		if err := s.ContentTypeProfileConfig.Validate(); err != nil {
8872			invalidParams.AddNested("ContentTypeProfileConfig", err.(request.ErrInvalidParams))
8873		}
8874	}
8875	if s.QueryArgProfileConfig != nil {
8876		if err := s.QueryArgProfileConfig.Validate(); err != nil {
8877			invalidParams.AddNested("QueryArgProfileConfig", err.(request.ErrInvalidParams))
8878		}
8879	}
8880
8881	if invalidParams.Len() > 0 {
8882		return invalidParams
8883	}
8884	return nil
8885}
8886
8887// SetCallerReference sets the CallerReference field's value.
8888func (s *FieldLevelEncryptionConfig) SetCallerReference(v string) *FieldLevelEncryptionConfig {
8889	s.CallerReference = &v
8890	return s
8891}
8892
8893// SetComment sets the Comment field's value.
8894func (s *FieldLevelEncryptionConfig) SetComment(v string) *FieldLevelEncryptionConfig {
8895	s.Comment = &v
8896	return s
8897}
8898
8899// SetContentTypeProfileConfig sets the ContentTypeProfileConfig field's value.
8900func (s *FieldLevelEncryptionConfig) SetContentTypeProfileConfig(v *ContentTypeProfileConfig) *FieldLevelEncryptionConfig {
8901	s.ContentTypeProfileConfig = v
8902	return s
8903}
8904
8905// SetQueryArgProfileConfig sets the QueryArgProfileConfig field's value.
8906func (s *FieldLevelEncryptionConfig) SetQueryArgProfileConfig(v *QueryArgProfileConfig) *FieldLevelEncryptionConfig {
8907	s.QueryArgProfileConfig = v
8908	return s
8909}
8910
8911// List of field-level encrpytion configurations.
8912type FieldLevelEncryptionList struct {
8913	_ struct{} `type:"structure"`
8914
8915	// An array of field-level encryption items.
8916	Items []*FieldLevelEncryptionSummary `locationNameList:"FieldLevelEncryptionSummary" type:"list"`
8917
8918	// The maximum number of elements you want in the response body.
8919	//
8920	// MaxItems is a required field
8921	MaxItems *int64 `type:"integer" required:"true"`
8922
8923	// If there are more elements to be listed, this element is present and contains
8924	// the value that you can use for the Marker request parameter to continue listing
8925	// your configurations where you left off.
8926	NextMarker *string `type:"string"`
8927
8928	// The number of field-level encryption items.
8929	//
8930	// Quantity is a required field
8931	Quantity *int64 `type:"integer" required:"true"`
8932}
8933
8934// String returns the string representation
8935func (s FieldLevelEncryptionList) String() string {
8936	return awsutil.Prettify(s)
8937}
8938
8939// GoString returns the string representation
8940func (s FieldLevelEncryptionList) GoString() string {
8941	return s.String()
8942}
8943
8944// SetItems sets the Items field's value.
8945func (s *FieldLevelEncryptionList) SetItems(v []*FieldLevelEncryptionSummary) *FieldLevelEncryptionList {
8946	s.Items = v
8947	return s
8948}
8949
8950// SetMaxItems sets the MaxItems field's value.
8951func (s *FieldLevelEncryptionList) SetMaxItems(v int64) *FieldLevelEncryptionList {
8952	s.MaxItems = &v
8953	return s
8954}
8955
8956// SetNextMarker sets the NextMarker field's value.
8957func (s *FieldLevelEncryptionList) SetNextMarker(v string) *FieldLevelEncryptionList {
8958	s.NextMarker = &v
8959	return s
8960}
8961
8962// SetQuantity sets the Quantity field's value.
8963func (s *FieldLevelEncryptionList) SetQuantity(v int64) *FieldLevelEncryptionList {
8964	s.Quantity = &v
8965	return s
8966}
8967
8968// A complex data type for field-level encryption profiles.
8969type FieldLevelEncryptionProfile struct {
8970	_ struct{} `type:"structure"`
8971
8972	// A complex data type that includes the profile name and the encryption entities
8973	// for the field-level encryption profile.
8974	//
8975	// FieldLevelEncryptionProfileConfig is a required field
8976	FieldLevelEncryptionProfileConfig *FieldLevelEncryptionProfileConfig `type:"structure" required:"true"`
8977
8978	// The ID for a field-level encryption profile configuration which includes
8979	// a set of profiles that specify certain selected data fields to be encrypted
8980	// by specific public keys.
8981	//
8982	// Id is a required field
8983	Id *string `type:"string" required:"true"`
8984
8985	// The last time the field-level encryption profile was updated.
8986	//
8987	// LastModifiedTime is a required field
8988	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
8989}
8990
8991// String returns the string representation
8992func (s FieldLevelEncryptionProfile) String() string {
8993	return awsutil.Prettify(s)
8994}
8995
8996// GoString returns the string representation
8997func (s FieldLevelEncryptionProfile) GoString() string {
8998	return s.String()
8999}
9000
9001// SetFieldLevelEncryptionProfileConfig sets the FieldLevelEncryptionProfileConfig field's value.
9002func (s *FieldLevelEncryptionProfile) SetFieldLevelEncryptionProfileConfig(v *FieldLevelEncryptionProfileConfig) *FieldLevelEncryptionProfile {
9003	s.FieldLevelEncryptionProfileConfig = v
9004	return s
9005}
9006
9007// SetId sets the Id field's value.
9008func (s *FieldLevelEncryptionProfile) SetId(v string) *FieldLevelEncryptionProfile {
9009	s.Id = &v
9010	return s
9011}
9012
9013// SetLastModifiedTime sets the LastModifiedTime field's value.
9014func (s *FieldLevelEncryptionProfile) SetLastModifiedTime(v time.Time) *FieldLevelEncryptionProfile {
9015	s.LastModifiedTime = &v
9016	return s
9017}
9018
9019// A complex data type of profiles for the field-level encryption.
9020type FieldLevelEncryptionProfileConfig struct {
9021	_ struct{} `type:"structure"`
9022
9023	// A unique number that ensures that the request can't be replayed.
9024	//
9025	// CallerReference is a required field
9026	CallerReference *string `type:"string" required:"true"`
9027
9028	// An optional comment for the field-level encryption profile.
9029	Comment *string `type:"string"`
9030
9031	// A complex data type of encryption entities for the field-level encryption
9032	// profile that include the public key ID, provider, and field patterns for
9033	// specifying which fields to encrypt with this key.
9034	//
9035	// EncryptionEntities is a required field
9036	EncryptionEntities *EncryptionEntities `type:"structure" required:"true"`
9037
9038	// Profile name for the field-level encryption profile.
9039	//
9040	// Name is a required field
9041	Name *string `type:"string" required:"true"`
9042}
9043
9044// String returns the string representation
9045func (s FieldLevelEncryptionProfileConfig) String() string {
9046	return awsutil.Prettify(s)
9047}
9048
9049// GoString returns the string representation
9050func (s FieldLevelEncryptionProfileConfig) GoString() string {
9051	return s.String()
9052}
9053
9054// Validate inspects the fields of the type to determine if they are valid.
9055func (s *FieldLevelEncryptionProfileConfig) Validate() error {
9056	invalidParams := request.ErrInvalidParams{Context: "FieldLevelEncryptionProfileConfig"}
9057	if s.CallerReference == nil {
9058		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
9059	}
9060	if s.EncryptionEntities == nil {
9061		invalidParams.Add(request.NewErrParamRequired("EncryptionEntities"))
9062	}
9063	if s.Name == nil {
9064		invalidParams.Add(request.NewErrParamRequired("Name"))
9065	}
9066	if s.EncryptionEntities != nil {
9067		if err := s.EncryptionEntities.Validate(); err != nil {
9068			invalidParams.AddNested("EncryptionEntities", err.(request.ErrInvalidParams))
9069		}
9070	}
9071
9072	if invalidParams.Len() > 0 {
9073		return invalidParams
9074	}
9075	return nil
9076}
9077
9078// SetCallerReference sets the CallerReference field's value.
9079func (s *FieldLevelEncryptionProfileConfig) SetCallerReference(v string) *FieldLevelEncryptionProfileConfig {
9080	s.CallerReference = &v
9081	return s
9082}
9083
9084// SetComment sets the Comment field's value.
9085func (s *FieldLevelEncryptionProfileConfig) SetComment(v string) *FieldLevelEncryptionProfileConfig {
9086	s.Comment = &v
9087	return s
9088}
9089
9090// SetEncryptionEntities sets the EncryptionEntities field's value.
9091func (s *FieldLevelEncryptionProfileConfig) SetEncryptionEntities(v *EncryptionEntities) *FieldLevelEncryptionProfileConfig {
9092	s.EncryptionEntities = v
9093	return s
9094}
9095
9096// SetName sets the Name field's value.
9097func (s *FieldLevelEncryptionProfileConfig) SetName(v string) *FieldLevelEncryptionProfileConfig {
9098	s.Name = &v
9099	return s
9100}
9101
9102// List of field-level encryption profiles.
9103type FieldLevelEncryptionProfileList struct {
9104	_ struct{} `type:"structure"`
9105
9106	// The field-level encryption profile items.
9107	Items []*FieldLevelEncryptionProfileSummary `locationNameList:"FieldLevelEncryptionProfileSummary" type:"list"`
9108
9109	// The maximum number of field-level encryption profiles you want in the response
9110	// body.
9111	//
9112	// MaxItems is a required field
9113	MaxItems *int64 `type:"integer" required:"true"`
9114
9115	// If there are more elements to be listed, this element is present and contains
9116	// the value that you can use for the Marker request parameter to continue listing
9117	// your profiles where you left off.
9118	NextMarker *string `type:"string"`
9119
9120	// The number of field-level encryption profiles.
9121	//
9122	// Quantity is a required field
9123	Quantity *int64 `type:"integer" required:"true"`
9124}
9125
9126// String returns the string representation
9127func (s FieldLevelEncryptionProfileList) String() string {
9128	return awsutil.Prettify(s)
9129}
9130
9131// GoString returns the string representation
9132func (s FieldLevelEncryptionProfileList) GoString() string {
9133	return s.String()
9134}
9135
9136// SetItems sets the Items field's value.
9137func (s *FieldLevelEncryptionProfileList) SetItems(v []*FieldLevelEncryptionProfileSummary) *FieldLevelEncryptionProfileList {
9138	s.Items = v
9139	return s
9140}
9141
9142// SetMaxItems sets the MaxItems field's value.
9143func (s *FieldLevelEncryptionProfileList) SetMaxItems(v int64) *FieldLevelEncryptionProfileList {
9144	s.MaxItems = &v
9145	return s
9146}
9147
9148// SetNextMarker sets the NextMarker field's value.
9149func (s *FieldLevelEncryptionProfileList) SetNextMarker(v string) *FieldLevelEncryptionProfileList {
9150	s.NextMarker = &v
9151	return s
9152}
9153
9154// SetQuantity sets the Quantity field's value.
9155func (s *FieldLevelEncryptionProfileList) SetQuantity(v int64) *FieldLevelEncryptionProfileList {
9156	s.Quantity = &v
9157	return s
9158}
9159
9160// The field-level encryption profile summary.
9161type FieldLevelEncryptionProfileSummary struct {
9162	_ struct{} `type:"structure"`
9163
9164	// An optional comment for the field-level encryption profile summary.
9165	Comment *string `type:"string"`
9166
9167	// A complex data type of encryption entities for the field-level encryption
9168	// profile that include the public key ID, provider, and field patterns for
9169	// specifying which fields to encrypt with this key.
9170	//
9171	// EncryptionEntities is a required field
9172	EncryptionEntities *EncryptionEntities `type:"structure" required:"true"`
9173
9174	// ID for the field-level encryption profile summary.
9175	//
9176	// Id is a required field
9177	Id *string `type:"string" required:"true"`
9178
9179	// The time when the the field-level encryption profile summary was last updated.
9180	//
9181	// LastModifiedTime is a required field
9182	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
9183
9184	// Name for the field-level encryption profile summary.
9185	//
9186	// Name is a required field
9187	Name *string `type:"string" required:"true"`
9188}
9189
9190// String returns the string representation
9191func (s FieldLevelEncryptionProfileSummary) String() string {
9192	return awsutil.Prettify(s)
9193}
9194
9195// GoString returns the string representation
9196func (s FieldLevelEncryptionProfileSummary) GoString() string {
9197	return s.String()
9198}
9199
9200// SetComment sets the Comment field's value.
9201func (s *FieldLevelEncryptionProfileSummary) SetComment(v string) *FieldLevelEncryptionProfileSummary {
9202	s.Comment = &v
9203	return s
9204}
9205
9206// SetEncryptionEntities sets the EncryptionEntities field's value.
9207func (s *FieldLevelEncryptionProfileSummary) SetEncryptionEntities(v *EncryptionEntities) *FieldLevelEncryptionProfileSummary {
9208	s.EncryptionEntities = v
9209	return s
9210}
9211
9212// SetId sets the Id field's value.
9213func (s *FieldLevelEncryptionProfileSummary) SetId(v string) *FieldLevelEncryptionProfileSummary {
9214	s.Id = &v
9215	return s
9216}
9217
9218// SetLastModifiedTime sets the LastModifiedTime field's value.
9219func (s *FieldLevelEncryptionProfileSummary) SetLastModifiedTime(v time.Time) *FieldLevelEncryptionProfileSummary {
9220	s.LastModifiedTime = &v
9221	return s
9222}
9223
9224// SetName sets the Name field's value.
9225func (s *FieldLevelEncryptionProfileSummary) SetName(v string) *FieldLevelEncryptionProfileSummary {
9226	s.Name = &v
9227	return s
9228}
9229
9230// A summary of a field-level encryption item.
9231type FieldLevelEncryptionSummary struct {
9232	_ struct{} `type:"structure"`
9233
9234	// An optional comment about the field-level encryption item.
9235	Comment *string `type:"string"`
9236
9237	// A summary of a content type-profile mapping.
9238	ContentTypeProfileConfig *ContentTypeProfileConfig `type:"structure"`
9239
9240	// The unique ID of a field-level encryption item.
9241	//
9242	// Id is a required field
9243	Id *string `type:"string" required:"true"`
9244
9245	// The last time that the summary of field-level encryption items was modified.
9246	//
9247	// LastModifiedTime is a required field
9248	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
9249
9250	// A summary of a query argument-profile mapping.
9251	QueryArgProfileConfig *QueryArgProfileConfig `type:"structure"`
9252}
9253
9254// String returns the string representation
9255func (s FieldLevelEncryptionSummary) String() string {
9256	return awsutil.Prettify(s)
9257}
9258
9259// GoString returns the string representation
9260func (s FieldLevelEncryptionSummary) GoString() string {
9261	return s.String()
9262}
9263
9264// SetComment sets the Comment field's value.
9265func (s *FieldLevelEncryptionSummary) SetComment(v string) *FieldLevelEncryptionSummary {
9266	s.Comment = &v
9267	return s
9268}
9269
9270// SetContentTypeProfileConfig sets the ContentTypeProfileConfig field's value.
9271func (s *FieldLevelEncryptionSummary) SetContentTypeProfileConfig(v *ContentTypeProfileConfig) *FieldLevelEncryptionSummary {
9272	s.ContentTypeProfileConfig = v
9273	return s
9274}
9275
9276// SetId sets the Id field's value.
9277func (s *FieldLevelEncryptionSummary) SetId(v string) *FieldLevelEncryptionSummary {
9278	s.Id = &v
9279	return s
9280}
9281
9282// SetLastModifiedTime sets the LastModifiedTime field's value.
9283func (s *FieldLevelEncryptionSummary) SetLastModifiedTime(v time.Time) *FieldLevelEncryptionSummary {
9284	s.LastModifiedTime = &v
9285	return s
9286}
9287
9288// SetQueryArgProfileConfig sets the QueryArgProfileConfig field's value.
9289func (s *FieldLevelEncryptionSummary) SetQueryArgProfileConfig(v *QueryArgProfileConfig) *FieldLevelEncryptionSummary {
9290	s.QueryArgProfileConfig = v
9291	return s
9292}
9293
9294// A complex data type that includes the field patterns to match for field-level
9295// encryption.
9296type FieldPatterns struct {
9297	_ struct{} `type:"structure"`
9298
9299	// An array of the field-level encryption field patterns.
9300	Items []*string `locationNameList:"FieldPattern" type:"list"`
9301
9302	// The number of field-level encryption field patterns.
9303	//
9304	// Quantity is a required field
9305	Quantity *int64 `type:"integer" required:"true"`
9306}
9307
9308// String returns the string representation
9309func (s FieldPatterns) String() string {
9310	return awsutil.Prettify(s)
9311}
9312
9313// GoString returns the string representation
9314func (s FieldPatterns) GoString() string {
9315	return s.String()
9316}
9317
9318// Validate inspects the fields of the type to determine if they are valid.
9319func (s *FieldPatterns) Validate() error {
9320	invalidParams := request.ErrInvalidParams{Context: "FieldPatterns"}
9321	if s.Quantity == nil {
9322		invalidParams.Add(request.NewErrParamRequired("Quantity"))
9323	}
9324
9325	if invalidParams.Len() > 0 {
9326		return invalidParams
9327	}
9328	return nil
9329}
9330
9331// SetItems sets the Items field's value.
9332func (s *FieldPatterns) SetItems(v []*string) *FieldPatterns {
9333	s.Items = v
9334	return s
9335}
9336
9337// SetQuantity sets the Quantity field's value.
9338func (s *FieldPatterns) SetQuantity(v int64) *FieldPatterns {
9339	s.Quantity = &v
9340	return s
9341}
9342
9343// A complex type that specifies how CloudFront handles query strings, cookies,
9344// and HTTP headers.
9345type ForwardedValues struct {
9346	_ struct{} `type:"structure"`
9347
9348	// A complex type that specifies whether you want CloudFront to forward cookies
9349	// to the origin and, if so, which ones. For more information about forwarding
9350	// cookies to the origin, see How CloudFront Forwards, Caches, and Logs Cookies
9351	// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html)
9352	// in the Amazon CloudFront Developer Guide.
9353	//
9354	// Cookies is a required field
9355	Cookies *CookiePreference `type:"structure" required:"true"`
9356
9357	// A complex type that specifies the Headers, if any, that you want CloudFront
9358	// to forward to the origin for this cache behavior (whitelisted headers). For
9359	// the headers that you specify, CloudFront also caches separate versions of
9360	// a specified object that is based on the header values in viewer requests.
9361	//
9362	// For more information, see Caching Content Based on Request Headers (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html)
9363	// in the Amazon CloudFront Developer Guide.
9364	Headers *Headers `type:"structure"`
9365
9366	// Indicates whether you want CloudFront to forward query strings to the origin
9367	// that is associated with this cache behavior and cache based on the query
9368	// string parameters. CloudFront behavior depends on the value of QueryString
9369	// and on the values that you specify for QueryStringCacheKeys, if any:
9370	//
9371	// If you specify true for QueryString and you don't specify any values for
9372	// QueryStringCacheKeys, CloudFront forwards all query string parameters to
9373	// the origin and caches based on all query string parameters. Depending on
9374	// how many query string parameters and values you have, this can adversely
9375	// affect performance because CloudFront must forward more requests to the origin.
9376	//
9377	// If you specify true for QueryString and you specify one or more values for
9378	// QueryStringCacheKeys, CloudFront forwards all query string parameters to
9379	// the origin, but it only caches based on the query string parameters that
9380	// you specify.
9381	//
9382	// If you specify false for QueryString, CloudFront doesn't forward any query
9383	// string parameters to the origin, and doesn't cache based on query string
9384	// parameters.
9385	//
9386	// For more information, see Configuring CloudFront to Cache Based on Query
9387	// String Parameters (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/QueryStringParameters.html)
9388	// in the Amazon CloudFront Developer Guide.
9389	//
9390	// QueryString is a required field
9391	QueryString *bool `type:"boolean" required:"true"`
9392
9393	// A complex type that contains information about the query string parameters
9394	// that you want CloudFront to use for caching for this cache behavior.
9395	QueryStringCacheKeys *QueryStringCacheKeys `type:"structure"`
9396}
9397
9398// String returns the string representation
9399func (s ForwardedValues) String() string {
9400	return awsutil.Prettify(s)
9401}
9402
9403// GoString returns the string representation
9404func (s ForwardedValues) GoString() string {
9405	return s.String()
9406}
9407
9408// Validate inspects the fields of the type to determine if they are valid.
9409func (s *ForwardedValues) Validate() error {
9410	invalidParams := request.ErrInvalidParams{Context: "ForwardedValues"}
9411	if s.Cookies == nil {
9412		invalidParams.Add(request.NewErrParamRequired("Cookies"))
9413	}
9414	if s.QueryString == nil {
9415		invalidParams.Add(request.NewErrParamRequired("QueryString"))
9416	}
9417	if s.Cookies != nil {
9418		if err := s.Cookies.Validate(); err != nil {
9419			invalidParams.AddNested("Cookies", err.(request.ErrInvalidParams))
9420		}
9421	}
9422	if s.Headers != nil {
9423		if err := s.Headers.Validate(); err != nil {
9424			invalidParams.AddNested("Headers", err.(request.ErrInvalidParams))
9425		}
9426	}
9427	if s.QueryStringCacheKeys != nil {
9428		if err := s.QueryStringCacheKeys.Validate(); err != nil {
9429			invalidParams.AddNested("QueryStringCacheKeys", err.(request.ErrInvalidParams))
9430		}
9431	}
9432
9433	if invalidParams.Len() > 0 {
9434		return invalidParams
9435	}
9436	return nil
9437}
9438
9439// SetCookies sets the Cookies field's value.
9440func (s *ForwardedValues) SetCookies(v *CookiePreference) *ForwardedValues {
9441	s.Cookies = v
9442	return s
9443}
9444
9445// SetHeaders sets the Headers field's value.
9446func (s *ForwardedValues) SetHeaders(v *Headers) *ForwardedValues {
9447	s.Headers = v
9448	return s
9449}
9450
9451// SetQueryString sets the QueryString field's value.
9452func (s *ForwardedValues) SetQueryString(v bool) *ForwardedValues {
9453	s.QueryString = &v
9454	return s
9455}
9456
9457// SetQueryStringCacheKeys sets the QueryStringCacheKeys field's value.
9458func (s *ForwardedValues) SetQueryStringCacheKeys(v *QueryStringCacheKeys) *ForwardedValues {
9459	s.QueryStringCacheKeys = v
9460	return s
9461}
9462
9463// A complex type that controls the countries in which your content is distributed.
9464// CloudFront determines the location of your users using MaxMind GeoIP databases.
9465type GeoRestriction struct {
9466	_ struct{} `type:"structure"`
9467
9468	// A complex type that contains a Location element for each country in which
9469	// you want CloudFront either to distribute your content (whitelist) or not
9470	// distribute your content (blacklist).
9471	//
9472	// The Location element is a two-letter, uppercase country code for a country
9473	// that you want to include in your blacklist or whitelist. Include one Location
9474	// element for each country.
9475	//
9476	// CloudFront and MaxMind both use ISO 3166 country codes. For the current list
9477	// of countries and the corresponding codes, see ISO 3166-1-alpha-2 code on
9478	// the International Organization for Standardization website. You can also
9479	// refer to the country list on the CloudFront console, which includes both
9480	// country names and codes.
9481	Items []*string `locationNameList:"Location" type:"list"`
9482
9483	// When geo restriction is enabled, this is the number of countries in your
9484	// whitelist or blacklist. Otherwise, when it is not enabled, Quantity is 0,
9485	// and you can omit Items.
9486	//
9487	// Quantity is a required field
9488	Quantity *int64 `type:"integer" required:"true"`
9489
9490	// The method that you want to use to restrict distribution of your content
9491	// by country:
9492	//
9493	//    * none: No geo restriction is enabled, meaning access to content is not
9494	//    restricted by client geo location.
9495	//
9496	//    * blacklist: The Location elements specify the countries in which you
9497	//    don't want CloudFront to distribute your content.
9498	//
9499	//    * whitelist: The Location elements specify the countries in which you
9500	//    want CloudFront to distribute your content.
9501	//
9502	// RestrictionType is a required field
9503	RestrictionType *string `type:"string" required:"true" enum:"GeoRestrictionType"`
9504}
9505
9506// String returns the string representation
9507func (s GeoRestriction) String() string {
9508	return awsutil.Prettify(s)
9509}
9510
9511// GoString returns the string representation
9512func (s GeoRestriction) GoString() string {
9513	return s.String()
9514}
9515
9516// Validate inspects the fields of the type to determine if they are valid.
9517func (s *GeoRestriction) Validate() error {
9518	invalidParams := request.ErrInvalidParams{Context: "GeoRestriction"}
9519	if s.Quantity == nil {
9520		invalidParams.Add(request.NewErrParamRequired("Quantity"))
9521	}
9522	if s.RestrictionType == nil {
9523		invalidParams.Add(request.NewErrParamRequired("RestrictionType"))
9524	}
9525
9526	if invalidParams.Len() > 0 {
9527		return invalidParams
9528	}
9529	return nil
9530}
9531
9532// SetItems sets the Items field's value.
9533func (s *GeoRestriction) SetItems(v []*string) *GeoRestriction {
9534	s.Items = v
9535	return s
9536}
9537
9538// SetQuantity sets the Quantity field's value.
9539func (s *GeoRestriction) SetQuantity(v int64) *GeoRestriction {
9540	s.Quantity = &v
9541	return s
9542}
9543
9544// SetRestrictionType sets the RestrictionType field's value.
9545func (s *GeoRestriction) SetRestrictionType(v string) *GeoRestriction {
9546	s.RestrictionType = &v
9547	return s
9548}
9549
9550// The origin access identity's configuration information. For more information,
9551// see CloudFrontOriginAccessIdentityConfig (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CloudFrontOriginAccessIdentityConfig.html).
9552type GetCloudFrontOriginAccessIdentityConfigInput struct {
9553	_ struct{} `locationName:"GetCloudFrontOriginAccessIdentityConfigRequest" type:"structure"`
9554
9555	// The identity's ID.
9556	//
9557	// Id is a required field
9558	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
9559}
9560
9561// String returns the string representation
9562func (s GetCloudFrontOriginAccessIdentityConfigInput) String() string {
9563	return awsutil.Prettify(s)
9564}
9565
9566// GoString returns the string representation
9567func (s GetCloudFrontOriginAccessIdentityConfigInput) GoString() string {
9568	return s.String()
9569}
9570
9571// Validate inspects the fields of the type to determine if they are valid.
9572func (s *GetCloudFrontOriginAccessIdentityConfigInput) Validate() error {
9573	invalidParams := request.ErrInvalidParams{Context: "GetCloudFrontOriginAccessIdentityConfigInput"}
9574	if s.Id == nil {
9575		invalidParams.Add(request.NewErrParamRequired("Id"))
9576	}
9577	if s.Id != nil && len(*s.Id) < 1 {
9578		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
9579	}
9580
9581	if invalidParams.Len() > 0 {
9582		return invalidParams
9583	}
9584	return nil
9585}
9586
9587// SetId sets the Id field's value.
9588func (s *GetCloudFrontOriginAccessIdentityConfigInput) SetId(v string) *GetCloudFrontOriginAccessIdentityConfigInput {
9589	s.Id = &v
9590	return s
9591}
9592
9593// The returned result of the corresponding request.
9594type GetCloudFrontOriginAccessIdentityConfigOutput struct {
9595	_ struct{} `type:"structure" payload:"CloudFrontOriginAccessIdentityConfig"`
9596
9597	// The origin access identity's configuration information.
9598	CloudFrontOriginAccessIdentityConfig *OriginAccessIdentityConfig `type:"structure"`
9599
9600	// The current version of the configuration. For example: E2QWRUHAPOMQZL.
9601	ETag *string `location:"header" locationName:"ETag" type:"string"`
9602}
9603
9604// String returns the string representation
9605func (s GetCloudFrontOriginAccessIdentityConfigOutput) String() string {
9606	return awsutil.Prettify(s)
9607}
9608
9609// GoString returns the string representation
9610func (s GetCloudFrontOriginAccessIdentityConfigOutput) GoString() string {
9611	return s.String()
9612}
9613
9614// SetCloudFrontOriginAccessIdentityConfig sets the CloudFrontOriginAccessIdentityConfig field's value.
9615func (s *GetCloudFrontOriginAccessIdentityConfigOutput) SetCloudFrontOriginAccessIdentityConfig(v *OriginAccessIdentityConfig) *GetCloudFrontOriginAccessIdentityConfigOutput {
9616	s.CloudFrontOriginAccessIdentityConfig = v
9617	return s
9618}
9619
9620// SetETag sets the ETag field's value.
9621func (s *GetCloudFrontOriginAccessIdentityConfigOutput) SetETag(v string) *GetCloudFrontOriginAccessIdentityConfigOutput {
9622	s.ETag = &v
9623	return s
9624}
9625
9626// The request to get an origin access identity's information.
9627type GetCloudFrontOriginAccessIdentityInput struct {
9628	_ struct{} `locationName:"GetCloudFrontOriginAccessIdentityRequest" type:"structure"`
9629
9630	// The identity's ID.
9631	//
9632	// Id is a required field
9633	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
9634}
9635
9636// String returns the string representation
9637func (s GetCloudFrontOriginAccessIdentityInput) String() string {
9638	return awsutil.Prettify(s)
9639}
9640
9641// GoString returns the string representation
9642func (s GetCloudFrontOriginAccessIdentityInput) GoString() string {
9643	return s.String()
9644}
9645
9646// Validate inspects the fields of the type to determine if they are valid.
9647func (s *GetCloudFrontOriginAccessIdentityInput) Validate() error {
9648	invalidParams := request.ErrInvalidParams{Context: "GetCloudFrontOriginAccessIdentityInput"}
9649	if s.Id == nil {
9650		invalidParams.Add(request.NewErrParamRequired("Id"))
9651	}
9652	if s.Id != nil && len(*s.Id) < 1 {
9653		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
9654	}
9655
9656	if invalidParams.Len() > 0 {
9657		return invalidParams
9658	}
9659	return nil
9660}
9661
9662// SetId sets the Id field's value.
9663func (s *GetCloudFrontOriginAccessIdentityInput) SetId(v string) *GetCloudFrontOriginAccessIdentityInput {
9664	s.Id = &v
9665	return s
9666}
9667
9668// The returned result of the corresponding request.
9669type GetCloudFrontOriginAccessIdentityOutput struct {
9670	_ struct{} `type:"structure" payload:"CloudFrontOriginAccessIdentity"`
9671
9672	// The origin access identity's information.
9673	CloudFrontOriginAccessIdentity *OriginAccessIdentity `type:"structure"`
9674
9675	// The current version of the origin access identity's information. For example:
9676	// E2QWRUHAPOMQZL.
9677	ETag *string `location:"header" locationName:"ETag" type:"string"`
9678}
9679
9680// String returns the string representation
9681func (s GetCloudFrontOriginAccessIdentityOutput) String() string {
9682	return awsutil.Prettify(s)
9683}
9684
9685// GoString returns the string representation
9686func (s GetCloudFrontOriginAccessIdentityOutput) GoString() string {
9687	return s.String()
9688}
9689
9690// SetCloudFrontOriginAccessIdentity sets the CloudFrontOriginAccessIdentity field's value.
9691func (s *GetCloudFrontOriginAccessIdentityOutput) SetCloudFrontOriginAccessIdentity(v *OriginAccessIdentity) *GetCloudFrontOriginAccessIdentityOutput {
9692	s.CloudFrontOriginAccessIdentity = v
9693	return s
9694}
9695
9696// SetETag sets the ETag field's value.
9697func (s *GetCloudFrontOriginAccessIdentityOutput) SetETag(v string) *GetCloudFrontOriginAccessIdentityOutput {
9698	s.ETag = &v
9699	return s
9700}
9701
9702// The request to get a distribution configuration.
9703type GetDistributionConfigInput struct {
9704	_ struct{} `locationName:"GetDistributionConfigRequest" type:"structure"`
9705
9706	// The distribution's ID. If the ID is empty, an empty distribution configuration
9707	// is returned.
9708	//
9709	// Id is a required field
9710	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
9711}
9712
9713// String returns the string representation
9714func (s GetDistributionConfigInput) String() string {
9715	return awsutil.Prettify(s)
9716}
9717
9718// GoString returns the string representation
9719func (s GetDistributionConfigInput) GoString() string {
9720	return s.String()
9721}
9722
9723// Validate inspects the fields of the type to determine if they are valid.
9724func (s *GetDistributionConfigInput) Validate() error {
9725	invalidParams := request.ErrInvalidParams{Context: "GetDistributionConfigInput"}
9726	if s.Id == nil {
9727		invalidParams.Add(request.NewErrParamRequired("Id"))
9728	}
9729	if s.Id != nil && len(*s.Id) < 1 {
9730		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
9731	}
9732
9733	if invalidParams.Len() > 0 {
9734		return invalidParams
9735	}
9736	return nil
9737}
9738
9739// SetId sets the Id field's value.
9740func (s *GetDistributionConfigInput) SetId(v string) *GetDistributionConfigInput {
9741	s.Id = &v
9742	return s
9743}
9744
9745// The returned result of the corresponding request.
9746type GetDistributionConfigOutput struct {
9747	_ struct{} `type:"structure" payload:"DistributionConfig"`
9748
9749	// The distribution's configuration information.
9750	DistributionConfig *DistributionConfig `type:"structure"`
9751
9752	// The current version of the configuration. For example: E2QWRUHAPOMQZL.
9753	ETag *string `location:"header" locationName:"ETag" type:"string"`
9754}
9755
9756// String returns the string representation
9757func (s GetDistributionConfigOutput) String() string {
9758	return awsutil.Prettify(s)
9759}
9760
9761// GoString returns the string representation
9762func (s GetDistributionConfigOutput) GoString() string {
9763	return s.String()
9764}
9765
9766// SetDistributionConfig sets the DistributionConfig field's value.
9767func (s *GetDistributionConfigOutput) SetDistributionConfig(v *DistributionConfig) *GetDistributionConfigOutput {
9768	s.DistributionConfig = v
9769	return s
9770}
9771
9772// SetETag sets the ETag field's value.
9773func (s *GetDistributionConfigOutput) SetETag(v string) *GetDistributionConfigOutput {
9774	s.ETag = &v
9775	return s
9776}
9777
9778// The request to get a distribution's information.
9779type GetDistributionInput struct {
9780	_ struct{} `locationName:"GetDistributionRequest" type:"structure"`
9781
9782	// The distribution's ID. If the ID is empty, an empty distribution configuration
9783	// is returned.
9784	//
9785	// Id is a required field
9786	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
9787}
9788
9789// String returns the string representation
9790func (s GetDistributionInput) String() string {
9791	return awsutil.Prettify(s)
9792}
9793
9794// GoString returns the string representation
9795func (s GetDistributionInput) GoString() string {
9796	return s.String()
9797}
9798
9799// Validate inspects the fields of the type to determine if they are valid.
9800func (s *GetDistributionInput) Validate() error {
9801	invalidParams := request.ErrInvalidParams{Context: "GetDistributionInput"}
9802	if s.Id == nil {
9803		invalidParams.Add(request.NewErrParamRequired("Id"))
9804	}
9805	if s.Id != nil && len(*s.Id) < 1 {
9806		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
9807	}
9808
9809	if invalidParams.Len() > 0 {
9810		return invalidParams
9811	}
9812	return nil
9813}
9814
9815// SetId sets the Id field's value.
9816func (s *GetDistributionInput) SetId(v string) *GetDistributionInput {
9817	s.Id = &v
9818	return s
9819}
9820
9821// The returned result of the corresponding request.
9822type GetDistributionOutput struct {
9823	_ struct{} `type:"structure" payload:"Distribution"`
9824
9825	// The distribution's information.
9826	Distribution *Distribution `type:"structure"`
9827
9828	// The current version of the distribution's information. For example: E2QWRUHAPOMQZL.
9829	ETag *string `location:"header" locationName:"ETag" type:"string"`
9830}
9831
9832// String returns the string representation
9833func (s GetDistributionOutput) String() string {
9834	return awsutil.Prettify(s)
9835}
9836
9837// GoString returns the string representation
9838func (s GetDistributionOutput) GoString() string {
9839	return s.String()
9840}
9841
9842// SetDistribution sets the Distribution field's value.
9843func (s *GetDistributionOutput) SetDistribution(v *Distribution) *GetDistributionOutput {
9844	s.Distribution = v
9845	return s
9846}
9847
9848// SetETag sets the ETag field's value.
9849func (s *GetDistributionOutput) SetETag(v string) *GetDistributionOutput {
9850	s.ETag = &v
9851	return s
9852}
9853
9854type GetFieldLevelEncryptionConfigInput struct {
9855	_ struct{} `locationName:"GetFieldLevelEncryptionConfigRequest" type:"structure"`
9856
9857	// Request the ID for the field-level encryption configuration information.
9858	//
9859	// Id is a required field
9860	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
9861}
9862
9863// String returns the string representation
9864func (s GetFieldLevelEncryptionConfigInput) String() string {
9865	return awsutil.Prettify(s)
9866}
9867
9868// GoString returns the string representation
9869func (s GetFieldLevelEncryptionConfigInput) GoString() string {
9870	return s.String()
9871}
9872
9873// Validate inspects the fields of the type to determine if they are valid.
9874func (s *GetFieldLevelEncryptionConfigInput) Validate() error {
9875	invalidParams := request.ErrInvalidParams{Context: "GetFieldLevelEncryptionConfigInput"}
9876	if s.Id == nil {
9877		invalidParams.Add(request.NewErrParamRequired("Id"))
9878	}
9879	if s.Id != nil && len(*s.Id) < 1 {
9880		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
9881	}
9882
9883	if invalidParams.Len() > 0 {
9884		return invalidParams
9885	}
9886	return nil
9887}
9888
9889// SetId sets the Id field's value.
9890func (s *GetFieldLevelEncryptionConfigInput) SetId(v string) *GetFieldLevelEncryptionConfigInput {
9891	s.Id = &v
9892	return s
9893}
9894
9895type GetFieldLevelEncryptionConfigOutput struct {
9896	_ struct{} `type:"structure" payload:"FieldLevelEncryptionConfig"`
9897
9898	// The current version of the field level encryption configuration. For example:
9899	// E2QWRUHAPOMQZL.
9900	ETag *string `location:"header" locationName:"ETag" type:"string"`
9901
9902	// Return the field-level encryption configuration information.
9903	FieldLevelEncryptionConfig *FieldLevelEncryptionConfig `type:"structure"`
9904}
9905
9906// String returns the string representation
9907func (s GetFieldLevelEncryptionConfigOutput) String() string {
9908	return awsutil.Prettify(s)
9909}
9910
9911// GoString returns the string representation
9912func (s GetFieldLevelEncryptionConfigOutput) GoString() string {
9913	return s.String()
9914}
9915
9916// SetETag sets the ETag field's value.
9917func (s *GetFieldLevelEncryptionConfigOutput) SetETag(v string) *GetFieldLevelEncryptionConfigOutput {
9918	s.ETag = &v
9919	return s
9920}
9921
9922// SetFieldLevelEncryptionConfig sets the FieldLevelEncryptionConfig field's value.
9923func (s *GetFieldLevelEncryptionConfigOutput) SetFieldLevelEncryptionConfig(v *FieldLevelEncryptionConfig) *GetFieldLevelEncryptionConfigOutput {
9924	s.FieldLevelEncryptionConfig = v
9925	return s
9926}
9927
9928type GetFieldLevelEncryptionInput struct {
9929	_ struct{} `locationName:"GetFieldLevelEncryptionRequest" type:"structure"`
9930
9931	// Request the ID for the field-level encryption configuration information.
9932	//
9933	// Id is a required field
9934	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
9935}
9936
9937// String returns the string representation
9938func (s GetFieldLevelEncryptionInput) String() string {
9939	return awsutil.Prettify(s)
9940}
9941
9942// GoString returns the string representation
9943func (s GetFieldLevelEncryptionInput) GoString() string {
9944	return s.String()
9945}
9946
9947// Validate inspects the fields of the type to determine if they are valid.
9948func (s *GetFieldLevelEncryptionInput) Validate() error {
9949	invalidParams := request.ErrInvalidParams{Context: "GetFieldLevelEncryptionInput"}
9950	if s.Id == nil {
9951		invalidParams.Add(request.NewErrParamRequired("Id"))
9952	}
9953	if s.Id != nil && len(*s.Id) < 1 {
9954		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
9955	}
9956
9957	if invalidParams.Len() > 0 {
9958		return invalidParams
9959	}
9960	return nil
9961}
9962
9963// SetId sets the Id field's value.
9964func (s *GetFieldLevelEncryptionInput) SetId(v string) *GetFieldLevelEncryptionInput {
9965	s.Id = &v
9966	return s
9967}
9968
9969type GetFieldLevelEncryptionOutput struct {
9970	_ struct{} `type:"structure" payload:"FieldLevelEncryption"`
9971
9972	// The current version of the field level encryption configuration. For example:
9973	// E2QWRUHAPOMQZL.
9974	ETag *string `location:"header" locationName:"ETag" type:"string"`
9975
9976	// Return the field-level encryption configuration information.
9977	FieldLevelEncryption *FieldLevelEncryption `type:"structure"`
9978}
9979
9980// String returns the string representation
9981func (s GetFieldLevelEncryptionOutput) String() string {
9982	return awsutil.Prettify(s)
9983}
9984
9985// GoString returns the string representation
9986func (s GetFieldLevelEncryptionOutput) GoString() string {
9987	return s.String()
9988}
9989
9990// SetETag sets the ETag field's value.
9991func (s *GetFieldLevelEncryptionOutput) SetETag(v string) *GetFieldLevelEncryptionOutput {
9992	s.ETag = &v
9993	return s
9994}
9995
9996// SetFieldLevelEncryption sets the FieldLevelEncryption field's value.
9997func (s *GetFieldLevelEncryptionOutput) SetFieldLevelEncryption(v *FieldLevelEncryption) *GetFieldLevelEncryptionOutput {
9998	s.FieldLevelEncryption = v
9999	return s
10000}
10001
10002type GetFieldLevelEncryptionProfileConfigInput struct {
10003	_ struct{} `locationName:"GetFieldLevelEncryptionProfileConfigRequest" type:"structure"`
10004
10005	// Get the ID for the field-level encryption profile configuration information.
10006	//
10007	// Id is a required field
10008	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10009}
10010
10011// String returns the string representation
10012func (s GetFieldLevelEncryptionProfileConfigInput) String() string {
10013	return awsutil.Prettify(s)
10014}
10015
10016// GoString returns the string representation
10017func (s GetFieldLevelEncryptionProfileConfigInput) GoString() string {
10018	return s.String()
10019}
10020
10021// Validate inspects the fields of the type to determine if they are valid.
10022func (s *GetFieldLevelEncryptionProfileConfigInput) Validate() error {
10023	invalidParams := request.ErrInvalidParams{Context: "GetFieldLevelEncryptionProfileConfigInput"}
10024	if s.Id == nil {
10025		invalidParams.Add(request.NewErrParamRequired("Id"))
10026	}
10027	if s.Id != nil && len(*s.Id) < 1 {
10028		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10029	}
10030
10031	if invalidParams.Len() > 0 {
10032		return invalidParams
10033	}
10034	return nil
10035}
10036
10037// SetId sets the Id field's value.
10038func (s *GetFieldLevelEncryptionProfileConfigInput) SetId(v string) *GetFieldLevelEncryptionProfileConfigInput {
10039	s.Id = &v
10040	return s
10041}
10042
10043type GetFieldLevelEncryptionProfileConfigOutput struct {
10044	_ struct{} `type:"structure" payload:"FieldLevelEncryptionProfileConfig"`
10045
10046	// The current version of the field-level encryption profile configuration result.
10047	// For example: E2QWRUHAPOMQZL.
10048	ETag *string `location:"header" locationName:"ETag" type:"string"`
10049
10050	// Return the field-level encryption profile configuration information.
10051	FieldLevelEncryptionProfileConfig *FieldLevelEncryptionProfileConfig `type:"structure"`
10052}
10053
10054// String returns the string representation
10055func (s GetFieldLevelEncryptionProfileConfigOutput) String() string {
10056	return awsutil.Prettify(s)
10057}
10058
10059// GoString returns the string representation
10060func (s GetFieldLevelEncryptionProfileConfigOutput) GoString() string {
10061	return s.String()
10062}
10063
10064// SetETag sets the ETag field's value.
10065func (s *GetFieldLevelEncryptionProfileConfigOutput) SetETag(v string) *GetFieldLevelEncryptionProfileConfigOutput {
10066	s.ETag = &v
10067	return s
10068}
10069
10070// SetFieldLevelEncryptionProfileConfig sets the FieldLevelEncryptionProfileConfig field's value.
10071func (s *GetFieldLevelEncryptionProfileConfigOutput) SetFieldLevelEncryptionProfileConfig(v *FieldLevelEncryptionProfileConfig) *GetFieldLevelEncryptionProfileConfigOutput {
10072	s.FieldLevelEncryptionProfileConfig = v
10073	return s
10074}
10075
10076type GetFieldLevelEncryptionProfileInput struct {
10077	_ struct{} `locationName:"GetFieldLevelEncryptionProfileRequest" type:"structure"`
10078
10079	// Get the ID for the field-level encryption profile information.
10080	//
10081	// Id is a required field
10082	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10083}
10084
10085// String returns the string representation
10086func (s GetFieldLevelEncryptionProfileInput) String() string {
10087	return awsutil.Prettify(s)
10088}
10089
10090// GoString returns the string representation
10091func (s GetFieldLevelEncryptionProfileInput) GoString() string {
10092	return s.String()
10093}
10094
10095// Validate inspects the fields of the type to determine if they are valid.
10096func (s *GetFieldLevelEncryptionProfileInput) Validate() error {
10097	invalidParams := request.ErrInvalidParams{Context: "GetFieldLevelEncryptionProfileInput"}
10098	if s.Id == nil {
10099		invalidParams.Add(request.NewErrParamRequired("Id"))
10100	}
10101	if s.Id != nil && len(*s.Id) < 1 {
10102		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10103	}
10104
10105	if invalidParams.Len() > 0 {
10106		return invalidParams
10107	}
10108	return nil
10109}
10110
10111// SetId sets the Id field's value.
10112func (s *GetFieldLevelEncryptionProfileInput) SetId(v string) *GetFieldLevelEncryptionProfileInput {
10113	s.Id = &v
10114	return s
10115}
10116
10117type GetFieldLevelEncryptionProfileOutput struct {
10118	_ struct{} `type:"structure" payload:"FieldLevelEncryptionProfile"`
10119
10120	// The current version of the field level encryption profile. For example: E2QWRUHAPOMQZL.
10121	ETag *string `location:"header" locationName:"ETag" type:"string"`
10122
10123	// Return the field-level encryption profile information.
10124	FieldLevelEncryptionProfile *FieldLevelEncryptionProfile `type:"structure"`
10125}
10126
10127// String returns the string representation
10128func (s GetFieldLevelEncryptionProfileOutput) String() string {
10129	return awsutil.Prettify(s)
10130}
10131
10132// GoString returns the string representation
10133func (s GetFieldLevelEncryptionProfileOutput) GoString() string {
10134	return s.String()
10135}
10136
10137// SetETag sets the ETag field's value.
10138func (s *GetFieldLevelEncryptionProfileOutput) SetETag(v string) *GetFieldLevelEncryptionProfileOutput {
10139	s.ETag = &v
10140	return s
10141}
10142
10143// SetFieldLevelEncryptionProfile sets the FieldLevelEncryptionProfile field's value.
10144func (s *GetFieldLevelEncryptionProfileOutput) SetFieldLevelEncryptionProfile(v *FieldLevelEncryptionProfile) *GetFieldLevelEncryptionProfileOutput {
10145	s.FieldLevelEncryptionProfile = v
10146	return s
10147}
10148
10149// The request to get an invalidation's information.
10150type GetInvalidationInput struct {
10151	_ struct{} `locationName:"GetInvalidationRequest" type:"structure"`
10152
10153	// The distribution's ID.
10154	//
10155	// DistributionId is a required field
10156	DistributionId *string `location:"uri" locationName:"DistributionId" type:"string" required:"true"`
10157
10158	// The identifier for the invalidation request, for example, IDFDVBD632BHDS5.
10159	//
10160	// Id is a required field
10161	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10162}
10163
10164// String returns the string representation
10165func (s GetInvalidationInput) String() string {
10166	return awsutil.Prettify(s)
10167}
10168
10169// GoString returns the string representation
10170func (s GetInvalidationInput) GoString() string {
10171	return s.String()
10172}
10173
10174// Validate inspects the fields of the type to determine if they are valid.
10175func (s *GetInvalidationInput) Validate() error {
10176	invalidParams := request.ErrInvalidParams{Context: "GetInvalidationInput"}
10177	if s.DistributionId == nil {
10178		invalidParams.Add(request.NewErrParamRequired("DistributionId"))
10179	}
10180	if s.DistributionId != nil && len(*s.DistributionId) < 1 {
10181		invalidParams.Add(request.NewErrParamMinLen("DistributionId", 1))
10182	}
10183	if s.Id == nil {
10184		invalidParams.Add(request.NewErrParamRequired("Id"))
10185	}
10186	if s.Id != nil && len(*s.Id) < 1 {
10187		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10188	}
10189
10190	if invalidParams.Len() > 0 {
10191		return invalidParams
10192	}
10193	return nil
10194}
10195
10196// SetDistributionId sets the DistributionId field's value.
10197func (s *GetInvalidationInput) SetDistributionId(v string) *GetInvalidationInput {
10198	s.DistributionId = &v
10199	return s
10200}
10201
10202// SetId sets the Id field's value.
10203func (s *GetInvalidationInput) SetId(v string) *GetInvalidationInput {
10204	s.Id = &v
10205	return s
10206}
10207
10208// The returned result of the corresponding request.
10209type GetInvalidationOutput struct {
10210	_ struct{} `type:"structure" payload:"Invalidation"`
10211
10212	// The invalidation's information. For more information, see Invalidation Complex
10213	// Type (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/InvalidationDatatype.html).
10214	Invalidation *Invalidation `type:"structure"`
10215}
10216
10217// String returns the string representation
10218func (s GetInvalidationOutput) String() string {
10219	return awsutil.Prettify(s)
10220}
10221
10222// GoString returns the string representation
10223func (s GetInvalidationOutput) GoString() string {
10224	return s.String()
10225}
10226
10227// SetInvalidation sets the Invalidation field's value.
10228func (s *GetInvalidationOutput) SetInvalidation(v *Invalidation) *GetInvalidationOutput {
10229	s.Invalidation = v
10230	return s
10231}
10232
10233type GetPublicKeyConfigInput struct {
10234	_ struct{} `locationName:"GetPublicKeyConfigRequest" type:"structure"`
10235
10236	// Request the ID for the public key configuration.
10237	//
10238	// Id is a required field
10239	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10240}
10241
10242// String returns the string representation
10243func (s GetPublicKeyConfigInput) String() string {
10244	return awsutil.Prettify(s)
10245}
10246
10247// GoString returns the string representation
10248func (s GetPublicKeyConfigInput) GoString() string {
10249	return s.String()
10250}
10251
10252// Validate inspects the fields of the type to determine if they are valid.
10253func (s *GetPublicKeyConfigInput) Validate() error {
10254	invalidParams := request.ErrInvalidParams{Context: "GetPublicKeyConfigInput"}
10255	if s.Id == nil {
10256		invalidParams.Add(request.NewErrParamRequired("Id"))
10257	}
10258	if s.Id != nil && len(*s.Id) < 1 {
10259		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10260	}
10261
10262	if invalidParams.Len() > 0 {
10263		return invalidParams
10264	}
10265	return nil
10266}
10267
10268// SetId sets the Id field's value.
10269func (s *GetPublicKeyConfigInput) SetId(v string) *GetPublicKeyConfigInput {
10270	s.Id = &v
10271	return s
10272}
10273
10274type GetPublicKeyConfigOutput struct {
10275	_ struct{} `type:"structure" payload:"PublicKeyConfig"`
10276
10277	// The current version of the public key configuration. For example: E2QWRUHAPOMQZL.
10278	ETag *string `location:"header" locationName:"ETag" type:"string"`
10279
10280	// Return the result for the public key configuration.
10281	PublicKeyConfig *PublicKeyConfig `type:"structure"`
10282}
10283
10284// String returns the string representation
10285func (s GetPublicKeyConfigOutput) String() string {
10286	return awsutil.Prettify(s)
10287}
10288
10289// GoString returns the string representation
10290func (s GetPublicKeyConfigOutput) GoString() string {
10291	return s.String()
10292}
10293
10294// SetETag sets the ETag field's value.
10295func (s *GetPublicKeyConfigOutput) SetETag(v string) *GetPublicKeyConfigOutput {
10296	s.ETag = &v
10297	return s
10298}
10299
10300// SetPublicKeyConfig sets the PublicKeyConfig field's value.
10301func (s *GetPublicKeyConfigOutput) SetPublicKeyConfig(v *PublicKeyConfig) *GetPublicKeyConfigOutput {
10302	s.PublicKeyConfig = v
10303	return s
10304}
10305
10306type GetPublicKeyInput struct {
10307	_ struct{} `locationName:"GetPublicKeyRequest" type:"structure"`
10308
10309	// Request the ID for the public key.
10310	//
10311	// Id is a required field
10312	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10313}
10314
10315// String returns the string representation
10316func (s GetPublicKeyInput) String() string {
10317	return awsutil.Prettify(s)
10318}
10319
10320// GoString returns the string representation
10321func (s GetPublicKeyInput) GoString() string {
10322	return s.String()
10323}
10324
10325// Validate inspects the fields of the type to determine if they are valid.
10326func (s *GetPublicKeyInput) Validate() error {
10327	invalidParams := request.ErrInvalidParams{Context: "GetPublicKeyInput"}
10328	if s.Id == nil {
10329		invalidParams.Add(request.NewErrParamRequired("Id"))
10330	}
10331	if s.Id != nil && len(*s.Id) < 1 {
10332		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10333	}
10334
10335	if invalidParams.Len() > 0 {
10336		return invalidParams
10337	}
10338	return nil
10339}
10340
10341// SetId sets the Id field's value.
10342func (s *GetPublicKeyInput) SetId(v string) *GetPublicKeyInput {
10343	s.Id = &v
10344	return s
10345}
10346
10347type GetPublicKeyOutput struct {
10348	_ struct{} `type:"structure" payload:"PublicKey"`
10349
10350	// The current version of the public key. For example: E2QWRUHAPOMQZL.
10351	ETag *string `location:"header" locationName:"ETag" type:"string"`
10352
10353	// Return the public key.
10354	PublicKey *PublicKey `type:"structure"`
10355}
10356
10357// String returns the string representation
10358func (s GetPublicKeyOutput) String() string {
10359	return awsutil.Prettify(s)
10360}
10361
10362// GoString returns the string representation
10363func (s GetPublicKeyOutput) GoString() string {
10364	return s.String()
10365}
10366
10367// SetETag sets the ETag field's value.
10368func (s *GetPublicKeyOutput) SetETag(v string) *GetPublicKeyOutput {
10369	s.ETag = &v
10370	return s
10371}
10372
10373// SetPublicKey sets the PublicKey field's value.
10374func (s *GetPublicKeyOutput) SetPublicKey(v *PublicKey) *GetPublicKeyOutput {
10375	s.PublicKey = v
10376	return s
10377}
10378
10379// To request to get a streaming distribution configuration.
10380type GetStreamingDistributionConfigInput struct {
10381	_ struct{} `locationName:"GetStreamingDistributionConfigRequest" type:"structure"`
10382
10383	// The streaming distribution's ID.
10384	//
10385	// Id is a required field
10386	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10387}
10388
10389// String returns the string representation
10390func (s GetStreamingDistributionConfigInput) String() string {
10391	return awsutil.Prettify(s)
10392}
10393
10394// GoString returns the string representation
10395func (s GetStreamingDistributionConfigInput) GoString() string {
10396	return s.String()
10397}
10398
10399// Validate inspects the fields of the type to determine if they are valid.
10400func (s *GetStreamingDistributionConfigInput) Validate() error {
10401	invalidParams := request.ErrInvalidParams{Context: "GetStreamingDistributionConfigInput"}
10402	if s.Id == nil {
10403		invalidParams.Add(request.NewErrParamRequired("Id"))
10404	}
10405	if s.Id != nil && len(*s.Id) < 1 {
10406		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10407	}
10408
10409	if invalidParams.Len() > 0 {
10410		return invalidParams
10411	}
10412	return nil
10413}
10414
10415// SetId sets the Id field's value.
10416func (s *GetStreamingDistributionConfigInput) SetId(v string) *GetStreamingDistributionConfigInput {
10417	s.Id = &v
10418	return s
10419}
10420
10421// The returned result of the corresponding request.
10422type GetStreamingDistributionConfigOutput struct {
10423	_ struct{} `type:"structure" payload:"StreamingDistributionConfig"`
10424
10425	// The current version of the configuration. For example: E2QWRUHAPOMQZL.
10426	ETag *string `location:"header" locationName:"ETag" type:"string"`
10427
10428	// The streaming distribution's configuration information.
10429	StreamingDistributionConfig *StreamingDistributionConfig `type:"structure"`
10430}
10431
10432// String returns the string representation
10433func (s GetStreamingDistributionConfigOutput) String() string {
10434	return awsutil.Prettify(s)
10435}
10436
10437// GoString returns the string representation
10438func (s GetStreamingDistributionConfigOutput) GoString() string {
10439	return s.String()
10440}
10441
10442// SetETag sets the ETag field's value.
10443func (s *GetStreamingDistributionConfigOutput) SetETag(v string) *GetStreamingDistributionConfigOutput {
10444	s.ETag = &v
10445	return s
10446}
10447
10448// SetStreamingDistributionConfig sets the StreamingDistributionConfig field's value.
10449func (s *GetStreamingDistributionConfigOutput) SetStreamingDistributionConfig(v *StreamingDistributionConfig) *GetStreamingDistributionConfigOutput {
10450	s.StreamingDistributionConfig = v
10451	return s
10452}
10453
10454// The request to get a streaming distribution's information.
10455type GetStreamingDistributionInput struct {
10456	_ struct{} `locationName:"GetStreamingDistributionRequest" type:"structure"`
10457
10458	// The streaming distribution's ID.
10459	//
10460	// Id is a required field
10461	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
10462}
10463
10464// String returns the string representation
10465func (s GetStreamingDistributionInput) String() string {
10466	return awsutil.Prettify(s)
10467}
10468
10469// GoString returns the string representation
10470func (s GetStreamingDistributionInput) GoString() string {
10471	return s.String()
10472}
10473
10474// Validate inspects the fields of the type to determine if they are valid.
10475func (s *GetStreamingDistributionInput) Validate() error {
10476	invalidParams := request.ErrInvalidParams{Context: "GetStreamingDistributionInput"}
10477	if s.Id == nil {
10478		invalidParams.Add(request.NewErrParamRequired("Id"))
10479	}
10480	if s.Id != nil && len(*s.Id) < 1 {
10481		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
10482	}
10483
10484	if invalidParams.Len() > 0 {
10485		return invalidParams
10486	}
10487	return nil
10488}
10489
10490// SetId sets the Id field's value.
10491func (s *GetStreamingDistributionInput) SetId(v string) *GetStreamingDistributionInput {
10492	s.Id = &v
10493	return s
10494}
10495
10496// The returned result of the corresponding request.
10497type GetStreamingDistributionOutput struct {
10498	_ struct{} `type:"structure" payload:"StreamingDistribution"`
10499
10500	// The current version of the streaming distribution's information. For example:
10501	// E2QWRUHAPOMQZL.
10502	ETag *string `location:"header" locationName:"ETag" type:"string"`
10503
10504	// The streaming distribution's information.
10505	StreamingDistribution *StreamingDistribution `type:"structure"`
10506}
10507
10508// String returns the string representation
10509func (s GetStreamingDistributionOutput) String() string {
10510	return awsutil.Prettify(s)
10511}
10512
10513// GoString returns the string representation
10514func (s GetStreamingDistributionOutput) GoString() string {
10515	return s.String()
10516}
10517
10518// SetETag sets the ETag field's value.
10519func (s *GetStreamingDistributionOutput) SetETag(v string) *GetStreamingDistributionOutput {
10520	s.ETag = &v
10521	return s
10522}
10523
10524// SetStreamingDistribution sets the StreamingDistribution field's value.
10525func (s *GetStreamingDistributionOutput) SetStreamingDistribution(v *StreamingDistribution) *GetStreamingDistributionOutput {
10526	s.StreamingDistribution = v
10527	return s
10528}
10529
10530// A complex type that specifies the request headers, if any, that you want
10531// CloudFront to base caching on for this cache behavior.
10532//
10533// For the headers that you specify, CloudFront caches separate versions of
10534// a specified object based on the header values in viewer requests. For example,
10535// suppose viewer requests for logo.jpg contain a custom product header that
10536// has a value of either acme or apex, and you configure CloudFront to cache
10537// your content based on values in the product header. CloudFront forwards the
10538// product header to the origin and caches the response from the origin once
10539// for each header value. For more information about caching based on header
10540// values, see How CloudFront Forwards and Caches Headers (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html)
10541// in the Amazon CloudFront Developer Guide.
10542type Headers struct {
10543	_ struct{} `type:"structure"`
10544
10545	// A list that contains one Name element for each header that you want CloudFront
10546	// to use for caching in this cache behavior. If Quantity is 0, omit Items.
10547	Items []*string `locationNameList:"Name" type:"list"`
10548
10549	// The number of different headers that you want CloudFront to base caching
10550	// on for this cache behavior. You can configure each cache behavior in a web
10551	// distribution to do one of the following:
10552	//
10553	//    * Forward all headers to your origin: Specify 1 for Quantity and * for
10554	//    Name. CloudFront doesn't cache the objects that are associated with this
10555	//    cache behavior. Instead, CloudFront sends every request to the origin.
10556	//
10557	//    * Forward a whitelist of headers you specify: Specify the number of headers
10558	//    that you want CloudFront to base caching on. Then specify the header names
10559	//    in Name elements. CloudFront caches your objects based on the values in
10560	//    the specified headers.
10561	//
10562	//    * Forward only the default headers: Specify 0 for Quantity and omit Items.
10563	//    In this configuration, CloudFront doesn't cache based on the values in
10564	//    the request headers.
10565	//
10566	// Regardless of which option you choose, CloudFront forwards headers to your
10567	// origin based on whether the origin is an S3 bucket or a custom origin. See
10568	// the following documentation:
10569	//
10570	//    * S3 bucket: See HTTP Request Headers That CloudFront Removes or Updates
10571	//    (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorS3Origin.html#request-s3-removed-headers)
10572	//
10573	//    * Custom origin: See HTTP Request Headers and CloudFront Behavior (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/RequestAndResponseBehaviorCustomOrigin.html#request-custom-headers-behavior)
10574	//
10575	// Quantity is a required field
10576	Quantity *int64 `type:"integer" required:"true"`
10577}
10578
10579// String returns the string representation
10580func (s Headers) String() string {
10581	return awsutil.Prettify(s)
10582}
10583
10584// GoString returns the string representation
10585func (s Headers) GoString() string {
10586	return s.String()
10587}
10588
10589// Validate inspects the fields of the type to determine if they are valid.
10590func (s *Headers) Validate() error {
10591	invalidParams := request.ErrInvalidParams{Context: "Headers"}
10592	if s.Quantity == nil {
10593		invalidParams.Add(request.NewErrParamRequired("Quantity"))
10594	}
10595
10596	if invalidParams.Len() > 0 {
10597		return invalidParams
10598	}
10599	return nil
10600}
10601
10602// SetItems sets the Items field's value.
10603func (s *Headers) SetItems(v []*string) *Headers {
10604	s.Items = v
10605	return s
10606}
10607
10608// SetQuantity sets the Quantity field's value.
10609func (s *Headers) SetQuantity(v int64) *Headers {
10610	s.Quantity = &v
10611	return s
10612}
10613
10614// An invalidation.
10615type Invalidation struct {
10616	_ struct{} `type:"structure"`
10617
10618	// The date and time the invalidation request was first made.
10619	//
10620	// CreateTime is a required field
10621	CreateTime *time.Time `type:"timestamp" required:"true"`
10622
10623	// The identifier for the invalidation request. For example: IDFDVBD632BHDS5.
10624	//
10625	// Id is a required field
10626	Id *string `type:"string" required:"true"`
10627
10628	// The current invalidation information for the batch request.
10629	//
10630	// InvalidationBatch is a required field
10631	InvalidationBatch *InvalidationBatch `type:"structure" required:"true"`
10632
10633	// The status of the invalidation request. When the invalidation batch is finished,
10634	// the status is Completed.
10635	//
10636	// Status is a required field
10637	Status *string `type:"string" required:"true"`
10638}
10639
10640// String returns the string representation
10641func (s Invalidation) String() string {
10642	return awsutil.Prettify(s)
10643}
10644
10645// GoString returns the string representation
10646func (s Invalidation) GoString() string {
10647	return s.String()
10648}
10649
10650// SetCreateTime sets the CreateTime field's value.
10651func (s *Invalidation) SetCreateTime(v time.Time) *Invalidation {
10652	s.CreateTime = &v
10653	return s
10654}
10655
10656// SetId sets the Id field's value.
10657func (s *Invalidation) SetId(v string) *Invalidation {
10658	s.Id = &v
10659	return s
10660}
10661
10662// SetInvalidationBatch sets the InvalidationBatch field's value.
10663func (s *Invalidation) SetInvalidationBatch(v *InvalidationBatch) *Invalidation {
10664	s.InvalidationBatch = v
10665	return s
10666}
10667
10668// SetStatus sets the Status field's value.
10669func (s *Invalidation) SetStatus(v string) *Invalidation {
10670	s.Status = &v
10671	return s
10672}
10673
10674// An invalidation batch.
10675type InvalidationBatch struct {
10676	_ struct{} `type:"structure"`
10677
10678	// A value that you specify to uniquely identify an invalidation request. CloudFront
10679	// uses the value to prevent you from accidentally resubmitting an identical
10680	// request. Whenever you create a new invalidation request, you must specify
10681	// a new value for CallerReference and change other values in the request as
10682	// applicable. One way to ensure that the value of CallerReference is unique
10683	// is to use a timestamp, for example, 20120301090000.
10684	//
10685	// If you make a second invalidation request with the same value for CallerReference,
10686	// and if the rest of the request is the same, CloudFront doesn't create a new
10687	// invalidation request. Instead, CloudFront returns information about the invalidation
10688	// request that you previously created with the same CallerReference.
10689	//
10690	// If CallerReference is a value you already sent in a previous invalidation
10691	// batch request but the content of any Path is different from the original
10692	// request, CloudFront returns an InvalidationBatchAlreadyExists error.
10693	//
10694	// CallerReference is a required field
10695	CallerReference *string `type:"string" required:"true"`
10696
10697	// A complex type that contains information about the objects that you want
10698	// to invalidate. For more information, see Specifying the Objects to Invalidate
10699	// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidation-specifying-objects)
10700	// in the Amazon CloudFront Developer Guide.
10701	//
10702	// Paths is a required field
10703	Paths *Paths `type:"structure" required:"true"`
10704}
10705
10706// String returns the string representation
10707func (s InvalidationBatch) String() string {
10708	return awsutil.Prettify(s)
10709}
10710
10711// GoString returns the string representation
10712func (s InvalidationBatch) GoString() string {
10713	return s.String()
10714}
10715
10716// Validate inspects the fields of the type to determine if they are valid.
10717func (s *InvalidationBatch) Validate() error {
10718	invalidParams := request.ErrInvalidParams{Context: "InvalidationBatch"}
10719	if s.CallerReference == nil {
10720		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
10721	}
10722	if s.Paths == nil {
10723		invalidParams.Add(request.NewErrParamRequired("Paths"))
10724	}
10725	if s.Paths != nil {
10726		if err := s.Paths.Validate(); err != nil {
10727			invalidParams.AddNested("Paths", err.(request.ErrInvalidParams))
10728		}
10729	}
10730
10731	if invalidParams.Len() > 0 {
10732		return invalidParams
10733	}
10734	return nil
10735}
10736
10737// SetCallerReference sets the CallerReference field's value.
10738func (s *InvalidationBatch) SetCallerReference(v string) *InvalidationBatch {
10739	s.CallerReference = &v
10740	return s
10741}
10742
10743// SetPaths sets the Paths field's value.
10744func (s *InvalidationBatch) SetPaths(v *Paths) *InvalidationBatch {
10745	s.Paths = v
10746	return s
10747}
10748
10749// The InvalidationList complex type describes the list of invalidation objects.
10750// For more information about invalidation, see Invalidating Objects (Web Distributions
10751// Only) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html)
10752// in the Amazon CloudFront Developer Guide.
10753type InvalidationList struct {
10754	_ struct{} `type:"structure"`
10755
10756	// A flag that indicates whether more invalidation batch requests remain to
10757	// be listed. If your results were truncated, you can make a follow-up pagination
10758	// request using the Marker request parameter to retrieve more invalidation
10759	// batches in the list.
10760	//
10761	// IsTruncated is a required field
10762	IsTruncated *bool `type:"boolean" required:"true"`
10763
10764	// A complex type that contains one InvalidationSummary element for each invalidation
10765	// batch created by the current AWS account.
10766	Items []*InvalidationSummary `locationNameList:"InvalidationSummary" type:"list"`
10767
10768	// The value that you provided for the Marker request parameter.
10769	//
10770	// Marker is a required field
10771	Marker *string `type:"string" required:"true"`
10772
10773	// The value that you provided for the MaxItems request parameter.
10774	//
10775	// MaxItems is a required field
10776	MaxItems *int64 `type:"integer" required:"true"`
10777
10778	// If IsTruncated is true, this element is present and contains the value that
10779	// you can use for the Marker request parameter to continue listing your invalidation
10780	// batches where they left off.
10781	NextMarker *string `type:"string"`
10782
10783	// The number of invalidation batches that were created by the current AWS account.
10784	//
10785	// Quantity is a required field
10786	Quantity *int64 `type:"integer" required:"true"`
10787}
10788
10789// String returns the string representation
10790func (s InvalidationList) String() string {
10791	return awsutil.Prettify(s)
10792}
10793
10794// GoString returns the string representation
10795func (s InvalidationList) GoString() string {
10796	return s.String()
10797}
10798
10799// SetIsTruncated sets the IsTruncated field's value.
10800func (s *InvalidationList) SetIsTruncated(v bool) *InvalidationList {
10801	s.IsTruncated = &v
10802	return s
10803}
10804
10805// SetItems sets the Items field's value.
10806func (s *InvalidationList) SetItems(v []*InvalidationSummary) *InvalidationList {
10807	s.Items = v
10808	return s
10809}
10810
10811// SetMarker sets the Marker field's value.
10812func (s *InvalidationList) SetMarker(v string) *InvalidationList {
10813	s.Marker = &v
10814	return s
10815}
10816
10817// SetMaxItems sets the MaxItems field's value.
10818func (s *InvalidationList) SetMaxItems(v int64) *InvalidationList {
10819	s.MaxItems = &v
10820	return s
10821}
10822
10823// SetNextMarker sets the NextMarker field's value.
10824func (s *InvalidationList) SetNextMarker(v string) *InvalidationList {
10825	s.NextMarker = &v
10826	return s
10827}
10828
10829// SetQuantity sets the Quantity field's value.
10830func (s *InvalidationList) SetQuantity(v int64) *InvalidationList {
10831	s.Quantity = &v
10832	return s
10833}
10834
10835// A summary of an invalidation request.
10836type InvalidationSummary struct {
10837	_ struct{} `type:"structure"`
10838
10839	// The time that an invalidation request was created.
10840	//
10841	// CreateTime is a required field
10842	CreateTime *time.Time `type:"timestamp" required:"true"`
10843
10844	// The unique ID for an invalidation request.
10845	//
10846	// Id is a required field
10847	Id *string `type:"string" required:"true"`
10848
10849	// The status of an invalidation request.
10850	//
10851	// Status is a required field
10852	Status *string `type:"string" required:"true"`
10853}
10854
10855// String returns the string representation
10856func (s InvalidationSummary) String() string {
10857	return awsutil.Prettify(s)
10858}
10859
10860// GoString returns the string representation
10861func (s InvalidationSummary) GoString() string {
10862	return s.String()
10863}
10864
10865// SetCreateTime sets the CreateTime field's value.
10866func (s *InvalidationSummary) SetCreateTime(v time.Time) *InvalidationSummary {
10867	s.CreateTime = &v
10868	return s
10869}
10870
10871// SetId sets the Id field's value.
10872func (s *InvalidationSummary) SetId(v string) *InvalidationSummary {
10873	s.Id = &v
10874	return s
10875}
10876
10877// SetStatus sets the Status field's value.
10878func (s *InvalidationSummary) SetStatus(v string) *InvalidationSummary {
10879	s.Status = &v
10880	return s
10881}
10882
10883// A complex type that lists the active CloudFront key pairs, if any, that are
10884// associated with AwsAccountNumber.
10885//
10886// For more information, see ActiveTrustedSigners (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ActiveTrustedSigners.html).
10887type KeyPairIds struct {
10888	_ struct{} `type:"structure"`
10889
10890	// A complex type that lists the active CloudFront key pairs, if any, that are
10891	// associated with AwsAccountNumber.
10892	//
10893	// For more information, see ActiveTrustedSigners (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ActiveTrustedSigners.html).
10894	Items []*string `locationNameList:"KeyPairId" type:"list"`
10895
10896	// The number of active CloudFront key pairs for AwsAccountNumber.
10897	//
10898	// For more information, see ActiveTrustedSigners (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ActiveTrustedSigners.html).
10899	//
10900	// Quantity is a required field
10901	Quantity *int64 `type:"integer" required:"true"`
10902}
10903
10904// String returns the string representation
10905func (s KeyPairIds) String() string {
10906	return awsutil.Prettify(s)
10907}
10908
10909// GoString returns the string representation
10910func (s KeyPairIds) GoString() string {
10911	return s.String()
10912}
10913
10914// SetItems sets the Items field's value.
10915func (s *KeyPairIds) SetItems(v []*string) *KeyPairIds {
10916	s.Items = v
10917	return s
10918}
10919
10920// SetQuantity sets the Quantity field's value.
10921func (s *KeyPairIds) SetQuantity(v int64) *KeyPairIds {
10922	s.Quantity = &v
10923	return s
10924}
10925
10926// A complex type that contains a Lambda function association.
10927type LambdaFunctionAssociation struct {
10928	_ struct{} `type:"structure"`
10929
10930	// Specifies the event type that triggers a Lambda function invocation. You
10931	// can specify the following values:
10932	//
10933	//    * viewer-request: The function executes when CloudFront receives a request
10934	//    from a viewer and before it checks to see whether the requested object
10935	//    is in the edge cache.
10936	//
10937	//    * origin-request: The function executes only when CloudFront forwards
10938	//    a request to your origin. When the requested object is in the edge cache,
10939	//    the function doesn't execute.
10940	//
10941	//    * origin-response: The function executes after CloudFront receives a response
10942	//    from the origin and before it caches the object in the response. When
10943	//    the requested object is in the edge cache, the function doesn't execute.
10944	//
10945	//    * viewer-response: The function executes before CloudFront returns the
10946	//    requested object to the viewer. The function executes regardless of whether
10947	//    the object was already in the edge cache. If the origin returns an HTTP
10948	//    status code other than HTTP 200 (OK), the function doesn't execute.
10949	//
10950	// EventType is a required field
10951	EventType *string `type:"string" required:"true" enum:"EventType"`
10952
10953	// A flag that allows a Lambda function to have read access to the body content.
10954	// For more information, see Accessing the Request Body by Choosing the Include
10955	// Body Option (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-include-body-access.html)
10956	// in the Amazon CloudFront Developer Guide.
10957	IncludeBody *bool `type:"boolean"`
10958
10959	// The ARN of the Lambda function. You must specify the ARN of a function version;
10960	// you can't specify a Lambda alias or $LATEST.
10961	//
10962	// LambdaFunctionARN is a required field
10963	LambdaFunctionARN *string `type:"string" required:"true"`
10964}
10965
10966// String returns the string representation
10967func (s LambdaFunctionAssociation) String() string {
10968	return awsutil.Prettify(s)
10969}
10970
10971// GoString returns the string representation
10972func (s LambdaFunctionAssociation) GoString() string {
10973	return s.String()
10974}
10975
10976// Validate inspects the fields of the type to determine if they are valid.
10977func (s *LambdaFunctionAssociation) Validate() error {
10978	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionAssociation"}
10979	if s.EventType == nil {
10980		invalidParams.Add(request.NewErrParamRequired("EventType"))
10981	}
10982	if s.LambdaFunctionARN == nil {
10983		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionARN"))
10984	}
10985
10986	if invalidParams.Len() > 0 {
10987		return invalidParams
10988	}
10989	return nil
10990}
10991
10992// SetEventType sets the EventType field's value.
10993func (s *LambdaFunctionAssociation) SetEventType(v string) *LambdaFunctionAssociation {
10994	s.EventType = &v
10995	return s
10996}
10997
10998// SetIncludeBody sets the IncludeBody field's value.
10999func (s *LambdaFunctionAssociation) SetIncludeBody(v bool) *LambdaFunctionAssociation {
11000	s.IncludeBody = &v
11001	return s
11002}
11003
11004// SetLambdaFunctionARN sets the LambdaFunctionARN field's value.
11005func (s *LambdaFunctionAssociation) SetLambdaFunctionARN(v string) *LambdaFunctionAssociation {
11006	s.LambdaFunctionARN = &v
11007	return s
11008}
11009
11010// A complex type that specifies a list of Lambda functions associations for
11011// a cache behavior.
11012//
11013// If you want to invoke one or more Lambda functions triggered by requests
11014// that match the PathPattern of the cache behavior, specify the applicable
11015// values for Quantity and Items. Note that there can be up to 4 LambdaFunctionAssociation
11016// items in this list (one for each possible value of EventType) and each EventType
11017// can be associated with the Lambda function only once.
11018//
11019// If you don't want to invoke any Lambda functions for the requests that match
11020// PathPattern, specify 0 for Quantity and omit Items.
11021type LambdaFunctionAssociations struct {
11022	_ struct{} `type:"structure"`
11023
11024	// Optional: A complex type that contains LambdaFunctionAssociation items for
11025	// this cache behavior. If Quantity is 0, you can omit Items.
11026	Items []*LambdaFunctionAssociation `locationNameList:"LambdaFunctionAssociation" type:"list"`
11027
11028	// The number of Lambda function associations for this cache behavior.
11029	//
11030	// Quantity is a required field
11031	Quantity *int64 `type:"integer" required:"true"`
11032}
11033
11034// String returns the string representation
11035func (s LambdaFunctionAssociations) String() string {
11036	return awsutil.Prettify(s)
11037}
11038
11039// GoString returns the string representation
11040func (s LambdaFunctionAssociations) GoString() string {
11041	return s.String()
11042}
11043
11044// Validate inspects the fields of the type to determine if they are valid.
11045func (s *LambdaFunctionAssociations) Validate() error {
11046	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionAssociations"}
11047	if s.Quantity == nil {
11048		invalidParams.Add(request.NewErrParamRequired("Quantity"))
11049	}
11050	if s.Items != nil {
11051		for i, v := range s.Items {
11052			if v == nil {
11053				continue
11054			}
11055			if err := v.Validate(); err != nil {
11056				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
11057			}
11058		}
11059	}
11060
11061	if invalidParams.Len() > 0 {
11062		return invalidParams
11063	}
11064	return nil
11065}
11066
11067// SetItems sets the Items field's value.
11068func (s *LambdaFunctionAssociations) SetItems(v []*LambdaFunctionAssociation) *LambdaFunctionAssociations {
11069	s.Items = v
11070	return s
11071}
11072
11073// SetQuantity sets the Quantity field's value.
11074func (s *LambdaFunctionAssociations) SetQuantity(v int64) *LambdaFunctionAssociations {
11075	s.Quantity = &v
11076	return s
11077}
11078
11079// The request to list origin access identities.
11080type ListCloudFrontOriginAccessIdentitiesInput struct {
11081	_ struct{} `locationName:"ListCloudFrontOriginAccessIdentitiesRequest" type:"structure"`
11082
11083	// Use this when paginating results to indicate where to begin in your list
11084	// of origin access identities. The results include identities in the list that
11085	// occur after the marker. To get the next page of results, set the Marker to
11086	// the value of the NextMarker from the current page's response (which is also
11087	// the ID of the last identity on that page).
11088	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11089
11090	// The maximum number of origin access identities you want in the response body.
11091	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11092}
11093
11094// String returns the string representation
11095func (s ListCloudFrontOriginAccessIdentitiesInput) String() string {
11096	return awsutil.Prettify(s)
11097}
11098
11099// GoString returns the string representation
11100func (s ListCloudFrontOriginAccessIdentitiesInput) GoString() string {
11101	return s.String()
11102}
11103
11104// SetMarker sets the Marker field's value.
11105func (s *ListCloudFrontOriginAccessIdentitiesInput) SetMarker(v string) *ListCloudFrontOriginAccessIdentitiesInput {
11106	s.Marker = &v
11107	return s
11108}
11109
11110// SetMaxItems sets the MaxItems field's value.
11111func (s *ListCloudFrontOriginAccessIdentitiesInput) SetMaxItems(v int64) *ListCloudFrontOriginAccessIdentitiesInput {
11112	s.MaxItems = &v
11113	return s
11114}
11115
11116// The returned result of the corresponding request.
11117type ListCloudFrontOriginAccessIdentitiesOutput struct {
11118	_ struct{} `type:"structure" payload:"CloudFrontOriginAccessIdentityList"`
11119
11120	// The CloudFrontOriginAccessIdentityList type.
11121	CloudFrontOriginAccessIdentityList *OriginAccessIdentityList `type:"structure"`
11122}
11123
11124// String returns the string representation
11125func (s ListCloudFrontOriginAccessIdentitiesOutput) String() string {
11126	return awsutil.Prettify(s)
11127}
11128
11129// GoString returns the string representation
11130func (s ListCloudFrontOriginAccessIdentitiesOutput) GoString() string {
11131	return s.String()
11132}
11133
11134// SetCloudFrontOriginAccessIdentityList sets the CloudFrontOriginAccessIdentityList field's value.
11135func (s *ListCloudFrontOriginAccessIdentitiesOutput) SetCloudFrontOriginAccessIdentityList(v *OriginAccessIdentityList) *ListCloudFrontOriginAccessIdentitiesOutput {
11136	s.CloudFrontOriginAccessIdentityList = v
11137	return s
11138}
11139
11140// The request to list distributions that are associated with a specified AWS
11141// WAF web ACL.
11142type ListDistributionsByWebACLIdInput struct {
11143	_ struct{} `locationName:"ListDistributionsByWebACLIdRequest" type:"structure"`
11144
11145	// Use Marker and MaxItems to control pagination of results. If you have more
11146	// than MaxItems distributions that satisfy the request, the response includes
11147	// a NextMarker element. To get the next page of results, submit another request.
11148	// For the value of Marker, specify the value of NextMarker from the last response.
11149	// (For the first request, omit Marker.)
11150	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11151
11152	// The maximum number of distributions that you want CloudFront to return in
11153	// the response body. The maximum and default values are both 100.
11154	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11155
11156	// The ID of the AWS WAF web ACL that you want to list the associated distributions.
11157	// If you specify "null" for the ID, the request returns a list of the distributions
11158	// that aren't associated with a web ACL.
11159	//
11160	// WebACLId is a required field
11161	WebACLId *string `location:"uri" locationName:"WebACLId" type:"string" required:"true"`
11162}
11163
11164// String returns the string representation
11165func (s ListDistributionsByWebACLIdInput) String() string {
11166	return awsutil.Prettify(s)
11167}
11168
11169// GoString returns the string representation
11170func (s ListDistributionsByWebACLIdInput) GoString() string {
11171	return s.String()
11172}
11173
11174// Validate inspects the fields of the type to determine if they are valid.
11175func (s *ListDistributionsByWebACLIdInput) Validate() error {
11176	invalidParams := request.ErrInvalidParams{Context: "ListDistributionsByWebACLIdInput"}
11177	if s.WebACLId == nil {
11178		invalidParams.Add(request.NewErrParamRequired("WebACLId"))
11179	}
11180	if s.WebACLId != nil && len(*s.WebACLId) < 1 {
11181		invalidParams.Add(request.NewErrParamMinLen("WebACLId", 1))
11182	}
11183
11184	if invalidParams.Len() > 0 {
11185		return invalidParams
11186	}
11187	return nil
11188}
11189
11190// SetMarker sets the Marker field's value.
11191func (s *ListDistributionsByWebACLIdInput) SetMarker(v string) *ListDistributionsByWebACLIdInput {
11192	s.Marker = &v
11193	return s
11194}
11195
11196// SetMaxItems sets the MaxItems field's value.
11197func (s *ListDistributionsByWebACLIdInput) SetMaxItems(v int64) *ListDistributionsByWebACLIdInput {
11198	s.MaxItems = &v
11199	return s
11200}
11201
11202// SetWebACLId sets the WebACLId field's value.
11203func (s *ListDistributionsByWebACLIdInput) SetWebACLId(v string) *ListDistributionsByWebACLIdInput {
11204	s.WebACLId = &v
11205	return s
11206}
11207
11208// The response to a request to list the distributions that are associated with
11209// a specified AWS WAF web ACL.
11210type ListDistributionsByWebACLIdOutput struct {
11211	_ struct{} `type:"structure" payload:"DistributionList"`
11212
11213	// The DistributionList type.
11214	DistributionList *DistributionList `type:"structure"`
11215}
11216
11217// String returns the string representation
11218func (s ListDistributionsByWebACLIdOutput) String() string {
11219	return awsutil.Prettify(s)
11220}
11221
11222// GoString returns the string representation
11223func (s ListDistributionsByWebACLIdOutput) GoString() string {
11224	return s.String()
11225}
11226
11227// SetDistributionList sets the DistributionList field's value.
11228func (s *ListDistributionsByWebACLIdOutput) SetDistributionList(v *DistributionList) *ListDistributionsByWebACLIdOutput {
11229	s.DistributionList = v
11230	return s
11231}
11232
11233// The request to list your distributions.
11234type ListDistributionsInput struct {
11235	_ struct{} `locationName:"ListDistributionsRequest" type:"structure"`
11236
11237	// Use this when paginating results to indicate where to begin in your list
11238	// of distributions. The results include distributions in the list that occur
11239	// after the marker. To get the next page of results, set the Marker to the
11240	// value of the NextMarker from the current page's response (which is also the
11241	// ID of the last distribution on that page).
11242	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11243
11244	// The maximum number of distributions you want in the response body.
11245	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11246}
11247
11248// String returns the string representation
11249func (s ListDistributionsInput) String() string {
11250	return awsutil.Prettify(s)
11251}
11252
11253// GoString returns the string representation
11254func (s ListDistributionsInput) GoString() string {
11255	return s.String()
11256}
11257
11258// SetMarker sets the Marker field's value.
11259func (s *ListDistributionsInput) SetMarker(v string) *ListDistributionsInput {
11260	s.Marker = &v
11261	return s
11262}
11263
11264// SetMaxItems sets the MaxItems field's value.
11265func (s *ListDistributionsInput) SetMaxItems(v int64) *ListDistributionsInput {
11266	s.MaxItems = &v
11267	return s
11268}
11269
11270// The returned result of the corresponding request.
11271type ListDistributionsOutput struct {
11272	_ struct{} `type:"structure" payload:"DistributionList"`
11273
11274	// The DistributionList type.
11275	DistributionList *DistributionList `type:"structure"`
11276}
11277
11278// String returns the string representation
11279func (s ListDistributionsOutput) String() string {
11280	return awsutil.Prettify(s)
11281}
11282
11283// GoString returns the string representation
11284func (s ListDistributionsOutput) GoString() string {
11285	return s.String()
11286}
11287
11288// SetDistributionList sets the DistributionList field's value.
11289func (s *ListDistributionsOutput) SetDistributionList(v *DistributionList) *ListDistributionsOutput {
11290	s.DistributionList = v
11291	return s
11292}
11293
11294type ListFieldLevelEncryptionConfigsInput struct {
11295	_ struct{} `locationName:"ListFieldLevelEncryptionConfigsRequest" type:"structure"`
11296
11297	// Use this when paginating results to indicate where to begin in your list
11298	// of configurations. The results include configurations in the list that occur
11299	// after the marker. To get the next page of results, set the Marker to the
11300	// value of the NextMarker from the current page's response (which is also the
11301	// ID of the last configuration on that page).
11302	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11303
11304	// The maximum number of field-level encryption configurations you want in the
11305	// response body.
11306	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11307}
11308
11309// String returns the string representation
11310func (s ListFieldLevelEncryptionConfigsInput) String() string {
11311	return awsutil.Prettify(s)
11312}
11313
11314// GoString returns the string representation
11315func (s ListFieldLevelEncryptionConfigsInput) GoString() string {
11316	return s.String()
11317}
11318
11319// SetMarker sets the Marker field's value.
11320func (s *ListFieldLevelEncryptionConfigsInput) SetMarker(v string) *ListFieldLevelEncryptionConfigsInput {
11321	s.Marker = &v
11322	return s
11323}
11324
11325// SetMaxItems sets the MaxItems field's value.
11326func (s *ListFieldLevelEncryptionConfigsInput) SetMaxItems(v int64) *ListFieldLevelEncryptionConfigsInput {
11327	s.MaxItems = &v
11328	return s
11329}
11330
11331type ListFieldLevelEncryptionConfigsOutput struct {
11332	_ struct{} `type:"structure" payload:"FieldLevelEncryptionList"`
11333
11334	// Returns a list of all field-level encryption configurations that have been
11335	// created in CloudFront for this account.
11336	FieldLevelEncryptionList *FieldLevelEncryptionList `type:"structure"`
11337}
11338
11339// String returns the string representation
11340func (s ListFieldLevelEncryptionConfigsOutput) String() string {
11341	return awsutil.Prettify(s)
11342}
11343
11344// GoString returns the string representation
11345func (s ListFieldLevelEncryptionConfigsOutput) GoString() string {
11346	return s.String()
11347}
11348
11349// SetFieldLevelEncryptionList sets the FieldLevelEncryptionList field's value.
11350func (s *ListFieldLevelEncryptionConfigsOutput) SetFieldLevelEncryptionList(v *FieldLevelEncryptionList) *ListFieldLevelEncryptionConfigsOutput {
11351	s.FieldLevelEncryptionList = v
11352	return s
11353}
11354
11355type ListFieldLevelEncryptionProfilesInput struct {
11356	_ struct{} `locationName:"ListFieldLevelEncryptionProfilesRequest" type:"structure"`
11357
11358	// Use this when paginating results to indicate where to begin in your list
11359	// of profiles. The results include profiles in the list that occur after the
11360	// marker. To get the next page of results, set the Marker to the value of the
11361	// NextMarker from the current page's response (which is also the ID of the
11362	// last profile on that page).
11363	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11364
11365	// The maximum number of field-level encryption profiles you want in the response
11366	// body.
11367	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11368}
11369
11370// String returns the string representation
11371func (s ListFieldLevelEncryptionProfilesInput) String() string {
11372	return awsutil.Prettify(s)
11373}
11374
11375// GoString returns the string representation
11376func (s ListFieldLevelEncryptionProfilesInput) GoString() string {
11377	return s.String()
11378}
11379
11380// SetMarker sets the Marker field's value.
11381func (s *ListFieldLevelEncryptionProfilesInput) SetMarker(v string) *ListFieldLevelEncryptionProfilesInput {
11382	s.Marker = &v
11383	return s
11384}
11385
11386// SetMaxItems sets the MaxItems field's value.
11387func (s *ListFieldLevelEncryptionProfilesInput) SetMaxItems(v int64) *ListFieldLevelEncryptionProfilesInput {
11388	s.MaxItems = &v
11389	return s
11390}
11391
11392type ListFieldLevelEncryptionProfilesOutput struct {
11393	_ struct{} `type:"structure" payload:"FieldLevelEncryptionProfileList"`
11394
11395	// Returns a list of the field-level encryption profiles that have been created
11396	// in CloudFront for this account.
11397	FieldLevelEncryptionProfileList *FieldLevelEncryptionProfileList `type:"structure"`
11398}
11399
11400// String returns the string representation
11401func (s ListFieldLevelEncryptionProfilesOutput) String() string {
11402	return awsutil.Prettify(s)
11403}
11404
11405// GoString returns the string representation
11406func (s ListFieldLevelEncryptionProfilesOutput) GoString() string {
11407	return s.String()
11408}
11409
11410// SetFieldLevelEncryptionProfileList sets the FieldLevelEncryptionProfileList field's value.
11411func (s *ListFieldLevelEncryptionProfilesOutput) SetFieldLevelEncryptionProfileList(v *FieldLevelEncryptionProfileList) *ListFieldLevelEncryptionProfilesOutput {
11412	s.FieldLevelEncryptionProfileList = v
11413	return s
11414}
11415
11416// The request to list invalidations.
11417type ListInvalidationsInput struct {
11418	_ struct{} `locationName:"ListInvalidationsRequest" type:"structure"`
11419
11420	// The distribution's ID.
11421	//
11422	// DistributionId is a required field
11423	DistributionId *string `location:"uri" locationName:"DistributionId" type:"string" required:"true"`
11424
11425	// Use this parameter when paginating results to indicate where to begin in
11426	// your list of invalidation batches. Because the results are returned in decreasing
11427	// order from most recent to oldest, the most recent results are on the first
11428	// page, the second page will contain earlier results, and so on. To get the
11429	// next page of results, set Marker to the value of the NextMarker from the
11430	// current page's response. This value is the same as the ID of the last invalidation
11431	// batch on that page.
11432	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11433
11434	// The maximum number of invalidation batches that you want in the response
11435	// body.
11436	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11437}
11438
11439// String returns the string representation
11440func (s ListInvalidationsInput) String() string {
11441	return awsutil.Prettify(s)
11442}
11443
11444// GoString returns the string representation
11445func (s ListInvalidationsInput) GoString() string {
11446	return s.String()
11447}
11448
11449// Validate inspects the fields of the type to determine if they are valid.
11450func (s *ListInvalidationsInput) Validate() error {
11451	invalidParams := request.ErrInvalidParams{Context: "ListInvalidationsInput"}
11452	if s.DistributionId == nil {
11453		invalidParams.Add(request.NewErrParamRequired("DistributionId"))
11454	}
11455	if s.DistributionId != nil && len(*s.DistributionId) < 1 {
11456		invalidParams.Add(request.NewErrParamMinLen("DistributionId", 1))
11457	}
11458
11459	if invalidParams.Len() > 0 {
11460		return invalidParams
11461	}
11462	return nil
11463}
11464
11465// SetDistributionId sets the DistributionId field's value.
11466func (s *ListInvalidationsInput) SetDistributionId(v string) *ListInvalidationsInput {
11467	s.DistributionId = &v
11468	return s
11469}
11470
11471// SetMarker sets the Marker field's value.
11472func (s *ListInvalidationsInput) SetMarker(v string) *ListInvalidationsInput {
11473	s.Marker = &v
11474	return s
11475}
11476
11477// SetMaxItems sets the MaxItems field's value.
11478func (s *ListInvalidationsInput) SetMaxItems(v int64) *ListInvalidationsInput {
11479	s.MaxItems = &v
11480	return s
11481}
11482
11483// The returned result of the corresponding request.
11484type ListInvalidationsOutput struct {
11485	_ struct{} `type:"structure" payload:"InvalidationList"`
11486
11487	// Information about invalidation batches.
11488	InvalidationList *InvalidationList `type:"structure"`
11489}
11490
11491// String returns the string representation
11492func (s ListInvalidationsOutput) String() string {
11493	return awsutil.Prettify(s)
11494}
11495
11496// GoString returns the string representation
11497func (s ListInvalidationsOutput) GoString() string {
11498	return s.String()
11499}
11500
11501// SetInvalidationList sets the InvalidationList field's value.
11502func (s *ListInvalidationsOutput) SetInvalidationList(v *InvalidationList) *ListInvalidationsOutput {
11503	s.InvalidationList = v
11504	return s
11505}
11506
11507type ListPublicKeysInput struct {
11508	_ struct{} `locationName:"ListPublicKeysRequest" type:"structure"`
11509
11510	// Use this when paginating results to indicate where to begin in your list
11511	// of public keys. The results include public keys in the list that occur after
11512	// the marker. To get the next page of results, set the Marker to the value
11513	// of the NextMarker from the current page's response (which is also the ID
11514	// of the last public key on that page).
11515	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11516
11517	// The maximum number of public keys you want in the response body.
11518	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11519}
11520
11521// String returns the string representation
11522func (s ListPublicKeysInput) String() string {
11523	return awsutil.Prettify(s)
11524}
11525
11526// GoString returns the string representation
11527func (s ListPublicKeysInput) GoString() string {
11528	return s.String()
11529}
11530
11531// SetMarker sets the Marker field's value.
11532func (s *ListPublicKeysInput) SetMarker(v string) *ListPublicKeysInput {
11533	s.Marker = &v
11534	return s
11535}
11536
11537// SetMaxItems sets the MaxItems field's value.
11538func (s *ListPublicKeysInput) SetMaxItems(v int64) *ListPublicKeysInput {
11539	s.MaxItems = &v
11540	return s
11541}
11542
11543type ListPublicKeysOutput struct {
11544	_ struct{} `type:"structure" payload:"PublicKeyList"`
11545
11546	// Returns a list of all public keys that have been added to CloudFront for
11547	// this account.
11548	PublicKeyList *PublicKeyList `type:"structure"`
11549}
11550
11551// String returns the string representation
11552func (s ListPublicKeysOutput) String() string {
11553	return awsutil.Prettify(s)
11554}
11555
11556// GoString returns the string representation
11557func (s ListPublicKeysOutput) GoString() string {
11558	return s.String()
11559}
11560
11561// SetPublicKeyList sets the PublicKeyList field's value.
11562func (s *ListPublicKeysOutput) SetPublicKeyList(v *PublicKeyList) *ListPublicKeysOutput {
11563	s.PublicKeyList = v
11564	return s
11565}
11566
11567// The request to list your streaming distributions.
11568type ListStreamingDistributionsInput struct {
11569	_ struct{} `locationName:"ListStreamingDistributionsRequest" type:"structure"`
11570
11571	// The value that you provided for the Marker request parameter.
11572	Marker *string `location:"querystring" locationName:"Marker" type:"string"`
11573
11574	// The value that you provided for the MaxItems request parameter.
11575	MaxItems *int64 `location:"querystring" locationName:"MaxItems" type:"integer"`
11576}
11577
11578// String returns the string representation
11579func (s ListStreamingDistributionsInput) String() string {
11580	return awsutil.Prettify(s)
11581}
11582
11583// GoString returns the string representation
11584func (s ListStreamingDistributionsInput) GoString() string {
11585	return s.String()
11586}
11587
11588// SetMarker sets the Marker field's value.
11589func (s *ListStreamingDistributionsInput) SetMarker(v string) *ListStreamingDistributionsInput {
11590	s.Marker = &v
11591	return s
11592}
11593
11594// SetMaxItems sets the MaxItems field's value.
11595func (s *ListStreamingDistributionsInput) SetMaxItems(v int64) *ListStreamingDistributionsInput {
11596	s.MaxItems = &v
11597	return s
11598}
11599
11600// The returned result of the corresponding request.
11601type ListStreamingDistributionsOutput struct {
11602	_ struct{} `type:"structure" payload:"StreamingDistributionList"`
11603
11604	// The StreamingDistributionList type.
11605	StreamingDistributionList *StreamingDistributionList `type:"structure"`
11606}
11607
11608// String returns the string representation
11609func (s ListStreamingDistributionsOutput) String() string {
11610	return awsutil.Prettify(s)
11611}
11612
11613// GoString returns the string representation
11614func (s ListStreamingDistributionsOutput) GoString() string {
11615	return s.String()
11616}
11617
11618// SetStreamingDistributionList sets the StreamingDistributionList field's value.
11619func (s *ListStreamingDistributionsOutput) SetStreamingDistributionList(v *StreamingDistributionList) *ListStreamingDistributionsOutput {
11620	s.StreamingDistributionList = v
11621	return s
11622}
11623
11624// The request to list tags for a CloudFront resource.
11625type ListTagsForResourceInput struct {
11626	_ struct{} `locationName:"ListTagsForResourceRequest" type:"structure"`
11627
11628	// An ARN of a CloudFront resource.
11629	//
11630	// Resource is a required field
11631	Resource *string `location:"querystring" locationName:"Resource" type:"string" required:"true"`
11632}
11633
11634// String returns the string representation
11635func (s ListTagsForResourceInput) String() string {
11636	return awsutil.Prettify(s)
11637}
11638
11639// GoString returns the string representation
11640func (s ListTagsForResourceInput) GoString() string {
11641	return s.String()
11642}
11643
11644// Validate inspects the fields of the type to determine if they are valid.
11645func (s *ListTagsForResourceInput) Validate() error {
11646	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
11647	if s.Resource == nil {
11648		invalidParams.Add(request.NewErrParamRequired("Resource"))
11649	}
11650
11651	if invalidParams.Len() > 0 {
11652		return invalidParams
11653	}
11654	return nil
11655}
11656
11657// SetResource sets the Resource field's value.
11658func (s *ListTagsForResourceInput) SetResource(v string) *ListTagsForResourceInput {
11659	s.Resource = &v
11660	return s
11661}
11662
11663// The returned result of the corresponding request.
11664type ListTagsForResourceOutput struct {
11665	_ struct{} `type:"structure" payload:"Tags"`
11666
11667	// A complex type that contains zero or more Tag elements.
11668	//
11669	// Tags is a required field
11670	Tags *Tags `type:"structure" required:"true"`
11671}
11672
11673// String returns the string representation
11674func (s ListTagsForResourceOutput) String() string {
11675	return awsutil.Prettify(s)
11676}
11677
11678// GoString returns the string representation
11679func (s ListTagsForResourceOutput) GoString() string {
11680	return s.String()
11681}
11682
11683// SetTags sets the Tags field's value.
11684func (s *ListTagsForResourceOutput) SetTags(v *Tags) *ListTagsForResourceOutput {
11685	s.Tags = v
11686	return s
11687}
11688
11689// A complex type that controls whether access logs are written for the distribution.
11690type LoggingConfig struct {
11691	_ struct{} `type:"structure"`
11692
11693	// The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com.
11694	//
11695	// Bucket is a required field
11696	Bucket *string `type:"string" required:"true"`
11697
11698	// Specifies whether you want CloudFront to save access logs to an Amazon S3
11699	// bucket. If you don't want to enable logging when you create a distribution
11700	// or if you want to disable logging for an existing distribution, specify false
11701	// for Enabled, and specify empty Bucket and Prefix elements. If you specify
11702	// false for Enabled but you specify values for Bucket, prefix, and IncludeCookies,
11703	// the values are automatically deleted.
11704	//
11705	// Enabled is a required field
11706	Enabled *bool `type:"boolean" required:"true"`
11707
11708	// Specifies whether you want CloudFront to include cookies in access logs,
11709	// specify true for IncludeCookies. If you choose to include cookies in logs,
11710	// CloudFront logs all cookies regardless of how you configure the cache behaviors
11711	// for this distribution. If you don't want to include cookies when you create
11712	// a distribution or if you want to disable include cookies for an existing
11713	// distribution, specify false for IncludeCookies.
11714	//
11715	// IncludeCookies is a required field
11716	IncludeCookies *bool `type:"boolean" required:"true"`
11717
11718	// An optional string that you want CloudFront to prefix to the access log filenames
11719	// for this distribution, for example, myprefix/. If you want to enable logging,
11720	// but you don't want to specify a prefix, you still must include an empty Prefix
11721	// element in the Logging element.
11722	//
11723	// Prefix is a required field
11724	Prefix *string `type:"string" required:"true"`
11725}
11726
11727// String returns the string representation
11728func (s LoggingConfig) String() string {
11729	return awsutil.Prettify(s)
11730}
11731
11732// GoString returns the string representation
11733func (s LoggingConfig) GoString() string {
11734	return s.String()
11735}
11736
11737// Validate inspects the fields of the type to determine if they are valid.
11738func (s *LoggingConfig) Validate() error {
11739	invalidParams := request.ErrInvalidParams{Context: "LoggingConfig"}
11740	if s.Bucket == nil {
11741		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11742	}
11743	if s.Enabled == nil {
11744		invalidParams.Add(request.NewErrParamRequired("Enabled"))
11745	}
11746	if s.IncludeCookies == nil {
11747		invalidParams.Add(request.NewErrParamRequired("IncludeCookies"))
11748	}
11749	if s.Prefix == nil {
11750		invalidParams.Add(request.NewErrParamRequired("Prefix"))
11751	}
11752
11753	if invalidParams.Len() > 0 {
11754		return invalidParams
11755	}
11756	return nil
11757}
11758
11759// SetBucket sets the Bucket field's value.
11760func (s *LoggingConfig) SetBucket(v string) *LoggingConfig {
11761	s.Bucket = &v
11762	return s
11763}
11764
11765// SetEnabled sets the Enabled field's value.
11766func (s *LoggingConfig) SetEnabled(v bool) *LoggingConfig {
11767	s.Enabled = &v
11768	return s
11769}
11770
11771// SetIncludeCookies sets the IncludeCookies field's value.
11772func (s *LoggingConfig) SetIncludeCookies(v bool) *LoggingConfig {
11773	s.IncludeCookies = &v
11774	return s
11775}
11776
11777// SetPrefix sets the Prefix field's value.
11778func (s *LoggingConfig) SetPrefix(v string) *LoggingConfig {
11779	s.Prefix = &v
11780	return s
11781}
11782
11783// A complex type that describes the Amazon S3 bucket, HTTP server (for example,
11784// a web server), Amazon MediaStore, or other server from which CloudFront gets
11785// your files. This can also be an origin group, if you've created an origin
11786// group. You must specify at least one origin or origin group.
11787//
11788// For the current limit on the number of origins or origin groups that you
11789// can specify for a distribution, see Amazon CloudFront Limits (https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_cloudfront)
11790// in the AWS General Reference.
11791type Origin struct {
11792	_ struct{} `type:"structure"`
11793
11794	// A complex type that contains names and values for the custom headers that
11795	// you want.
11796	CustomHeaders *CustomHeaders `type:"structure"`
11797
11798	// A complex type that contains information about a custom origin. If the origin
11799	// is an Amazon S3 bucket, use the S3OriginConfig element instead.
11800	CustomOriginConfig *CustomOriginConfig `type:"structure"`
11801
11802	// Amazon S3 origins: The DNS name of the Amazon S3 bucket from which you want
11803	// CloudFront to get objects for this origin, for example, myawsbucket.s3.amazonaws.com.
11804	// If you set up your bucket to be configured as a website endpoint, enter the
11805	// Amazon S3 static website hosting endpoint for the bucket.
11806	//
11807	// For more information about specifying this value for different types of origins,
11808	// see Origin Domain Name (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesDomainName)
11809	// in the Amazon CloudFront Developer Guide.
11810	//
11811	// Constraints for Amazon S3 origins:
11812	//
11813	//    * If you configured Amazon S3 Transfer Acceleration for your bucket, don't
11814	//    specify the s3-accelerate endpoint for DomainName.
11815	//
11816	//    * The bucket name must be between 3 and 63 characters long (inclusive).
11817	//
11818	//    * The bucket name must contain only lowercase characters, numbers, periods,
11819	//    underscores, and dashes.
11820	//
11821	//    * The bucket name must not contain adjacent periods.
11822	//
11823	// Custom Origins: The DNS domain name for the HTTP server from which you want
11824	// CloudFront to get objects for this origin, for example, www.example.com.
11825	//
11826	// Constraints for custom origins:
11827	//
11828	//    * DomainName must be a valid DNS name that contains only a-z, A-Z, 0-9,
11829	//    dot (.), hyphen (-), or underscore (_) characters.
11830	//
11831	//    * The name cannot exceed 128 characters.
11832	//
11833	// DomainName is a required field
11834	DomainName *string `type:"string" required:"true"`
11835
11836	// A unique identifier for the origin or origin group. The value of Id must
11837	// be unique within the distribution.
11838	//
11839	// When you specify the value of TargetOriginId for the default cache behavior
11840	// or for another cache behavior, you indicate the origin to which you want
11841	// the cache behavior to route requests by specifying the value of the Id element
11842	// for that origin. When a request matches the path pattern for that cache behavior,
11843	// CloudFront routes the request to the specified origin. For more information,
11844	// see Cache Behavior Settings (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesCacheBehavior)
11845	// in the Amazon CloudFront Developer Guide.
11846	//
11847	// Id is a required field
11848	Id *string `type:"string" required:"true"`
11849
11850	// An optional element that causes CloudFront to request your content from a
11851	// directory in your Amazon S3 bucket or your custom origin. When you include
11852	// the OriginPath element, specify the directory name, beginning with a /. CloudFront
11853	// appends the directory name to the value of DomainName, for example, example.com/production.
11854	// Do not include a / at the end of the directory name.
11855	//
11856	// For example, suppose you've specified the following values for your distribution:
11857	//
11858	//    * DomainName: An Amazon S3 bucket named myawsbucket.
11859	//
11860	//    * OriginPath: /production
11861	//
11862	//    * CNAME: example.com
11863	//
11864	// When a user enters example.com/index.html in a browser, CloudFront sends
11865	// a request to Amazon S3 for myawsbucket/production/index.html.
11866	//
11867	// When a user enters example.com/acme/index.html in a browser, CloudFront sends
11868	// a request to Amazon S3 for myawsbucket/production/acme/index.html.
11869	OriginPath *string `type:"string"`
11870
11871	// A complex type that contains information about the Amazon S3 origin. If the
11872	// origin is a custom origin, use the CustomOriginConfig element instead.
11873	S3OriginConfig *S3OriginConfig `type:"structure"`
11874}
11875
11876// String returns the string representation
11877func (s Origin) String() string {
11878	return awsutil.Prettify(s)
11879}
11880
11881// GoString returns the string representation
11882func (s Origin) GoString() string {
11883	return s.String()
11884}
11885
11886// Validate inspects the fields of the type to determine if they are valid.
11887func (s *Origin) Validate() error {
11888	invalidParams := request.ErrInvalidParams{Context: "Origin"}
11889	if s.DomainName == nil {
11890		invalidParams.Add(request.NewErrParamRequired("DomainName"))
11891	}
11892	if s.Id == nil {
11893		invalidParams.Add(request.NewErrParamRequired("Id"))
11894	}
11895	if s.CustomHeaders != nil {
11896		if err := s.CustomHeaders.Validate(); err != nil {
11897			invalidParams.AddNested("CustomHeaders", err.(request.ErrInvalidParams))
11898		}
11899	}
11900	if s.CustomOriginConfig != nil {
11901		if err := s.CustomOriginConfig.Validate(); err != nil {
11902			invalidParams.AddNested("CustomOriginConfig", err.(request.ErrInvalidParams))
11903		}
11904	}
11905	if s.S3OriginConfig != nil {
11906		if err := s.S3OriginConfig.Validate(); err != nil {
11907			invalidParams.AddNested("S3OriginConfig", err.(request.ErrInvalidParams))
11908		}
11909	}
11910
11911	if invalidParams.Len() > 0 {
11912		return invalidParams
11913	}
11914	return nil
11915}
11916
11917// SetCustomHeaders sets the CustomHeaders field's value.
11918func (s *Origin) SetCustomHeaders(v *CustomHeaders) *Origin {
11919	s.CustomHeaders = v
11920	return s
11921}
11922
11923// SetCustomOriginConfig sets the CustomOriginConfig field's value.
11924func (s *Origin) SetCustomOriginConfig(v *CustomOriginConfig) *Origin {
11925	s.CustomOriginConfig = v
11926	return s
11927}
11928
11929// SetDomainName sets the DomainName field's value.
11930func (s *Origin) SetDomainName(v string) *Origin {
11931	s.DomainName = &v
11932	return s
11933}
11934
11935// SetId sets the Id field's value.
11936func (s *Origin) SetId(v string) *Origin {
11937	s.Id = &v
11938	return s
11939}
11940
11941// SetOriginPath sets the OriginPath field's value.
11942func (s *Origin) SetOriginPath(v string) *Origin {
11943	s.OriginPath = &v
11944	return s
11945}
11946
11947// SetS3OriginConfig sets the S3OriginConfig field's value.
11948func (s *Origin) SetS3OriginConfig(v *S3OriginConfig) *Origin {
11949	s.S3OriginConfig = v
11950	return s
11951}
11952
11953// CloudFront origin access identity.
11954type OriginAccessIdentity struct {
11955	_ struct{} `type:"structure"`
11956
11957	// The current configuration information for the identity.
11958	CloudFrontOriginAccessIdentityConfig *OriginAccessIdentityConfig `type:"structure"`
11959
11960	// The ID for the origin access identity, for example, E74FTE3AJFJ256A.
11961	//
11962	// Id is a required field
11963	Id *string `type:"string" required:"true"`
11964
11965	// The Amazon S3 canonical user ID for the origin access identity, used when
11966	// giving the origin access identity read permission to an object in Amazon
11967	// S3.
11968	//
11969	// S3CanonicalUserId is a required field
11970	S3CanonicalUserId *string `type:"string" required:"true"`
11971}
11972
11973// String returns the string representation
11974func (s OriginAccessIdentity) String() string {
11975	return awsutil.Prettify(s)
11976}
11977
11978// GoString returns the string representation
11979func (s OriginAccessIdentity) GoString() string {
11980	return s.String()
11981}
11982
11983// SetCloudFrontOriginAccessIdentityConfig sets the CloudFrontOriginAccessIdentityConfig field's value.
11984func (s *OriginAccessIdentity) SetCloudFrontOriginAccessIdentityConfig(v *OriginAccessIdentityConfig) *OriginAccessIdentity {
11985	s.CloudFrontOriginAccessIdentityConfig = v
11986	return s
11987}
11988
11989// SetId sets the Id field's value.
11990func (s *OriginAccessIdentity) SetId(v string) *OriginAccessIdentity {
11991	s.Id = &v
11992	return s
11993}
11994
11995// SetS3CanonicalUserId sets the S3CanonicalUserId field's value.
11996func (s *OriginAccessIdentity) SetS3CanonicalUserId(v string) *OriginAccessIdentity {
11997	s.S3CanonicalUserId = &v
11998	return s
11999}
12000
12001// Origin access identity configuration. Send a GET request to the /CloudFront
12002// API version/CloudFront/identity ID/config resource.
12003type OriginAccessIdentityConfig struct {
12004	_ struct{} `type:"structure"`
12005
12006	// A unique value (for example, a date-time stamp) that ensures that the request
12007	// can't be replayed.
12008	//
12009	// If the value of CallerReference is new (regardless of the content of the
12010	// CloudFrontOriginAccessIdentityConfig object), a new origin access identity
12011	// is created.
12012	//
12013	// If the CallerReference is a value already sent in a previous identity request,
12014	// and the content of the CloudFrontOriginAccessIdentityConfig is identical
12015	// to the original request (ignoring white space), the response includes the
12016	// same information returned to the original request.
12017	//
12018	// If the CallerReference is a value you already sent in a previous request
12019	// to create an identity, but the content of the CloudFrontOriginAccessIdentityConfig
12020	// is different from the original request, CloudFront returns a CloudFrontOriginAccessIdentityAlreadyExists
12021	// error.
12022	//
12023	// CallerReference is a required field
12024	CallerReference *string `type:"string" required:"true"`
12025
12026	// Any comments you want to include about the origin access identity.
12027	//
12028	// Comment is a required field
12029	Comment *string `type:"string" required:"true"`
12030}
12031
12032// String returns the string representation
12033func (s OriginAccessIdentityConfig) String() string {
12034	return awsutil.Prettify(s)
12035}
12036
12037// GoString returns the string representation
12038func (s OriginAccessIdentityConfig) GoString() string {
12039	return s.String()
12040}
12041
12042// Validate inspects the fields of the type to determine if they are valid.
12043func (s *OriginAccessIdentityConfig) Validate() error {
12044	invalidParams := request.ErrInvalidParams{Context: "OriginAccessIdentityConfig"}
12045	if s.CallerReference == nil {
12046		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
12047	}
12048	if s.Comment == nil {
12049		invalidParams.Add(request.NewErrParamRequired("Comment"))
12050	}
12051
12052	if invalidParams.Len() > 0 {
12053		return invalidParams
12054	}
12055	return nil
12056}
12057
12058// SetCallerReference sets the CallerReference field's value.
12059func (s *OriginAccessIdentityConfig) SetCallerReference(v string) *OriginAccessIdentityConfig {
12060	s.CallerReference = &v
12061	return s
12062}
12063
12064// SetComment sets the Comment field's value.
12065func (s *OriginAccessIdentityConfig) SetComment(v string) *OriginAccessIdentityConfig {
12066	s.Comment = &v
12067	return s
12068}
12069
12070// Lists the origin access identities for CloudFront.Send a GET request to the
12071// /CloudFront API version/origin-access-identity/cloudfront resource. The response
12072// includes a CloudFrontOriginAccessIdentityList element with zero or more CloudFrontOriginAccessIdentitySummary
12073// child elements. By default, your entire list of origin access identities
12074// is returned in one single page. If the list is long, you can paginate it
12075// using the MaxItems and Marker parameters.
12076type OriginAccessIdentityList struct {
12077	_ struct{} `type:"structure"`
12078
12079	// A flag that indicates whether more origin access identities remain to be
12080	// listed. If your results were truncated, you can make a follow-up pagination
12081	// request using the Marker request parameter to retrieve more items in the
12082	// list.
12083	//
12084	// IsTruncated is a required field
12085	IsTruncated *bool `type:"boolean" required:"true"`
12086
12087	// A complex type that contains one CloudFrontOriginAccessIdentitySummary element
12088	// for each origin access identity that was created by the current AWS account.
12089	Items []*OriginAccessIdentitySummary `locationNameList:"CloudFrontOriginAccessIdentitySummary" type:"list"`
12090
12091	// Use this when paginating results to indicate where to begin in your list
12092	// of origin access identities. The results include identities in the list that
12093	// occur after the marker. To get the next page of results, set the Marker to
12094	// the value of the NextMarker from the current page's response (which is also
12095	// the ID of the last identity on that page).
12096	//
12097	// Marker is a required field
12098	Marker *string `type:"string" required:"true"`
12099
12100	// The maximum number of origin access identities you want in the response body.
12101	//
12102	// MaxItems is a required field
12103	MaxItems *int64 `type:"integer" required:"true"`
12104
12105	// If IsTruncated is true, this element is present and contains the value you
12106	// can use for the Marker request parameter to continue listing your origin
12107	// access identities where they left off.
12108	NextMarker *string `type:"string"`
12109
12110	// The number of CloudFront origin access identities that were created by the
12111	// current AWS account.
12112	//
12113	// Quantity is a required field
12114	Quantity *int64 `type:"integer" required:"true"`
12115}
12116
12117// String returns the string representation
12118func (s OriginAccessIdentityList) String() string {
12119	return awsutil.Prettify(s)
12120}
12121
12122// GoString returns the string representation
12123func (s OriginAccessIdentityList) GoString() string {
12124	return s.String()
12125}
12126
12127// SetIsTruncated sets the IsTruncated field's value.
12128func (s *OriginAccessIdentityList) SetIsTruncated(v bool) *OriginAccessIdentityList {
12129	s.IsTruncated = &v
12130	return s
12131}
12132
12133// SetItems sets the Items field's value.
12134func (s *OriginAccessIdentityList) SetItems(v []*OriginAccessIdentitySummary) *OriginAccessIdentityList {
12135	s.Items = v
12136	return s
12137}
12138
12139// SetMarker sets the Marker field's value.
12140func (s *OriginAccessIdentityList) SetMarker(v string) *OriginAccessIdentityList {
12141	s.Marker = &v
12142	return s
12143}
12144
12145// SetMaxItems sets the MaxItems field's value.
12146func (s *OriginAccessIdentityList) SetMaxItems(v int64) *OriginAccessIdentityList {
12147	s.MaxItems = &v
12148	return s
12149}
12150
12151// SetNextMarker sets the NextMarker field's value.
12152func (s *OriginAccessIdentityList) SetNextMarker(v string) *OriginAccessIdentityList {
12153	s.NextMarker = &v
12154	return s
12155}
12156
12157// SetQuantity sets the Quantity field's value.
12158func (s *OriginAccessIdentityList) SetQuantity(v int64) *OriginAccessIdentityList {
12159	s.Quantity = &v
12160	return s
12161}
12162
12163// Summary of the information about a CloudFront origin access identity.
12164type OriginAccessIdentitySummary struct {
12165	_ struct{} `type:"structure"`
12166
12167	// The comment for this origin access identity, as originally specified when
12168	// created.
12169	//
12170	// Comment is a required field
12171	Comment *string `type:"string" required:"true"`
12172
12173	// The ID for the origin access identity. For example: E74FTE3AJFJ256A.
12174	//
12175	// Id is a required field
12176	Id *string `type:"string" required:"true"`
12177
12178	// The Amazon S3 canonical user ID for the origin access identity, which you
12179	// use when giving the origin access identity read permission to an object in
12180	// Amazon S3.
12181	//
12182	// S3CanonicalUserId is a required field
12183	S3CanonicalUserId *string `type:"string" required:"true"`
12184}
12185
12186// String returns the string representation
12187func (s OriginAccessIdentitySummary) String() string {
12188	return awsutil.Prettify(s)
12189}
12190
12191// GoString returns the string representation
12192func (s OriginAccessIdentitySummary) GoString() string {
12193	return s.String()
12194}
12195
12196// SetComment sets the Comment field's value.
12197func (s *OriginAccessIdentitySummary) SetComment(v string) *OriginAccessIdentitySummary {
12198	s.Comment = &v
12199	return s
12200}
12201
12202// SetId sets the Id field's value.
12203func (s *OriginAccessIdentitySummary) SetId(v string) *OriginAccessIdentitySummary {
12204	s.Id = &v
12205	return s
12206}
12207
12208// SetS3CanonicalUserId sets the S3CanonicalUserId field's value.
12209func (s *OriginAccessIdentitySummary) SetS3CanonicalUserId(v string) *OriginAccessIdentitySummary {
12210	s.S3CanonicalUserId = &v
12211	return s
12212}
12213
12214// A complex type that contains HeaderName and HeaderValue elements, if any,
12215// for this distribution.
12216type OriginCustomHeader struct {
12217	_ struct{} `type:"structure"`
12218
12219	// The name of a header that you want CloudFront to forward to your origin.
12220	// For more information, see Forwarding Custom Headers to Your Origin (Web Distributions
12221	// Only) (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/forward-custom-headers.html)
12222	// in the Amazon CloudFront Developer Guide.
12223	//
12224	// HeaderName is a required field
12225	HeaderName *string `type:"string" required:"true"`
12226
12227	// The value for the header that you specified in the HeaderName field.
12228	//
12229	// HeaderValue is a required field
12230	HeaderValue *string `type:"string" required:"true"`
12231}
12232
12233// String returns the string representation
12234func (s OriginCustomHeader) String() string {
12235	return awsutil.Prettify(s)
12236}
12237
12238// GoString returns the string representation
12239func (s OriginCustomHeader) GoString() string {
12240	return s.String()
12241}
12242
12243// Validate inspects the fields of the type to determine if they are valid.
12244func (s *OriginCustomHeader) Validate() error {
12245	invalidParams := request.ErrInvalidParams{Context: "OriginCustomHeader"}
12246	if s.HeaderName == nil {
12247		invalidParams.Add(request.NewErrParamRequired("HeaderName"))
12248	}
12249	if s.HeaderValue == nil {
12250		invalidParams.Add(request.NewErrParamRequired("HeaderValue"))
12251	}
12252
12253	if invalidParams.Len() > 0 {
12254		return invalidParams
12255	}
12256	return nil
12257}
12258
12259// SetHeaderName sets the HeaderName field's value.
12260func (s *OriginCustomHeader) SetHeaderName(v string) *OriginCustomHeader {
12261	s.HeaderName = &v
12262	return s
12263}
12264
12265// SetHeaderValue sets the HeaderValue field's value.
12266func (s *OriginCustomHeader) SetHeaderValue(v string) *OriginCustomHeader {
12267	s.HeaderValue = &v
12268	return s
12269}
12270
12271// An origin group includes two origins (a primary origin and a second origin
12272// to failover to) and a failover criteria that you specify. You create an origin
12273// group to support origin failover in CloudFront. When you create or update
12274// a distribution, you can specifiy the origin group instead of a single origin,
12275// and CloudFront will failover from the primary origin to the second origin
12276// under the failover conditions that you've chosen.
12277type OriginGroup struct {
12278	_ struct{} `type:"structure"`
12279
12280	// A complex type that contains information about the failover criteria for
12281	// an origin group.
12282	//
12283	// FailoverCriteria is a required field
12284	FailoverCriteria *OriginGroupFailoverCriteria `type:"structure" required:"true"`
12285
12286	// The origin group's ID.
12287	//
12288	// Id is a required field
12289	Id *string `type:"string" required:"true"`
12290
12291	// A complex type that contains information about the origins in an origin group.
12292	//
12293	// Members is a required field
12294	Members *OriginGroupMembers `type:"structure" required:"true"`
12295}
12296
12297// String returns the string representation
12298func (s OriginGroup) String() string {
12299	return awsutil.Prettify(s)
12300}
12301
12302// GoString returns the string representation
12303func (s OriginGroup) GoString() string {
12304	return s.String()
12305}
12306
12307// Validate inspects the fields of the type to determine if they are valid.
12308func (s *OriginGroup) Validate() error {
12309	invalidParams := request.ErrInvalidParams{Context: "OriginGroup"}
12310	if s.FailoverCriteria == nil {
12311		invalidParams.Add(request.NewErrParamRequired("FailoverCriteria"))
12312	}
12313	if s.Id == nil {
12314		invalidParams.Add(request.NewErrParamRequired("Id"))
12315	}
12316	if s.Members == nil {
12317		invalidParams.Add(request.NewErrParamRequired("Members"))
12318	}
12319	if s.FailoverCriteria != nil {
12320		if err := s.FailoverCriteria.Validate(); err != nil {
12321			invalidParams.AddNested("FailoverCriteria", err.(request.ErrInvalidParams))
12322		}
12323	}
12324	if s.Members != nil {
12325		if err := s.Members.Validate(); err != nil {
12326			invalidParams.AddNested("Members", err.(request.ErrInvalidParams))
12327		}
12328	}
12329
12330	if invalidParams.Len() > 0 {
12331		return invalidParams
12332	}
12333	return nil
12334}
12335
12336// SetFailoverCriteria sets the FailoverCriteria field's value.
12337func (s *OriginGroup) SetFailoverCriteria(v *OriginGroupFailoverCriteria) *OriginGroup {
12338	s.FailoverCriteria = v
12339	return s
12340}
12341
12342// SetId sets the Id field's value.
12343func (s *OriginGroup) SetId(v string) *OriginGroup {
12344	s.Id = &v
12345	return s
12346}
12347
12348// SetMembers sets the Members field's value.
12349func (s *OriginGroup) SetMembers(v *OriginGroupMembers) *OriginGroup {
12350	s.Members = v
12351	return s
12352}
12353
12354// A complex data type that includes information about the failover criteria
12355// for an origin group, including the status codes for which CloudFront will
12356// failover from the primary origin to the second origin.
12357type OriginGroupFailoverCriteria struct {
12358	_ struct{} `type:"structure"`
12359
12360	// The status codes that, when returned from the primary origin, will trigger
12361	// CloudFront to failover to the second origin.
12362	//
12363	// StatusCodes is a required field
12364	StatusCodes *StatusCodes `type:"structure" required:"true"`
12365}
12366
12367// String returns the string representation
12368func (s OriginGroupFailoverCriteria) String() string {
12369	return awsutil.Prettify(s)
12370}
12371
12372// GoString returns the string representation
12373func (s OriginGroupFailoverCriteria) GoString() string {
12374	return s.String()
12375}
12376
12377// Validate inspects the fields of the type to determine if they are valid.
12378func (s *OriginGroupFailoverCriteria) Validate() error {
12379	invalidParams := request.ErrInvalidParams{Context: "OriginGroupFailoverCriteria"}
12380	if s.StatusCodes == nil {
12381		invalidParams.Add(request.NewErrParamRequired("StatusCodes"))
12382	}
12383	if s.StatusCodes != nil {
12384		if err := s.StatusCodes.Validate(); err != nil {
12385			invalidParams.AddNested("StatusCodes", err.(request.ErrInvalidParams))
12386		}
12387	}
12388
12389	if invalidParams.Len() > 0 {
12390		return invalidParams
12391	}
12392	return nil
12393}
12394
12395// SetStatusCodes sets the StatusCodes field's value.
12396func (s *OriginGroupFailoverCriteria) SetStatusCodes(v *StatusCodes) *OriginGroupFailoverCriteria {
12397	s.StatusCodes = v
12398	return s
12399}
12400
12401// An origin in an origin group.
12402type OriginGroupMember struct {
12403	_ struct{} `type:"structure"`
12404
12405	// The ID for an origin in an origin group.
12406	//
12407	// OriginId is a required field
12408	OriginId *string `type:"string" required:"true"`
12409}
12410
12411// String returns the string representation
12412func (s OriginGroupMember) String() string {
12413	return awsutil.Prettify(s)
12414}
12415
12416// GoString returns the string representation
12417func (s OriginGroupMember) GoString() string {
12418	return s.String()
12419}
12420
12421// Validate inspects the fields of the type to determine if they are valid.
12422func (s *OriginGroupMember) Validate() error {
12423	invalidParams := request.ErrInvalidParams{Context: "OriginGroupMember"}
12424	if s.OriginId == nil {
12425		invalidParams.Add(request.NewErrParamRequired("OriginId"))
12426	}
12427
12428	if invalidParams.Len() > 0 {
12429		return invalidParams
12430	}
12431	return nil
12432}
12433
12434// SetOriginId sets the OriginId field's value.
12435func (s *OriginGroupMember) SetOriginId(v string) *OriginGroupMember {
12436	s.OriginId = &v
12437	return s
12438}
12439
12440// A complex data type for the origins included in an origin group.
12441type OriginGroupMembers struct {
12442	_ struct{} `type:"structure"`
12443
12444	// Items (origins) in an origin group.
12445	//
12446	// Items is a required field
12447	Items []*OriginGroupMember `locationNameList:"OriginGroupMember" min:"2" type:"list" required:"true"`
12448
12449	// The number of origins in an origin group.
12450	//
12451	// Quantity is a required field
12452	Quantity *int64 `type:"integer" required:"true"`
12453}
12454
12455// String returns the string representation
12456func (s OriginGroupMembers) String() string {
12457	return awsutil.Prettify(s)
12458}
12459
12460// GoString returns the string representation
12461func (s OriginGroupMembers) GoString() string {
12462	return s.String()
12463}
12464
12465// Validate inspects the fields of the type to determine if they are valid.
12466func (s *OriginGroupMembers) Validate() error {
12467	invalidParams := request.ErrInvalidParams{Context: "OriginGroupMembers"}
12468	if s.Items == nil {
12469		invalidParams.Add(request.NewErrParamRequired("Items"))
12470	}
12471	if s.Items != nil && len(s.Items) < 2 {
12472		invalidParams.Add(request.NewErrParamMinLen("Items", 2))
12473	}
12474	if s.Quantity == nil {
12475		invalidParams.Add(request.NewErrParamRequired("Quantity"))
12476	}
12477	if s.Items != nil {
12478		for i, v := range s.Items {
12479			if v == nil {
12480				continue
12481			}
12482			if err := v.Validate(); err != nil {
12483				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
12484			}
12485		}
12486	}
12487
12488	if invalidParams.Len() > 0 {
12489		return invalidParams
12490	}
12491	return nil
12492}
12493
12494// SetItems sets the Items field's value.
12495func (s *OriginGroupMembers) SetItems(v []*OriginGroupMember) *OriginGroupMembers {
12496	s.Items = v
12497	return s
12498}
12499
12500// SetQuantity sets the Quantity field's value.
12501func (s *OriginGroupMembers) SetQuantity(v int64) *OriginGroupMembers {
12502	s.Quantity = &v
12503	return s
12504}
12505
12506// A complex data type for the origin groups specified for a distribution.
12507type OriginGroups struct {
12508	_ struct{} `type:"structure"`
12509
12510	// The items (origin groups) in a distribution.
12511	Items []*OriginGroup `locationNameList:"OriginGroup" type:"list"`
12512
12513	// The number of origin groups.
12514	//
12515	// Quantity is a required field
12516	Quantity *int64 `type:"integer" required:"true"`
12517}
12518
12519// String returns the string representation
12520func (s OriginGroups) String() string {
12521	return awsutil.Prettify(s)
12522}
12523
12524// GoString returns the string representation
12525func (s OriginGroups) GoString() string {
12526	return s.String()
12527}
12528
12529// Validate inspects the fields of the type to determine if they are valid.
12530func (s *OriginGroups) Validate() error {
12531	invalidParams := request.ErrInvalidParams{Context: "OriginGroups"}
12532	if s.Quantity == nil {
12533		invalidParams.Add(request.NewErrParamRequired("Quantity"))
12534	}
12535	if s.Items != nil {
12536		for i, v := range s.Items {
12537			if v == nil {
12538				continue
12539			}
12540			if err := v.Validate(); err != nil {
12541				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
12542			}
12543		}
12544	}
12545
12546	if invalidParams.Len() > 0 {
12547		return invalidParams
12548	}
12549	return nil
12550}
12551
12552// SetItems sets the Items field's value.
12553func (s *OriginGroups) SetItems(v []*OriginGroup) *OriginGroups {
12554	s.Items = v
12555	return s
12556}
12557
12558// SetQuantity sets the Quantity field's value.
12559func (s *OriginGroups) SetQuantity(v int64) *OriginGroups {
12560	s.Quantity = &v
12561	return s
12562}
12563
12564// A complex type that contains information about the SSL/TLS protocols that
12565// CloudFront can use when establishing an HTTPS connection with your origin.
12566type OriginSslProtocols struct {
12567	_ struct{} `type:"structure"`
12568
12569	// A list that contains allowed SSL/TLS protocols for this distribution.
12570	//
12571	// Items is a required field
12572	Items []*string `locationNameList:"SslProtocol" type:"list" required:"true"`
12573
12574	// The number of SSL/TLS protocols that you want to allow CloudFront to use
12575	// when establishing an HTTPS connection with this origin.
12576	//
12577	// Quantity is a required field
12578	Quantity *int64 `type:"integer" required:"true"`
12579}
12580
12581// String returns the string representation
12582func (s OriginSslProtocols) String() string {
12583	return awsutil.Prettify(s)
12584}
12585
12586// GoString returns the string representation
12587func (s OriginSslProtocols) GoString() string {
12588	return s.String()
12589}
12590
12591// Validate inspects the fields of the type to determine if they are valid.
12592func (s *OriginSslProtocols) Validate() error {
12593	invalidParams := request.ErrInvalidParams{Context: "OriginSslProtocols"}
12594	if s.Items == nil {
12595		invalidParams.Add(request.NewErrParamRequired("Items"))
12596	}
12597	if s.Quantity == nil {
12598		invalidParams.Add(request.NewErrParamRequired("Quantity"))
12599	}
12600
12601	if invalidParams.Len() > 0 {
12602		return invalidParams
12603	}
12604	return nil
12605}
12606
12607// SetItems sets the Items field's value.
12608func (s *OriginSslProtocols) SetItems(v []*string) *OriginSslProtocols {
12609	s.Items = v
12610	return s
12611}
12612
12613// SetQuantity sets the Quantity field's value.
12614func (s *OriginSslProtocols) SetQuantity(v int64) *OriginSslProtocols {
12615	s.Quantity = &v
12616	return s
12617}
12618
12619// A complex type that contains information about origins and origin groups
12620// for this distribution.
12621type Origins struct {
12622	_ struct{} `type:"structure"`
12623
12624	// A complex type that contains origins or origin groups for this distribution.
12625	//
12626	// Items is a required field
12627	Items []*Origin `locationNameList:"Origin" min:"1" type:"list" required:"true"`
12628
12629	// The number of origins or origin groups for this distribution.
12630	//
12631	// Quantity is a required field
12632	Quantity *int64 `type:"integer" required:"true"`
12633}
12634
12635// String returns the string representation
12636func (s Origins) String() string {
12637	return awsutil.Prettify(s)
12638}
12639
12640// GoString returns the string representation
12641func (s Origins) GoString() string {
12642	return s.String()
12643}
12644
12645// Validate inspects the fields of the type to determine if they are valid.
12646func (s *Origins) Validate() error {
12647	invalidParams := request.ErrInvalidParams{Context: "Origins"}
12648	if s.Items == nil {
12649		invalidParams.Add(request.NewErrParamRequired("Items"))
12650	}
12651	if s.Items != nil && len(s.Items) < 1 {
12652		invalidParams.Add(request.NewErrParamMinLen("Items", 1))
12653	}
12654	if s.Quantity == nil {
12655		invalidParams.Add(request.NewErrParamRequired("Quantity"))
12656	}
12657	if s.Items != nil {
12658		for i, v := range s.Items {
12659			if v == nil {
12660				continue
12661			}
12662			if err := v.Validate(); err != nil {
12663				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
12664			}
12665		}
12666	}
12667
12668	if invalidParams.Len() > 0 {
12669		return invalidParams
12670	}
12671	return nil
12672}
12673
12674// SetItems sets the Items field's value.
12675func (s *Origins) SetItems(v []*Origin) *Origins {
12676	s.Items = v
12677	return s
12678}
12679
12680// SetQuantity sets the Quantity field's value.
12681func (s *Origins) SetQuantity(v int64) *Origins {
12682	s.Quantity = &v
12683	return s
12684}
12685
12686// A complex type that contains information about the objects that you want
12687// to invalidate. For more information, see Specifying the Objects to Invalidate
12688// (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidation-specifying-objects)
12689// in the Amazon CloudFront Developer Guide.
12690type Paths struct {
12691	_ struct{} `type:"structure"`
12692
12693	// A complex type that contains a list of the paths that you want to invalidate.
12694	Items []*string `locationNameList:"Path" type:"list"`
12695
12696	// The number of invalidation paths specified for the objects that you want
12697	// to invalidate.
12698	//
12699	// Quantity is a required field
12700	Quantity *int64 `type:"integer" required:"true"`
12701}
12702
12703// String returns the string representation
12704func (s Paths) String() string {
12705	return awsutil.Prettify(s)
12706}
12707
12708// GoString returns the string representation
12709func (s Paths) GoString() string {
12710	return s.String()
12711}
12712
12713// Validate inspects the fields of the type to determine if they are valid.
12714func (s *Paths) Validate() error {
12715	invalidParams := request.ErrInvalidParams{Context: "Paths"}
12716	if s.Quantity == nil {
12717		invalidParams.Add(request.NewErrParamRequired("Quantity"))
12718	}
12719
12720	if invalidParams.Len() > 0 {
12721		return invalidParams
12722	}
12723	return nil
12724}
12725
12726// SetItems sets the Items field's value.
12727func (s *Paths) SetItems(v []*string) *Paths {
12728	s.Items = v
12729	return s
12730}
12731
12732// SetQuantity sets the Quantity field's value.
12733func (s *Paths) SetQuantity(v int64) *Paths {
12734	s.Quantity = &v
12735	return s
12736}
12737
12738// A complex data type of public keys you add to CloudFront to use with features
12739// like field-level encryption.
12740type PublicKey struct {
12741	_ struct{} `type:"structure"`
12742
12743	// A time you added a public key to CloudFront.
12744	//
12745	// CreatedTime is a required field
12746	CreatedTime *time.Time `type:"timestamp" required:"true"`
12747
12748	// A unique ID assigned to a public key you've added to CloudFront.
12749	//
12750	// Id is a required field
12751	Id *string `type:"string" required:"true"`
12752
12753	// A complex data type for a public key you add to CloudFront to use with features
12754	// like field-level encryption.
12755	//
12756	// PublicKeyConfig is a required field
12757	PublicKeyConfig *PublicKeyConfig `type:"structure" required:"true"`
12758}
12759
12760// String returns the string representation
12761func (s PublicKey) String() string {
12762	return awsutil.Prettify(s)
12763}
12764
12765// GoString returns the string representation
12766func (s PublicKey) GoString() string {
12767	return s.String()
12768}
12769
12770// SetCreatedTime sets the CreatedTime field's value.
12771func (s *PublicKey) SetCreatedTime(v time.Time) *PublicKey {
12772	s.CreatedTime = &v
12773	return s
12774}
12775
12776// SetId sets the Id field's value.
12777func (s *PublicKey) SetId(v string) *PublicKey {
12778	s.Id = &v
12779	return s
12780}
12781
12782// SetPublicKeyConfig sets the PublicKeyConfig field's value.
12783func (s *PublicKey) SetPublicKeyConfig(v *PublicKeyConfig) *PublicKey {
12784	s.PublicKeyConfig = v
12785	return s
12786}
12787
12788// Information about a public key you add to CloudFront to use with features
12789// like field-level encryption.
12790type PublicKeyConfig struct {
12791	_ struct{} `type:"structure"`
12792
12793	// A unique number that ensures that the request can't be replayed.
12794	//
12795	// CallerReference is a required field
12796	CallerReference *string `type:"string" required:"true"`
12797
12798	// An optional comment about a public key.
12799	Comment *string `type:"string"`
12800
12801	// The encoded public key that you want to add to CloudFront to use with features
12802	// like field-level encryption.
12803	//
12804	// EncodedKey is a required field
12805	EncodedKey *string `type:"string" required:"true"`
12806
12807	// The name for a public key you add to CloudFront to use with features like
12808	// field-level encryption.
12809	//
12810	// Name is a required field
12811	Name *string `type:"string" required:"true"`
12812}
12813
12814// String returns the string representation
12815func (s PublicKeyConfig) String() string {
12816	return awsutil.Prettify(s)
12817}
12818
12819// GoString returns the string representation
12820func (s PublicKeyConfig) GoString() string {
12821	return s.String()
12822}
12823
12824// Validate inspects the fields of the type to determine if they are valid.
12825func (s *PublicKeyConfig) Validate() error {
12826	invalidParams := request.ErrInvalidParams{Context: "PublicKeyConfig"}
12827	if s.CallerReference == nil {
12828		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
12829	}
12830	if s.EncodedKey == nil {
12831		invalidParams.Add(request.NewErrParamRequired("EncodedKey"))
12832	}
12833	if s.Name == nil {
12834		invalidParams.Add(request.NewErrParamRequired("Name"))
12835	}
12836
12837	if invalidParams.Len() > 0 {
12838		return invalidParams
12839	}
12840	return nil
12841}
12842
12843// SetCallerReference sets the CallerReference field's value.
12844func (s *PublicKeyConfig) SetCallerReference(v string) *PublicKeyConfig {
12845	s.CallerReference = &v
12846	return s
12847}
12848
12849// SetComment sets the Comment field's value.
12850func (s *PublicKeyConfig) SetComment(v string) *PublicKeyConfig {
12851	s.Comment = &v
12852	return s
12853}
12854
12855// SetEncodedKey sets the EncodedKey field's value.
12856func (s *PublicKeyConfig) SetEncodedKey(v string) *PublicKeyConfig {
12857	s.EncodedKey = &v
12858	return s
12859}
12860
12861// SetName sets the Name field's value.
12862func (s *PublicKeyConfig) SetName(v string) *PublicKeyConfig {
12863	s.Name = &v
12864	return s
12865}
12866
12867// A list of public keys you've added to CloudFront to use with features like
12868// field-level encryption.
12869type PublicKeyList struct {
12870	_ struct{} `type:"structure"`
12871
12872	// An array of information about a public key you add to CloudFront to use with
12873	// features like field-level encryption.
12874	Items []*PublicKeySummary `locationNameList:"PublicKeySummary" type:"list"`
12875
12876	// The maximum number of public keys you want in the response body.
12877	//
12878	// MaxItems is a required field
12879	MaxItems *int64 `type:"integer" required:"true"`
12880
12881	// If there are more elements to be listed, this element is present and contains
12882	// the value that you can use for the Marker request parameter to continue listing
12883	// your public keys where you left off.
12884	NextMarker *string `type:"string"`
12885
12886	// The number of public keys you added to CloudFront to use with features like
12887	// field-level encryption.
12888	//
12889	// Quantity is a required field
12890	Quantity *int64 `type:"integer" required:"true"`
12891}
12892
12893// String returns the string representation
12894func (s PublicKeyList) String() string {
12895	return awsutil.Prettify(s)
12896}
12897
12898// GoString returns the string representation
12899func (s PublicKeyList) GoString() string {
12900	return s.String()
12901}
12902
12903// SetItems sets the Items field's value.
12904func (s *PublicKeyList) SetItems(v []*PublicKeySummary) *PublicKeyList {
12905	s.Items = v
12906	return s
12907}
12908
12909// SetMaxItems sets the MaxItems field's value.
12910func (s *PublicKeyList) SetMaxItems(v int64) *PublicKeyList {
12911	s.MaxItems = &v
12912	return s
12913}
12914
12915// SetNextMarker sets the NextMarker field's value.
12916func (s *PublicKeyList) SetNextMarker(v string) *PublicKeyList {
12917	s.NextMarker = &v
12918	return s
12919}
12920
12921// SetQuantity sets the Quantity field's value.
12922func (s *PublicKeyList) SetQuantity(v int64) *PublicKeyList {
12923	s.Quantity = &v
12924	return s
12925}
12926
12927// A complex data type for public key information.
12928type PublicKeySummary struct {
12929	_ struct{} `type:"structure"`
12930
12931	// Comment for public key information summary.
12932	Comment *string `type:"string"`
12933
12934	// Creation time for public key information summary.
12935	//
12936	// CreatedTime is a required field
12937	CreatedTime *time.Time `type:"timestamp" required:"true"`
12938
12939	// Encoded key for public key information summary.
12940	//
12941	// EncodedKey is a required field
12942	EncodedKey *string `type:"string" required:"true"`
12943
12944	// ID for public key information summary.
12945	//
12946	// Id is a required field
12947	Id *string `type:"string" required:"true"`
12948
12949	// Name for public key information summary.
12950	//
12951	// Name is a required field
12952	Name *string `type:"string" required:"true"`
12953}
12954
12955// String returns the string representation
12956func (s PublicKeySummary) String() string {
12957	return awsutil.Prettify(s)
12958}
12959
12960// GoString returns the string representation
12961func (s PublicKeySummary) GoString() string {
12962	return s.String()
12963}
12964
12965// SetComment sets the Comment field's value.
12966func (s *PublicKeySummary) SetComment(v string) *PublicKeySummary {
12967	s.Comment = &v
12968	return s
12969}
12970
12971// SetCreatedTime sets the CreatedTime field's value.
12972func (s *PublicKeySummary) SetCreatedTime(v time.Time) *PublicKeySummary {
12973	s.CreatedTime = &v
12974	return s
12975}
12976
12977// SetEncodedKey sets the EncodedKey field's value.
12978func (s *PublicKeySummary) SetEncodedKey(v string) *PublicKeySummary {
12979	s.EncodedKey = &v
12980	return s
12981}
12982
12983// SetId sets the Id field's value.
12984func (s *PublicKeySummary) SetId(v string) *PublicKeySummary {
12985	s.Id = &v
12986	return s
12987}
12988
12989// SetName sets the Name field's value.
12990func (s *PublicKeySummary) SetName(v string) *PublicKeySummary {
12991	s.Name = &v
12992	return s
12993}
12994
12995// Query argument-profile mapping for field-level encryption.
12996type QueryArgProfile struct {
12997	_ struct{} `type:"structure"`
12998
12999	// ID of profile to use for field-level encryption query argument-profile mapping
13000	//
13001	// ProfileId is a required field
13002	ProfileId *string `type:"string" required:"true"`
13003
13004	// Query argument for field-level encryption query argument-profile mapping.
13005	//
13006	// QueryArg is a required field
13007	QueryArg *string `type:"string" required:"true"`
13008}
13009
13010// String returns the string representation
13011func (s QueryArgProfile) String() string {
13012	return awsutil.Prettify(s)
13013}
13014
13015// GoString returns the string representation
13016func (s QueryArgProfile) GoString() string {
13017	return s.String()
13018}
13019
13020// Validate inspects the fields of the type to determine if they are valid.
13021func (s *QueryArgProfile) Validate() error {
13022	invalidParams := request.ErrInvalidParams{Context: "QueryArgProfile"}
13023	if s.ProfileId == nil {
13024		invalidParams.Add(request.NewErrParamRequired("ProfileId"))
13025	}
13026	if s.QueryArg == nil {
13027		invalidParams.Add(request.NewErrParamRequired("QueryArg"))
13028	}
13029
13030	if invalidParams.Len() > 0 {
13031		return invalidParams
13032	}
13033	return nil
13034}
13035
13036// SetProfileId sets the ProfileId field's value.
13037func (s *QueryArgProfile) SetProfileId(v string) *QueryArgProfile {
13038	s.ProfileId = &v
13039	return s
13040}
13041
13042// SetQueryArg sets the QueryArg field's value.
13043func (s *QueryArgProfile) SetQueryArg(v string) *QueryArgProfile {
13044	s.QueryArg = &v
13045	return s
13046}
13047
13048// Configuration for query argument-profile mapping for field-level encryption.
13049type QueryArgProfileConfig struct {
13050	_ struct{} `type:"structure"`
13051
13052	// Flag to set if you want a request to be forwarded to the origin even if the
13053	// profile specified by the field-level encryption query argument, fle-profile,
13054	// is unknown.
13055	//
13056	// ForwardWhenQueryArgProfileIsUnknown is a required field
13057	ForwardWhenQueryArgProfileIsUnknown *bool `type:"boolean" required:"true"`
13058
13059	// Profiles specified for query argument-profile mapping for field-level encryption.
13060	QueryArgProfiles *QueryArgProfiles `type:"structure"`
13061}
13062
13063// String returns the string representation
13064func (s QueryArgProfileConfig) String() string {
13065	return awsutil.Prettify(s)
13066}
13067
13068// GoString returns the string representation
13069func (s QueryArgProfileConfig) GoString() string {
13070	return s.String()
13071}
13072
13073// Validate inspects the fields of the type to determine if they are valid.
13074func (s *QueryArgProfileConfig) Validate() error {
13075	invalidParams := request.ErrInvalidParams{Context: "QueryArgProfileConfig"}
13076	if s.ForwardWhenQueryArgProfileIsUnknown == nil {
13077		invalidParams.Add(request.NewErrParamRequired("ForwardWhenQueryArgProfileIsUnknown"))
13078	}
13079	if s.QueryArgProfiles != nil {
13080		if err := s.QueryArgProfiles.Validate(); err != nil {
13081			invalidParams.AddNested("QueryArgProfiles", err.(request.ErrInvalidParams))
13082		}
13083	}
13084
13085	if invalidParams.Len() > 0 {
13086		return invalidParams
13087	}
13088	return nil
13089}
13090
13091// SetForwardWhenQueryArgProfileIsUnknown sets the ForwardWhenQueryArgProfileIsUnknown field's value.
13092func (s *QueryArgProfileConfig) SetForwardWhenQueryArgProfileIsUnknown(v bool) *QueryArgProfileConfig {
13093	s.ForwardWhenQueryArgProfileIsUnknown = &v
13094	return s
13095}
13096
13097// SetQueryArgProfiles sets the QueryArgProfiles field's value.
13098func (s *QueryArgProfileConfig) SetQueryArgProfiles(v *QueryArgProfiles) *QueryArgProfileConfig {
13099	s.QueryArgProfiles = v
13100	return s
13101}
13102
13103// Query argument-profile mapping for field-level encryption.
13104type QueryArgProfiles struct {
13105	_ struct{} `type:"structure"`
13106
13107	// Number of items for query argument-profile mapping for field-level encryption.
13108	Items []*QueryArgProfile `locationNameList:"QueryArgProfile" type:"list"`
13109
13110	// Number of profiles for query argument-profile mapping for field-level encryption.
13111	//
13112	// Quantity is a required field
13113	Quantity *int64 `type:"integer" required:"true"`
13114}
13115
13116// String returns the string representation
13117func (s QueryArgProfiles) String() string {
13118	return awsutil.Prettify(s)
13119}
13120
13121// GoString returns the string representation
13122func (s QueryArgProfiles) GoString() string {
13123	return s.String()
13124}
13125
13126// Validate inspects the fields of the type to determine if they are valid.
13127func (s *QueryArgProfiles) Validate() error {
13128	invalidParams := request.ErrInvalidParams{Context: "QueryArgProfiles"}
13129	if s.Quantity == nil {
13130		invalidParams.Add(request.NewErrParamRequired("Quantity"))
13131	}
13132	if s.Items != nil {
13133		for i, v := range s.Items {
13134			if v == nil {
13135				continue
13136			}
13137			if err := v.Validate(); err != nil {
13138				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
13139			}
13140		}
13141	}
13142
13143	if invalidParams.Len() > 0 {
13144		return invalidParams
13145	}
13146	return nil
13147}
13148
13149// SetItems sets the Items field's value.
13150func (s *QueryArgProfiles) SetItems(v []*QueryArgProfile) *QueryArgProfiles {
13151	s.Items = v
13152	return s
13153}
13154
13155// SetQuantity sets the Quantity field's value.
13156func (s *QueryArgProfiles) SetQuantity(v int64) *QueryArgProfiles {
13157	s.Quantity = &v
13158	return s
13159}
13160
13161// A complex type that contains information about the query string parameters
13162// that you want CloudFront to use for caching for a cache behavior.
13163type QueryStringCacheKeys struct {
13164	_ struct{} `type:"structure"`
13165
13166	// A list that contains the query string parameters that you want CloudFront
13167	// to use as a basis for caching for a cache behavior. If Quantity is 0, you
13168	// can omit Items.
13169	Items []*string `locationNameList:"Name" type:"list"`
13170
13171	// The number of whitelisted query string parameters for a cache behavior.
13172	//
13173	// Quantity is a required field
13174	Quantity *int64 `type:"integer" required:"true"`
13175}
13176
13177// String returns the string representation
13178func (s QueryStringCacheKeys) String() string {
13179	return awsutil.Prettify(s)
13180}
13181
13182// GoString returns the string representation
13183func (s QueryStringCacheKeys) GoString() string {
13184	return s.String()
13185}
13186
13187// Validate inspects the fields of the type to determine if they are valid.
13188func (s *QueryStringCacheKeys) Validate() error {
13189	invalidParams := request.ErrInvalidParams{Context: "QueryStringCacheKeys"}
13190	if s.Quantity == nil {
13191		invalidParams.Add(request.NewErrParamRequired("Quantity"))
13192	}
13193
13194	if invalidParams.Len() > 0 {
13195		return invalidParams
13196	}
13197	return nil
13198}
13199
13200// SetItems sets the Items field's value.
13201func (s *QueryStringCacheKeys) SetItems(v []*string) *QueryStringCacheKeys {
13202	s.Items = v
13203	return s
13204}
13205
13206// SetQuantity sets the Quantity field's value.
13207func (s *QueryStringCacheKeys) SetQuantity(v int64) *QueryStringCacheKeys {
13208	s.Quantity = &v
13209	return s
13210}
13211
13212// A complex type that identifies ways in which you want to restrict distribution
13213// of your content.
13214type Restrictions struct {
13215	_ struct{} `type:"structure"`
13216
13217	// A complex type that controls the countries in which your content is distributed.
13218	// CloudFront determines the location of your users using MaxMind GeoIP databases.
13219	//
13220	// GeoRestriction is a required field
13221	GeoRestriction *GeoRestriction `type:"structure" required:"true"`
13222}
13223
13224// String returns the string representation
13225func (s Restrictions) String() string {
13226	return awsutil.Prettify(s)
13227}
13228
13229// GoString returns the string representation
13230func (s Restrictions) GoString() string {
13231	return s.String()
13232}
13233
13234// Validate inspects the fields of the type to determine if they are valid.
13235func (s *Restrictions) Validate() error {
13236	invalidParams := request.ErrInvalidParams{Context: "Restrictions"}
13237	if s.GeoRestriction == nil {
13238		invalidParams.Add(request.NewErrParamRequired("GeoRestriction"))
13239	}
13240	if s.GeoRestriction != nil {
13241		if err := s.GeoRestriction.Validate(); err != nil {
13242			invalidParams.AddNested("GeoRestriction", err.(request.ErrInvalidParams))
13243		}
13244	}
13245
13246	if invalidParams.Len() > 0 {
13247		return invalidParams
13248	}
13249	return nil
13250}
13251
13252// SetGeoRestriction sets the GeoRestriction field's value.
13253func (s *Restrictions) SetGeoRestriction(v *GeoRestriction) *Restrictions {
13254	s.GeoRestriction = v
13255	return s
13256}
13257
13258// A complex type that contains information about the Amazon S3 bucket from
13259// which you want CloudFront to get your media files for distribution.
13260type S3Origin struct {
13261	_ struct{} `type:"structure"`
13262
13263	// The DNS name of the Amazon S3 origin.
13264	//
13265	// DomainName is a required field
13266	DomainName *string `type:"string" required:"true"`
13267
13268	// The CloudFront origin access identity to associate with the distribution.
13269	// Use an origin access identity to configure the distribution so that end users
13270	// can only access objects in an Amazon S3 bucket through CloudFront.
13271	//
13272	// If you want end users to be able to access objects using either the CloudFront
13273	// URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element.
13274	//
13275	// To delete the origin access identity from an existing distribution, update
13276	// the distribution configuration and include an empty OriginAccessIdentity
13277	// element.
13278	//
13279	// To replace the origin access identity, update the distribution configuration
13280	// and specify the new origin access identity.
13281	//
13282	// For more information, see Using an Origin Access Identity to Restrict Access
13283	// to Your Amazon S3 Content (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)
13284	// in the Amazon CloudFront Developer Guide.
13285	//
13286	// OriginAccessIdentity is a required field
13287	OriginAccessIdentity *string `type:"string" required:"true"`
13288}
13289
13290// String returns the string representation
13291func (s S3Origin) String() string {
13292	return awsutil.Prettify(s)
13293}
13294
13295// GoString returns the string representation
13296func (s S3Origin) GoString() string {
13297	return s.String()
13298}
13299
13300// Validate inspects the fields of the type to determine if they are valid.
13301func (s *S3Origin) Validate() error {
13302	invalidParams := request.ErrInvalidParams{Context: "S3Origin"}
13303	if s.DomainName == nil {
13304		invalidParams.Add(request.NewErrParamRequired("DomainName"))
13305	}
13306	if s.OriginAccessIdentity == nil {
13307		invalidParams.Add(request.NewErrParamRequired("OriginAccessIdentity"))
13308	}
13309
13310	if invalidParams.Len() > 0 {
13311		return invalidParams
13312	}
13313	return nil
13314}
13315
13316// SetDomainName sets the DomainName field's value.
13317func (s *S3Origin) SetDomainName(v string) *S3Origin {
13318	s.DomainName = &v
13319	return s
13320}
13321
13322// SetOriginAccessIdentity sets the OriginAccessIdentity field's value.
13323func (s *S3Origin) SetOriginAccessIdentity(v string) *S3Origin {
13324	s.OriginAccessIdentity = &v
13325	return s
13326}
13327
13328// A complex type that contains information about the Amazon S3 origin. If the
13329// origin is a custom origin, use the CustomOriginConfig element instead.
13330type S3OriginConfig struct {
13331	_ struct{} `type:"structure"`
13332
13333	// The CloudFront origin access identity to associate with the origin. Use an
13334	// origin access identity to configure the origin so that viewers can only access
13335	// objects in an Amazon S3 bucket through CloudFront. The format of the value
13336	// is:
13337	//
13338	// origin-access-identity/cloudfront/ID-of-origin-access-identity
13339	//
13340	// where ID-of-origin-access-identity is the value that CloudFront returned
13341	// in the ID element when you created the origin access identity.
13342	//
13343	// If you want viewers to be able to access objects using either the CloudFront
13344	// URL or the Amazon S3 URL, specify an empty OriginAccessIdentity element.
13345	//
13346	// To delete the origin access identity from an existing distribution, update
13347	// the distribution configuration and include an empty OriginAccessIdentity
13348	// element.
13349	//
13350	// To replace the origin access identity, update the distribution configuration
13351	// and specify the new origin access identity.
13352	//
13353	// For more information about the origin access identity, see Serving Private
13354	// Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
13355	// in the Amazon CloudFront Developer Guide.
13356	//
13357	// OriginAccessIdentity is a required field
13358	OriginAccessIdentity *string `type:"string" required:"true"`
13359}
13360
13361// String returns the string representation
13362func (s S3OriginConfig) String() string {
13363	return awsutil.Prettify(s)
13364}
13365
13366// GoString returns the string representation
13367func (s S3OriginConfig) GoString() string {
13368	return s.String()
13369}
13370
13371// Validate inspects the fields of the type to determine if they are valid.
13372func (s *S3OriginConfig) Validate() error {
13373	invalidParams := request.ErrInvalidParams{Context: "S3OriginConfig"}
13374	if s.OriginAccessIdentity == nil {
13375		invalidParams.Add(request.NewErrParamRequired("OriginAccessIdentity"))
13376	}
13377
13378	if invalidParams.Len() > 0 {
13379		return invalidParams
13380	}
13381	return nil
13382}
13383
13384// SetOriginAccessIdentity sets the OriginAccessIdentity field's value.
13385func (s *S3OriginConfig) SetOriginAccessIdentity(v string) *S3OriginConfig {
13386	s.OriginAccessIdentity = &v
13387	return s
13388}
13389
13390// A complex type that lists the AWS accounts that were included in the TrustedSigners
13391// complex type, as well as their active CloudFront key pair IDs, if any.
13392type Signer struct {
13393	_ struct{} `type:"structure"`
13394
13395	// An AWS account that is included in the TrustedSigners complex type for this
13396	// distribution. Valid values include:
13397	//
13398	//    * self, which is the AWS account used to create the distribution.
13399	//
13400	//    * An AWS account number.
13401	AwsAccountNumber *string `type:"string"`
13402
13403	// A complex type that lists the active CloudFront key pairs, if any, that are
13404	// associated with AwsAccountNumber.
13405	KeyPairIds *KeyPairIds `type:"structure"`
13406}
13407
13408// String returns the string representation
13409func (s Signer) String() string {
13410	return awsutil.Prettify(s)
13411}
13412
13413// GoString returns the string representation
13414func (s Signer) GoString() string {
13415	return s.String()
13416}
13417
13418// SetAwsAccountNumber sets the AwsAccountNumber field's value.
13419func (s *Signer) SetAwsAccountNumber(v string) *Signer {
13420	s.AwsAccountNumber = &v
13421	return s
13422}
13423
13424// SetKeyPairIds sets the KeyPairIds field's value.
13425func (s *Signer) SetKeyPairIds(v *KeyPairIds) *Signer {
13426	s.KeyPairIds = v
13427	return s
13428}
13429
13430// A complex data type for the status codes that you specify that, when returned
13431// by a primary origin, trigger CloudFront to failover to a second origin.
13432type StatusCodes struct {
13433	_ struct{} `type:"structure"`
13434
13435	// The items (status codes) for an origin group.
13436	//
13437	// Items is a required field
13438	Items []*int64 `locationNameList:"StatusCode" min:"1" type:"list" required:"true"`
13439
13440	// The number of status codes.
13441	//
13442	// Quantity is a required field
13443	Quantity *int64 `type:"integer" required:"true"`
13444}
13445
13446// String returns the string representation
13447func (s StatusCodes) String() string {
13448	return awsutil.Prettify(s)
13449}
13450
13451// GoString returns the string representation
13452func (s StatusCodes) GoString() string {
13453	return s.String()
13454}
13455
13456// Validate inspects the fields of the type to determine if they are valid.
13457func (s *StatusCodes) Validate() error {
13458	invalidParams := request.ErrInvalidParams{Context: "StatusCodes"}
13459	if s.Items == nil {
13460		invalidParams.Add(request.NewErrParamRequired("Items"))
13461	}
13462	if s.Items != nil && len(s.Items) < 1 {
13463		invalidParams.Add(request.NewErrParamMinLen("Items", 1))
13464	}
13465	if s.Quantity == nil {
13466		invalidParams.Add(request.NewErrParamRequired("Quantity"))
13467	}
13468
13469	if invalidParams.Len() > 0 {
13470		return invalidParams
13471	}
13472	return nil
13473}
13474
13475// SetItems sets the Items field's value.
13476func (s *StatusCodes) SetItems(v []*int64) *StatusCodes {
13477	s.Items = v
13478	return s
13479}
13480
13481// SetQuantity sets the Quantity field's value.
13482func (s *StatusCodes) SetQuantity(v int64) *StatusCodes {
13483	s.Quantity = &v
13484	return s
13485}
13486
13487// A streaming distribution tells CloudFront where you want RTMP content to
13488// be delivered from, and the details about how to track and manage content
13489// delivery.
13490type StreamingDistribution struct {
13491	_ struct{} `type:"structure"`
13492
13493	// The ARN (Amazon Resource Name) for the distribution. For example: arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5,
13494	// where 123456789012 is your AWS account ID.
13495	//
13496	// ARN is a required field
13497	ARN *string `type:"string" required:"true"`
13498
13499	// A complex type that lists the AWS accounts, if any, that you included in
13500	// the TrustedSigners complex type for this distribution. These are the accounts
13501	// that you want to allow to create signed URLs for private content.
13502	//
13503	// The Signer complex type lists the AWS account number of the trusted signer
13504	// or self if the signer is the AWS account that created the distribution. The
13505	// Signer element also includes the IDs of any active CloudFront key pairs that
13506	// are associated with the trusted signer's AWS account. If no KeyPairId element
13507	// appears for a Signer, that signer can't create signed URLs.
13508	//
13509	// For more information, see Serving Private Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
13510	// in the Amazon CloudFront Developer Guide.
13511	//
13512	// ActiveTrustedSigners is a required field
13513	ActiveTrustedSigners *ActiveTrustedSigners `type:"structure" required:"true"`
13514
13515	// The domain name that corresponds to the streaming distribution, for example,
13516	// s5c39gqb8ow64r.cloudfront.net.
13517	//
13518	// DomainName is a required field
13519	DomainName *string `type:"string" required:"true"`
13520
13521	// The identifier for the RTMP distribution. For example: EGTXBD79EXAMPLE.
13522	//
13523	// Id is a required field
13524	Id *string `type:"string" required:"true"`
13525
13526	// The date and time that the distribution was last modified.
13527	LastModifiedTime *time.Time `type:"timestamp"`
13528
13529	// The current status of the RTMP distribution. When the status is Deployed,
13530	// the distribution's information is propagated to all CloudFront edge locations.
13531	//
13532	// Status is a required field
13533	Status *string `type:"string" required:"true"`
13534
13535	// The current configuration information for the RTMP distribution.
13536	//
13537	// StreamingDistributionConfig is a required field
13538	StreamingDistributionConfig *StreamingDistributionConfig `type:"structure" required:"true"`
13539}
13540
13541// String returns the string representation
13542func (s StreamingDistribution) String() string {
13543	return awsutil.Prettify(s)
13544}
13545
13546// GoString returns the string representation
13547func (s StreamingDistribution) GoString() string {
13548	return s.String()
13549}
13550
13551// SetARN sets the ARN field's value.
13552func (s *StreamingDistribution) SetARN(v string) *StreamingDistribution {
13553	s.ARN = &v
13554	return s
13555}
13556
13557// SetActiveTrustedSigners sets the ActiveTrustedSigners field's value.
13558func (s *StreamingDistribution) SetActiveTrustedSigners(v *ActiveTrustedSigners) *StreamingDistribution {
13559	s.ActiveTrustedSigners = v
13560	return s
13561}
13562
13563// SetDomainName sets the DomainName field's value.
13564func (s *StreamingDistribution) SetDomainName(v string) *StreamingDistribution {
13565	s.DomainName = &v
13566	return s
13567}
13568
13569// SetId sets the Id field's value.
13570func (s *StreamingDistribution) SetId(v string) *StreamingDistribution {
13571	s.Id = &v
13572	return s
13573}
13574
13575// SetLastModifiedTime sets the LastModifiedTime field's value.
13576func (s *StreamingDistribution) SetLastModifiedTime(v time.Time) *StreamingDistribution {
13577	s.LastModifiedTime = &v
13578	return s
13579}
13580
13581// SetStatus sets the Status field's value.
13582func (s *StreamingDistribution) SetStatus(v string) *StreamingDistribution {
13583	s.Status = &v
13584	return s
13585}
13586
13587// SetStreamingDistributionConfig sets the StreamingDistributionConfig field's value.
13588func (s *StreamingDistribution) SetStreamingDistributionConfig(v *StreamingDistributionConfig) *StreamingDistribution {
13589	s.StreamingDistributionConfig = v
13590	return s
13591}
13592
13593// The RTMP distribution's configuration information.
13594type StreamingDistributionConfig struct {
13595	_ struct{} `type:"structure"`
13596
13597	// A complex type that contains information about CNAMEs (alternate domain names),
13598	// if any, for this streaming distribution.
13599	Aliases *Aliases `type:"structure"`
13600
13601	// A unique value (for example, a date-time stamp) that ensures that the request
13602	// can't be replayed.
13603	//
13604	// If the value of CallerReference is new (regardless of the content of the
13605	// StreamingDistributionConfig object), CloudFront creates a new distribution.
13606	//
13607	// If CallerReference is a value that you already sent in a previous request
13608	// to create a distribution, CloudFront returns a DistributionAlreadyExists
13609	// error.
13610	//
13611	// CallerReference is a required field
13612	CallerReference *string `type:"string" required:"true"`
13613
13614	// Any comments you want to include about the streaming distribution.
13615	//
13616	// Comment is a required field
13617	Comment *string `type:"string" required:"true"`
13618
13619	// Whether the streaming distribution is enabled to accept user requests for
13620	// content.
13621	//
13622	// Enabled is a required field
13623	Enabled *bool `type:"boolean" required:"true"`
13624
13625	// A complex type that controls whether access logs are written for the streaming
13626	// distribution.
13627	Logging *StreamingLoggingConfig `type:"structure"`
13628
13629	// A complex type that contains information about price class for this streaming
13630	// distribution.
13631	PriceClass *string `type:"string" enum:"PriceClass"`
13632
13633	// A complex type that contains information about the Amazon S3 bucket from
13634	// which you want CloudFront to get your media files for distribution.
13635	//
13636	// S3Origin is a required field
13637	S3Origin *S3Origin `type:"structure" required:"true"`
13638
13639	// A complex type that specifies any AWS accounts that you want to permit to
13640	// create signed URLs for private content. If you want the distribution to use
13641	// signed URLs, include this element; if you want the distribution to use public
13642	// URLs, remove this element. For more information, see Serving Private Content
13643	// through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
13644	// in the Amazon CloudFront Developer Guide.
13645	//
13646	// TrustedSigners is a required field
13647	TrustedSigners *TrustedSigners `type:"structure" required:"true"`
13648}
13649
13650// String returns the string representation
13651func (s StreamingDistributionConfig) String() string {
13652	return awsutil.Prettify(s)
13653}
13654
13655// GoString returns the string representation
13656func (s StreamingDistributionConfig) GoString() string {
13657	return s.String()
13658}
13659
13660// Validate inspects the fields of the type to determine if they are valid.
13661func (s *StreamingDistributionConfig) Validate() error {
13662	invalidParams := request.ErrInvalidParams{Context: "StreamingDistributionConfig"}
13663	if s.CallerReference == nil {
13664		invalidParams.Add(request.NewErrParamRequired("CallerReference"))
13665	}
13666	if s.Comment == nil {
13667		invalidParams.Add(request.NewErrParamRequired("Comment"))
13668	}
13669	if s.Enabled == nil {
13670		invalidParams.Add(request.NewErrParamRequired("Enabled"))
13671	}
13672	if s.S3Origin == nil {
13673		invalidParams.Add(request.NewErrParamRequired("S3Origin"))
13674	}
13675	if s.TrustedSigners == nil {
13676		invalidParams.Add(request.NewErrParamRequired("TrustedSigners"))
13677	}
13678	if s.Aliases != nil {
13679		if err := s.Aliases.Validate(); err != nil {
13680			invalidParams.AddNested("Aliases", err.(request.ErrInvalidParams))
13681		}
13682	}
13683	if s.Logging != nil {
13684		if err := s.Logging.Validate(); err != nil {
13685			invalidParams.AddNested("Logging", err.(request.ErrInvalidParams))
13686		}
13687	}
13688	if s.S3Origin != nil {
13689		if err := s.S3Origin.Validate(); err != nil {
13690			invalidParams.AddNested("S3Origin", err.(request.ErrInvalidParams))
13691		}
13692	}
13693	if s.TrustedSigners != nil {
13694		if err := s.TrustedSigners.Validate(); err != nil {
13695			invalidParams.AddNested("TrustedSigners", err.(request.ErrInvalidParams))
13696		}
13697	}
13698
13699	if invalidParams.Len() > 0 {
13700		return invalidParams
13701	}
13702	return nil
13703}
13704
13705// SetAliases sets the Aliases field's value.
13706func (s *StreamingDistributionConfig) SetAliases(v *Aliases) *StreamingDistributionConfig {
13707	s.Aliases = v
13708	return s
13709}
13710
13711// SetCallerReference sets the CallerReference field's value.
13712func (s *StreamingDistributionConfig) SetCallerReference(v string) *StreamingDistributionConfig {
13713	s.CallerReference = &v
13714	return s
13715}
13716
13717// SetComment sets the Comment field's value.
13718func (s *StreamingDistributionConfig) SetComment(v string) *StreamingDistributionConfig {
13719	s.Comment = &v
13720	return s
13721}
13722
13723// SetEnabled sets the Enabled field's value.
13724func (s *StreamingDistributionConfig) SetEnabled(v bool) *StreamingDistributionConfig {
13725	s.Enabled = &v
13726	return s
13727}
13728
13729// SetLogging sets the Logging field's value.
13730func (s *StreamingDistributionConfig) SetLogging(v *StreamingLoggingConfig) *StreamingDistributionConfig {
13731	s.Logging = v
13732	return s
13733}
13734
13735// SetPriceClass sets the PriceClass field's value.
13736func (s *StreamingDistributionConfig) SetPriceClass(v string) *StreamingDistributionConfig {
13737	s.PriceClass = &v
13738	return s
13739}
13740
13741// SetS3Origin sets the S3Origin field's value.
13742func (s *StreamingDistributionConfig) SetS3Origin(v *S3Origin) *StreamingDistributionConfig {
13743	s.S3Origin = v
13744	return s
13745}
13746
13747// SetTrustedSigners sets the TrustedSigners field's value.
13748func (s *StreamingDistributionConfig) SetTrustedSigners(v *TrustedSigners) *StreamingDistributionConfig {
13749	s.TrustedSigners = v
13750	return s
13751}
13752
13753// A streaming distribution Configuration and a list of tags to be associated
13754// with the streaming distribution.
13755type StreamingDistributionConfigWithTags struct {
13756	_ struct{} `type:"structure"`
13757
13758	// A streaming distribution Configuration.
13759	//
13760	// StreamingDistributionConfig is a required field
13761	StreamingDistributionConfig *StreamingDistributionConfig `type:"structure" required:"true"`
13762
13763	// A complex type that contains zero or more Tag elements.
13764	//
13765	// Tags is a required field
13766	Tags *Tags `type:"structure" required:"true"`
13767}
13768
13769// String returns the string representation
13770func (s StreamingDistributionConfigWithTags) String() string {
13771	return awsutil.Prettify(s)
13772}
13773
13774// GoString returns the string representation
13775func (s StreamingDistributionConfigWithTags) GoString() string {
13776	return s.String()
13777}
13778
13779// Validate inspects the fields of the type to determine if they are valid.
13780func (s *StreamingDistributionConfigWithTags) Validate() error {
13781	invalidParams := request.ErrInvalidParams{Context: "StreamingDistributionConfigWithTags"}
13782	if s.StreamingDistributionConfig == nil {
13783		invalidParams.Add(request.NewErrParamRequired("StreamingDistributionConfig"))
13784	}
13785	if s.Tags == nil {
13786		invalidParams.Add(request.NewErrParamRequired("Tags"))
13787	}
13788	if s.StreamingDistributionConfig != nil {
13789		if err := s.StreamingDistributionConfig.Validate(); err != nil {
13790			invalidParams.AddNested("StreamingDistributionConfig", err.(request.ErrInvalidParams))
13791		}
13792	}
13793	if s.Tags != nil {
13794		if err := s.Tags.Validate(); err != nil {
13795			invalidParams.AddNested("Tags", err.(request.ErrInvalidParams))
13796		}
13797	}
13798
13799	if invalidParams.Len() > 0 {
13800		return invalidParams
13801	}
13802	return nil
13803}
13804
13805// SetStreamingDistributionConfig sets the StreamingDistributionConfig field's value.
13806func (s *StreamingDistributionConfigWithTags) SetStreamingDistributionConfig(v *StreamingDistributionConfig) *StreamingDistributionConfigWithTags {
13807	s.StreamingDistributionConfig = v
13808	return s
13809}
13810
13811// SetTags sets the Tags field's value.
13812func (s *StreamingDistributionConfigWithTags) SetTags(v *Tags) *StreamingDistributionConfigWithTags {
13813	s.Tags = v
13814	return s
13815}
13816
13817// A streaming distribution list.
13818type StreamingDistributionList struct {
13819	_ struct{} `type:"structure"`
13820
13821	// A flag that indicates whether more streaming distributions remain to be listed.
13822	// If your results were truncated, you can make a follow-up pagination request
13823	// using the Marker request parameter to retrieve more distributions in the
13824	// list.
13825	//
13826	// IsTruncated is a required field
13827	IsTruncated *bool `type:"boolean" required:"true"`
13828
13829	// A complex type that contains one StreamingDistributionSummary element for
13830	// each distribution that was created by the current AWS account.
13831	Items []*StreamingDistributionSummary `locationNameList:"StreamingDistributionSummary" type:"list"`
13832
13833	// The value you provided for the Marker request parameter.
13834	//
13835	// Marker is a required field
13836	Marker *string `type:"string" required:"true"`
13837
13838	// The value you provided for the MaxItems request parameter.
13839	//
13840	// MaxItems is a required field
13841	MaxItems *int64 `type:"integer" required:"true"`
13842
13843	// If IsTruncated is true, this element is present and contains the value you
13844	// can use for the Marker request parameter to continue listing your RTMP distributions
13845	// where they left off.
13846	NextMarker *string `type:"string"`
13847
13848	// The number of streaming distributions that were created by the current AWS
13849	// account.
13850	//
13851	// Quantity is a required field
13852	Quantity *int64 `type:"integer" required:"true"`
13853}
13854
13855// String returns the string representation
13856func (s StreamingDistributionList) String() string {
13857	return awsutil.Prettify(s)
13858}
13859
13860// GoString returns the string representation
13861func (s StreamingDistributionList) GoString() string {
13862	return s.String()
13863}
13864
13865// SetIsTruncated sets the IsTruncated field's value.
13866func (s *StreamingDistributionList) SetIsTruncated(v bool) *StreamingDistributionList {
13867	s.IsTruncated = &v
13868	return s
13869}
13870
13871// SetItems sets the Items field's value.
13872func (s *StreamingDistributionList) SetItems(v []*StreamingDistributionSummary) *StreamingDistributionList {
13873	s.Items = v
13874	return s
13875}
13876
13877// SetMarker sets the Marker field's value.
13878func (s *StreamingDistributionList) SetMarker(v string) *StreamingDistributionList {
13879	s.Marker = &v
13880	return s
13881}
13882
13883// SetMaxItems sets the MaxItems field's value.
13884func (s *StreamingDistributionList) SetMaxItems(v int64) *StreamingDistributionList {
13885	s.MaxItems = &v
13886	return s
13887}
13888
13889// SetNextMarker sets the NextMarker field's value.
13890func (s *StreamingDistributionList) SetNextMarker(v string) *StreamingDistributionList {
13891	s.NextMarker = &v
13892	return s
13893}
13894
13895// SetQuantity sets the Quantity field's value.
13896func (s *StreamingDistributionList) SetQuantity(v int64) *StreamingDistributionList {
13897	s.Quantity = &v
13898	return s
13899}
13900
13901// A summary of the information for a CloudFront streaming distribution.
13902type StreamingDistributionSummary struct {
13903	_ struct{} `type:"structure"`
13904
13905	// The ARN (Amazon Resource Name) for the streaming distribution. For example:
13906	// arn:aws:cloudfront::123456789012:streaming-distribution/EDFDVBD632BHDS5,
13907	// where 123456789012 is your AWS account ID.
13908	//
13909	// ARN is a required field
13910	ARN *string `type:"string" required:"true"`
13911
13912	// A complex type that contains information about CNAMEs (alternate domain names),
13913	// if any, for this streaming distribution.
13914	//
13915	// Aliases is a required field
13916	Aliases *Aliases `type:"structure" required:"true"`
13917
13918	// The comment originally specified when this distribution was created.
13919	//
13920	// Comment is a required field
13921	Comment *string `type:"string" required:"true"`
13922
13923	// The domain name corresponding to the distribution, for example, d111111abcdef8.cloudfront.net.
13924	//
13925	// DomainName is a required field
13926	DomainName *string `type:"string" required:"true"`
13927
13928	// Whether the distribution is enabled to accept end user requests for content.
13929	//
13930	// Enabled is a required field
13931	Enabled *bool `type:"boolean" required:"true"`
13932
13933	// The identifier for the distribution, for example, EDFDVBD632BHDS5.
13934	//
13935	// Id is a required field
13936	Id *string `type:"string" required:"true"`
13937
13938	// The date and time the distribution was last modified.
13939	//
13940	// LastModifiedTime is a required field
13941	LastModifiedTime *time.Time `type:"timestamp" required:"true"`
13942
13943	// A complex type that contains information about price class for this streaming
13944	// distribution.
13945	//
13946	// PriceClass is a required field
13947	PriceClass *string `type:"string" required:"true" enum:"PriceClass"`
13948
13949	// A complex type that contains information about the Amazon S3 bucket from
13950	// which you want CloudFront to get your media files for distribution.
13951	//
13952	// S3Origin is a required field
13953	S3Origin *S3Origin `type:"structure" required:"true"`
13954
13955	// Indicates the current status of the distribution. When the status is Deployed,
13956	// the distribution's information is fully propagated throughout the Amazon
13957	// CloudFront system.
13958	//
13959	// Status is a required field
13960	Status *string `type:"string" required:"true"`
13961
13962	// A complex type that specifies the AWS accounts, if any, that you want to
13963	// allow to create signed URLs for private content. If you want to require signed
13964	// URLs in requests for objects in the target origin that match the PathPattern
13965	// for this cache behavior, specify true for Enabled, and specify the applicable
13966	// values for Quantity and Items.If you don't want to require signed URLs in
13967	// requests for objects that match PathPattern, specify false for Enabled and
13968	// 0 for Quantity. Omit Items. To add, change, or remove one or more trusted
13969	// signers, change Enabled to true (if it's currently false), change Quantity
13970	// as applicable, and specify all of the trusted signers that you want to include
13971	// in the updated distribution.
13972	//
13973	// For more information, see Serving Private Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
13974	// in the Amazon CloudFront Developer Guide.
13975	//
13976	// TrustedSigners is a required field
13977	TrustedSigners *TrustedSigners `type:"structure" required:"true"`
13978}
13979
13980// String returns the string representation
13981func (s StreamingDistributionSummary) String() string {
13982	return awsutil.Prettify(s)
13983}
13984
13985// GoString returns the string representation
13986func (s StreamingDistributionSummary) GoString() string {
13987	return s.String()
13988}
13989
13990// SetARN sets the ARN field's value.
13991func (s *StreamingDistributionSummary) SetARN(v string) *StreamingDistributionSummary {
13992	s.ARN = &v
13993	return s
13994}
13995
13996// SetAliases sets the Aliases field's value.
13997func (s *StreamingDistributionSummary) SetAliases(v *Aliases) *StreamingDistributionSummary {
13998	s.Aliases = v
13999	return s
14000}
14001
14002// SetComment sets the Comment field's value.
14003func (s *StreamingDistributionSummary) SetComment(v string) *StreamingDistributionSummary {
14004	s.Comment = &v
14005	return s
14006}
14007
14008// SetDomainName sets the DomainName field's value.
14009func (s *StreamingDistributionSummary) SetDomainName(v string) *StreamingDistributionSummary {
14010	s.DomainName = &v
14011	return s
14012}
14013
14014// SetEnabled sets the Enabled field's value.
14015func (s *StreamingDistributionSummary) SetEnabled(v bool) *StreamingDistributionSummary {
14016	s.Enabled = &v
14017	return s
14018}
14019
14020// SetId sets the Id field's value.
14021func (s *StreamingDistributionSummary) SetId(v string) *StreamingDistributionSummary {
14022	s.Id = &v
14023	return s
14024}
14025
14026// SetLastModifiedTime sets the LastModifiedTime field's value.
14027func (s *StreamingDistributionSummary) SetLastModifiedTime(v time.Time) *StreamingDistributionSummary {
14028	s.LastModifiedTime = &v
14029	return s
14030}
14031
14032// SetPriceClass sets the PriceClass field's value.
14033func (s *StreamingDistributionSummary) SetPriceClass(v string) *StreamingDistributionSummary {
14034	s.PriceClass = &v
14035	return s
14036}
14037
14038// SetS3Origin sets the S3Origin field's value.
14039func (s *StreamingDistributionSummary) SetS3Origin(v *S3Origin) *StreamingDistributionSummary {
14040	s.S3Origin = v
14041	return s
14042}
14043
14044// SetStatus sets the Status field's value.
14045func (s *StreamingDistributionSummary) SetStatus(v string) *StreamingDistributionSummary {
14046	s.Status = &v
14047	return s
14048}
14049
14050// SetTrustedSigners sets the TrustedSigners field's value.
14051func (s *StreamingDistributionSummary) SetTrustedSigners(v *TrustedSigners) *StreamingDistributionSummary {
14052	s.TrustedSigners = v
14053	return s
14054}
14055
14056// A complex type that controls whether access logs are written for this streaming
14057// distribution.
14058type StreamingLoggingConfig struct {
14059	_ struct{} `type:"structure"`
14060
14061	// The Amazon S3 bucket to store the access logs in, for example, myawslogbucket.s3.amazonaws.com.
14062	//
14063	// Bucket is a required field
14064	Bucket *string `type:"string" required:"true"`
14065
14066	// Specifies whether you want CloudFront to save access logs to an Amazon S3
14067	// bucket. If you don't want to enable logging when you create a streaming distribution
14068	// or if you want to disable logging for an existing streaming distribution,
14069	// specify false for Enabled, and specify empty Bucket and Prefix elements.
14070	// If you specify false for Enabled but you specify values for Bucket and Prefix,
14071	// the values are automatically deleted.
14072	//
14073	// Enabled is a required field
14074	Enabled *bool `type:"boolean" required:"true"`
14075
14076	// An optional string that you want CloudFront to prefix to the access log filenames
14077	// for this streaming distribution, for example, myprefix/. If you want to enable
14078	// logging, but you don't want to specify a prefix, you still must include an
14079	// empty Prefix element in the Logging element.
14080	//
14081	// Prefix is a required field
14082	Prefix *string `type:"string" required:"true"`
14083}
14084
14085// String returns the string representation
14086func (s StreamingLoggingConfig) String() string {
14087	return awsutil.Prettify(s)
14088}
14089
14090// GoString returns the string representation
14091func (s StreamingLoggingConfig) GoString() string {
14092	return s.String()
14093}
14094
14095// Validate inspects the fields of the type to determine if they are valid.
14096func (s *StreamingLoggingConfig) Validate() error {
14097	invalidParams := request.ErrInvalidParams{Context: "StreamingLoggingConfig"}
14098	if s.Bucket == nil {
14099		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14100	}
14101	if s.Enabled == nil {
14102		invalidParams.Add(request.NewErrParamRequired("Enabled"))
14103	}
14104	if s.Prefix == nil {
14105		invalidParams.Add(request.NewErrParamRequired("Prefix"))
14106	}
14107
14108	if invalidParams.Len() > 0 {
14109		return invalidParams
14110	}
14111	return nil
14112}
14113
14114// SetBucket sets the Bucket field's value.
14115func (s *StreamingLoggingConfig) SetBucket(v string) *StreamingLoggingConfig {
14116	s.Bucket = &v
14117	return s
14118}
14119
14120// SetEnabled sets the Enabled field's value.
14121func (s *StreamingLoggingConfig) SetEnabled(v bool) *StreamingLoggingConfig {
14122	s.Enabled = &v
14123	return s
14124}
14125
14126// SetPrefix sets the Prefix field's value.
14127func (s *StreamingLoggingConfig) SetPrefix(v string) *StreamingLoggingConfig {
14128	s.Prefix = &v
14129	return s
14130}
14131
14132// A complex type that contains Tag key and Tag value.
14133type Tag struct {
14134	_ struct{} `type:"structure"`
14135
14136	// A string that contains Tag key.
14137	//
14138	// The string length should be between 1 and 128 characters. Valid characters
14139	// include a-z, A-Z, 0-9, space, and the special characters _ - . : / = + @.
14140	//
14141	// Key is a required field
14142	Key *string `min:"1" type:"string" required:"true"`
14143
14144	// A string that contains an optional Tag value.
14145	//
14146	// The string length should be between 0 and 256 characters. Valid characters
14147	// include a-z, A-Z, 0-9, space, and the special characters _ - . : / = + @.
14148	Value *string `type:"string"`
14149}
14150
14151// String returns the string representation
14152func (s Tag) String() string {
14153	return awsutil.Prettify(s)
14154}
14155
14156// GoString returns the string representation
14157func (s Tag) GoString() string {
14158	return s.String()
14159}
14160
14161// Validate inspects the fields of the type to determine if they are valid.
14162func (s *Tag) Validate() error {
14163	invalidParams := request.ErrInvalidParams{Context: "Tag"}
14164	if s.Key == nil {
14165		invalidParams.Add(request.NewErrParamRequired("Key"))
14166	}
14167	if s.Key != nil && len(*s.Key) < 1 {
14168		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14169	}
14170
14171	if invalidParams.Len() > 0 {
14172		return invalidParams
14173	}
14174	return nil
14175}
14176
14177// SetKey sets the Key field's value.
14178func (s *Tag) SetKey(v string) *Tag {
14179	s.Key = &v
14180	return s
14181}
14182
14183// SetValue sets the Value field's value.
14184func (s *Tag) SetValue(v string) *Tag {
14185	s.Value = &v
14186	return s
14187}
14188
14189// A complex type that contains zero or more Tag elements.
14190type TagKeys struct {
14191	_ struct{} `type:"structure"`
14192
14193	// A complex type that contains Tag key elements.
14194	Items []*string `locationNameList:"Key" type:"list"`
14195}
14196
14197// String returns the string representation
14198func (s TagKeys) String() string {
14199	return awsutil.Prettify(s)
14200}
14201
14202// GoString returns the string representation
14203func (s TagKeys) GoString() string {
14204	return s.String()
14205}
14206
14207// SetItems sets the Items field's value.
14208func (s *TagKeys) SetItems(v []*string) *TagKeys {
14209	s.Items = v
14210	return s
14211}
14212
14213// The request to add tags to a CloudFront resource.
14214type TagResourceInput struct {
14215	_ struct{} `locationName:"TagResourceRequest" type:"structure" payload:"Tags"`
14216
14217	// An ARN of a CloudFront resource.
14218	//
14219	// Resource is a required field
14220	Resource *string `location:"querystring" locationName:"Resource" type:"string" required:"true"`
14221
14222	// A complex type that contains zero or more Tag elements.
14223	//
14224	// Tags is a required field
14225	Tags *Tags `locationName:"Tags" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14226}
14227
14228// String returns the string representation
14229func (s TagResourceInput) String() string {
14230	return awsutil.Prettify(s)
14231}
14232
14233// GoString returns the string representation
14234func (s TagResourceInput) GoString() string {
14235	return s.String()
14236}
14237
14238// Validate inspects the fields of the type to determine if they are valid.
14239func (s *TagResourceInput) Validate() error {
14240	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
14241	if s.Resource == nil {
14242		invalidParams.Add(request.NewErrParamRequired("Resource"))
14243	}
14244	if s.Tags == nil {
14245		invalidParams.Add(request.NewErrParamRequired("Tags"))
14246	}
14247	if s.Tags != nil {
14248		if err := s.Tags.Validate(); err != nil {
14249			invalidParams.AddNested("Tags", err.(request.ErrInvalidParams))
14250		}
14251	}
14252
14253	if invalidParams.Len() > 0 {
14254		return invalidParams
14255	}
14256	return nil
14257}
14258
14259// SetResource sets the Resource field's value.
14260func (s *TagResourceInput) SetResource(v string) *TagResourceInput {
14261	s.Resource = &v
14262	return s
14263}
14264
14265// SetTags sets the Tags field's value.
14266func (s *TagResourceInput) SetTags(v *Tags) *TagResourceInput {
14267	s.Tags = v
14268	return s
14269}
14270
14271type TagResourceOutput struct {
14272	_ struct{} `type:"structure"`
14273}
14274
14275// String returns the string representation
14276func (s TagResourceOutput) String() string {
14277	return awsutil.Prettify(s)
14278}
14279
14280// GoString returns the string representation
14281func (s TagResourceOutput) GoString() string {
14282	return s.String()
14283}
14284
14285// A complex type that contains zero or more Tag elements.
14286type Tags struct {
14287	_ struct{} `type:"structure"`
14288
14289	// A complex type that contains Tag elements.
14290	Items []*Tag `locationNameList:"Tag" type:"list"`
14291}
14292
14293// String returns the string representation
14294func (s Tags) String() string {
14295	return awsutil.Prettify(s)
14296}
14297
14298// GoString returns the string representation
14299func (s Tags) GoString() string {
14300	return s.String()
14301}
14302
14303// Validate inspects the fields of the type to determine if they are valid.
14304func (s *Tags) Validate() error {
14305	invalidParams := request.ErrInvalidParams{Context: "Tags"}
14306	if s.Items != nil {
14307		for i, v := range s.Items {
14308			if v == nil {
14309				continue
14310			}
14311			if err := v.Validate(); err != nil {
14312				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Items", i), err.(request.ErrInvalidParams))
14313			}
14314		}
14315	}
14316
14317	if invalidParams.Len() > 0 {
14318		return invalidParams
14319	}
14320	return nil
14321}
14322
14323// SetItems sets the Items field's value.
14324func (s *Tags) SetItems(v []*Tag) *Tags {
14325	s.Items = v
14326	return s
14327}
14328
14329// A complex type that specifies the AWS accounts, if any, that you want to
14330// allow to create signed URLs for private content.
14331//
14332// If you want to require signed URLs in requests for objects in the target
14333// origin that match the PathPattern for this cache behavior, specify true for
14334// Enabled, and specify the applicable values for Quantity and Items. For more
14335// information, see Serving Private Content through CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html)
14336// in the Amazon CloudFront Developer Guide.
14337//
14338// If you don't want to require signed URLs in requests for objects that match
14339// PathPattern, specify false for Enabled and 0 for Quantity. Omit Items.
14340//
14341// To add, change, or remove one or more trusted signers, change Enabled to
14342// true (if it's currently false), change Quantity as applicable, and specify
14343// all of the trusted signers that you want to include in the updated distribution.
14344//
14345// For more information about updating the distribution configuration, see DistributionConfig
14346// (https://docs.aws.amazon.com/cloudfront/latest/APIReference/DistributionConfig.html)
14347// in the Amazon CloudFront API Reference.
14348type TrustedSigners struct {
14349	_ struct{} `type:"structure"`
14350
14351	// Specifies whether you want to require viewers to use signed URLs to access
14352	// the files specified by PathPattern and TargetOriginId.
14353	//
14354	// Enabled is a required field
14355	Enabled *bool `type:"boolean" required:"true"`
14356
14357	// Optional: A complex type that contains trusted signers for this cache behavior.
14358	// If Quantity is 0, you can omit Items.
14359	Items []*string `locationNameList:"AwsAccountNumber" type:"list"`
14360
14361	// The number of trusted signers for this cache behavior.
14362	//
14363	// Quantity is a required field
14364	Quantity *int64 `type:"integer" required:"true"`
14365}
14366
14367// String returns the string representation
14368func (s TrustedSigners) String() string {
14369	return awsutil.Prettify(s)
14370}
14371
14372// GoString returns the string representation
14373func (s TrustedSigners) GoString() string {
14374	return s.String()
14375}
14376
14377// Validate inspects the fields of the type to determine if they are valid.
14378func (s *TrustedSigners) Validate() error {
14379	invalidParams := request.ErrInvalidParams{Context: "TrustedSigners"}
14380	if s.Enabled == nil {
14381		invalidParams.Add(request.NewErrParamRequired("Enabled"))
14382	}
14383	if s.Quantity == nil {
14384		invalidParams.Add(request.NewErrParamRequired("Quantity"))
14385	}
14386
14387	if invalidParams.Len() > 0 {
14388		return invalidParams
14389	}
14390	return nil
14391}
14392
14393// SetEnabled sets the Enabled field's value.
14394func (s *TrustedSigners) SetEnabled(v bool) *TrustedSigners {
14395	s.Enabled = &v
14396	return s
14397}
14398
14399// SetItems sets the Items field's value.
14400func (s *TrustedSigners) SetItems(v []*string) *TrustedSigners {
14401	s.Items = v
14402	return s
14403}
14404
14405// SetQuantity sets the Quantity field's value.
14406func (s *TrustedSigners) SetQuantity(v int64) *TrustedSigners {
14407	s.Quantity = &v
14408	return s
14409}
14410
14411// The request to remove tags from a CloudFront resource.
14412type UntagResourceInput struct {
14413	_ struct{} `locationName:"UntagResourceRequest" type:"structure" payload:"TagKeys"`
14414
14415	// An ARN of a CloudFront resource.
14416	//
14417	// Resource is a required field
14418	Resource *string `location:"querystring" locationName:"Resource" type:"string" required:"true"`
14419
14420	// A complex type that contains zero or more Tag key elements.
14421	//
14422	// TagKeys is a required field
14423	TagKeys *TagKeys `locationName:"TagKeys" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14424}
14425
14426// String returns the string representation
14427func (s UntagResourceInput) String() string {
14428	return awsutil.Prettify(s)
14429}
14430
14431// GoString returns the string representation
14432func (s UntagResourceInput) GoString() string {
14433	return s.String()
14434}
14435
14436// Validate inspects the fields of the type to determine if they are valid.
14437func (s *UntagResourceInput) Validate() error {
14438	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
14439	if s.Resource == nil {
14440		invalidParams.Add(request.NewErrParamRequired("Resource"))
14441	}
14442	if s.TagKeys == nil {
14443		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
14444	}
14445
14446	if invalidParams.Len() > 0 {
14447		return invalidParams
14448	}
14449	return nil
14450}
14451
14452// SetResource sets the Resource field's value.
14453func (s *UntagResourceInput) SetResource(v string) *UntagResourceInput {
14454	s.Resource = &v
14455	return s
14456}
14457
14458// SetTagKeys sets the TagKeys field's value.
14459func (s *UntagResourceInput) SetTagKeys(v *TagKeys) *UntagResourceInput {
14460	s.TagKeys = v
14461	return s
14462}
14463
14464type UntagResourceOutput struct {
14465	_ struct{} `type:"structure"`
14466}
14467
14468// String returns the string representation
14469func (s UntagResourceOutput) String() string {
14470	return awsutil.Prettify(s)
14471}
14472
14473// GoString returns the string representation
14474func (s UntagResourceOutput) GoString() string {
14475	return s.String()
14476}
14477
14478// The request to update an origin access identity.
14479type UpdateCloudFrontOriginAccessIdentityInput struct {
14480	_ struct{} `locationName:"UpdateCloudFrontOriginAccessIdentityRequest" type:"structure" payload:"CloudFrontOriginAccessIdentityConfig"`
14481
14482	// The identity's configuration information.
14483	//
14484	// CloudFrontOriginAccessIdentityConfig is a required field
14485	CloudFrontOriginAccessIdentityConfig *OriginAccessIdentityConfig `locationName:"CloudFrontOriginAccessIdentityConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14486
14487	// The identity's id.
14488	//
14489	// Id is a required field
14490	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
14491
14492	// The value of the ETag header that you received when retrieving the identity's
14493	// configuration. For example: E2QWRUHAPOMQZL.
14494	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
14495}
14496
14497// String returns the string representation
14498func (s UpdateCloudFrontOriginAccessIdentityInput) String() string {
14499	return awsutil.Prettify(s)
14500}
14501
14502// GoString returns the string representation
14503func (s UpdateCloudFrontOriginAccessIdentityInput) GoString() string {
14504	return s.String()
14505}
14506
14507// Validate inspects the fields of the type to determine if they are valid.
14508func (s *UpdateCloudFrontOriginAccessIdentityInput) Validate() error {
14509	invalidParams := request.ErrInvalidParams{Context: "UpdateCloudFrontOriginAccessIdentityInput"}
14510	if s.CloudFrontOriginAccessIdentityConfig == nil {
14511		invalidParams.Add(request.NewErrParamRequired("CloudFrontOriginAccessIdentityConfig"))
14512	}
14513	if s.Id == nil {
14514		invalidParams.Add(request.NewErrParamRequired("Id"))
14515	}
14516	if s.Id != nil && len(*s.Id) < 1 {
14517		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
14518	}
14519	if s.CloudFrontOriginAccessIdentityConfig != nil {
14520		if err := s.CloudFrontOriginAccessIdentityConfig.Validate(); err != nil {
14521			invalidParams.AddNested("CloudFrontOriginAccessIdentityConfig", err.(request.ErrInvalidParams))
14522		}
14523	}
14524
14525	if invalidParams.Len() > 0 {
14526		return invalidParams
14527	}
14528	return nil
14529}
14530
14531// SetCloudFrontOriginAccessIdentityConfig sets the CloudFrontOriginAccessIdentityConfig field's value.
14532func (s *UpdateCloudFrontOriginAccessIdentityInput) SetCloudFrontOriginAccessIdentityConfig(v *OriginAccessIdentityConfig) *UpdateCloudFrontOriginAccessIdentityInput {
14533	s.CloudFrontOriginAccessIdentityConfig = v
14534	return s
14535}
14536
14537// SetId sets the Id field's value.
14538func (s *UpdateCloudFrontOriginAccessIdentityInput) SetId(v string) *UpdateCloudFrontOriginAccessIdentityInput {
14539	s.Id = &v
14540	return s
14541}
14542
14543// SetIfMatch sets the IfMatch field's value.
14544func (s *UpdateCloudFrontOriginAccessIdentityInput) SetIfMatch(v string) *UpdateCloudFrontOriginAccessIdentityInput {
14545	s.IfMatch = &v
14546	return s
14547}
14548
14549// The returned result of the corresponding request.
14550type UpdateCloudFrontOriginAccessIdentityOutput struct {
14551	_ struct{} `type:"structure" payload:"CloudFrontOriginAccessIdentity"`
14552
14553	// The origin access identity's information.
14554	CloudFrontOriginAccessIdentity *OriginAccessIdentity `type:"structure"`
14555
14556	// The current version of the configuration. For example: E2QWRUHAPOMQZL.
14557	ETag *string `location:"header" locationName:"ETag" type:"string"`
14558}
14559
14560// String returns the string representation
14561func (s UpdateCloudFrontOriginAccessIdentityOutput) String() string {
14562	return awsutil.Prettify(s)
14563}
14564
14565// GoString returns the string representation
14566func (s UpdateCloudFrontOriginAccessIdentityOutput) GoString() string {
14567	return s.String()
14568}
14569
14570// SetCloudFrontOriginAccessIdentity sets the CloudFrontOriginAccessIdentity field's value.
14571func (s *UpdateCloudFrontOriginAccessIdentityOutput) SetCloudFrontOriginAccessIdentity(v *OriginAccessIdentity) *UpdateCloudFrontOriginAccessIdentityOutput {
14572	s.CloudFrontOriginAccessIdentity = v
14573	return s
14574}
14575
14576// SetETag sets the ETag field's value.
14577func (s *UpdateCloudFrontOriginAccessIdentityOutput) SetETag(v string) *UpdateCloudFrontOriginAccessIdentityOutput {
14578	s.ETag = &v
14579	return s
14580}
14581
14582// The request to update a distribution.
14583type UpdateDistributionInput struct {
14584	_ struct{} `locationName:"UpdateDistributionRequest" type:"structure" payload:"DistributionConfig"`
14585
14586	// The distribution's configuration information.
14587	//
14588	// DistributionConfig is a required field
14589	DistributionConfig *DistributionConfig `locationName:"DistributionConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14590
14591	// The distribution's id.
14592	//
14593	// Id is a required field
14594	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
14595
14596	// The value of the ETag header that you received when retrieving the distribution's
14597	// configuration. For example: E2QWRUHAPOMQZL.
14598	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
14599}
14600
14601// String returns the string representation
14602func (s UpdateDistributionInput) String() string {
14603	return awsutil.Prettify(s)
14604}
14605
14606// GoString returns the string representation
14607func (s UpdateDistributionInput) GoString() string {
14608	return s.String()
14609}
14610
14611// Validate inspects the fields of the type to determine if they are valid.
14612func (s *UpdateDistributionInput) Validate() error {
14613	invalidParams := request.ErrInvalidParams{Context: "UpdateDistributionInput"}
14614	if s.DistributionConfig == nil {
14615		invalidParams.Add(request.NewErrParamRequired("DistributionConfig"))
14616	}
14617	if s.Id == nil {
14618		invalidParams.Add(request.NewErrParamRequired("Id"))
14619	}
14620	if s.Id != nil && len(*s.Id) < 1 {
14621		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
14622	}
14623	if s.DistributionConfig != nil {
14624		if err := s.DistributionConfig.Validate(); err != nil {
14625			invalidParams.AddNested("DistributionConfig", err.(request.ErrInvalidParams))
14626		}
14627	}
14628
14629	if invalidParams.Len() > 0 {
14630		return invalidParams
14631	}
14632	return nil
14633}
14634
14635// SetDistributionConfig sets the DistributionConfig field's value.
14636func (s *UpdateDistributionInput) SetDistributionConfig(v *DistributionConfig) *UpdateDistributionInput {
14637	s.DistributionConfig = v
14638	return s
14639}
14640
14641// SetId sets the Id field's value.
14642func (s *UpdateDistributionInput) SetId(v string) *UpdateDistributionInput {
14643	s.Id = &v
14644	return s
14645}
14646
14647// SetIfMatch sets the IfMatch field's value.
14648func (s *UpdateDistributionInput) SetIfMatch(v string) *UpdateDistributionInput {
14649	s.IfMatch = &v
14650	return s
14651}
14652
14653// The returned result of the corresponding request.
14654type UpdateDistributionOutput struct {
14655	_ struct{} `type:"structure" payload:"Distribution"`
14656
14657	// The distribution's information.
14658	Distribution *Distribution `type:"structure"`
14659
14660	// The current version of the configuration. For example: E2QWRUHAPOMQZL.
14661	ETag *string `location:"header" locationName:"ETag" type:"string"`
14662}
14663
14664// String returns the string representation
14665func (s UpdateDistributionOutput) String() string {
14666	return awsutil.Prettify(s)
14667}
14668
14669// GoString returns the string representation
14670func (s UpdateDistributionOutput) GoString() string {
14671	return s.String()
14672}
14673
14674// SetDistribution sets the Distribution field's value.
14675func (s *UpdateDistributionOutput) SetDistribution(v *Distribution) *UpdateDistributionOutput {
14676	s.Distribution = v
14677	return s
14678}
14679
14680// SetETag sets the ETag field's value.
14681func (s *UpdateDistributionOutput) SetETag(v string) *UpdateDistributionOutput {
14682	s.ETag = &v
14683	return s
14684}
14685
14686type UpdateFieldLevelEncryptionConfigInput struct {
14687	_ struct{} `locationName:"UpdateFieldLevelEncryptionConfigRequest" type:"structure" payload:"FieldLevelEncryptionConfig"`
14688
14689	// Request to update a field-level encryption configuration.
14690	//
14691	// FieldLevelEncryptionConfig is a required field
14692	FieldLevelEncryptionConfig *FieldLevelEncryptionConfig `locationName:"FieldLevelEncryptionConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14693
14694	// The ID of the configuration you want to update.
14695	//
14696	// Id is a required field
14697	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
14698
14699	// The value of the ETag header that you received when retrieving the configuration
14700	// identity to update. For example: E2QWRUHAPOMQZL.
14701	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
14702}
14703
14704// String returns the string representation
14705func (s UpdateFieldLevelEncryptionConfigInput) String() string {
14706	return awsutil.Prettify(s)
14707}
14708
14709// GoString returns the string representation
14710func (s UpdateFieldLevelEncryptionConfigInput) GoString() string {
14711	return s.String()
14712}
14713
14714// Validate inspects the fields of the type to determine if they are valid.
14715func (s *UpdateFieldLevelEncryptionConfigInput) Validate() error {
14716	invalidParams := request.ErrInvalidParams{Context: "UpdateFieldLevelEncryptionConfigInput"}
14717	if s.FieldLevelEncryptionConfig == nil {
14718		invalidParams.Add(request.NewErrParamRequired("FieldLevelEncryptionConfig"))
14719	}
14720	if s.Id == nil {
14721		invalidParams.Add(request.NewErrParamRequired("Id"))
14722	}
14723	if s.Id != nil && len(*s.Id) < 1 {
14724		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
14725	}
14726	if s.FieldLevelEncryptionConfig != nil {
14727		if err := s.FieldLevelEncryptionConfig.Validate(); err != nil {
14728			invalidParams.AddNested("FieldLevelEncryptionConfig", err.(request.ErrInvalidParams))
14729		}
14730	}
14731
14732	if invalidParams.Len() > 0 {
14733		return invalidParams
14734	}
14735	return nil
14736}
14737
14738// SetFieldLevelEncryptionConfig sets the FieldLevelEncryptionConfig field's value.
14739func (s *UpdateFieldLevelEncryptionConfigInput) SetFieldLevelEncryptionConfig(v *FieldLevelEncryptionConfig) *UpdateFieldLevelEncryptionConfigInput {
14740	s.FieldLevelEncryptionConfig = v
14741	return s
14742}
14743
14744// SetId sets the Id field's value.
14745func (s *UpdateFieldLevelEncryptionConfigInput) SetId(v string) *UpdateFieldLevelEncryptionConfigInput {
14746	s.Id = &v
14747	return s
14748}
14749
14750// SetIfMatch sets the IfMatch field's value.
14751func (s *UpdateFieldLevelEncryptionConfigInput) SetIfMatch(v string) *UpdateFieldLevelEncryptionConfigInput {
14752	s.IfMatch = &v
14753	return s
14754}
14755
14756type UpdateFieldLevelEncryptionConfigOutput struct {
14757	_ struct{} `type:"structure" payload:"FieldLevelEncryption"`
14758
14759	// The value of the ETag header that you received when updating the configuration.
14760	// For example: E2QWRUHAPOMQZL.
14761	ETag *string `location:"header" locationName:"ETag" type:"string"`
14762
14763	// Return the results of updating the configuration.
14764	FieldLevelEncryption *FieldLevelEncryption `type:"structure"`
14765}
14766
14767// String returns the string representation
14768func (s UpdateFieldLevelEncryptionConfigOutput) String() string {
14769	return awsutil.Prettify(s)
14770}
14771
14772// GoString returns the string representation
14773func (s UpdateFieldLevelEncryptionConfigOutput) GoString() string {
14774	return s.String()
14775}
14776
14777// SetETag sets the ETag field's value.
14778func (s *UpdateFieldLevelEncryptionConfigOutput) SetETag(v string) *UpdateFieldLevelEncryptionConfigOutput {
14779	s.ETag = &v
14780	return s
14781}
14782
14783// SetFieldLevelEncryption sets the FieldLevelEncryption field's value.
14784func (s *UpdateFieldLevelEncryptionConfigOutput) SetFieldLevelEncryption(v *FieldLevelEncryption) *UpdateFieldLevelEncryptionConfigOutput {
14785	s.FieldLevelEncryption = v
14786	return s
14787}
14788
14789type UpdateFieldLevelEncryptionProfileInput struct {
14790	_ struct{} `locationName:"UpdateFieldLevelEncryptionProfileRequest" type:"structure" payload:"FieldLevelEncryptionProfileConfig"`
14791
14792	// Request to update a field-level encryption profile.
14793	//
14794	// FieldLevelEncryptionProfileConfig is a required field
14795	FieldLevelEncryptionProfileConfig *FieldLevelEncryptionProfileConfig `locationName:"FieldLevelEncryptionProfileConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14796
14797	// The ID of the field-level encryption profile request.
14798	//
14799	// Id is a required field
14800	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
14801
14802	// The value of the ETag header that you received when retrieving the profile
14803	// identity to update. For example: E2QWRUHAPOMQZL.
14804	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
14805}
14806
14807// String returns the string representation
14808func (s UpdateFieldLevelEncryptionProfileInput) String() string {
14809	return awsutil.Prettify(s)
14810}
14811
14812// GoString returns the string representation
14813func (s UpdateFieldLevelEncryptionProfileInput) GoString() string {
14814	return s.String()
14815}
14816
14817// Validate inspects the fields of the type to determine if they are valid.
14818func (s *UpdateFieldLevelEncryptionProfileInput) Validate() error {
14819	invalidParams := request.ErrInvalidParams{Context: "UpdateFieldLevelEncryptionProfileInput"}
14820	if s.FieldLevelEncryptionProfileConfig == nil {
14821		invalidParams.Add(request.NewErrParamRequired("FieldLevelEncryptionProfileConfig"))
14822	}
14823	if s.Id == nil {
14824		invalidParams.Add(request.NewErrParamRequired("Id"))
14825	}
14826	if s.Id != nil && len(*s.Id) < 1 {
14827		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
14828	}
14829	if s.FieldLevelEncryptionProfileConfig != nil {
14830		if err := s.FieldLevelEncryptionProfileConfig.Validate(); err != nil {
14831			invalidParams.AddNested("FieldLevelEncryptionProfileConfig", err.(request.ErrInvalidParams))
14832		}
14833	}
14834
14835	if invalidParams.Len() > 0 {
14836		return invalidParams
14837	}
14838	return nil
14839}
14840
14841// SetFieldLevelEncryptionProfileConfig sets the FieldLevelEncryptionProfileConfig field's value.
14842func (s *UpdateFieldLevelEncryptionProfileInput) SetFieldLevelEncryptionProfileConfig(v *FieldLevelEncryptionProfileConfig) *UpdateFieldLevelEncryptionProfileInput {
14843	s.FieldLevelEncryptionProfileConfig = v
14844	return s
14845}
14846
14847// SetId sets the Id field's value.
14848func (s *UpdateFieldLevelEncryptionProfileInput) SetId(v string) *UpdateFieldLevelEncryptionProfileInput {
14849	s.Id = &v
14850	return s
14851}
14852
14853// SetIfMatch sets the IfMatch field's value.
14854func (s *UpdateFieldLevelEncryptionProfileInput) SetIfMatch(v string) *UpdateFieldLevelEncryptionProfileInput {
14855	s.IfMatch = &v
14856	return s
14857}
14858
14859type UpdateFieldLevelEncryptionProfileOutput struct {
14860	_ struct{} `type:"structure" payload:"FieldLevelEncryptionProfile"`
14861
14862	// The result of the field-level encryption profile request.
14863	ETag *string `location:"header" locationName:"ETag" type:"string"`
14864
14865	// Return the results of updating the profile.
14866	FieldLevelEncryptionProfile *FieldLevelEncryptionProfile `type:"structure"`
14867}
14868
14869// String returns the string representation
14870func (s UpdateFieldLevelEncryptionProfileOutput) String() string {
14871	return awsutil.Prettify(s)
14872}
14873
14874// GoString returns the string representation
14875func (s UpdateFieldLevelEncryptionProfileOutput) GoString() string {
14876	return s.String()
14877}
14878
14879// SetETag sets the ETag field's value.
14880func (s *UpdateFieldLevelEncryptionProfileOutput) SetETag(v string) *UpdateFieldLevelEncryptionProfileOutput {
14881	s.ETag = &v
14882	return s
14883}
14884
14885// SetFieldLevelEncryptionProfile sets the FieldLevelEncryptionProfile field's value.
14886func (s *UpdateFieldLevelEncryptionProfileOutput) SetFieldLevelEncryptionProfile(v *FieldLevelEncryptionProfile) *UpdateFieldLevelEncryptionProfileOutput {
14887	s.FieldLevelEncryptionProfile = v
14888	return s
14889}
14890
14891type UpdatePublicKeyInput struct {
14892	_ struct{} `locationName:"UpdatePublicKeyRequest" type:"structure" payload:"PublicKeyConfig"`
14893
14894	// ID of the public key to be updated.
14895	//
14896	// Id is a required field
14897	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
14898
14899	// The value of the ETag header that you received when retrieving the public
14900	// key to update. For example: E2QWRUHAPOMQZL.
14901	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
14902
14903	// Request to update public key information.
14904	//
14905	// PublicKeyConfig is a required field
14906	PublicKeyConfig *PublicKeyConfig `locationName:"PublicKeyConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
14907}
14908
14909// String returns the string representation
14910func (s UpdatePublicKeyInput) String() string {
14911	return awsutil.Prettify(s)
14912}
14913
14914// GoString returns the string representation
14915func (s UpdatePublicKeyInput) GoString() string {
14916	return s.String()
14917}
14918
14919// Validate inspects the fields of the type to determine if they are valid.
14920func (s *UpdatePublicKeyInput) Validate() error {
14921	invalidParams := request.ErrInvalidParams{Context: "UpdatePublicKeyInput"}
14922	if s.Id == nil {
14923		invalidParams.Add(request.NewErrParamRequired("Id"))
14924	}
14925	if s.Id != nil && len(*s.Id) < 1 {
14926		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
14927	}
14928	if s.PublicKeyConfig == nil {
14929		invalidParams.Add(request.NewErrParamRequired("PublicKeyConfig"))
14930	}
14931	if s.PublicKeyConfig != nil {
14932		if err := s.PublicKeyConfig.Validate(); err != nil {
14933			invalidParams.AddNested("PublicKeyConfig", err.(request.ErrInvalidParams))
14934		}
14935	}
14936
14937	if invalidParams.Len() > 0 {
14938		return invalidParams
14939	}
14940	return nil
14941}
14942
14943// SetId sets the Id field's value.
14944func (s *UpdatePublicKeyInput) SetId(v string) *UpdatePublicKeyInput {
14945	s.Id = &v
14946	return s
14947}
14948
14949// SetIfMatch sets the IfMatch field's value.
14950func (s *UpdatePublicKeyInput) SetIfMatch(v string) *UpdatePublicKeyInput {
14951	s.IfMatch = &v
14952	return s
14953}
14954
14955// SetPublicKeyConfig sets the PublicKeyConfig field's value.
14956func (s *UpdatePublicKeyInput) SetPublicKeyConfig(v *PublicKeyConfig) *UpdatePublicKeyInput {
14957	s.PublicKeyConfig = v
14958	return s
14959}
14960
14961type UpdatePublicKeyOutput struct {
14962	_ struct{} `type:"structure" payload:"PublicKey"`
14963
14964	// The current version of the update public key result. For example: E2QWRUHAPOMQZL.
14965	ETag *string `location:"header" locationName:"ETag" type:"string"`
14966
14967	// Return the results of updating the public key.
14968	PublicKey *PublicKey `type:"structure"`
14969}
14970
14971// String returns the string representation
14972func (s UpdatePublicKeyOutput) String() string {
14973	return awsutil.Prettify(s)
14974}
14975
14976// GoString returns the string representation
14977func (s UpdatePublicKeyOutput) GoString() string {
14978	return s.String()
14979}
14980
14981// SetETag sets the ETag field's value.
14982func (s *UpdatePublicKeyOutput) SetETag(v string) *UpdatePublicKeyOutput {
14983	s.ETag = &v
14984	return s
14985}
14986
14987// SetPublicKey sets the PublicKey field's value.
14988func (s *UpdatePublicKeyOutput) SetPublicKey(v *PublicKey) *UpdatePublicKeyOutput {
14989	s.PublicKey = v
14990	return s
14991}
14992
14993// The request to update a streaming distribution.
14994type UpdateStreamingDistributionInput struct {
14995	_ struct{} `locationName:"UpdateStreamingDistributionRequest" type:"structure" payload:"StreamingDistributionConfig"`
14996
14997	// The streaming distribution's id.
14998	//
14999	// Id is a required field
15000	Id *string `location:"uri" locationName:"Id" type:"string" required:"true"`
15001
15002	// The value of the ETag header that you received when retrieving the streaming
15003	// distribution's configuration. For example: E2QWRUHAPOMQZL.
15004	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
15005
15006	// The streaming distribution's configuration information.
15007	//
15008	// StreamingDistributionConfig is a required field
15009	StreamingDistributionConfig *StreamingDistributionConfig `locationName:"StreamingDistributionConfig" type:"structure" required:"true" xmlURI:"http://cloudfront.amazonaws.com/doc/2019-03-26/"`
15010}
15011
15012// String returns the string representation
15013func (s UpdateStreamingDistributionInput) String() string {
15014	return awsutil.Prettify(s)
15015}
15016
15017// GoString returns the string representation
15018func (s UpdateStreamingDistributionInput) GoString() string {
15019	return s.String()
15020}
15021
15022// Validate inspects the fields of the type to determine if they are valid.
15023func (s *UpdateStreamingDistributionInput) Validate() error {
15024	invalidParams := request.ErrInvalidParams{Context: "UpdateStreamingDistributionInput"}
15025	if s.Id == nil {
15026		invalidParams.Add(request.NewErrParamRequired("Id"))
15027	}
15028	if s.Id != nil && len(*s.Id) < 1 {
15029		invalidParams.Add(request.NewErrParamMinLen("Id", 1))
15030	}
15031	if s.StreamingDistributionConfig == nil {
15032		invalidParams.Add(request.NewErrParamRequired("StreamingDistributionConfig"))
15033	}
15034	if s.StreamingDistributionConfig != nil {
15035		if err := s.StreamingDistributionConfig.Validate(); err != nil {
15036			invalidParams.AddNested("StreamingDistributionConfig", err.(request.ErrInvalidParams))
15037		}
15038	}
15039
15040	if invalidParams.Len() > 0 {
15041		return invalidParams
15042	}
15043	return nil
15044}
15045
15046// SetId sets the Id field's value.
15047func (s *UpdateStreamingDistributionInput) SetId(v string) *UpdateStreamingDistributionInput {
15048	s.Id = &v
15049	return s
15050}
15051
15052// SetIfMatch sets the IfMatch field's value.
15053func (s *UpdateStreamingDistributionInput) SetIfMatch(v string) *UpdateStreamingDistributionInput {
15054	s.IfMatch = &v
15055	return s
15056}
15057
15058// SetStreamingDistributionConfig sets the StreamingDistributionConfig field's value.
15059func (s *UpdateStreamingDistributionInput) SetStreamingDistributionConfig(v *StreamingDistributionConfig) *UpdateStreamingDistributionInput {
15060	s.StreamingDistributionConfig = v
15061	return s
15062}
15063
15064// The returned result of the corresponding request.
15065type UpdateStreamingDistributionOutput struct {
15066	_ struct{} `type:"structure" payload:"StreamingDistribution"`
15067
15068	// The current version of the configuration. For example: E2QWRUHAPOMQZL.
15069	ETag *string `location:"header" locationName:"ETag" type:"string"`
15070
15071	// The streaming distribution's information.
15072	StreamingDistribution *StreamingDistribution `type:"structure"`
15073}
15074
15075// String returns the string representation
15076func (s UpdateStreamingDistributionOutput) String() string {
15077	return awsutil.Prettify(s)
15078}
15079
15080// GoString returns the string representation
15081func (s UpdateStreamingDistributionOutput) GoString() string {
15082	return s.String()
15083}
15084
15085// SetETag sets the ETag field's value.
15086func (s *UpdateStreamingDistributionOutput) SetETag(v string) *UpdateStreamingDistributionOutput {
15087	s.ETag = &v
15088	return s
15089}
15090
15091// SetStreamingDistribution sets the StreamingDistribution field's value.
15092func (s *UpdateStreamingDistributionOutput) SetStreamingDistribution(v *StreamingDistribution) *UpdateStreamingDistributionOutput {
15093	s.StreamingDistribution = v
15094	return s
15095}
15096
15097// A complex type that specifies the following:
15098//
15099//    * Whether you want viewers to use HTTP or HTTPS to request your objects.
15100//
15101//    * If you want viewers to use HTTPS, whether you're using an alternate
15102//    domain name, such as example.com, or the CloudFront domain name for your
15103//    distribution, such as d111111abcdef8.cloudfront.net.
15104//
15105//    * If you're using an alternate domain name, whether AWS Certificate Manager
15106//    (ACM) provided the certificate, or you purchased a certificate from a
15107//    third-party certificate authority and imported it into ACM or uploaded
15108//    it to the IAM certificate store.
15109//
15110// Specify only one of the following values:
15111//
15112//    * ACMCertificateArn (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-ACMCertificateArn)
15113//
15114//    * IAMCertificateId (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-IAMCertificateId)
15115//
15116//    * CloudFrontDefaultCertificate (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-CloudFrontDefaultCertificate)
15117//
15118// For more information, see Using Alternate Domain Names and HTTPS (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/SecureConnections.html#CNAMEsAndHTTPS)
15119// in the Amazon CloudFront Developer Guide.
15120type ViewerCertificate struct {
15121	_ struct{} `type:"structure"`
15122
15123	// If you want viewers to use HTTPS to request your objects and you're using
15124	// an alternate domain name, you must choose the type of certificate that you
15125	// want to use. If ACM provided your certificate, specify the Amazon Resource
15126	// Name (ARN) for the ACM certificate that you want to use for this distribution.
15127	// CloudFront only supports ACM certificates in the US East (N. Virginia) Region
15128	// (us-east-1).
15129	//
15130	// If you specify an ACM certificate ARN, you must also specify an SSL support
15131	// method (sni-only or vip).
15132	ACMCertificateArn *string `type:"string"`
15133
15134	// This field is no longer used. Use one of the following fields instead:
15135	//
15136	//    * ACMCertificateArn (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-ACMCertificateArn)
15137	//
15138	//    * IAMCertificateId (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-IAMCertificateId)
15139	//
15140	//    * CloudFrontDefaultCertificate (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-CloudFrontDefaultCertificate)
15141	//
15142	// Deprecated: Certificate has been deprecated
15143	Certificate *string `deprecated:"true" type:"string"`
15144
15145	// This field is no longer used. Use one of the following fields instead:
15146	//
15147	//    * ACMCertificateArn (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-ACMCertificateArn)
15148	//
15149	//    * IAMCertificateId (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-IAMCertificateId)
15150	//
15151	//    * CloudFrontDefaultCertificate (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-CloudFrontDefaultCertificate)
15152	//
15153	// Deprecated: CertificateSource has been deprecated
15154	CertificateSource *string `deprecated:"true" type:"string" enum:"CertificateSource"`
15155
15156	// If you're using the CloudFront domain name for your distribution, such as
15157	// d111111abcdef8.cloudfront.net, specify this value as true.
15158	CloudFrontDefaultCertificate *bool `type:"boolean"`
15159
15160	// If you want viewers to use HTTPS to request your objects and you're using
15161	// an alternate domain name, you must choose the type of certificate that you
15162	// want to use. If you purchased your certificate from a third-party certificate
15163	// authority and uploaded it to the IAM certificate store, specify the certificate
15164	// ID that you want to use for this distribution.
15165	//
15166	// If you specify a certificate ID, you must also specify an SSL support method
15167	// (sni-only or vip).
15168	IAMCertificateId *string `type:"string"`
15169
15170	// Specify the security policy that you want CloudFront to use for HTTPS connections.
15171	// A security policy determines two settings:
15172	//
15173	//    * The minimum SSL/TLS protocol that CloudFront uses to communicate with
15174	//    viewers.
15175	//
15176	//    * The cipher that CloudFront uses to encrypt the content that it returns
15177	//    to viewers.
15178	//
15179	// On the CloudFront console, this setting is called Security Policy.
15180	//
15181	// We recommend that you specify TLSv1.1_2016 unless your viewers are using
15182	// browsers or devices that do not support TLSv1.1 or later.
15183	//
15184	// When both of the following are true, you must specify TLSv1 or later for
15185	// the security policy:
15186	//
15187	//    * You're using a custom certificate; that is, you specified a value for
15188	//    ACMCertificateArn or for IAMCertificateId.
15189	//
15190	//    * You're using SNI; that is, you specified sni-only for SSLSupportMethod.
15191	//
15192	// If you specify true for CloudFrontDefaultCertificate, CloudFront automatically
15193	// sets the security policy to TLSv1 regardless of the value that you specify
15194	// here.
15195	//
15196	// For information about the relationship between the security policy that you
15197	// choose and the protocols and ciphers that CloudFront uses to communicate
15198	// with viewers, see Supported SSL/TLS Protocols and Ciphers for Communication
15199	// Between Viewers and CloudFront (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/secure-connections-supported-viewer-protocols-ciphers.html#secure-connections-supported-ciphers)
15200	// in the Amazon CloudFront Developer Guide.
15201	MinimumProtocolVersion *string `type:"string" enum:"MinimumProtocolVersion"`
15202
15203	// If you specify a value for ACMCertificateArn (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-ACMCertificateArn)
15204	// or for IAMCertificateId (https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ViewerCertificate.html#cloudfront-Type-ViewerCertificate-IAMCertificateId),
15205	// you must also specify how you want CloudFront to serve HTTPS requests: using
15206	// a method that works for browsers and clients released after 2010, or one
15207	// that works for all clients.
15208	//
15209	//    * sni-only: CloudFront can respond to HTTPS requests from viewers that
15210	//    support Server Name Indication (SNI). All modern browsers support SNI,
15211	//    but there are a few that don't. For a current list of the browsers that
15212	//    support SNI, see the Wikipedia entry Server Name Indication (http://en.wikipedia.org/wiki/Server_Name_Indication).
15213	//    To learn about options to explore if you have viewers with browsers that
15214	//    don't include SNI support, see Choosing How CloudFront Serves HTTPS Requests
15215	//    (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html)
15216	//    in the Amazon CloudFront Developer Guide.
15217	//
15218	//    * vip: CloudFront uses dedicated IP addresses for your content and can
15219	//    respond to HTTPS requests from any viewer. However, there are additional
15220	//    monthly charges. For details, including specific pricing information,
15221	//    see Custom SSL options for Amazon CloudFront (http://aws.amazon.com/cloudfront/custom-ssl-domains/)
15222	//    on the AWS marketing site.
15223	//
15224	// Don't specify a value here if you specified CloudFrontDefaultCertificate
15225	// as true.
15226	//
15227	// For more information, see Choosing How CloudFront Serves HTTPS Requests (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-https-dedicated-ip-or-sni.html)
15228	// in the Amazon CloudFront Developer Guide.
15229	SSLSupportMethod *string `type:"string" enum:"SSLSupportMethod"`
15230}
15231
15232// String returns the string representation
15233func (s ViewerCertificate) String() string {
15234	return awsutil.Prettify(s)
15235}
15236
15237// GoString returns the string representation
15238func (s ViewerCertificate) GoString() string {
15239	return s.String()
15240}
15241
15242// SetACMCertificateArn sets the ACMCertificateArn field's value.
15243func (s *ViewerCertificate) SetACMCertificateArn(v string) *ViewerCertificate {
15244	s.ACMCertificateArn = &v
15245	return s
15246}
15247
15248// SetCertificate sets the Certificate field's value.
15249func (s *ViewerCertificate) SetCertificate(v string) *ViewerCertificate {
15250	s.Certificate = &v
15251	return s
15252}
15253
15254// SetCertificateSource sets the CertificateSource field's value.
15255func (s *ViewerCertificate) SetCertificateSource(v string) *ViewerCertificate {
15256	s.CertificateSource = &v
15257	return s
15258}
15259
15260// SetCloudFrontDefaultCertificate sets the CloudFrontDefaultCertificate field's value.
15261func (s *ViewerCertificate) SetCloudFrontDefaultCertificate(v bool) *ViewerCertificate {
15262	s.CloudFrontDefaultCertificate = &v
15263	return s
15264}
15265
15266// SetIAMCertificateId sets the IAMCertificateId field's value.
15267func (s *ViewerCertificate) SetIAMCertificateId(v string) *ViewerCertificate {
15268	s.IAMCertificateId = &v
15269	return s
15270}
15271
15272// SetMinimumProtocolVersion sets the MinimumProtocolVersion field's value.
15273func (s *ViewerCertificate) SetMinimumProtocolVersion(v string) *ViewerCertificate {
15274	s.MinimumProtocolVersion = &v
15275	return s
15276}
15277
15278// SetSSLSupportMethod sets the SSLSupportMethod field's value.
15279func (s *ViewerCertificate) SetSSLSupportMethod(v string) *ViewerCertificate {
15280	s.SSLSupportMethod = &v
15281	return s
15282}
15283
15284const (
15285	// CertificateSourceCloudfront is a CertificateSource enum value
15286	CertificateSourceCloudfront = "cloudfront"
15287
15288	// CertificateSourceIam is a CertificateSource enum value
15289	CertificateSourceIam = "iam"
15290
15291	// CertificateSourceAcm is a CertificateSource enum value
15292	CertificateSourceAcm = "acm"
15293)
15294
15295const (
15296	// EventTypeViewerRequest is a EventType enum value
15297	EventTypeViewerRequest = "viewer-request"
15298
15299	// EventTypeViewerResponse is a EventType enum value
15300	EventTypeViewerResponse = "viewer-response"
15301
15302	// EventTypeOriginRequest is a EventType enum value
15303	EventTypeOriginRequest = "origin-request"
15304
15305	// EventTypeOriginResponse is a EventType enum value
15306	EventTypeOriginResponse = "origin-response"
15307)
15308
15309const (
15310	// FormatUrlencoded is a Format enum value
15311	FormatUrlencoded = "URLEncoded"
15312)
15313
15314const (
15315	// GeoRestrictionTypeBlacklist is a GeoRestrictionType enum value
15316	GeoRestrictionTypeBlacklist = "blacklist"
15317
15318	// GeoRestrictionTypeWhitelist is a GeoRestrictionType enum value
15319	GeoRestrictionTypeWhitelist = "whitelist"
15320
15321	// GeoRestrictionTypeNone is a GeoRestrictionType enum value
15322	GeoRestrictionTypeNone = "none"
15323)
15324
15325const (
15326	// HttpVersionHttp11 is a HttpVersion enum value
15327	HttpVersionHttp11 = "http1.1"
15328
15329	// HttpVersionHttp2 is a HttpVersion enum value
15330	HttpVersionHttp2 = "http2"
15331)
15332
15333const (
15334	// ICPRecordalStatusApproved is a ICPRecordalStatus enum value
15335	ICPRecordalStatusApproved = "APPROVED"
15336
15337	// ICPRecordalStatusSuspended is a ICPRecordalStatus enum value
15338	ICPRecordalStatusSuspended = "SUSPENDED"
15339
15340	// ICPRecordalStatusPending is a ICPRecordalStatus enum value
15341	ICPRecordalStatusPending = "PENDING"
15342)
15343
15344const (
15345	// ItemSelectionNone is a ItemSelection enum value
15346	ItemSelectionNone = "none"
15347
15348	// ItemSelectionWhitelist is a ItemSelection enum value
15349	ItemSelectionWhitelist = "whitelist"
15350
15351	// ItemSelectionAll is a ItemSelection enum value
15352	ItemSelectionAll = "all"
15353)
15354
15355const (
15356	// MethodGet is a Method enum value
15357	MethodGet = "GET"
15358
15359	// MethodHead is a Method enum value
15360	MethodHead = "HEAD"
15361
15362	// MethodPost is a Method enum value
15363	MethodPost = "POST"
15364
15365	// MethodPut is a Method enum value
15366	MethodPut = "PUT"
15367
15368	// MethodPatch is a Method enum value
15369	MethodPatch = "PATCH"
15370
15371	// MethodOptions is a Method enum value
15372	MethodOptions = "OPTIONS"
15373
15374	// MethodDelete is a Method enum value
15375	MethodDelete = "DELETE"
15376)
15377
15378const (
15379	// MinimumProtocolVersionSslv3 is a MinimumProtocolVersion enum value
15380	MinimumProtocolVersionSslv3 = "SSLv3"
15381
15382	// MinimumProtocolVersionTlsv1 is a MinimumProtocolVersion enum value
15383	MinimumProtocolVersionTlsv1 = "TLSv1"
15384
15385	// MinimumProtocolVersionTlsv12016 is a MinimumProtocolVersion enum value
15386	MinimumProtocolVersionTlsv12016 = "TLSv1_2016"
15387
15388	// MinimumProtocolVersionTlsv112016 is a MinimumProtocolVersion enum value
15389	MinimumProtocolVersionTlsv112016 = "TLSv1.1_2016"
15390
15391	// MinimumProtocolVersionTlsv122018 is a MinimumProtocolVersion enum value
15392	MinimumProtocolVersionTlsv122018 = "TLSv1.2_2018"
15393)
15394
15395const (
15396	// OriginProtocolPolicyHttpOnly is a OriginProtocolPolicy enum value
15397	OriginProtocolPolicyHttpOnly = "http-only"
15398
15399	// OriginProtocolPolicyMatchViewer is a OriginProtocolPolicy enum value
15400	OriginProtocolPolicyMatchViewer = "match-viewer"
15401
15402	// OriginProtocolPolicyHttpsOnly is a OriginProtocolPolicy enum value
15403	OriginProtocolPolicyHttpsOnly = "https-only"
15404)
15405
15406const (
15407	// PriceClassPriceClass100 is a PriceClass enum value
15408	PriceClassPriceClass100 = "PriceClass_100"
15409
15410	// PriceClassPriceClass200 is a PriceClass enum value
15411	PriceClassPriceClass200 = "PriceClass_200"
15412
15413	// PriceClassPriceClassAll is a PriceClass enum value
15414	PriceClassPriceClassAll = "PriceClass_All"
15415)
15416
15417const (
15418	// SSLSupportMethodSniOnly is a SSLSupportMethod enum value
15419	SSLSupportMethodSniOnly = "sni-only"
15420
15421	// SSLSupportMethodVip is a SSLSupportMethod enum value
15422	SSLSupportMethodVip = "vip"
15423)
15424
15425const (
15426	// SslProtocolSslv3 is a SslProtocol enum value
15427	SslProtocolSslv3 = "SSLv3"
15428
15429	// SslProtocolTlsv1 is a SslProtocol enum value
15430	SslProtocolTlsv1 = "TLSv1"
15431
15432	// SslProtocolTlsv11 is a SslProtocol enum value
15433	SslProtocolTlsv11 = "TLSv1.1"
15434
15435	// SslProtocolTlsv12 is a SslProtocol enum value
15436	SslProtocolTlsv12 = "TLSv1.2"
15437)
15438
15439const (
15440	// ViewerProtocolPolicyAllowAll is a ViewerProtocolPolicy enum value
15441	ViewerProtocolPolicyAllowAll = "allow-all"
15442
15443	// ViewerProtocolPolicyHttpsOnly is a ViewerProtocolPolicy enum value
15444	ViewerProtocolPolicyHttpsOnly = "https-only"
15445
15446	// ViewerProtocolPolicyRedirectToHttps is a ViewerProtocolPolicy enum value
15447	ViewerProtocolPolicyRedirectToHttps = "redirect-to-https"
15448)
15449