1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package s3
4
5import (
6	"bytes"
7	"fmt"
8	"io"
9	"sync"
10	"sync/atomic"
11	"time"
12
13	"github.com/aws/aws-sdk-go/aws"
14	"github.com/aws/aws-sdk-go/aws/awserr"
15	"github.com/aws/aws-sdk-go/aws/awsutil"
16	"github.com/aws/aws-sdk-go/aws/client"
17	"github.com/aws/aws-sdk-go/aws/request"
18	"github.com/aws/aws-sdk-go/private/protocol"
19	"github.com/aws/aws-sdk-go/private/protocol/eventstream"
20	"github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
21	"github.com/aws/aws-sdk-go/private/protocol/rest"
22	"github.com/aws/aws-sdk-go/private/protocol/restxml"
23)
24
25const opAbortMultipartUpload = "AbortMultipartUpload"
26
27// AbortMultipartUploadRequest generates a "aws/request.Request" representing the
28// client's request for the AbortMultipartUpload operation. The "output" return
29// value will be populated with the request's response once the request completes
30// successfully.
31//
32// Use "Send" method on the returned Request to send the API call to the service.
33// the "output" return value is not valid until after Send returns without error.
34//
35// See AbortMultipartUpload for more information on using the AbortMultipartUpload
36// API call, and error handling.
37//
38// This method is useful when you want to inject custom logic or configuration
39// into the SDK's request lifecycle. Such as custom headers, or retry logic.
40//
41//
42//    // Example sending a request using the AbortMultipartUploadRequest method.
43//    req, resp := client.AbortMultipartUploadRequest(params)
44//
45//    err := req.Send()
46//    if err == nil { // resp is now filled
47//        fmt.Println(resp)
48//    }
49//
50// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload
51func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) (req *request.Request, output *AbortMultipartUploadOutput) {
52	op := &request.Operation{
53		Name:       opAbortMultipartUpload,
54		HTTPMethod: "DELETE",
55		HTTPPath:   "/{Bucket}/{Key+}",
56	}
57
58	if input == nil {
59		input = &AbortMultipartUploadInput{}
60	}
61
62	output = &AbortMultipartUploadOutput{}
63	req = c.newRequest(op, input, output)
64	return
65}
66
67// AbortMultipartUpload API operation for Amazon Simple Storage Service.
68//
69// Aborts a multipart upload.
70//
71// To verify that all parts have been removed, so you don't get charged for
72// the part storage, you should call the List Parts operation and ensure the
73// parts list is empty.
74//
75// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
76// with awserr.Error's Code and Message methods to get detailed information about
77// the error.
78//
79// See the AWS API reference guide for Amazon Simple Storage Service's
80// API operation AbortMultipartUpload for usage and error information.
81//
82// Returned Error Codes:
83//   * ErrCodeNoSuchUpload "NoSuchUpload"
84//   The specified multipart upload does not exist.
85//
86// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload
87func (c *S3) AbortMultipartUpload(input *AbortMultipartUploadInput) (*AbortMultipartUploadOutput, error) {
88	req, out := c.AbortMultipartUploadRequest(input)
89	return out, req.Send()
90}
91
92// AbortMultipartUploadWithContext is the same as AbortMultipartUpload with the addition of
93// the ability to pass a context and additional request options.
94//
95// See AbortMultipartUpload for details on how to use this API operation.
96//
97// The context must be non-nil and will be used for request cancellation. If
98// the context is nil a panic will occur. In the future the SDK may create
99// sub-contexts for http.Requests. See https://golang.org/pkg/context/
100// for more information on using Contexts.
101func (c *S3) AbortMultipartUploadWithContext(ctx aws.Context, input *AbortMultipartUploadInput, opts ...request.Option) (*AbortMultipartUploadOutput, error) {
102	req, out := c.AbortMultipartUploadRequest(input)
103	req.SetContext(ctx)
104	req.ApplyOptions(opts...)
105	return out, req.Send()
106}
107
108const opCompleteMultipartUpload = "CompleteMultipartUpload"
109
110// CompleteMultipartUploadRequest generates a "aws/request.Request" representing the
111// client's request for the CompleteMultipartUpload operation. The "output" return
112// value will be populated with the request's response once the request completes
113// successfully.
114//
115// Use "Send" method on the returned Request to send the API call to the service.
116// the "output" return value is not valid until after Send returns without error.
117//
118// See CompleteMultipartUpload for more information on using the CompleteMultipartUpload
119// API call, and error handling.
120//
121// This method is useful when you want to inject custom logic or configuration
122// into the SDK's request lifecycle. Such as custom headers, or retry logic.
123//
124//
125//    // Example sending a request using the CompleteMultipartUploadRequest method.
126//    req, resp := client.CompleteMultipartUploadRequest(params)
127//
128//    err := req.Send()
129//    if err == nil { // resp is now filled
130//        fmt.Println(resp)
131//    }
132//
133// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
134func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) (req *request.Request, output *CompleteMultipartUploadOutput) {
135	op := &request.Operation{
136		Name:       opCompleteMultipartUpload,
137		HTTPMethod: "POST",
138		HTTPPath:   "/{Bucket}/{Key+}",
139	}
140
141	if input == nil {
142		input = &CompleteMultipartUploadInput{}
143	}
144
145	output = &CompleteMultipartUploadOutput{}
146	req = c.newRequest(op, input, output)
147	return
148}
149
150// CompleteMultipartUpload API operation for Amazon Simple Storage Service.
151//
152// Completes a multipart upload by assembling previously uploaded parts.
153//
154// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
155// with awserr.Error's Code and Message methods to get detailed information about
156// the error.
157//
158// See the AWS API reference guide for Amazon Simple Storage Service's
159// API operation CompleteMultipartUpload for usage and error information.
160// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
161func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput) (*CompleteMultipartUploadOutput, error) {
162	req, out := c.CompleteMultipartUploadRequest(input)
163	return out, req.Send()
164}
165
166// CompleteMultipartUploadWithContext is the same as CompleteMultipartUpload with the addition of
167// the ability to pass a context and additional request options.
168//
169// See CompleteMultipartUpload for details on how to use this API operation.
170//
171// The context must be non-nil and will be used for request cancellation. If
172// the context is nil a panic will occur. In the future the SDK may create
173// sub-contexts for http.Requests. See https://golang.org/pkg/context/
174// for more information on using Contexts.
175func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *CompleteMultipartUploadInput, opts ...request.Option) (*CompleteMultipartUploadOutput, error) {
176	req, out := c.CompleteMultipartUploadRequest(input)
177	req.SetContext(ctx)
178	req.ApplyOptions(opts...)
179	return out, req.Send()
180}
181
182const opCopyObject = "CopyObject"
183
184// CopyObjectRequest generates a "aws/request.Request" representing the
185// client's request for the CopyObject operation. The "output" return
186// value will be populated with the request's response once the request completes
187// successfully.
188//
189// Use "Send" method on the returned Request to send the API call to the service.
190// the "output" return value is not valid until after Send returns without error.
191//
192// See CopyObject for more information on using the CopyObject
193// API call, and error handling.
194//
195// This method is useful when you want to inject custom logic or configuration
196// into the SDK's request lifecycle. Such as custom headers, or retry logic.
197//
198//
199//    // Example sending a request using the CopyObjectRequest method.
200//    req, resp := client.CopyObjectRequest(params)
201//
202//    err := req.Send()
203//    if err == nil { // resp is now filled
204//        fmt.Println(resp)
205//    }
206//
207// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
208func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, output *CopyObjectOutput) {
209	op := &request.Operation{
210		Name:       opCopyObject,
211		HTTPMethod: "PUT",
212		HTTPPath:   "/{Bucket}/{Key+}",
213	}
214
215	if input == nil {
216		input = &CopyObjectInput{}
217	}
218
219	output = &CopyObjectOutput{}
220	req = c.newRequest(op, input, output)
221	return
222}
223
224// CopyObject API operation for Amazon Simple Storage Service.
225//
226// Creates a copy of an object that is already stored in Amazon S3.
227//
228// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
229// with awserr.Error's Code and Message methods to get detailed information about
230// the error.
231//
232// See the AWS API reference guide for Amazon Simple Storage Service's
233// API operation CopyObject for usage and error information.
234//
235// Returned Error Codes:
236//   * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError"
237//   The source object of the COPY operation is not in the active tier and is
238//   only stored in Amazon Glacier.
239//
240// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
241func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) {
242	req, out := c.CopyObjectRequest(input)
243	return out, req.Send()
244}
245
246// CopyObjectWithContext is the same as CopyObject with the addition of
247// the ability to pass a context and additional request options.
248//
249// See CopyObject for details on how to use this API operation.
250//
251// The context must be non-nil and will be used for request cancellation. If
252// the context is nil a panic will occur. In the future the SDK may create
253// sub-contexts for http.Requests. See https://golang.org/pkg/context/
254// for more information on using Contexts.
255func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) {
256	req, out := c.CopyObjectRequest(input)
257	req.SetContext(ctx)
258	req.ApplyOptions(opts...)
259	return out, req.Send()
260}
261
262const opCreateBucket = "CreateBucket"
263
264// CreateBucketRequest generates a "aws/request.Request" representing the
265// client's request for the CreateBucket operation. The "output" return
266// value will be populated with the request's response once the request completes
267// successfully.
268//
269// Use "Send" method on the returned Request to send the API call to the service.
270// the "output" return value is not valid until after Send returns without error.
271//
272// See CreateBucket for more information on using the CreateBucket
273// API call, and error handling.
274//
275// This method is useful when you want to inject custom logic or configuration
276// into the SDK's request lifecycle. Such as custom headers, or retry logic.
277//
278//
279//    // Example sending a request using the CreateBucketRequest method.
280//    req, resp := client.CreateBucketRequest(params)
281//
282//    err := req.Send()
283//    if err == nil { // resp is now filled
284//        fmt.Println(resp)
285//    }
286//
287// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
288func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) {
289	op := &request.Operation{
290		Name:       opCreateBucket,
291		HTTPMethod: "PUT",
292		HTTPPath:   "/{Bucket}",
293	}
294
295	if input == nil {
296		input = &CreateBucketInput{}
297	}
298
299	output = &CreateBucketOutput{}
300	req = c.newRequest(op, input, output)
301	return
302}
303
304// CreateBucket API operation for Amazon Simple Storage Service.
305//
306// Creates a new bucket.
307//
308// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
309// with awserr.Error's Code and Message methods to get detailed information about
310// the error.
311//
312// See the AWS API reference guide for Amazon Simple Storage Service's
313// API operation CreateBucket for usage and error information.
314//
315// Returned Error Codes:
316//   * ErrCodeBucketAlreadyExists "BucketAlreadyExists"
317//   The requested bucket name is not available. The bucket namespace is shared
318//   by all users of the system. Please select a different name and try again.
319//
320//   * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou"
321//
322// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
323func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
324	req, out := c.CreateBucketRequest(input)
325	return out, req.Send()
326}
327
328// CreateBucketWithContext is the same as CreateBucket with the addition of
329// the ability to pass a context and additional request options.
330//
331// See CreateBucket for details on how to use this API operation.
332//
333// The context must be non-nil and will be used for request cancellation. If
334// the context is nil a panic will occur. In the future the SDK may create
335// sub-contexts for http.Requests. See https://golang.org/pkg/context/
336// for more information on using Contexts.
337func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) {
338	req, out := c.CreateBucketRequest(input)
339	req.SetContext(ctx)
340	req.ApplyOptions(opts...)
341	return out, req.Send()
342}
343
344const opCreateMultipartUpload = "CreateMultipartUpload"
345
346// CreateMultipartUploadRequest generates a "aws/request.Request" representing the
347// client's request for the CreateMultipartUpload operation. The "output" return
348// value will be populated with the request's response once the request completes
349// successfully.
350//
351// Use "Send" method on the returned Request to send the API call to the service.
352// the "output" return value is not valid until after Send returns without error.
353//
354// See CreateMultipartUpload for more information on using the CreateMultipartUpload
355// API call, and error handling.
356//
357// This method is useful when you want to inject custom logic or configuration
358// into the SDK's request lifecycle. Such as custom headers, or retry logic.
359//
360//
361//    // Example sending a request using the CreateMultipartUploadRequest method.
362//    req, resp := client.CreateMultipartUploadRequest(params)
363//
364//    err := req.Send()
365//    if err == nil { // resp is now filled
366//        fmt.Println(resp)
367//    }
368//
369// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
370func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) {
371	op := &request.Operation{
372		Name:       opCreateMultipartUpload,
373		HTTPMethod: "POST",
374		HTTPPath:   "/{Bucket}/{Key+}?uploads",
375	}
376
377	if input == nil {
378		input = &CreateMultipartUploadInput{}
379	}
380
381	output = &CreateMultipartUploadOutput{}
382	req = c.newRequest(op, input, output)
383	return
384}
385
386// CreateMultipartUpload API operation for Amazon Simple Storage Service.
387//
388// Initiates a multipart upload and returns an upload ID.
389//
390// Note: After you initiate multipart upload and upload one or more parts, you
391// must either complete or abort multipart upload in order to stop getting charged
392// for storage of the uploaded parts. Only after you either complete or abort
393// multipart upload, Amazon S3 frees up the parts storage and stops charging
394// you for the parts storage.
395//
396// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
397// with awserr.Error's Code and Message methods to get detailed information about
398// the error.
399//
400// See the AWS API reference guide for Amazon Simple Storage Service's
401// API operation CreateMultipartUpload for usage and error information.
402// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
403func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) {
404	req, out := c.CreateMultipartUploadRequest(input)
405	return out, req.Send()
406}
407
408// CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of
409// the ability to pass a context and additional request options.
410//
411// See CreateMultipartUpload for details on how to use this API operation.
412//
413// The context must be non-nil and will be used for request cancellation. If
414// the context is nil a panic will occur. In the future the SDK may create
415// sub-contexts for http.Requests. See https://golang.org/pkg/context/
416// for more information on using Contexts.
417func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) {
418	req, out := c.CreateMultipartUploadRequest(input)
419	req.SetContext(ctx)
420	req.ApplyOptions(opts...)
421	return out, req.Send()
422}
423
424const opDeleteBucket = "DeleteBucket"
425
426// DeleteBucketRequest generates a "aws/request.Request" representing the
427// client's request for the DeleteBucket operation. The "output" return
428// value will be populated with the request's response once the request completes
429// successfully.
430//
431// Use "Send" method on the returned Request to send the API call to the service.
432// the "output" return value is not valid until after Send returns without error.
433//
434// See DeleteBucket for more information on using the DeleteBucket
435// API call, and error handling.
436//
437// This method is useful when you want to inject custom logic or configuration
438// into the SDK's request lifecycle. Such as custom headers, or retry logic.
439//
440//
441//    // Example sending a request using the DeleteBucketRequest method.
442//    req, resp := client.DeleteBucketRequest(params)
443//
444//    err := req.Send()
445//    if err == nil { // resp is now filled
446//        fmt.Println(resp)
447//    }
448//
449// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
450func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) {
451	op := &request.Operation{
452		Name:       opDeleteBucket,
453		HTTPMethod: "DELETE",
454		HTTPPath:   "/{Bucket}",
455	}
456
457	if input == nil {
458		input = &DeleteBucketInput{}
459	}
460
461	output = &DeleteBucketOutput{}
462	req = c.newRequest(op, input, output)
463	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
464	return
465}
466
467// DeleteBucket API operation for Amazon Simple Storage Service.
468//
469// Deletes the bucket. All objects (including all object versions and Delete
470// Markers) in the bucket must be deleted before the bucket itself can be deleted.
471//
472// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
473// with awserr.Error's Code and Message methods to get detailed information about
474// the error.
475//
476// See the AWS API reference guide for Amazon Simple Storage Service's
477// API operation DeleteBucket for usage and error information.
478// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
479func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
480	req, out := c.DeleteBucketRequest(input)
481	return out, req.Send()
482}
483
484// DeleteBucketWithContext is the same as DeleteBucket with the addition of
485// the ability to pass a context and additional request options.
486//
487// See DeleteBucket for details on how to use this API operation.
488//
489// The context must be non-nil and will be used for request cancellation. If
490// the context is nil a panic will occur. In the future the SDK may create
491// sub-contexts for http.Requests. See https://golang.org/pkg/context/
492// for more information on using Contexts.
493func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
494	req, out := c.DeleteBucketRequest(input)
495	req.SetContext(ctx)
496	req.ApplyOptions(opts...)
497	return out, req.Send()
498}
499
500const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
501
502// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
503// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
504// value will be populated with the request's response once the request completes
505// successfully.
506//
507// Use "Send" method on the returned Request to send the API call to the service.
508// the "output" return value is not valid until after Send returns without error.
509//
510// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
511// API call, and error handling.
512//
513// This method is useful when you want to inject custom logic or configuration
514// into the SDK's request lifecycle. Such as custom headers, or retry logic.
515//
516//
517//    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
518//    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
519//
520//    err := req.Send()
521//    if err == nil { // resp is now filled
522//        fmt.Println(resp)
523//    }
524//
525// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
526func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
527	op := &request.Operation{
528		Name:       opDeleteBucketAnalyticsConfiguration,
529		HTTPMethod: "DELETE",
530		HTTPPath:   "/{Bucket}?analytics",
531	}
532
533	if input == nil {
534		input = &DeleteBucketAnalyticsConfigurationInput{}
535	}
536
537	output = &DeleteBucketAnalyticsConfigurationOutput{}
538	req = c.newRequest(op, input, output)
539	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
540	return
541}
542
543// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
544//
545// Deletes an analytics configuration for the bucket (specified by the analytics
546// configuration ID).
547//
548// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
549// with awserr.Error's Code and Message methods to get detailed information about
550// the error.
551//
552// See the AWS API reference guide for Amazon Simple Storage Service's
553// API operation DeleteBucketAnalyticsConfiguration for usage and error information.
554// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
555func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
556	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
557	return out, req.Send()
558}
559
560// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
561// the ability to pass a context and additional request options.
562//
563// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
564//
565// The context must be non-nil and will be used for request cancellation. If
566// the context is nil a panic will occur. In the future the SDK may create
567// sub-contexts for http.Requests. See https://golang.org/pkg/context/
568// for more information on using Contexts.
569func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
570	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
571	req.SetContext(ctx)
572	req.ApplyOptions(opts...)
573	return out, req.Send()
574}
575
576const opDeleteBucketCors = "DeleteBucketCors"
577
578// DeleteBucketCorsRequest generates a "aws/request.Request" representing the
579// client's request for the DeleteBucketCors operation. The "output" return
580// value will be populated with the request's response once the request completes
581// successfully.
582//
583// Use "Send" method on the returned Request to send the API call to the service.
584// the "output" return value is not valid until after Send returns without error.
585//
586// See DeleteBucketCors for more information on using the DeleteBucketCors
587// API call, and error handling.
588//
589// This method is useful when you want to inject custom logic or configuration
590// into the SDK's request lifecycle. Such as custom headers, or retry logic.
591//
592//
593//    // Example sending a request using the DeleteBucketCorsRequest method.
594//    req, resp := client.DeleteBucketCorsRequest(params)
595//
596//    err := req.Send()
597//    if err == nil { // resp is now filled
598//        fmt.Println(resp)
599//    }
600//
601// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
602func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
603	op := &request.Operation{
604		Name:       opDeleteBucketCors,
605		HTTPMethod: "DELETE",
606		HTTPPath:   "/{Bucket}?cors",
607	}
608
609	if input == nil {
610		input = &DeleteBucketCorsInput{}
611	}
612
613	output = &DeleteBucketCorsOutput{}
614	req = c.newRequest(op, input, output)
615	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
616	return
617}
618
619// DeleteBucketCors API operation for Amazon Simple Storage Service.
620//
621// Deletes the CORS configuration information set for the bucket.
622//
623// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
624// with awserr.Error's Code and Message methods to get detailed information about
625// the error.
626//
627// See the AWS API reference guide for Amazon Simple Storage Service's
628// API operation DeleteBucketCors for usage and error information.
629// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
630func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
631	req, out := c.DeleteBucketCorsRequest(input)
632	return out, req.Send()
633}
634
635// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
636// the ability to pass a context and additional request options.
637//
638// See DeleteBucketCors for details on how to use this API operation.
639//
640// The context must be non-nil and will be used for request cancellation. If
641// the context is nil a panic will occur. In the future the SDK may create
642// sub-contexts for http.Requests. See https://golang.org/pkg/context/
643// for more information on using Contexts.
644func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
645	req, out := c.DeleteBucketCorsRequest(input)
646	req.SetContext(ctx)
647	req.ApplyOptions(opts...)
648	return out, req.Send()
649}
650
651const opDeleteBucketEncryption = "DeleteBucketEncryption"
652
653// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
654// client's request for the DeleteBucketEncryption operation. The "output" return
655// value will be populated with the request's response once the request completes
656// successfully.
657//
658// Use "Send" method on the returned Request to send the API call to the service.
659// the "output" return value is not valid until after Send returns without error.
660//
661// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
662// API call, and error handling.
663//
664// This method is useful when you want to inject custom logic or configuration
665// into the SDK's request lifecycle. Such as custom headers, or retry logic.
666//
667//
668//    // Example sending a request using the DeleteBucketEncryptionRequest method.
669//    req, resp := client.DeleteBucketEncryptionRequest(params)
670//
671//    err := req.Send()
672//    if err == nil { // resp is now filled
673//        fmt.Println(resp)
674//    }
675//
676// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
677func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
678	op := &request.Operation{
679		Name:       opDeleteBucketEncryption,
680		HTTPMethod: "DELETE",
681		HTTPPath:   "/{Bucket}?encryption",
682	}
683
684	if input == nil {
685		input = &DeleteBucketEncryptionInput{}
686	}
687
688	output = &DeleteBucketEncryptionOutput{}
689	req = c.newRequest(op, input, output)
690	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
691	return
692}
693
694// DeleteBucketEncryption API operation for Amazon Simple Storage Service.
695//
696// Deletes the server-side encryption configuration from the bucket.
697//
698// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
699// with awserr.Error's Code and Message methods to get detailed information about
700// the error.
701//
702// See the AWS API reference guide for Amazon Simple Storage Service's
703// API operation DeleteBucketEncryption for usage and error information.
704// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
705func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
706	req, out := c.DeleteBucketEncryptionRequest(input)
707	return out, req.Send()
708}
709
710// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
711// the ability to pass a context and additional request options.
712//
713// See DeleteBucketEncryption for details on how to use this API operation.
714//
715// The context must be non-nil and will be used for request cancellation. If
716// the context is nil a panic will occur. In the future the SDK may create
717// sub-contexts for http.Requests. See https://golang.org/pkg/context/
718// for more information on using Contexts.
719func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
720	req, out := c.DeleteBucketEncryptionRequest(input)
721	req.SetContext(ctx)
722	req.ApplyOptions(opts...)
723	return out, req.Send()
724}
725
726const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
727
728// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
729// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
730// value will be populated with the request's response once the request completes
731// successfully.
732//
733// Use "Send" method on the returned Request to send the API call to the service.
734// the "output" return value is not valid until after Send returns without error.
735//
736// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
737// API call, and error handling.
738//
739// This method is useful when you want to inject custom logic or configuration
740// into the SDK's request lifecycle. Such as custom headers, or retry logic.
741//
742//
743//    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
744//    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
745//
746//    err := req.Send()
747//    if err == nil { // resp is now filled
748//        fmt.Println(resp)
749//    }
750//
751// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
752func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
753	op := &request.Operation{
754		Name:       opDeleteBucketInventoryConfiguration,
755		HTTPMethod: "DELETE",
756		HTTPPath:   "/{Bucket}?inventory",
757	}
758
759	if input == nil {
760		input = &DeleteBucketInventoryConfigurationInput{}
761	}
762
763	output = &DeleteBucketInventoryConfigurationOutput{}
764	req = c.newRequest(op, input, output)
765	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
766	return
767}
768
769// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
770//
771// Deletes an inventory configuration (identified by the inventory ID) from
772// the bucket.
773//
774// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
775// with awserr.Error's Code and Message methods to get detailed information about
776// the error.
777//
778// See the AWS API reference guide for Amazon Simple Storage Service's
779// API operation DeleteBucketInventoryConfiguration for usage and error information.
780// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
781func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
782	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
783	return out, req.Send()
784}
785
786// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
787// the ability to pass a context and additional request options.
788//
789// See DeleteBucketInventoryConfiguration for details on how to use this API operation.
790//
791// The context must be non-nil and will be used for request cancellation. If
792// the context is nil a panic will occur. In the future the SDK may create
793// sub-contexts for http.Requests. See https://golang.org/pkg/context/
794// for more information on using Contexts.
795func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
796	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
797	req.SetContext(ctx)
798	req.ApplyOptions(opts...)
799	return out, req.Send()
800}
801
802const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
803
804// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
805// client's request for the DeleteBucketLifecycle operation. The "output" return
806// value will be populated with the request's response once the request completes
807// successfully.
808//
809// Use "Send" method on the returned Request to send the API call to the service.
810// the "output" return value is not valid until after Send returns without error.
811//
812// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
813// API call, and error handling.
814//
815// This method is useful when you want to inject custom logic or configuration
816// into the SDK's request lifecycle. Such as custom headers, or retry logic.
817//
818//
819//    // Example sending a request using the DeleteBucketLifecycleRequest method.
820//    req, resp := client.DeleteBucketLifecycleRequest(params)
821//
822//    err := req.Send()
823//    if err == nil { // resp is now filled
824//        fmt.Println(resp)
825//    }
826//
827// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
828func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
829	op := &request.Operation{
830		Name:       opDeleteBucketLifecycle,
831		HTTPMethod: "DELETE",
832		HTTPPath:   "/{Bucket}?lifecycle",
833	}
834
835	if input == nil {
836		input = &DeleteBucketLifecycleInput{}
837	}
838
839	output = &DeleteBucketLifecycleOutput{}
840	req = c.newRequest(op, input, output)
841	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
842	return
843}
844
845// DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
846//
847// Deletes the lifecycle configuration from the bucket.
848//
849// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
850// with awserr.Error's Code and Message methods to get detailed information about
851// the error.
852//
853// See the AWS API reference guide for Amazon Simple Storage Service's
854// API operation DeleteBucketLifecycle for usage and error information.
855// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
856func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
857	req, out := c.DeleteBucketLifecycleRequest(input)
858	return out, req.Send()
859}
860
861// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
862// the ability to pass a context and additional request options.
863//
864// See DeleteBucketLifecycle for details on how to use this API operation.
865//
866// The context must be non-nil and will be used for request cancellation. If
867// the context is nil a panic will occur. In the future the SDK may create
868// sub-contexts for http.Requests. See https://golang.org/pkg/context/
869// for more information on using Contexts.
870func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
871	req, out := c.DeleteBucketLifecycleRequest(input)
872	req.SetContext(ctx)
873	req.ApplyOptions(opts...)
874	return out, req.Send()
875}
876
877const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
878
879// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
880// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
881// value will be populated with the request's response once the request completes
882// successfully.
883//
884// Use "Send" method on the returned Request to send the API call to the service.
885// the "output" return value is not valid until after Send returns without error.
886//
887// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
888// API call, and error handling.
889//
890// This method is useful when you want to inject custom logic or configuration
891// into the SDK's request lifecycle. Such as custom headers, or retry logic.
892//
893//
894//    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
895//    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
896//
897//    err := req.Send()
898//    if err == nil { // resp is now filled
899//        fmt.Println(resp)
900//    }
901//
902// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
903func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
904	op := &request.Operation{
905		Name:       opDeleteBucketMetricsConfiguration,
906		HTTPMethod: "DELETE",
907		HTTPPath:   "/{Bucket}?metrics",
908	}
909
910	if input == nil {
911		input = &DeleteBucketMetricsConfigurationInput{}
912	}
913
914	output = &DeleteBucketMetricsConfigurationOutput{}
915	req = c.newRequest(op, input, output)
916	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
917	return
918}
919
920// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
921//
922// Deletes a metrics configuration (specified by the metrics configuration ID)
923// from the bucket.
924//
925// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
926// with awserr.Error's Code and Message methods to get detailed information about
927// the error.
928//
929// See the AWS API reference guide for Amazon Simple Storage Service's
930// API operation DeleteBucketMetricsConfiguration for usage and error information.
931// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
932func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
933	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
934	return out, req.Send()
935}
936
937// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
938// the ability to pass a context and additional request options.
939//
940// See DeleteBucketMetricsConfiguration for details on how to use this API operation.
941//
942// The context must be non-nil and will be used for request cancellation. If
943// the context is nil a panic will occur. In the future the SDK may create
944// sub-contexts for http.Requests. See https://golang.org/pkg/context/
945// for more information on using Contexts.
946func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
947	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
948	req.SetContext(ctx)
949	req.ApplyOptions(opts...)
950	return out, req.Send()
951}
952
953const opDeleteBucketPolicy = "DeleteBucketPolicy"
954
955// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
956// client's request for the DeleteBucketPolicy operation. The "output" return
957// value will be populated with the request's response once the request completes
958// successfully.
959//
960// Use "Send" method on the returned Request to send the API call to the service.
961// the "output" return value is not valid until after Send returns without error.
962//
963// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
964// API call, and error handling.
965//
966// This method is useful when you want to inject custom logic or configuration
967// into the SDK's request lifecycle. Such as custom headers, or retry logic.
968//
969//
970//    // Example sending a request using the DeleteBucketPolicyRequest method.
971//    req, resp := client.DeleteBucketPolicyRequest(params)
972//
973//    err := req.Send()
974//    if err == nil { // resp is now filled
975//        fmt.Println(resp)
976//    }
977//
978// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
979func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
980	op := &request.Operation{
981		Name:       opDeleteBucketPolicy,
982		HTTPMethod: "DELETE",
983		HTTPPath:   "/{Bucket}?policy",
984	}
985
986	if input == nil {
987		input = &DeleteBucketPolicyInput{}
988	}
989
990	output = &DeleteBucketPolicyOutput{}
991	req = c.newRequest(op, input, output)
992	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
993	return
994}
995
996// DeleteBucketPolicy API operation for Amazon Simple Storage Service.
997//
998// Deletes the policy from the bucket.
999//
1000// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1001// with awserr.Error's Code and Message methods to get detailed information about
1002// the error.
1003//
1004// See the AWS API reference guide for Amazon Simple Storage Service's
1005// API operation DeleteBucketPolicy for usage and error information.
1006// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1007func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
1008	req, out := c.DeleteBucketPolicyRequest(input)
1009	return out, req.Send()
1010}
1011
1012// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
1013// the ability to pass a context and additional request options.
1014//
1015// See DeleteBucketPolicy for details on how to use this API operation.
1016//
1017// The context must be non-nil and will be used for request cancellation. If
1018// the context is nil a panic will occur. In the future the SDK may create
1019// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1020// for more information on using Contexts.
1021func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
1022	req, out := c.DeleteBucketPolicyRequest(input)
1023	req.SetContext(ctx)
1024	req.ApplyOptions(opts...)
1025	return out, req.Send()
1026}
1027
1028const opDeleteBucketReplication = "DeleteBucketReplication"
1029
1030// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
1031// client's request for the DeleteBucketReplication operation. The "output" return
1032// value will be populated with the request's response once the request completes
1033// successfully.
1034//
1035// Use "Send" method on the returned Request to send the API call to the service.
1036// the "output" return value is not valid until after Send returns without error.
1037//
1038// See DeleteBucketReplication for more information on using the DeleteBucketReplication
1039// API call, and error handling.
1040//
1041// This method is useful when you want to inject custom logic or configuration
1042// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1043//
1044//
1045//    // Example sending a request using the DeleteBucketReplicationRequest method.
1046//    req, resp := client.DeleteBucketReplicationRequest(params)
1047//
1048//    err := req.Send()
1049//    if err == nil { // resp is now filled
1050//        fmt.Println(resp)
1051//    }
1052//
1053// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1054func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
1055	op := &request.Operation{
1056		Name:       opDeleteBucketReplication,
1057		HTTPMethod: "DELETE",
1058		HTTPPath:   "/{Bucket}?replication",
1059	}
1060
1061	if input == nil {
1062		input = &DeleteBucketReplicationInput{}
1063	}
1064
1065	output = &DeleteBucketReplicationOutput{}
1066	req = c.newRequest(op, input, output)
1067	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1068	return
1069}
1070
1071// DeleteBucketReplication API operation for Amazon Simple Storage Service.
1072//
1073// Deletes the replication configuration from the bucket. For information about
1074// replication configuration, see Cross-Region Replication (CRR) (https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html)
1075// in the Amazon S3 Developer Guide.
1076//
1077// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1078// with awserr.Error's Code and Message methods to get detailed information about
1079// the error.
1080//
1081// See the AWS API reference guide for Amazon Simple Storage Service's
1082// API operation DeleteBucketReplication for usage and error information.
1083// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1084func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
1085	req, out := c.DeleteBucketReplicationRequest(input)
1086	return out, req.Send()
1087}
1088
1089// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
1090// the ability to pass a context and additional request options.
1091//
1092// See DeleteBucketReplication for details on how to use this API operation.
1093//
1094// The context must be non-nil and will be used for request cancellation. If
1095// the context is nil a panic will occur. In the future the SDK may create
1096// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1097// for more information on using Contexts.
1098func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
1099	req, out := c.DeleteBucketReplicationRequest(input)
1100	req.SetContext(ctx)
1101	req.ApplyOptions(opts...)
1102	return out, req.Send()
1103}
1104
1105const opDeleteBucketTagging = "DeleteBucketTagging"
1106
1107// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
1108// client's request for the DeleteBucketTagging operation. The "output" return
1109// value will be populated with the request's response once the request completes
1110// successfully.
1111//
1112// Use "Send" method on the returned Request to send the API call to the service.
1113// the "output" return value is not valid until after Send returns without error.
1114//
1115// See DeleteBucketTagging for more information on using the DeleteBucketTagging
1116// API call, and error handling.
1117//
1118// This method is useful when you want to inject custom logic or configuration
1119// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1120//
1121//
1122//    // Example sending a request using the DeleteBucketTaggingRequest method.
1123//    req, resp := client.DeleteBucketTaggingRequest(params)
1124//
1125//    err := req.Send()
1126//    if err == nil { // resp is now filled
1127//        fmt.Println(resp)
1128//    }
1129//
1130// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1131func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
1132	op := &request.Operation{
1133		Name:       opDeleteBucketTagging,
1134		HTTPMethod: "DELETE",
1135		HTTPPath:   "/{Bucket}?tagging",
1136	}
1137
1138	if input == nil {
1139		input = &DeleteBucketTaggingInput{}
1140	}
1141
1142	output = &DeleteBucketTaggingOutput{}
1143	req = c.newRequest(op, input, output)
1144	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1145	return
1146}
1147
1148// DeleteBucketTagging API operation for Amazon Simple Storage Service.
1149//
1150// Deletes the tags from the bucket.
1151//
1152// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1153// with awserr.Error's Code and Message methods to get detailed information about
1154// the error.
1155//
1156// See the AWS API reference guide for Amazon Simple Storage Service's
1157// API operation DeleteBucketTagging for usage and error information.
1158// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1159func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
1160	req, out := c.DeleteBucketTaggingRequest(input)
1161	return out, req.Send()
1162}
1163
1164// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
1165// the ability to pass a context and additional request options.
1166//
1167// See DeleteBucketTagging for details on how to use this API operation.
1168//
1169// The context must be non-nil and will be used for request cancellation. If
1170// the context is nil a panic will occur. In the future the SDK may create
1171// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1172// for more information on using Contexts.
1173func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
1174	req, out := c.DeleteBucketTaggingRequest(input)
1175	req.SetContext(ctx)
1176	req.ApplyOptions(opts...)
1177	return out, req.Send()
1178}
1179
1180const opDeleteBucketWebsite = "DeleteBucketWebsite"
1181
1182// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
1183// client's request for the DeleteBucketWebsite operation. The "output" return
1184// value will be populated with the request's response once the request completes
1185// successfully.
1186//
1187// Use "Send" method on the returned Request to send the API call to the service.
1188// the "output" return value is not valid until after Send returns without error.
1189//
1190// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
1191// API call, and error handling.
1192//
1193// This method is useful when you want to inject custom logic or configuration
1194// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1195//
1196//
1197//    // Example sending a request using the DeleteBucketWebsiteRequest method.
1198//    req, resp := client.DeleteBucketWebsiteRequest(params)
1199//
1200//    err := req.Send()
1201//    if err == nil { // resp is now filled
1202//        fmt.Println(resp)
1203//    }
1204//
1205// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1206func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
1207	op := &request.Operation{
1208		Name:       opDeleteBucketWebsite,
1209		HTTPMethod: "DELETE",
1210		HTTPPath:   "/{Bucket}?website",
1211	}
1212
1213	if input == nil {
1214		input = &DeleteBucketWebsiteInput{}
1215	}
1216
1217	output = &DeleteBucketWebsiteOutput{}
1218	req = c.newRequest(op, input, output)
1219	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1220	return
1221}
1222
1223// DeleteBucketWebsite API operation for Amazon Simple Storage Service.
1224//
1225// This operation removes the website configuration from the bucket.
1226//
1227// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1228// with awserr.Error's Code and Message methods to get detailed information about
1229// the error.
1230//
1231// See the AWS API reference guide for Amazon Simple Storage Service's
1232// API operation DeleteBucketWebsite for usage and error information.
1233// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1234func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
1235	req, out := c.DeleteBucketWebsiteRequest(input)
1236	return out, req.Send()
1237}
1238
1239// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
1240// the ability to pass a context and additional request options.
1241//
1242// See DeleteBucketWebsite for details on how to use this API operation.
1243//
1244// The context must be non-nil and will be used for request cancellation. If
1245// the context is nil a panic will occur. In the future the SDK may create
1246// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1247// for more information on using Contexts.
1248func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
1249	req, out := c.DeleteBucketWebsiteRequest(input)
1250	req.SetContext(ctx)
1251	req.ApplyOptions(opts...)
1252	return out, req.Send()
1253}
1254
1255const opDeleteObject = "DeleteObject"
1256
1257// DeleteObjectRequest generates a "aws/request.Request" representing the
1258// client's request for the DeleteObject operation. The "output" return
1259// value will be populated with the request's response once the request completes
1260// successfully.
1261//
1262// Use "Send" method on the returned Request to send the API call to the service.
1263// the "output" return value is not valid until after Send returns without error.
1264//
1265// See DeleteObject for more information on using the DeleteObject
1266// API call, and error handling.
1267//
1268// This method is useful when you want to inject custom logic or configuration
1269// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1270//
1271//
1272//    // Example sending a request using the DeleteObjectRequest method.
1273//    req, resp := client.DeleteObjectRequest(params)
1274//
1275//    err := req.Send()
1276//    if err == nil { // resp is now filled
1277//        fmt.Println(resp)
1278//    }
1279//
1280// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1281func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
1282	op := &request.Operation{
1283		Name:       opDeleteObject,
1284		HTTPMethod: "DELETE",
1285		HTTPPath:   "/{Bucket}/{Key+}",
1286	}
1287
1288	if input == nil {
1289		input = &DeleteObjectInput{}
1290	}
1291
1292	output = &DeleteObjectOutput{}
1293	req = c.newRequest(op, input, output)
1294	return
1295}
1296
1297// DeleteObject API operation for Amazon Simple Storage Service.
1298//
1299// Removes the null version (if there is one) of an object and inserts a delete
1300// marker, which becomes the latest version of the object. If there isn't a
1301// null version, Amazon S3 does not remove any objects.
1302//
1303// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1304// with awserr.Error's Code and Message methods to get detailed information about
1305// the error.
1306//
1307// See the AWS API reference guide for Amazon Simple Storage Service's
1308// API operation DeleteObject for usage and error information.
1309// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1310func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
1311	req, out := c.DeleteObjectRequest(input)
1312	return out, req.Send()
1313}
1314
1315// DeleteObjectWithContext is the same as DeleteObject with the addition of
1316// the ability to pass a context and additional request options.
1317//
1318// See DeleteObject for details on how to use this API operation.
1319//
1320// The context must be non-nil and will be used for request cancellation. If
1321// the context is nil a panic will occur. In the future the SDK may create
1322// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1323// for more information on using Contexts.
1324func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
1325	req, out := c.DeleteObjectRequest(input)
1326	req.SetContext(ctx)
1327	req.ApplyOptions(opts...)
1328	return out, req.Send()
1329}
1330
1331const opDeleteObjectTagging = "DeleteObjectTagging"
1332
1333// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
1334// client's request for the DeleteObjectTagging operation. The "output" return
1335// value will be populated with the request's response once the request completes
1336// successfully.
1337//
1338// Use "Send" method on the returned Request to send the API call to the service.
1339// the "output" return value is not valid until after Send returns without error.
1340//
1341// See DeleteObjectTagging for more information on using the DeleteObjectTagging
1342// API call, and error handling.
1343//
1344// This method is useful when you want to inject custom logic or configuration
1345// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1346//
1347//
1348//    // Example sending a request using the DeleteObjectTaggingRequest method.
1349//    req, resp := client.DeleteObjectTaggingRequest(params)
1350//
1351//    err := req.Send()
1352//    if err == nil { // resp is now filled
1353//        fmt.Println(resp)
1354//    }
1355//
1356// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
1357func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
1358	op := &request.Operation{
1359		Name:       opDeleteObjectTagging,
1360		HTTPMethod: "DELETE",
1361		HTTPPath:   "/{Bucket}/{Key+}?tagging",
1362	}
1363
1364	if input == nil {
1365		input = &DeleteObjectTaggingInput{}
1366	}
1367
1368	output = &DeleteObjectTaggingOutput{}
1369	req = c.newRequest(op, input, output)
1370	return
1371}
1372
1373// DeleteObjectTagging API operation for Amazon Simple Storage Service.
1374//
1375// Removes the tag-set from an existing object.
1376//
1377// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1378// with awserr.Error's Code and Message methods to get detailed information about
1379// the error.
1380//
1381// See the AWS API reference guide for Amazon Simple Storage Service's
1382// API operation DeleteObjectTagging for usage and error information.
1383// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
1384func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
1385	req, out := c.DeleteObjectTaggingRequest(input)
1386	return out, req.Send()
1387}
1388
1389// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
1390// the ability to pass a context and additional request options.
1391//
1392// See DeleteObjectTagging for details on how to use this API operation.
1393//
1394// The context must be non-nil and will be used for request cancellation. If
1395// the context is nil a panic will occur. In the future the SDK may create
1396// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1397// for more information on using Contexts.
1398func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
1399	req, out := c.DeleteObjectTaggingRequest(input)
1400	req.SetContext(ctx)
1401	req.ApplyOptions(opts...)
1402	return out, req.Send()
1403}
1404
1405const opDeleteObjects = "DeleteObjects"
1406
1407// DeleteObjectsRequest generates a "aws/request.Request" representing the
1408// client's request for the DeleteObjects operation. The "output" return
1409// value will be populated with the request's response once the request completes
1410// successfully.
1411//
1412// Use "Send" method on the returned Request to send the API call to the service.
1413// the "output" return value is not valid until after Send returns without error.
1414//
1415// See DeleteObjects for more information on using the DeleteObjects
1416// API call, and error handling.
1417//
1418// This method is useful when you want to inject custom logic or configuration
1419// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1420//
1421//
1422//    // Example sending a request using the DeleteObjectsRequest method.
1423//    req, resp := client.DeleteObjectsRequest(params)
1424//
1425//    err := req.Send()
1426//    if err == nil { // resp is now filled
1427//        fmt.Println(resp)
1428//    }
1429//
1430// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
1431func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
1432	op := &request.Operation{
1433		Name:       opDeleteObjects,
1434		HTTPMethod: "POST",
1435		HTTPPath:   "/{Bucket}?delete",
1436	}
1437
1438	if input == nil {
1439		input = &DeleteObjectsInput{}
1440	}
1441
1442	output = &DeleteObjectsOutput{}
1443	req = c.newRequest(op, input, output)
1444	return
1445}
1446
1447// DeleteObjects API operation for Amazon Simple Storage Service.
1448//
1449// This operation enables you to delete multiple objects from a bucket using
1450// a single HTTP request. You may specify up to 1000 keys.
1451//
1452// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1453// with awserr.Error's Code and Message methods to get detailed information about
1454// the error.
1455//
1456// See the AWS API reference guide for Amazon Simple Storage Service's
1457// API operation DeleteObjects for usage and error information.
1458// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
1459func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
1460	req, out := c.DeleteObjectsRequest(input)
1461	return out, req.Send()
1462}
1463
1464// DeleteObjectsWithContext is the same as DeleteObjects with the addition of
1465// the ability to pass a context and additional request options.
1466//
1467// See DeleteObjects for details on how to use this API operation.
1468//
1469// The context must be non-nil and will be used for request cancellation. If
1470// the context is nil a panic will occur. In the future the SDK may create
1471// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1472// for more information on using Contexts.
1473func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
1474	req, out := c.DeleteObjectsRequest(input)
1475	req.SetContext(ctx)
1476	req.ApplyOptions(opts...)
1477	return out, req.Send()
1478}
1479
1480const opDeletePublicAccessBlock = "DeletePublicAccessBlock"
1481
1482// DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the
1483// client's request for the DeletePublicAccessBlock operation. The "output" return
1484// value will be populated with the request's response once the request completes
1485// successfully.
1486//
1487// Use "Send" method on the returned Request to send the API call to the service.
1488// the "output" return value is not valid until after Send returns without error.
1489//
1490// See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock
1491// API call, and error handling.
1492//
1493// This method is useful when you want to inject custom logic or configuration
1494// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1495//
1496//
1497//    // Example sending a request using the DeletePublicAccessBlockRequest method.
1498//    req, resp := client.DeletePublicAccessBlockRequest(params)
1499//
1500//    err := req.Send()
1501//    if err == nil { // resp is now filled
1502//        fmt.Println(resp)
1503//    }
1504//
1505// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
1506func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) {
1507	op := &request.Operation{
1508		Name:       opDeletePublicAccessBlock,
1509		HTTPMethod: "DELETE",
1510		HTTPPath:   "/{Bucket}?publicAccessBlock",
1511	}
1512
1513	if input == nil {
1514		input = &DeletePublicAccessBlockInput{}
1515	}
1516
1517	output = &DeletePublicAccessBlockOutput{}
1518	req = c.newRequest(op, input, output)
1519	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1520	return
1521}
1522
1523// DeletePublicAccessBlock API operation for Amazon Simple Storage Service.
1524//
1525// Removes the PublicAccessBlock configuration from an Amazon S3 bucket.
1526//
1527// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1528// with awserr.Error's Code and Message methods to get detailed information about
1529// the error.
1530//
1531// See the AWS API reference guide for Amazon Simple Storage Service's
1532// API operation DeletePublicAccessBlock for usage and error information.
1533// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
1534func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) {
1535	req, out := c.DeletePublicAccessBlockRequest(input)
1536	return out, req.Send()
1537}
1538
1539// DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of
1540// the ability to pass a context and additional request options.
1541//
1542// See DeletePublicAccessBlock for details on how to use this API operation.
1543//
1544// The context must be non-nil and will be used for request cancellation. If
1545// the context is nil a panic will occur. In the future the SDK may create
1546// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1547// for more information on using Contexts.
1548func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) {
1549	req, out := c.DeletePublicAccessBlockRequest(input)
1550	req.SetContext(ctx)
1551	req.ApplyOptions(opts...)
1552	return out, req.Send()
1553}
1554
1555const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
1556
1557// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
1558// client's request for the GetBucketAccelerateConfiguration operation. The "output" return
1559// value will be populated with the request's response once the request completes
1560// successfully.
1561//
1562// Use "Send" method on the returned Request to send the API call to the service.
1563// the "output" return value is not valid until after Send returns without error.
1564//
1565// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
1566// API call, and error handling.
1567//
1568// This method is useful when you want to inject custom logic or configuration
1569// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1570//
1571//
1572//    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
1573//    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
1574//
1575//    err := req.Send()
1576//    if err == nil { // resp is now filled
1577//        fmt.Println(resp)
1578//    }
1579//
1580// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
1581func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
1582	op := &request.Operation{
1583		Name:       opGetBucketAccelerateConfiguration,
1584		HTTPMethod: "GET",
1585		HTTPPath:   "/{Bucket}?accelerate",
1586	}
1587
1588	if input == nil {
1589		input = &GetBucketAccelerateConfigurationInput{}
1590	}
1591
1592	output = &GetBucketAccelerateConfigurationOutput{}
1593	req = c.newRequest(op, input, output)
1594	return
1595}
1596
1597// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
1598//
1599// Returns the accelerate configuration of a bucket.
1600//
1601// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1602// with awserr.Error's Code and Message methods to get detailed information about
1603// the error.
1604//
1605// See the AWS API reference guide for Amazon Simple Storage Service's
1606// API operation GetBucketAccelerateConfiguration for usage and error information.
1607// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
1608func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
1609	req, out := c.GetBucketAccelerateConfigurationRequest(input)
1610	return out, req.Send()
1611}
1612
1613// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
1614// the ability to pass a context and additional request options.
1615//
1616// See GetBucketAccelerateConfiguration for details on how to use this API operation.
1617//
1618// The context must be non-nil and will be used for request cancellation. If
1619// the context is nil a panic will occur. In the future the SDK may create
1620// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1621// for more information on using Contexts.
1622func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
1623	req, out := c.GetBucketAccelerateConfigurationRequest(input)
1624	req.SetContext(ctx)
1625	req.ApplyOptions(opts...)
1626	return out, req.Send()
1627}
1628
1629const opGetBucketAcl = "GetBucketAcl"
1630
1631// GetBucketAclRequest generates a "aws/request.Request" representing the
1632// client's request for the GetBucketAcl operation. The "output" return
1633// value will be populated with the request's response once the request completes
1634// successfully.
1635//
1636// Use "Send" method on the returned Request to send the API call to the service.
1637// the "output" return value is not valid until after Send returns without error.
1638//
1639// See GetBucketAcl for more information on using the GetBucketAcl
1640// API call, and error handling.
1641//
1642// This method is useful when you want to inject custom logic or configuration
1643// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1644//
1645//
1646//    // Example sending a request using the GetBucketAclRequest method.
1647//    req, resp := client.GetBucketAclRequest(params)
1648//
1649//    err := req.Send()
1650//    if err == nil { // resp is now filled
1651//        fmt.Println(resp)
1652//    }
1653//
1654// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
1655func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
1656	op := &request.Operation{
1657		Name:       opGetBucketAcl,
1658		HTTPMethod: "GET",
1659		HTTPPath:   "/{Bucket}?acl",
1660	}
1661
1662	if input == nil {
1663		input = &GetBucketAclInput{}
1664	}
1665
1666	output = &GetBucketAclOutput{}
1667	req = c.newRequest(op, input, output)
1668	return
1669}
1670
1671// GetBucketAcl API operation for Amazon Simple Storage Service.
1672//
1673// Gets the access control policy for the bucket.
1674//
1675// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1676// with awserr.Error's Code and Message methods to get detailed information about
1677// the error.
1678//
1679// See the AWS API reference guide for Amazon Simple Storage Service's
1680// API operation GetBucketAcl for usage and error information.
1681// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
1682func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
1683	req, out := c.GetBucketAclRequest(input)
1684	return out, req.Send()
1685}
1686
1687// GetBucketAclWithContext is the same as GetBucketAcl with the addition of
1688// the ability to pass a context and additional request options.
1689//
1690// See GetBucketAcl for details on how to use this API operation.
1691//
1692// The context must be non-nil and will be used for request cancellation. If
1693// the context is nil a panic will occur. In the future the SDK may create
1694// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1695// for more information on using Contexts.
1696func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
1697	req, out := c.GetBucketAclRequest(input)
1698	req.SetContext(ctx)
1699	req.ApplyOptions(opts...)
1700	return out, req.Send()
1701}
1702
1703const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
1704
1705// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
1706// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
1707// value will be populated with the request's response once the request completes
1708// successfully.
1709//
1710// Use "Send" method on the returned Request to send the API call to the service.
1711// the "output" return value is not valid until after Send returns without error.
1712//
1713// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
1714// API call, and error handling.
1715//
1716// This method is useful when you want to inject custom logic or configuration
1717// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1718//
1719//
1720//    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
1721//    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
1722//
1723//    err := req.Send()
1724//    if err == nil { // resp is now filled
1725//        fmt.Println(resp)
1726//    }
1727//
1728// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
1729func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
1730	op := &request.Operation{
1731		Name:       opGetBucketAnalyticsConfiguration,
1732		HTTPMethod: "GET",
1733		HTTPPath:   "/{Bucket}?analytics",
1734	}
1735
1736	if input == nil {
1737		input = &GetBucketAnalyticsConfigurationInput{}
1738	}
1739
1740	output = &GetBucketAnalyticsConfigurationOutput{}
1741	req = c.newRequest(op, input, output)
1742	return
1743}
1744
1745// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
1746//
1747// Gets an analytics configuration for the bucket (specified by the analytics
1748// configuration ID).
1749//
1750// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1751// with awserr.Error's Code and Message methods to get detailed information about
1752// the error.
1753//
1754// See the AWS API reference guide for Amazon Simple Storage Service's
1755// API operation GetBucketAnalyticsConfiguration for usage and error information.
1756// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
1757func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
1758	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
1759	return out, req.Send()
1760}
1761
1762// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
1763// the ability to pass a context and additional request options.
1764//
1765// See GetBucketAnalyticsConfiguration for details on how to use this API operation.
1766//
1767// The context must be non-nil and will be used for request cancellation. If
1768// the context is nil a panic will occur. In the future the SDK may create
1769// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1770// for more information on using Contexts.
1771func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
1772	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
1773	req.SetContext(ctx)
1774	req.ApplyOptions(opts...)
1775	return out, req.Send()
1776}
1777
1778const opGetBucketCors = "GetBucketCors"
1779
1780// GetBucketCorsRequest generates a "aws/request.Request" representing the
1781// client's request for the GetBucketCors operation. The "output" return
1782// value will be populated with the request's response once the request completes
1783// successfully.
1784//
1785// Use "Send" method on the returned Request to send the API call to the service.
1786// the "output" return value is not valid until after Send returns without error.
1787//
1788// See GetBucketCors for more information on using the GetBucketCors
1789// API call, and error handling.
1790//
1791// This method is useful when you want to inject custom logic or configuration
1792// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1793//
1794//
1795//    // Example sending a request using the GetBucketCorsRequest method.
1796//    req, resp := client.GetBucketCorsRequest(params)
1797//
1798//    err := req.Send()
1799//    if err == nil { // resp is now filled
1800//        fmt.Println(resp)
1801//    }
1802//
1803// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
1804func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
1805	op := &request.Operation{
1806		Name:       opGetBucketCors,
1807		HTTPMethod: "GET",
1808		HTTPPath:   "/{Bucket}?cors",
1809	}
1810
1811	if input == nil {
1812		input = &GetBucketCorsInput{}
1813	}
1814
1815	output = &GetBucketCorsOutput{}
1816	req = c.newRequest(op, input, output)
1817	return
1818}
1819
1820// GetBucketCors API operation for Amazon Simple Storage Service.
1821//
1822// Returns the CORS configuration for the bucket.
1823//
1824// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1825// with awserr.Error's Code and Message methods to get detailed information about
1826// the error.
1827//
1828// See the AWS API reference guide for Amazon Simple Storage Service's
1829// API operation GetBucketCors for usage and error information.
1830// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
1831func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
1832	req, out := c.GetBucketCorsRequest(input)
1833	return out, req.Send()
1834}
1835
1836// GetBucketCorsWithContext is the same as GetBucketCors with the addition of
1837// the ability to pass a context and additional request options.
1838//
1839// See GetBucketCors for details on how to use this API operation.
1840//
1841// The context must be non-nil and will be used for request cancellation. If
1842// the context is nil a panic will occur. In the future the SDK may create
1843// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1844// for more information on using Contexts.
1845func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
1846	req, out := c.GetBucketCorsRequest(input)
1847	req.SetContext(ctx)
1848	req.ApplyOptions(opts...)
1849	return out, req.Send()
1850}
1851
1852const opGetBucketEncryption = "GetBucketEncryption"
1853
1854// GetBucketEncryptionRequest generates a "aws/request.Request" representing the
1855// client's request for the GetBucketEncryption operation. The "output" return
1856// value will be populated with the request's response once the request completes
1857// successfully.
1858//
1859// Use "Send" method on the returned Request to send the API call to the service.
1860// the "output" return value is not valid until after Send returns without error.
1861//
1862// See GetBucketEncryption for more information on using the GetBucketEncryption
1863// API call, and error handling.
1864//
1865// This method is useful when you want to inject custom logic or configuration
1866// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1867//
1868//
1869//    // Example sending a request using the GetBucketEncryptionRequest method.
1870//    req, resp := client.GetBucketEncryptionRequest(params)
1871//
1872//    err := req.Send()
1873//    if err == nil { // resp is now filled
1874//        fmt.Println(resp)
1875//    }
1876//
1877// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
1878func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
1879	op := &request.Operation{
1880		Name:       opGetBucketEncryption,
1881		HTTPMethod: "GET",
1882		HTTPPath:   "/{Bucket}?encryption",
1883	}
1884
1885	if input == nil {
1886		input = &GetBucketEncryptionInput{}
1887	}
1888
1889	output = &GetBucketEncryptionOutput{}
1890	req = c.newRequest(op, input, output)
1891	return
1892}
1893
1894// GetBucketEncryption API operation for Amazon Simple Storage Service.
1895//
1896// Returns the server-side encryption configuration of a bucket.
1897//
1898// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1899// with awserr.Error's Code and Message methods to get detailed information about
1900// the error.
1901//
1902// See the AWS API reference guide for Amazon Simple Storage Service's
1903// API operation GetBucketEncryption for usage and error information.
1904// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
1905func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
1906	req, out := c.GetBucketEncryptionRequest(input)
1907	return out, req.Send()
1908}
1909
1910// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
1911// the ability to pass a context and additional request options.
1912//
1913// See GetBucketEncryption for details on how to use this API operation.
1914//
1915// The context must be non-nil and will be used for request cancellation. If
1916// the context is nil a panic will occur. In the future the SDK may create
1917// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1918// for more information on using Contexts.
1919func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
1920	req, out := c.GetBucketEncryptionRequest(input)
1921	req.SetContext(ctx)
1922	req.ApplyOptions(opts...)
1923	return out, req.Send()
1924}
1925
1926const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
1927
1928// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
1929// client's request for the GetBucketInventoryConfiguration operation. The "output" return
1930// value will be populated with the request's response once the request completes
1931// successfully.
1932//
1933// Use "Send" method on the returned Request to send the API call to the service.
1934// the "output" return value is not valid until after Send returns without error.
1935//
1936// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
1937// API call, and error handling.
1938//
1939// This method is useful when you want to inject custom logic or configuration
1940// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1941//
1942//
1943//    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
1944//    req, resp := client.GetBucketInventoryConfigurationRequest(params)
1945//
1946//    err := req.Send()
1947//    if err == nil { // resp is now filled
1948//        fmt.Println(resp)
1949//    }
1950//
1951// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
1952func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
1953	op := &request.Operation{
1954		Name:       opGetBucketInventoryConfiguration,
1955		HTTPMethod: "GET",
1956		HTTPPath:   "/{Bucket}?inventory",
1957	}
1958
1959	if input == nil {
1960		input = &GetBucketInventoryConfigurationInput{}
1961	}
1962
1963	output = &GetBucketInventoryConfigurationOutput{}
1964	req = c.newRequest(op, input, output)
1965	return
1966}
1967
1968// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
1969//
1970// Returns an inventory configuration (identified by the inventory ID) from
1971// the bucket.
1972//
1973// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1974// with awserr.Error's Code and Message methods to get detailed information about
1975// the error.
1976//
1977// See the AWS API reference guide for Amazon Simple Storage Service's
1978// API operation GetBucketInventoryConfiguration for usage and error information.
1979// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
1980func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
1981	req, out := c.GetBucketInventoryConfigurationRequest(input)
1982	return out, req.Send()
1983}
1984
1985// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
1986// the ability to pass a context and additional request options.
1987//
1988// See GetBucketInventoryConfiguration for details on how to use this API operation.
1989//
1990// The context must be non-nil and will be used for request cancellation. If
1991// the context is nil a panic will occur. In the future the SDK may create
1992// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1993// for more information on using Contexts.
1994func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
1995	req, out := c.GetBucketInventoryConfigurationRequest(input)
1996	req.SetContext(ctx)
1997	req.ApplyOptions(opts...)
1998	return out, req.Send()
1999}
2000
2001const opGetBucketLifecycle = "GetBucketLifecycle"
2002
2003// GetBucketLifecycleRequest generates a "aws/request.Request" representing the
2004// client's request for the GetBucketLifecycle operation. The "output" return
2005// value will be populated with the request's response once the request completes
2006// successfully.
2007//
2008// Use "Send" method on the returned Request to send the API call to the service.
2009// the "output" return value is not valid until after Send returns without error.
2010//
2011// See GetBucketLifecycle for more information on using the GetBucketLifecycle
2012// API call, and error handling.
2013//
2014// This method is useful when you want to inject custom logic or configuration
2015// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2016//
2017//
2018//    // Example sending a request using the GetBucketLifecycleRequest method.
2019//    req, resp := client.GetBucketLifecycleRequest(params)
2020//
2021//    err := req.Send()
2022//    if err == nil { // resp is now filled
2023//        fmt.Println(resp)
2024//    }
2025//
2026// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
2027//
2028// Deprecated: GetBucketLifecycle has been deprecated
2029func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
2030	if c.Client.Config.Logger != nil {
2031		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
2032	}
2033	op := &request.Operation{
2034		Name:       opGetBucketLifecycle,
2035		HTTPMethod: "GET",
2036		HTTPPath:   "/{Bucket}?lifecycle",
2037	}
2038
2039	if input == nil {
2040		input = &GetBucketLifecycleInput{}
2041	}
2042
2043	output = &GetBucketLifecycleOutput{}
2044	req = c.newRequest(op, input, output)
2045	return
2046}
2047
2048// GetBucketLifecycle API operation for Amazon Simple Storage Service.
2049//
2050// No longer used, see the GetBucketLifecycleConfiguration operation.
2051//
2052// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2053// with awserr.Error's Code and Message methods to get detailed information about
2054// the error.
2055//
2056// See the AWS API reference guide for Amazon Simple Storage Service's
2057// API operation GetBucketLifecycle for usage and error information.
2058// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
2059//
2060// Deprecated: GetBucketLifecycle has been deprecated
2061func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
2062	req, out := c.GetBucketLifecycleRequest(input)
2063	return out, req.Send()
2064}
2065
2066// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
2067// the ability to pass a context and additional request options.
2068//
2069// See GetBucketLifecycle for details on how to use this API operation.
2070//
2071// The context must be non-nil and will be used for request cancellation. If
2072// the context is nil a panic will occur. In the future the SDK may create
2073// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2074// for more information on using Contexts.
2075//
2076// Deprecated: GetBucketLifecycleWithContext has been deprecated
2077func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
2078	req, out := c.GetBucketLifecycleRequest(input)
2079	req.SetContext(ctx)
2080	req.ApplyOptions(opts...)
2081	return out, req.Send()
2082}
2083
2084const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
2085
2086// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
2087// client's request for the GetBucketLifecycleConfiguration 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 GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
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 GetBucketLifecycleConfigurationRequest method.
2102//    req, resp := client.GetBucketLifecycleConfigurationRequest(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/s3-2006-03-01/GetBucketLifecycleConfiguration
2110func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
2111	op := &request.Operation{
2112		Name:       opGetBucketLifecycleConfiguration,
2113		HTTPMethod: "GET",
2114		HTTPPath:   "/{Bucket}?lifecycle",
2115	}
2116
2117	if input == nil {
2118		input = &GetBucketLifecycleConfigurationInput{}
2119	}
2120
2121	output = &GetBucketLifecycleConfigurationOutput{}
2122	req = c.newRequest(op, input, output)
2123	return
2124}
2125
2126// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
2127//
2128// Returns the lifecycle configuration information set on the bucket.
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 Simple Storage Service's
2135// API operation GetBucketLifecycleConfiguration for usage and error information.
2136// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
2137func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
2138	req, out := c.GetBucketLifecycleConfigurationRequest(input)
2139	return out, req.Send()
2140}
2141
2142// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
2143// the ability to pass a context and additional request options.
2144//
2145// See GetBucketLifecycleConfiguration for details on how to use this API operation.
2146//
2147// The context must be non-nil and will be used for request cancellation. If
2148// the context is nil a panic will occur. In the future the SDK may create
2149// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2150// for more information on using Contexts.
2151func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
2152	req, out := c.GetBucketLifecycleConfigurationRequest(input)
2153	req.SetContext(ctx)
2154	req.ApplyOptions(opts...)
2155	return out, req.Send()
2156}
2157
2158const opGetBucketLocation = "GetBucketLocation"
2159
2160// GetBucketLocationRequest generates a "aws/request.Request" representing the
2161// client's request for the GetBucketLocation operation. The "output" return
2162// value will be populated with the request's response once the request completes
2163// successfully.
2164//
2165// Use "Send" method on the returned Request to send the API call to the service.
2166// the "output" return value is not valid until after Send returns without error.
2167//
2168// See GetBucketLocation for more information on using the GetBucketLocation
2169// API call, and error handling.
2170//
2171// This method is useful when you want to inject custom logic or configuration
2172// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2173//
2174//
2175//    // Example sending a request using the GetBucketLocationRequest method.
2176//    req, resp := client.GetBucketLocationRequest(params)
2177//
2178//    err := req.Send()
2179//    if err == nil { // resp is now filled
2180//        fmt.Println(resp)
2181//    }
2182//
2183// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
2184func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
2185	op := &request.Operation{
2186		Name:       opGetBucketLocation,
2187		HTTPMethod: "GET",
2188		HTTPPath:   "/{Bucket}?location",
2189	}
2190
2191	if input == nil {
2192		input = &GetBucketLocationInput{}
2193	}
2194
2195	output = &GetBucketLocationOutput{}
2196	req = c.newRequest(op, input, output)
2197	return
2198}
2199
2200// GetBucketLocation API operation for Amazon Simple Storage Service.
2201//
2202// Returns the region the bucket resides in.
2203//
2204// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2205// with awserr.Error's Code and Message methods to get detailed information about
2206// the error.
2207//
2208// See the AWS API reference guide for Amazon Simple Storage Service's
2209// API operation GetBucketLocation for usage and error information.
2210// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
2211func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
2212	req, out := c.GetBucketLocationRequest(input)
2213	return out, req.Send()
2214}
2215
2216// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
2217// the ability to pass a context and additional request options.
2218//
2219// See GetBucketLocation for details on how to use this API operation.
2220//
2221// The context must be non-nil and will be used for request cancellation. If
2222// the context is nil a panic will occur. In the future the SDK may create
2223// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2224// for more information on using Contexts.
2225func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
2226	req, out := c.GetBucketLocationRequest(input)
2227	req.SetContext(ctx)
2228	req.ApplyOptions(opts...)
2229	return out, req.Send()
2230}
2231
2232const opGetBucketLogging = "GetBucketLogging"
2233
2234// GetBucketLoggingRequest generates a "aws/request.Request" representing the
2235// client's request for the GetBucketLogging operation. The "output" return
2236// value will be populated with the request's response once the request completes
2237// successfully.
2238//
2239// Use "Send" method on the returned Request to send the API call to the service.
2240// the "output" return value is not valid until after Send returns without error.
2241//
2242// See GetBucketLogging for more information on using the GetBucketLogging
2243// API call, and error handling.
2244//
2245// This method is useful when you want to inject custom logic or configuration
2246// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2247//
2248//
2249//    // Example sending a request using the GetBucketLoggingRequest method.
2250//    req, resp := client.GetBucketLoggingRequest(params)
2251//
2252//    err := req.Send()
2253//    if err == nil { // resp is now filled
2254//        fmt.Println(resp)
2255//    }
2256//
2257// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
2258func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
2259	op := &request.Operation{
2260		Name:       opGetBucketLogging,
2261		HTTPMethod: "GET",
2262		HTTPPath:   "/{Bucket}?logging",
2263	}
2264
2265	if input == nil {
2266		input = &GetBucketLoggingInput{}
2267	}
2268
2269	output = &GetBucketLoggingOutput{}
2270	req = c.newRequest(op, input, output)
2271	return
2272}
2273
2274// GetBucketLogging API operation for Amazon Simple Storage Service.
2275//
2276// Returns the logging status of a bucket and the permissions users have to
2277// view and modify that status. To use GET, you must be the bucket owner.
2278//
2279// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2280// with awserr.Error's Code and Message methods to get detailed information about
2281// the error.
2282//
2283// See the AWS API reference guide for Amazon Simple Storage Service's
2284// API operation GetBucketLogging for usage and error information.
2285// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
2286func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
2287	req, out := c.GetBucketLoggingRequest(input)
2288	return out, req.Send()
2289}
2290
2291// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
2292// the ability to pass a context and additional request options.
2293//
2294// See GetBucketLogging for details on how to use this API operation.
2295//
2296// The context must be non-nil and will be used for request cancellation. If
2297// the context is nil a panic will occur. In the future the SDK may create
2298// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2299// for more information on using Contexts.
2300func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
2301	req, out := c.GetBucketLoggingRequest(input)
2302	req.SetContext(ctx)
2303	req.ApplyOptions(opts...)
2304	return out, req.Send()
2305}
2306
2307const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
2308
2309// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
2310// client's request for the GetBucketMetricsConfiguration operation. The "output" return
2311// value will be populated with the request's response once the request completes
2312// successfully.
2313//
2314// Use "Send" method on the returned Request to send the API call to the service.
2315// the "output" return value is not valid until after Send returns without error.
2316//
2317// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
2318// API call, and error handling.
2319//
2320// This method is useful when you want to inject custom logic or configuration
2321// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2322//
2323//
2324//    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
2325//    req, resp := client.GetBucketMetricsConfigurationRequest(params)
2326//
2327//    err := req.Send()
2328//    if err == nil { // resp is now filled
2329//        fmt.Println(resp)
2330//    }
2331//
2332// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
2333func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
2334	op := &request.Operation{
2335		Name:       opGetBucketMetricsConfiguration,
2336		HTTPMethod: "GET",
2337		HTTPPath:   "/{Bucket}?metrics",
2338	}
2339
2340	if input == nil {
2341		input = &GetBucketMetricsConfigurationInput{}
2342	}
2343
2344	output = &GetBucketMetricsConfigurationOutput{}
2345	req = c.newRequest(op, input, output)
2346	return
2347}
2348
2349// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
2350//
2351// Gets a metrics configuration (specified by the metrics configuration ID)
2352// from the bucket.
2353//
2354// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2355// with awserr.Error's Code and Message methods to get detailed information about
2356// the error.
2357//
2358// See the AWS API reference guide for Amazon Simple Storage Service's
2359// API operation GetBucketMetricsConfiguration for usage and error information.
2360// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
2361func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
2362	req, out := c.GetBucketMetricsConfigurationRequest(input)
2363	return out, req.Send()
2364}
2365
2366// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
2367// the ability to pass a context and additional request options.
2368//
2369// See GetBucketMetricsConfiguration for details on how to use this API operation.
2370//
2371// The context must be non-nil and will be used for request cancellation. If
2372// the context is nil a panic will occur. In the future the SDK may create
2373// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2374// for more information on using Contexts.
2375func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
2376	req, out := c.GetBucketMetricsConfigurationRequest(input)
2377	req.SetContext(ctx)
2378	req.ApplyOptions(opts...)
2379	return out, req.Send()
2380}
2381
2382const opGetBucketNotification = "GetBucketNotification"
2383
2384// GetBucketNotificationRequest generates a "aws/request.Request" representing the
2385// client's request for the GetBucketNotification operation. The "output" return
2386// value will be populated with the request's response once the request completes
2387// successfully.
2388//
2389// Use "Send" method on the returned Request to send the API call to the service.
2390// the "output" return value is not valid until after Send returns without error.
2391//
2392// See GetBucketNotification for more information on using the GetBucketNotification
2393// API call, and error handling.
2394//
2395// This method is useful when you want to inject custom logic or configuration
2396// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2397//
2398//
2399//    // Example sending a request using the GetBucketNotificationRequest method.
2400//    req, resp := client.GetBucketNotificationRequest(params)
2401//
2402//    err := req.Send()
2403//    if err == nil { // resp is now filled
2404//        fmt.Println(resp)
2405//    }
2406//
2407// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
2408//
2409// Deprecated: GetBucketNotification has been deprecated
2410func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
2411	if c.Client.Config.Logger != nil {
2412		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
2413	}
2414	op := &request.Operation{
2415		Name:       opGetBucketNotification,
2416		HTTPMethod: "GET",
2417		HTTPPath:   "/{Bucket}?notification",
2418	}
2419
2420	if input == nil {
2421		input = &GetBucketNotificationConfigurationRequest{}
2422	}
2423
2424	output = &NotificationConfigurationDeprecated{}
2425	req = c.newRequest(op, input, output)
2426	return
2427}
2428
2429// GetBucketNotification API operation for Amazon Simple Storage Service.
2430//
2431// No longer used, see the GetBucketNotificationConfiguration operation.
2432//
2433// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2434// with awserr.Error's Code and Message methods to get detailed information about
2435// the error.
2436//
2437// See the AWS API reference guide for Amazon Simple Storage Service's
2438// API operation GetBucketNotification for usage and error information.
2439// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
2440//
2441// Deprecated: GetBucketNotification has been deprecated
2442func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
2443	req, out := c.GetBucketNotificationRequest(input)
2444	return out, req.Send()
2445}
2446
2447// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
2448// the ability to pass a context and additional request options.
2449//
2450// See GetBucketNotification for details on how to use this API operation.
2451//
2452// The context must be non-nil and will be used for request cancellation. If
2453// the context is nil a panic will occur. In the future the SDK may create
2454// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2455// for more information on using Contexts.
2456//
2457// Deprecated: GetBucketNotificationWithContext has been deprecated
2458func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
2459	req, out := c.GetBucketNotificationRequest(input)
2460	req.SetContext(ctx)
2461	req.ApplyOptions(opts...)
2462	return out, req.Send()
2463}
2464
2465const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
2466
2467// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
2468// client's request for the GetBucketNotificationConfiguration operation. The "output" return
2469// value will be populated with the request's response once the request completes
2470// successfully.
2471//
2472// Use "Send" method on the returned Request to send the API call to the service.
2473// the "output" return value is not valid until after Send returns without error.
2474//
2475// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
2476// API call, and error handling.
2477//
2478// This method is useful when you want to inject custom logic or configuration
2479// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2480//
2481//
2482//    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
2483//    req, resp := client.GetBucketNotificationConfigurationRequest(params)
2484//
2485//    err := req.Send()
2486//    if err == nil { // resp is now filled
2487//        fmt.Println(resp)
2488//    }
2489//
2490// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
2491func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
2492	op := &request.Operation{
2493		Name:       opGetBucketNotificationConfiguration,
2494		HTTPMethod: "GET",
2495		HTTPPath:   "/{Bucket}?notification",
2496	}
2497
2498	if input == nil {
2499		input = &GetBucketNotificationConfigurationRequest{}
2500	}
2501
2502	output = &NotificationConfiguration{}
2503	req = c.newRequest(op, input, output)
2504	return
2505}
2506
2507// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
2508//
2509// Returns the notification configuration of a bucket.
2510//
2511// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2512// with awserr.Error's Code and Message methods to get detailed information about
2513// the error.
2514//
2515// See the AWS API reference guide for Amazon Simple Storage Service's
2516// API operation GetBucketNotificationConfiguration for usage and error information.
2517// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
2518func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
2519	req, out := c.GetBucketNotificationConfigurationRequest(input)
2520	return out, req.Send()
2521}
2522
2523// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
2524// the ability to pass a context and additional request options.
2525//
2526// See GetBucketNotificationConfiguration for details on how to use this API operation.
2527//
2528// The context must be non-nil and will be used for request cancellation. If
2529// the context is nil a panic will occur. In the future the SDK may create
2530// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2531// for more information on using Contexts.
2532func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
2533	req, out := c.GetBucketNotificationConfigurationRequest(input)
2534	req.SetContext(ctx)
2535	req.ApplyOptions(opts...)
2536	return out, req.Send()
2537}
2538
2539const opGetBucketPolicy = "GetBucketPolicy"
2540
2541// GetBucketPolicyRequest generates a "aws/request.Request" representing the
2542// client's request for the GetBucketPolicy operation. The "output" return
2543// value will be populated with the request's response once the request completes
2544// successfully.
2545//
2546// Use "Send" method on the returned Request to send the API call to the service.
2547// the "output" return value is not valid until after Send returns without error.
2548//
2549// See GetBucketPolicy for more information on using the GetBucketPolicy
2550// API call, and error handling.
2551//
2552// This method is useful when you want to inject custom logic or configuration
2553// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2554//
2555//
2556//    // Example sending a request using the GetBucketPolicyRequest method.
2557//    req, resp := client.GetBucketPolicyRequest(params)
2558//
2559//    err := req.Send()
2560//    if err == nil { // resp is now filled
2561//        fmt.Println(resp)
2562//    }
2563//
2564// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
2565func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
2566	op := &request.Operation{
2567		Name:       opGetBucketPolicy,
2568		HTTPMethod: "GET",
2569		HTTPPath:   "/{Bucket}?policy",
2570	}
2571
2572	if input == nil {
2573		input = &GetBucketPolicyInput{}
2574	}
2575
2576	output = &GetBucketPolicyOutput{}
2577	req = c.newRequest(op, input, output)
2578	return
2579}
2580
2581// GetBucketPolicy API operation for Amazon Simple Storage Service.
2582//
2583// Returns the policy of a specified bucket.
2584//
2585// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2586// with awserr.Error's Code and Message methods to get detailed information about
2587// the error.
2588//
2589// See the AWS API reference guide for Amazon Simple Storage Service's
2590// API operation GetBucketPolicy for usage and error information.
2591// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
2592func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
2593	req, out := c.GetBucketPolicyRequest(input)
2594	return out, req.Send()
2595}
2596
2597// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
2598// the ability to pass a context and additional request options.
2599//
2600// See GetBucketPolicy for details on how to use this API operation.
2601//
2602// The context must be non-nil and will be used for request cancellation. If
2603// the context is nil a panic will occur. In the future the SDK may create
2604// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2605// for more information on using Contexts.
2606func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
2607	req, out := c.GetBucketPolicyRequest(input)
2608	req.SetContext(ctx)
2609	req.ApplyOptions(opts...)
2610	return out, req.Send()
2611}
2612
2613const opGetBucketPolicyStatus = "GetBucketPolicyStatus"
2614
2615// GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the
2616// client's request for the GetBucketPolicyStatus operation. The "output" return
2617// value will be populated with the request's response once the request completes
2618// successfully.
2619//
2620// Use "Send" method on the returned Request to send the API call to the service.
2621// the "output" return value is not valid until after Send returns without error.
2622//
2623// See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus
2624// API call, and error handling.
2625//
2626// This method is useful when you want to inject custom logic or configuration
2627// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2628//
2629//
2630//    // Example sending a request using the GetBucketPolicyStatusRequest method.
2631//    req, resp := client.GetBucketPolicyStatusRequest(params)
2632//
2633//    err := req.Send()
2634//    if err == nil { // resp is now filled
2635//        fmt.Println(resp)
2636//    }
2637//
2638// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
2639func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) {
2640	op := &request.Operation{
2641		Name:       opGetBucketPolicyStatus,
2642		HTTPMethod: "GET",
2643		HTTPPath:   "/{Bucket}?policyStatus",
2644	}
2645
2646	if input == nil {
2647		input = &GetBucketPolicyStatusInput{}
2648	}
2649
2650	output = &GetBucketPolicyStatusOutput{}
2651	req = c.newRequest(op, input, output)
2652	return
2653}
2654
2655// GetBucketPolicyStatus API operation for Amazon Simple Storage Service.
2656//
2657// Retrieves the policy status for an Amazon S3 bucket, indicating whether the
2658// bucket is public.
2659//
2660// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2661// with awserr.Error's Code and Message methods to get detailed information about
2662// the error.
2663//
2664// See the AWS API reference guide for Amazon Simple Storage Service's
2665// API operation GetBucketPolicyStatus for usage and error information.
2666// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
2667func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) {
2668	req, out := c.GetBucketPolicyStatusRequest(input)
2669	return out, req.Send()
2670}
2671
2672// GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of
2673// the ability to pass a context and additional request options.
2674//
2675// See GetBucketPolicyStatus for details on how to use this API operation.
2676//
2677// The context must be non-nil and will be used for request cancellation. If
2678// the context is nil a panic will occur. In the future the SDK may create
2679// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2680// for more information on using Contexts.
2681func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) {
2682	req, out := c.GetBucketPolicyStatusRequest(input)
2683	req.SetContext(ctx)
2684	req.ApplyOptions(opts...)
2685	return out, req.Send()
2686}
2687
2688const opGetBucketReplication = "GetBucketReplication"
2689
2690// GetBucketReplicationRequest generates a "aws/request.Request" representing the
2691// client's request for the GetBucketReplication operation. The "output" return
2692// value will be populated with the request's response once the request completes
2693// successfully.
2694//
2695// Use "Send" method on the returned Request to send the API call to the service.
2696// the "output" return value is not valid until after Send returns without error.
2697//
2698// See GetBucketReplication for more information on using the GetBucketReplication
2699// API call, and error handling.
2700//
2701// This method is useful when you want to inject custom logic or configuration
2702// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2703//
2704//
2705//    // Example sending a request using the GetBucketReplicationRequest method.
2706//    req, resp := client.GetBucketReplicationRequest(params)
2707//
2708//    err := req.Send()
2709//    if err == nil { // resp is now filled
2710//        fmt.Println(resp)
2711//    }
2712//
2713// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
2714func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
2715	op := &request.Operation{
2716		Name:       opGetBucketReplication,
2717		HTTPMethod: "GET",
2718		HTTPPath:   "/{Bucket}?replication",
2719	}
2720
2721	if input == nil {
2722		input = &GetBucketReplicationInput{}
2723	}
2724
2725	output = &GetBucketReplicationOutput{}
2726	req = c.newRequest(op, input, output)
2727	return
2728}
2729
2730// GetBucketReplication API operation for Amazon Simple Storage Service.
2731//
2732// Returns the replication configuration of a bucket.
2733//
2734// It can take a while to propagate the put or delete a replication configuration
2735// to all Amazon S3 systems. Therefore, a get request soon after put or delete
2736// can return a wrong result.
2737//
2738// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2739// with awserr.Error's Code and Message methods to get detailed information about
2740// the error.
2741//
2742// See the AWS API reference guide for Amazon Simple Storage Service's
2743// API operation GetBucketReplication for usage and error information.
2744// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
2745func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
2746	req, out := c.GetBucketReplicationRequest(input)
2747	return out, req.Send()
2748}
2749
2750// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
2751// the ability to pass a context and additional request options.
2752//
2753// See GetBucketReplication for details on how to use this API operation.
2754//
2755// The context must be non-nil and will be used for request cancellation. If
2756// the context is nil a panic will occur. In the future the SDK may create
2757// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2758// for more information on using Contexts.
2759func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
2760	req, out := c.GetBucketReplicationRequest(input)
2761	req.SetContext(ctx)
2762	req.ApplyOptions(opts...)
2763	return out, req.Send()
2764}
2765
2766const opGetBucketRequestPayment = "GetBucketRequestPayment"
2767
2768// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
2769// client's request for the GetBucketRequestPayment operation. The "output" return
2770// value will be populated with the request's response once the request completes
2771// successfully.
2772//
2773// Use "Send" method on the returned Request to send the API call to the service.
2774// the "output" return value is not valid until after Send returns without error.
2775//
2776// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
2777// API call, and error handling.
2778//
2779// This method is useful when you want to inject custom logic or configuration
2780// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2781//
2782//
2783//    // Example sending a request using the GetBucketRequestPaymentRequest method.
2784//    req, resp := client.GetBucketRequestPaymentRequest(params)
2785//
2786//    err := req.Send()
2787//    if err == nil { // resp is now filled
2788//        fmt.Println(resp)
2789//    }
2790//
2791// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
2792func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
2793	op := &request.Operation{
2794		Name:       opGetBucketRequestPayment,
2795		HTTPMethod: "GET",
2796		HTTPPath:   "/{Bucket}?requestPayment",
2797	}
2798
2799	if input == nil {
2800		input = &GetBucketRequestPaymentInput{}
2801	}
2802
2803	output = &GetBucketRequestPaymentOutput{}
2804	req = c.newRequest(op, input, output)
2805	return
2806}
2807
2808// GetBucketRequestPayment API operation for Amazon Simple Storage Service.
2809//
2810// Returns the request payment configuration of a bucket.
2811//
2812// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2813// with awserr.Error's Code and Message methods to get detailed information about
2814// the error.
2815//
2816// See the AWS API reference guide for Amazon Simple Storage Service's
2817// API operation GetBucketRequestPayment for usage and error information.
2818// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
2819func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
2820	req, out := c.GetBucketRequestPaymentRequest(input)
2821	return out, req.Send()
2822}
2823
2824// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
2825// the ability to pass a context and additional request options.
2826//
2827// See GetBucketRequestPayment for details on how to use this API operation.
2828//
2829// The context must be non-nil and will be used for request cancellation. If
2830// the context is nil a panic will occur. In the future the SDK may create
2831// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2832// for more information on using Contexts.
2833func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
2834	req, out := c.GetBucketRequestPaymentRequest(input)
2835	req.SetContext(ctx)
2836	req.ApplyOptions(opts...)
2837	return out, req.Send()
2838}
2839
2840const opGetBucketTagging = "GetBucketTagging"
2841
2842// GetBucketTaggingRequest generates a "aws/request.Request" representing the
2843// client's request for the GetBucketTagging operation. The "output" return
2844// value will be populated with the request's response once the request completes
2845// successfully.
2846//
2847// Use "Send" method on the returned Request to send the API call to the service.
2848// the "output" return value is not valid until after Send returns without error.
2849//
2850// See GetBucketTagging for more information on using the GetBucketTagging
2851// API call, and error handling.
2852//
2853// This method is useful when you want to inject custom logic or configuration
2854// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2855//
2856//
2857//    // Example sending a request using the GetBucketTaggingRequest method.
2858//    req, resp := client.GetBucketTaggingRequest(params)
2859//
2860//    err := req.Send()
2861//    if err == nil { // resp is now filled
2862//        fmt.Println(resp)
2863//    }
2864//
2865// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
2866func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
2867	op := &request.Operation{
2868		Name:       opGetBucketTagging,
2869		HTTPMethod: "GET",
2870		HTTPPath:   "/{Bucket}?tagging",
2871	}
2872
2873	if input == nil {
2874		input = &GetBucketTaggingInput{}
2875	}
2876
2877	output = &GetBucketTaggingOutput{}
2878	req = c.newRequest(op, input, output)
2879	return
2880}
2881
2882// GetBucketTagging API operation for Amazon Simple Storage Service.
2883//
2884// Returns the tag set associated with the bucket.
2885//
2886// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2887// with awserr.Error's Code and Message methods to get detailed information about
2888// the error.
2889//
2890// See the AWS API reference guide for Amazon Simple Storage Service's
2891// API operation GetBucketTagging for usage and error information.
2892// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
2893func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
2894	req, out := c.GetBucketTaggingRequest(input)
2895	return out, req.Send()
2896}
2897
2898// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
2899// the ability to pass a context and additional request options.
2900//
2901// See GetBucketTagging for details on how to use this API operation.
2902//
2903// The context must be non-nil and will be used for request cancellation. If
2904// the context is nil a panic will occur. In the future the SDK may create
2905// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2906// for more information on using Contexts.
2907func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
2908	req, out := c.GetBucketTaggingRequest(input)
2909	req.SetContext(ctx)
2910	req.ApplyOptions(opts...)
2911	return out, req.Send()
2912}
2913
2914const opGetBucketVersioning = "GetBucketVersioning"
2915
2916// GetBucketVersioningRequest generates a "aws/request.Request" representing the
2917// client's request for the GetBucketVersioning operation. The "output" return
2918// value will be populated with the request's response once the request completes
2919// successfully.
2920//
2921// Use "Send" method on the returned Request to send the API call to the service.
2922// the "output" return value is not valid until after Send returns without error.
2923//
2924// See GetBucketVersioning for more information on using the GetBucketVersioning
2925// API call, and error handling.
2926//
2927// This method is useful when you want to inject custom logic or configuration
2928// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2929//
2930//
2931//    // Example sending a request using the GetBucketVersioningRequest method.
2932//    req, resp := client.GetBucketVersioningRequest(params)
2933//
2934//    err := req.Send()
2935//    if err == nil { // resp is now filled
2936//        fmt.Println(resp)
2937//    }
2938//
2939// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
2940func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
2941	op := &request.Operation{
2942		Name:       opGetBucketVersioning,
2943		HTTPMethod: "GET",
2944		HTTPPath:   "/{Bucket}?versioning",
2945	}
2946
2947	if input == nil {
2948		input = &GetBucketVersioningInput{}
2949	}
2950
2951	output = &GetBucketVersioningOutput{}
2952	req = c.newRequest(op, input, output)
2953	return
2954}
2955
2956// GetBucketVersioning API operation for Amazon Simple Storage Service.
2957//
2958// Returns the versioning state of a bucket.
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 Simple Storage Service's
2965// API operation GetBucketVersioning for usage and error information.
2966// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
2967func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
2968	req, out := c.GetBucketVersioningRequest(input)
2969	return out, req.Send()
2970}
2971
2972// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
2973// the ability to pass a context and additional request options.
2974//
2975// See GetBucketVersioning for details on how to use this API operation.
2976//
2977// The context must be non-nil and will be used for request cancellation. If
2978// the context is nil a panic will occur. In the future the SDK may create
2979// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2980// for more information on using Contexts.
2981func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
2982	req, out := c.GetBucketVersioningRequest(input)
2983	req.SetContext(ctx)
2984	req.ApplyOptions(opts...)
2985	return out, req.Send()
2986}
2987
2988const opGetBucketWebsite = "GetBucketWebsite"
2989
2990// GetBucketWebsiteRequest generates a "aws/request.Request" representing the
2991// client's request for the GetBucketWebsite operation. The "output" return
2992// value will be populated with the request's response once the request completes
2993// successfully.
2994//
2995// Use "Send" method on the returned Request to send the API call to the service.
2996// the "output" return value is not valid until after Send returns without error.
2997//
2998// See GetBucketWebsite for more information on using the GetBucketWebsite
2999// API call, and error handling.
3000//
3001// This method is useful when you want to inject custom logic or configuration
3002// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3003//
3004//
3005//    // Example sending a request using the GetBucketWebsiteRequest method.
3006//    req, resp := client.GetBucketWebsiteRequest(params)
3007//
3008//    err := req.Send()
3009//    if err == nil { // resp is now filled
3010//        fmt.Println(resp)
3011//    }
3012//
3013// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
3014func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
3015	op := &request.Operation{
3016		Name:       opGetBucketWebsite,
3017		HTTPMethod: "GET",
3018		HTTPPath:   "/{Bucket}?website",
3019	}
3020
3021	if input == nil {
3022		input = &GetBucketWebsiteInput{}
3023	}
3024
3025	output = &GetBucketWebsiteOutput{}
3026	req = c.newRequest(op, input, output)
3027	return
3028}
3029
3030// GetBucketWebsite API operation for Amazon Simple Storage Service.
3031//
3032// Returns the website configuration for a bucket.
3033//
3034// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3035// with awserr.Error's Code and Message methods to get detailed information about
3036// the error.
3037//
3038// See the AWS API reference guide for Amazon Simple Storage Service's
3039// API operation GetBucketWebsite for usage and error information.
3040// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
3041func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
3042	req, out := c.GetBucketWebsiteRequest(input)
3043	return out, req.Send()
3044}
3045
3046// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
3047// the ability to pass a context and additional request options.
3048//
3049// See GetBucketWebsite for details on how to use this API operation.
3050//
3051// The context must be non-nil and will be used for request cancellation. If
3052// the context is nil a panic will occur. In the future the SDK may create
3053// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3054// for more information on using Contexts.
3055func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
3056	req, out := c.GetBucketWebsiteRequest(input)
3057	req.SetContext(ctx)
3058	req.ApplyOptions(opts...)
3059	return out, req.Send()
3060}
3061
3062const opGetObject = "GetObject"
3063
3064// GetObjectRequest generates a "aws/request.Request" representing the
3065// client's request for the GetObject operation. The "output" return
3066// value will be populated with the request's response once the request completes
3067// successfully.
3068//
3069// Use "Send" method on the returned Request to send the API call to the service.
3070// the "output" return value is not valid until after Send returns without error.
3071//
3072// See GetObject for more information on using the GetObject
3073// API call, and error handling.
3074//
3075// This method is useful when you want to inject custom logic or configuration
3076// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3077//
3078//
3079//    // Example sending a request using the GetObjectRequest method.
3080//    req, resp := client.GetObjectRequest(params)
3081//
3082//    err := req.Send()
3083//    if err == nil { // resp is now filled
3084//        fmt.Println(resp)
3085//    }
3086//
3087// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
3088func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
3089	op := &request.Operation{
3090		Name:       opGetObject,
3091		HTTPMethod: "GET",
3092		HTTPPath:   "/{Bucket}/{Key+}",
3093	}
3094
3095	if input == nil {
3096		input = &GetObjectInput{}
3097	}
3098
3099	output = &GetObjectOutput{}
3100	req = c.newRequest(op, input, output)
3101	return
3102}
3103
3104// GetObject API operation for Amazon Simple Storage Service.
3105//
3106// Retrieves objects from Amazon S3.
3107//
3108// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3109// with awserr.Error's Code and Message methods to get detailed information about
3110// the error.
3111//
3112// See the AWS API reference guide for Amazon Simple Storage Service's
3113// API operation GetObject for usage and error information.
3114//
3115// Returned Error Codes:
3116//   * ErrCodeNoSuchKey "NoSuchKey"
3117//   The specified key does not exist.
3118//
3119// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
3120func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
3121	req, out := c.GetObjectRequest(input)
3122	return out, req.Send()
3123}
3124
3125// GetObjectWithContext is the same as GetObject with the addition of
3126// the ability to pass a context and additional request options.
3127//
3128// See GetObject for details on how to use this API operation.
3129//
3130// The context must be non-nil and will be used for request cancellation. If
3131// the context is nil a panic will occur. In the future the SDK may create
3132// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3133// for more information on using Contexts.
3134func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
3135	req, out := c.GetObjectRequest(input)
3136	req.SetContext(ctx)
3137	req.ApplyOptions(opts...)
3138	return out, req.Send()
3139}
3140
3141const opGetObjectAcl = "GetObjectAcl"
3142
3143// GetObjectAclRequest generates a "aws/request.Request" representing the
3144// client's request for the GetObjectAcl operation. The "output" return
3145// value will be populated with the request's response once the request completes
3146// successfully.
3147//
3148// Use "Send" method on the returned Request to send the API call to the service.
3149// the "output" return value is not valid until after Send returns without error.
3150//
3151// See GetObjectAcl for more information on using the GetObjectAcl
3152// API call, and error handling.
3153//
3154// This method is useful when you want to inject custom logic or configuration
3155// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3156//
3157//
3158//    // Example sending a request using the GetObjectAclRequest method.
3159//    req, resp := client.GetObjectAclRequest(params)
3160//
3161//    err := req.Send()
3162//    if err == nil { // resp is now filled
3163//        fmt.Println(resp)
3164//    }
3165//
3166// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
3167func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
3168	op := &request.Operation{
3169		Name:       opGetObjectAcl,
3170		HTTPMethod: "GET",
3171		HTTPPath:   "/{Bucket}/{Key+}?acl",
3172	}
3173
3174	if input == nil {
3175		input = &GetObjectAclInput{}
3176	}
3177
3178	output = &GetObjectAclOutput{}
3179	req = c.newRequest(op, input, output)
3180	return
3181}
3182
3183// GetObjectAcl API operation for Amazon Simple Storage Service.
3184//
3185// Returns the access control list (ACL) of an object.
3186//
3187// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3188// with awserr.Error's Code and Message methods to get detailed information about
3189// the error.
3190//
3191// See the AWS API reference guide for Amazon Simple Storage Service's
3192// API operation GetObjectAcl for usage and error information.
3193//
3194// Returned Error Codes:
3195//   * ErrCodeNoSuchKey "NoSuchKey"
3196//   The specified key does not exist.
3197//
3198// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
3199func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
3200	req, out := c.GetObjectAclRequest(input)
3201	return out, req.Send()
3202}
3203
3204// GetObjectAclWithContext is the same as GetObjectAcl with the addition of
3205// the ability to pass a context and additional request options.
3206//
3207// See GetObjectAcl for details on how to use this API operation.
3208//
3209// The context must be non-nil and will be used for request cancellation. If
3210// the context is nil a panic will occur. In the future the SDK may create
3211// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3212// for more information on using Contexts.
3213func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
3214	req, out := c.GetObjectAclRequest(input)
3215	req.SetContext(ctx)
3216	req.ApplyOptions(opts...)
3217	return out, req.Send()
3218}
3219
3220const opGetObjectLegalHold = "GetObjectLegalHold"
3221
3222// GetObjectLegalHoldRequest generates a "aws/request.Request" representing the
3223// client's request for the GetObjectLegalHold operation. The "output" return
3224// value will be populated with the request's response once the request completes
3225// successfully.
3226//
3227// Use "Send" method on the returned Request to send the API call to the service.
3228// the "output" return value is not valid until after Send returns without error.
3229//
3230// See GetObjectLegalHold for more information on using the GetObjectLegalHold
3231// API call, and error handling.
3232//
3233// This method is useful when you want to inject custom logic or configuration
3234// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3235//
3236//
3237//    // Example sending a request using the GetObjectLegalHoldRequest method.
3238//    req, resp := client.GetObjectLegalHoldRequest(params)
3239//
3240//    err := req.Send()
3241//    if err == nil { // resp is now filled
3242//        fmt.Println(resp)
3243//    }
3244//
3245// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
3246func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) {
3247	op := &request.Operation{
3248		Name:       opGetObjectLegalHold,
3249		HTTPMethod: "GET",
3250		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
3251	}
3252
3253	if input == nil {
3254		input = &GetObjectLegalHoldInput{}
3255	}
3256
3257	output = &GetObjectLegalHoldOutput{}
3258	req = c.newRequest(op, input, output)
3259	return
3260}
3261
3262// GetObjectLegalHold API operation for Amazon Simple Storage Service.
3263//
3264// Gets an object's current Legal Hold status.
3265//
3266// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3267// with awserr.Error's Code and Message methods to get detailed information about
3268// the error.
3269//
3270// See the AWS API reference guide for Amazon Simple Storage Service's
3271// API operation GetObjectLegalHold for usage and error information.
3272// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
3273func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) {
3274	req, out := c.GetObjectLegalHoldRequest(input)
3275	return out, req.Send()
3276}
3277
3278// GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of
3279// the ability to pass a context and additional request options.
3280//
3281// See GetObjectLegalHold for details on how to use this API operation.
3282//
3283// The context must be non-nil and will be used for request cancellation. If
3284// the context is nil a panic will occur. In the future the SDK may create
3285// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3286// for more information on using Contexts.
3287func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) {
3288	req, out := c.GetObjectLegalHoldRequest(input)
3289	req.SetContext(ctx)
3290	req.ApplyOptions(opts...)
3291	return out, req.Send()
3292}
3293
3294const opGetObjectLockConfiguration = "GetObjectLockConfiguration"
3295
3296// GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the
3297// client's request for the GetObjectLockConfiguration operation. The "output" return
3298// value will be populated with the request's response once the request completes
3299// successfully.
3300//
3301// Use "Send" method on the returned Request to send the API call to the service.
3302// the "output" return value is not valid until after Send returns without error.
3303//
3304// See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration
3305// API call, and error handling.
3306//
3307// This method is useful when you want to inject custom logic or configuration
3308// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3309//
3310//
3311//    // Example sending a request using the GetObjectLockConfigurationRequest method.
3312//    req, resp := client.GetObjectLockConfigurationRequest(params)
3313//
3314//    err := req.Send()
3315//    if err == nil { // resp is now filled
3316//        fmt.Println(resp)
3317//    }
3318//
3319// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
3320func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) {
3321	op := &request.Operation{
3322		Name:       opGetObjectLockConfiguration,
3323		HTTPMethod: "GET",
3324		HTTPPath:   "/{Bucket}?object-lock",
3325	}
3326
3327	if input == nil {
3328		input = &GetObjectLockConfigurationInput{}
3329	}
3330
3331	output = &GetObjectLockConfigurationOutput{}
3332	req = c.newRequest(op, input, output)
3333	return
3334}
3335
3336// GetObjectLockConfiguration API operation for Amazon Simple Storage Service.
3337//
3338// Gets the Object Lock configuration for a bucket. The rule specified in the
3339// Object Lock configuration will be applied by default to every new object
3340// placed in the specified bucket.
3341//
3342// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3343// with awserr.Error's Code and Message methods to get detailed information about
3344// the error.
3345//
3346// See the AWS API reference guide for Amazon Simple Storage Service's
3347// API operation GetObjectLockConfiguration for usage and error information.
3348// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
3349func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) {
3350	req, out := c.GetObjectLockConfigurationRequest(input)
3351	return out, req.Send()
3352}
3353
3354// GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of
3355// the ability to pass a context and additional request options.
3356//
3357// See GetObjectLockConfiguration for details on how to use this API operation.
3358//
3359// The context must be non-nil and will be used for request cancellation. If
3360// the context is nil a panic will occur. In the future the SDK may create
3361// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3362// for more information on using Contexts.
3363func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) {
3364	req, out := c.GetObjectLockConfigurationRequest(input)
3365	req.SetContext(ctx)
3366	req.ApplyOptions(opts...)
3367	return out, req.Send()
3368}
3369
3370const opGetObjectRetention = "GetObjectRetention"
3371
3372// GetObjectRetentionRequest generates a "aws/request.Request" representing the
3373// client's request for the GetObjectRetention operation. The "output" return
3374// value will be populated with the request's response once the request completes
3375// successfully.
3376//
3377// Use "Send" method on the returned Request to send the API call to the service.
3378// the "output" return value is not valid until after Send returns without error.
3379//
3380// See GetObjectRetention for more information on using the GetObjectRetention
3381// API call, and error handling.
3382//
3383// This method is useful when you want to inject custom logic or configuration
3384// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3385//
3386//
3387//    // Example sending a request using the GetObjectRetentionRequest method.
3388//    req, resp := client.GetObjectRetentionRequest(params)
3389//
3390//    err := req.Send()
3391//    if err == nil { // resp is now filled
3392//        fmt.Println(resp)
3393//    }
3394//
3395// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
3396func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) {
3397	op := &request.Operation{
3398		Name:       opGetObjectRetention,
3399		HTTPMethod: "GET",
3400		HTTPPath:   "/{Bucket}/{Key+}?retention",
3401	}
3402
3403	if input == nil {
3404		input = &GetObjectRetentionInput{}
3405	}
3406
3407	output = &GetObjectRetentionOutput{}
3408	req = c.newRequest(op, input, output)
3409	return
3410}
3411
3412// GetObjectRetention API operation for Amazon Simple Storage Service.
3413//
3414// Retrieves an object's retention settings.
3415//
3416// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3417// with awserr.Error's Code and Message methods to get detailed information about
3418// the error.
3419//
3420// See the AWS API reference guide for Amazon Simple Storage Service's
3421// API operation GetObjectRetention for usage and error information.
3422// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
3423func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) {
3424	req, out := c.GetObjectRetentionRequest(input)
3425	return out, req.Send()
3426}
3427
3428// GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of
3429// the ability to pass a context and additional request options.
3430//
3431// See GetObjectRetention for details on how to use this API operation.
3432//
3433// The context must be non-nil and will be used for request cancellation. If
3434// the context is nil a panic will occur. In the future the SDK may create
3435// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3436// for more information on using Contexts.
3437func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) {
3438	req, out := c.GetObjectRetentionRequest(input)
3439	req.SetContext(ctx)
3440	req.ApplyOptions(opts...)
3441	return out, req.Send()
3442}
3443
3444const opGetObjectTagging = "GetObjectTagging"
3445
3446// GetObjectTaggingRequest generates a "aws/request.Request" representing the
3447// client's request for the GetObjectTagging operation. The "output" return
3448// value will be populated with the request's response once the request completes
3449// successfully.
3450//
3451// Use "Send" method on the returned Request to send the API call to the service.
3452// the "output" return value is not valid until after Send returns without error.
3453//
3454// See GetObjectTagging for more information on using the GetObjectTagging
3455// API call, and error handling.
3456//
3457// This method is useful when you want to inject custom logic or configuration
3458// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3459//
3460//
3461//    // Example sending a request using the GetObjectTaggingRequest method.
3462//    req, resp := client.GetObjectTaggingRequest(params)
3463//
3464//    err := req.Send()
3465//    if err == nil { // resp is now filled
3466//        fmt.Println(resp)
3467//    }
3468//
3469// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
3470func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
3471	op := &request.Operation{
3472		Name:       opGetObjectTagging,
3473		HTTPMethod: "GET",
3474		HTTPPath:   "/{Bucket}/{Key+}?tagging",
3475	}
3476
3477	if input == nil {
3478		input = &GetObjectTaggingInput{}
3479	}
3480
3481	output = &GetObjectTaggingOutput{}
3482	req = c.newRequest(op, input, output)
3483	return
3484}
3485
3486// GetObjectTagging API operation for Amazon Simple Storage Service.
3487//
3488// Returns the tag-set of an object.
3489//
3490// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3491// with awserr.Error's Code and Message methods to get detailed information about
3492// the error.
3493//
3494// See the AWS API reference guide for Amazon Simple Storage Service's
3495// API operation GetObjectTagging for usage and error information.
3496// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
3497func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
3498	req, out := c.GetObjectTaggingRequest(input)
3499	return out, req.Send()
3500}
3501
3502// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
3503// the ability to pass a context and additional request options.
3504//
3505// See GetObjectTagging for details on how to use this API operation.
3506//
3507// The context must be non-nil and will be used for request cancellation. If
3508// the context is nil a panic will occur. In the future the SDK may create
3509// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3510// for more information on using Contexts.
3511func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
3512	req, out := c.GetObjectTaggingRequest(input)
3513	req.SetContext(ctx)
3514	req.ApplyOptions(opts...)
3515	return out, req.Send()
3516}
3517
3518const opGetObjectTorrent = "GetObjectTorrent"
3519
3520// GetObjectTorrentRequest generates a "aws/request.Request" representing the
3521// client's request for the GetObjectTorrent operation. The "output" return
3522// value will be populated with the request's response once the request completes
3523// successfully.
3524//
3525// Use "Send" method on the returned Request to send the API call to the service.
3526// the "output" return value is not valid until after Send returns without error.
3527//
3528// See GetObjectTorrent for more information on using the GetObjectTorrent
3529// API call, and error handling.
3530//
3531// This method is useful when you want to inject custom logic or configuration
3532// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3533//
3534//
3535//    // Example sending a request using the GetObjectTorrentRequest method.
3536//    req, resp := client.GetObjectTorrentRequest(params)
3537//
3538//    err := req.Send()
3539//    if err == nil { // resp is now filled
3540//        fmt.Println(resp)
3541//    }
3542//
3543// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
3544func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
3545	op := &request.Operation{
3546		Name:       opGetObjectTorrent,
3547		HTTPMethod: "GET",
3548		HTTPPath:   "/{Bucket}/{Key+}?torrent",
3549	}
3550
3551	if input == nil {
3552		input = &GetObjectTorrentInput{}
3553	}
3554
3555	output = &GetObjectTorrentOutput{}
3556	req = c.newRequest(op, input, output)
3557	return
3558}
3559
3560// GetObjectTorrent API operation for Amazon Simple Storage Service.
3561//
3562// Return torrent files from a bucket.
3563//
3564// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3565// with awserr.Error's Code and Message methods to get detailed information about
3566// the error.
3567//
3568// See the AWS API reference guide for Amazon Simple Storage Service's
3569// API operation GetObjectTorrent for usage and error information.
3570// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
3571func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
3572	req, out := c.GetObjectTorrentRequest(input)
3573	return out, req.Send()
3574}
3575
3576// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
3577// the ability to pass a context and additional request options.
3578//
3579// See GetObjectTorrent for details on how to use this API operation.
3580//
3581// The context must be non-nil and will be used for request cancellation. If
3582// the context is nil a panic will occur. In the future the SDK may create
3583// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3584// for more information on using Contexts.
3585func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
3586	req, out := c.GetObjectTorrentRequest(input)
3587	req.SetContext(ctx)
3588	req.ApplyOptions(opts...)
3589	return out, req.Send()
3590}
3591
3592const opGetPublicAccessBlock = "GetPublicAccessBlock"
3593
3594// GetPublicAccessBlockRequest generates a "aws/request.Request" representing the
3595// client's request for the GetPublicAccessBlock operation. The "output" return
3596// value will be populated with the request's response once the request completes
3597// successfully.
3598//
3599// Use "Send" method on the returned Request to send the API call to the service.
3600// the "output" return value is not valid until after Send returns without error.
3601//
3602// See GetPublicAccessBlock for more information on using the GetPublicAccessBlock
3603// API call, and error handling.
3604//
3605// This method is useful when you want to inject custom logic or configuration
3606// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3607//
3608//
3609//    // Example sending a request using the GetPublicAccessBlockRequest method.
3610//    req, resp := client.GetPublicAccessBlockRequest(params)
3611//
3612//    err := req.Send()
3613//    if err == nil { // resp is now filled
3614//        fmt.Println(resp)
3615//    }
3616//
3617// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
3618func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) {
3619	op := &request.Operation{
3620		Name:       opGetPublicAccessBlock,
3621		HTTPMethod: "GET",
3622		HTTPPath:   "/{Bucket}?publicAccessBlock",
3623	}
3624
3625	if input == nil {
3626		input = &GetPublicAccessBlockInput{}
3627	}
3628
3629	output = &GetPublicAccessBlockOutput{}
3630	req = c.newRequest(op, input, output)
3631	return
3632}
3633
3634// GetPublicAccessBlock API operation for Amazon Simple Storage Service.
3635//
3636// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket.
3637//
3638// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3639// with awserr.Error's Code and Message methods to get detailed information about
3640// the error.
3641//
3642// See the AWS API reference guide for Amazon Simple Storage Service's
3643// API operation GetPublicAccessBlock for usage and error information.
3644// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
3645func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) {
3646	req, out := c.GetPublicAccessBlockRequest(input)
3647	return out, req.Send()
3648}
3649
3650// GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of
3651// the ability to pass a context and additional request options.
3652//
3653// See GetPublicAccessBlock for details on how to use this API operation.
3654//
3655// The context must be non-nil and will be used for request cancellation. If
3656// the context is nil a panic will occur. In the future the SDK may create
3657// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3658// for more information on using Contexts.
3659func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) {
3660	req, out := c.GetPublicAccessBlockRequest(input)
3661	req.SetContext(ctx)
3662	req.ApplyOptions(opts...)
3663	return out, req.Send()
3664}
3665
3666const opHeadBucket = "HeadBucket"
3667
3668// HeadBucketRequest generates a "aws/request.Request" representing the
3669// client's request for the HeadBucket operation. The "output" return
3670// value will be populated with the request's response once the request completes
3671// successfully.
3672//
3673// Use "Send" method on the returned Request to send the API call to the service.
3674// the "output" return value is not valid until after Send returns without error.
3675//
3676// See HeadBucket for more information on using the HeadBucket
3677// API call, and error handling.
3678//
3679// This method is useful when you want to inject custom logic or configuration
3680// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3681//
3682//
3683//    // Example sending a request using the HeadBucketRequest method.
3684//    req, resp := client.HeadBucketRequest(params)
3685//
3686//    err := req.Send()
3687//    if err == nil { // resp is now filled
3688//        fmt.Println(resp)
3689//    }
3690//
3691// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
3692func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
3693	op := &request.Operation{
3694		Name:       opHeadBucket,
3695		HTTPMethod: "HEAD",
3696		HTTPPath:   "/{Bucket}",
3697	}
3698
3699	if input == nil {
3700		input = &HeadBucketInput{}
3701	}
3702
3703	output = &HeadBucketOutput{}
3704	req = c.newRequest(op, input, output)
3705	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
3706	return
3707}
3708
3709// HeadBucket API operation for Amazon Simple Storage Service.
3710//
3711// This operation is useful to determine if a bucket exists and you have permission
3712// to access it.
3713//
3714// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3715// with awserr.Error's Code and Message methods to get detailed information about
3716// the error.
3717//
3718// See the AWS API reference guide for Amazon Simple Storage Service's
3719// API operation HeadBucket for usage and error information.
3720//
3721// Returned Error Codes:
3722//   * ErrCodeNoSuchBucket "NoSuchBucket"
3723//   The specified bucket does not exist.
3724//
3725// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
3726func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
3727	req, out := c.HeadBucketRequest(input)
3728	return out, req.Send()
3729}
3730
3731// HeadBucketWithContext is the same as HeadBucket with the addition of
3732// the ability to pass a context and additional request options.
3733//
3734// See HeadBucket for details on how to use this API operation.
3735//
3736// The context must be non-nil and will be used for request cancellation. If
3737// the context is nil a panic will occur. In the future the SDK may create
3738// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3739// for more information on using Contexts.
3740func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
3741	req, out := c.HeadBucketRequest(input)
3742	req.SetContext(ctx)
3743	req.ApplyOptions(opts...)
3744	return out, req.Send()
3745}
3746
3747const opHeadObject = "HeadObject"
3748
3749// HeadObjectRequest generates a "aws/request.Request" representing the
3750// client's request for the HeadObject operation. The "output" return
3751// value will be populated with the request's response once the request completes
3752// successfully.
3753//
3754// Use "Send" method on the returned Request to send the API call to the service.
3755// the "output" return value is not valid until after Send returns without error.
3756//
3757// See HeadObject for more information on using the HeadObject
3758// API call, and error handling.
3759//
3760// This method is useful when you want to inject custom logic or configuration
3761// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3762//
3763//
3764//    // Example sending a request using the HeadObjectRequest method.
3765//    req, resp := client.HeadObjectRequest(params)
3766//
3767//    err := req.Send()
3768//    if err == nil { // resp is now filled
3769//        fmt.Println(resp)
3770//    }
3771//
3772// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
3773func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
3774	op := &request.Operation{
3775		Name:       opHeadObject,
3776		HTTPMethod: "HEAD",
3777		HTTPPath:   "/{Bucket}/{Key+}",
3778	}
3779
3780	if input == nil {
3781		input = &HeadObjectInput{}
3782	}
3783
3784	output = &HeadObjectOutput{}
3785	req = c.newRequest(op, input, output)
3786	return
3787}
3788
3789// HeadObject API operation for Amazon Simple Storage Service.
3790//
3791// The HEAD operation retrieves metadata from an object without returning the
3792// object itself. This operation is useful if you're only interested in an object's
3793// metadata. To use HEAD, you must have READ access to the object.
3794//
3795// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
3796// for more information on returned errors.
3797//
3798// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3799// with awserr.Error's Code and Message methods to get detailed information about
3800// the error.
3801//
3802// See the AWS API reference guide for Amazon Simple Storage Service's
3803// API operation HeadObject for usage and error information.
3804// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
3805func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
3806	req, out := c.HeadObjectRequest(input)
3807	return out, req.Send()
3808}
3809
3810// HeadObjectWithContext is the same as HeadObject with the addition of
3811// the ability to pass a context and additional request options.
3812//
3813// See HeadObject for details on how to use this API operation.
3814//
3815// The context must be non-nil and will be used for request cancellation. If
3816// the context is nil a panic will occur. In the future the SDK may create
3817// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3818// for more information on using Contexts.
3819func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
3820	req, out := c.HeadObjectRequest(input)
3821	req.SetContext(ctx)
3822	req.ApplyOptions(opts...)
3823	return out, req.Send()
3824}
3825
3826const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
3827
3828// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
3829// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
3830// value will be populated with the request's response once the request completes
3831// successfully.
3832//
3833// Use "Send" method on the returned Request to send the API call to the service.
3834// the "output" return value is not valid until after Send returns without error.
3835//
3836// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
3837// API call, and error handling.
3838//
3839// This method is useful when you want to inject custom logic or configuration
3840// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3841//
3842//
3843//    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
3844//    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
3845//
3846//    err := req.Send()
3847//    if err == nil { // resp is now filled
3848//        fmt.Println(resp)
3849//    }
3850//
3851// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
3852func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
3853	op := &request.Operation{
3854		Name:       opListBucketAnalyticsConfigurations,
3855		HTTPMethod: "GET",
3856		HTTPPath:   "/{Bucket}?analytics",
3857	}
3858
3859	if input == nil {
3860		input = &ListBucketAnalyticsConfigurationsInput{}
3861	}
3862
3863	output = &ListBucketAnalyticsConfigurationsOutput{}
3864	req = c.newRequest(op, input, output)
3865	return
3866}
3867
3868// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
3869//
3870// Lists the analytics configurations for the bucket.
3871//
3872// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3873// with awserr.Error's Code and Message methods to get detailed information about
3874// the error.
3875//
3876// See the AWS API reference guide for Amazon Simple Storage Service's
3877// API operation ListBucketAnalyticsConfigurations for usage and error information.
3878// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
3879func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
3880	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
3881	return out, req.Send()
3882}
3883
3884// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
3885// the ability to pass a context and additional request options.
3886//
3887// See ListBucketAnalyticsConfigurations for details on how to use this API operation.
3888//
3889// The context must be non-nil and will be used for request cancellation. If
3890// the context is nil a panic will occur. In the future the SDK may create
3891// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3892// for more information on using Contexts.
3893func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
3894	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
3895	req.SetContext(ctx)
3896	req.ApplyOptions(opts...)
3897	return out, req.Send()
3898}
3899
3900const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
3901
3902// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
3903// client's request for the ListBucketInventoryConfigurations operation. The "output" return
3904// value will be populated with the request's response once the request completes
3905// successfully.
3906//
3907// Use "Send" method on the returned Request to send the API call to the service.
3908// the "output" return value is not valid until after Send returns without error.
3909//
3910// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
3911// API call, and error handling.
3912//
3913// This method is useful when you want to inject custom logic or configuration
3914// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3915//
3916//
3917//    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
3918//    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
3919//
3920//    err := req.Send()
3921//    if err == nil { // resp is now filled
3922//        fmt.Println(resp)
3923//    }
3924//
3925// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
3926func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
3927	op := &request.Operation{
3928		Name:       opListBucketInventoryConfigurations,
3929		HTTPMethod: "GET",
3930		HTTPPath:   "/{Bucket}?inventory",
3931	}
3932
3933	if input == nil {
3934		input = &ListBucketInventoryConfigurationsInput{}
3935	}
3936
3937	output = &ListBucketInventoryConfigurationsOutput{}
3938	req = c.newRequest(op, input, output)
3939	return
3940}
3941
3942// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
3943//
3944// Returns a list of inventory configurations for the bucket.
3945//
3946// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3947// with awserr.Error's Code and Message methods to get detailed information about
3948// the error.
3949//
3950// See the AWS API reference guide for Amazon Simple Storage Service's
3951// API operation ListBucketInventoryConfigurations for usage and error information.
3952// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
3953func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
3954	req, out := c.ListBucketInventoryConfigurationsRequest(input)
3955	return out, req.Send()
3956}
3957
3958// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
3959// the ability to pass a context and additional request options.
3960//
3961// See ListBucketInventoryConfigurations for details on how to use this API operation.
3962//
3963// The context must be non-nil and will be used for request cancellation. If
3964// the context is nil a panic will occur. In the future the SDK may create
3965// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3966// for more information on using Contexts.
3967func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
3968	req, out := c.ListBucketInventoryConfigurationsRequest(input)
3969	req.SetContext(ctx)
3970	req.ApplyOptions(opts...)
3971	return out, req.Send()
3972}
3973
3974const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
3975
3976// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
3977// client's request for the ListBucketMetricsConfigurations operation. The "output" return
3978// value will be populated with the request's response once the request completes
3979// successfully.
3980//
3981// Use "Send" method on the returned Request to send the API call to the service.
3982// the "output" return value is not valid until after Send returns without error.
3983//
3984// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
3985// API call, and error handling.
3986//
3987// This method is useful when you want to inject custom logic or configuration
3988// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3989//
3990//
3991//    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
3992//    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
3993//
3994//    err := req.Send()
3995//    if err == nil { // resp is now filled
3996//        fmt.Println(resp)
3997//    }
3998//
3999// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
4000func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
4001	op := &request.Operation{
4002		Name:       opListBucketMetricsConfigurations,
4003		HTTPMethod: "GET",
4004		HTTPPath:   "/{Bucket}?metrics",
4005	}
4006
4007	if input == nil {
4008		input = &ListBucketMetricsConfigurationsInput{}
4009	}
4010
4011	output = &ListBucketMetricsConfigurationsOutput{}
4012	req = c.newRequest(op, input, output)
4013	return
4014}
4015
4016// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
4017//
4018// Lists the metrics configurations for the bucket.
4019//
4020// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4021// with awserr.Error's Code and Message methods to get detailed information about
4022// the error.
4023//
4024// See the AWS API reference guide for Amazon Simple Storage Service's
4025// API operation ListBucketMetricsConfigurations for usage and error information.
4026// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
4027func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
4028	req, out := c.ListBucketMetricsConfigurationsRequest(input)
4029	return out, req.Send()
4030}
4031
4032// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
4033// the ability to pass a context and additional request options.
4034//
4035// See ListBucketMetricsConfigurations for details on how to use this API operation.
4036//
4037// The context must be non-nil and will be used for request cancellation. If
4038// the context is nil a panic will occur. In the future the SDK may create
4039// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4040// for more information on using Contexts.
4041func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
4042	req, out := c.ListBucketMetricsConfigurationsRequest(input)
4043	req.SetContext(ctx)
4044	req.ApplyOptions(opts...)
4045	return out, req.Send()
4046}
4047
4048const opListBuckets = "ListBuckets"
4049
4050// ListBucketsRequest generates a "aws/request.Request" representing the
4051// client's request for the ListBuckets operation. The "output" return
4052// value will be populated with the request's response once the request completes
4053// successfully.
4054//
4055// Use "Send" method on the returned Request to send the API call to the service.
4056// the "output" return value is not valid until after Send returns without error.
4057//
4058// See ListBuckets for more information on using the ListBuckets
4059// API call, and error handling.
4060//
4061// This method is useful when you want to inject custom logic or configuration
4062// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4063//
4064//
4065//    // Example sending a request using the ListBucketsRequest method.
4066//    req, resp := client.ListBucketsRequest(params)
4067//
4068//    err := req.Send()
4069//    if err == nil { // resp is now filled
4070//        fmt.Println(resp)
4071//    }
4072//
4073// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
4074func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
4075	op := &request.Operation{
4076		Name:       opListBuckets,
4077		HTTPMethod: "GET",
4078		HTTPPath:   "/",
4079	}
4080
4081	if input == nil {
4082		input = &ListBucketsInput{}
4083	}
4084
4085	output = &ListBucketsOutput{}
4086	req = c.newRequest(op, input, output)
4087	return
4088}
4089
4090// ListBuckets API operation for Amazon Simple Storage Service.
4091//
4092// Returns a list of all buckets owned by the authenticated sender of the request.
4093//
4094// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4095// with awserr.Error's Code and Message methods to get detailed information about
4096// the error.
4097//
4098// See the AWS API reference guide for Amazon Simple Storage Service's
4099// API operation ListBuckets for usage and error information.
4100// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
4101func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
4102	req, out := c.ListBucketsRequest(input)
4103	return out, req.Send()
4104}
4105
4106// ListBucketsWithContext is the same as ListBuckets with the addition of
4107// the ability to pass a context and additional request options.
4108//
4109// See ListBuckets for details on how to use this API operation.
4110//
4111// The context must be non-nil and will be used for request cancellation. If
4112// the context is nil a panic will occur. In the future the SDK may create
4113// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4114// for more information on using Contexts.
4115func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
4116	req, out := c.ListBucketsRequest(input)
4117	req.SetContext(ctx)
4118	req.ApplyOptions(opts...)
4119	return out, req.Send()
4120}
4121
4122const opListMultipartUploads = "ListMultipartUploads"
4123
4124// ListMultipartUploadsRequest generates a "aws/request.Request" representing the
4125// client's request for the ListMultipartUploads operation. The "output" return
4126// value will be populated with the request's response once the request completes
4127// successfully.
4128//
4129// Use "Send" method on the returned Request to send the API call to the service.
4130// the "output" return value is not valid until after Send returns without error.
4131//
4132// See ListMultipartUploads for more information on using the ListMultipartUploads
4133// API call, and error handling.
4134//
4135// This method is useful when you want to inject custom logic or configuration
4136// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4137//
4138//
4139//    // Example sending a request using the ListMultipartUploadsRequest method.
4140//    req, resp := client.ListMultipartUploadsRequest(params)
4141//
4142//    err := req.Send()
4143//    if err == nil { // resp is now filled
4144//        fmt.Println(resp)
4145//    }
4146//
4147// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
4148func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
4149	op := &request.Operation{
4150		Name:       opListMultipartUploads,
4151		HTTPMethod: "GET",
4152		HTTPPath:   "/{Bucket}?uploads",
4153		Paginator: &request.Paginator{
4154			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
4155			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
4156			LimitToken:      "MaxUploads",
4157			TruncationToken: "IsTruncated",
4158		},
4159	}
4160
4161	if input == nil {
4162		input = &ListMultipartUploadsInput{}
4163	}
4164
4165	output = &ListMultipartUploadsOutput{}
4166	req = c.newRequest(op, input, output)
4167	return
4168}
4169
4170// ListMultipartUploads API operation for Amazon Simple Storage Service.
4171//
4172// This operation lists in-progress multipart uploads.
4173//
4174// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4175// with awserr.Error's Code and Message methods to get detailed information about
4176// the error.
4177//
4178// See the AWS API reference guide for Amazon Simple Storage Service's
4179// API operation ListMultipartUploads for usage and error information.
4180// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
4181func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
4182	req, out := c.ListMultipartUploadsRequest(input)
4183	return out, req.Send()
4184}
4185
4186// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
4187// the ability to pass a context and additional request options.
4188//
4189// See ListMultipartUploads for details on how to use this API operation.
4190//
4191// The context must be non-nil and will be used for request cancellation. If
4192// the context is nil a panic will occur. In the future the SDK may create
4193// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4194// for more information on using Contexts.
4195func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
4196	req, out := c.ListMultipartUploadsRequest(input)
4197	req.SetContext(ctx)
4198	req.ApplyOptions(opts...)
4199	return out, req.Send()
4200}
4201
4202// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
4203// calling the "fn" function with the response data for each page. To stop
4204// iterating, return false from the fn function.
4205//
4206// See ListMultipartUploads method for more information on how to use this operation.
4207//
4208// Note: This operation can generate multiple requests to a service.
4209//
4210//    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
4211//    pageNum := 0
4212//    err := client.ListMultipartUploadsPages(params,
4213//        func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
4214//            pageNum++
4215//            fmt.Println(page)
4216//            return pageNum <= 3
4217//        })
4218//
4219func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
4220	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
4221}
4222
4223// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
4224// it takes a Context and allows setting request options on the pages.
4225//
4226// The context must be non-nil and will be used for request cancellation. If
4227// the context is nil a panic will occur. In the future the SDK may create
4228// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4229// for more information on using Contexts.
4230func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
4231	p := request.Pagination{
4232		NewRequest: func() (*request.Request, error) {
4233			var inCpy *ListMultipartUploadsInput
4234			if input != nil {
4235				tmp := *input
4236				inCpy = &tmp
4237			}
4238			req, _ := c.ListMultipartUploadsRequest(inCpy)
4239			req.SetContext(ctx)
4240			req.ApplyOptions(opts...)
4241			return req, nil
4242		},
4243	}
4244
4245	cont := true
4246	for p.Next() && cont {
4247		cont = fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage())
4248	}
4249	return p.Err()
4250}
4251
4252const opListObjectVersions = "ListObjectVersions"
4253
4254// ListObjectVersionsRequest generates a "aws/request.Request" representing the
4255// client's request for the ListObjectVersions operation. The "output" return
4256// value will be populated with the request's response once the request completes
4257// successfully.
4258//
4259// Use "Send" method on the returned Request to send the API call to the service.
4260// the "output" return value is not valid until after Send returns without error.
4261//
4262// See ListObjectVersions for more information on using the ListObjectVersions
4263// API call, and error handling.
4264//
4265// This method is useful when you want to inject custom logic or configuration
4266// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4267//
4268//
4269//    // Example sending a request using the ListObjectVersionsRequest method.
4270//    req, resp := client.ListObjectVersionsRequest(params)
4271//
4272//    err := req.Send()
4273//    if err == nil { // resp is now filled
4274//        fmt.Println(resp)
4275//    }
4276//
4277// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
4278func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
4279	op := &request.Operation{
4280		Name:       opListObjectVersions,
4281		HTTPMethod: "GET",
4282		HTTPPath:   "/{Bucket}?versions",
4283		Paginator: &request.Paginator{
4284			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
4285			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
4286			LimitToken:      "MaxKeys",
4287			TruncationToken: "IsTruncated",
4288		},
4289	}
4290
4291	if input == nil {
4292		input = &ListObjectVersionsInput{}
4293	}
4294
4295	output = &ListObjectVersionsOutput{}
4296	req = c.newRequest(op, input, output)
4297	return
4298}
4299
4300// ListObjectVersions API operation for Amazon Simple Storage Service.
4301//
4302// Returns metadata about all of the versions of objects in a bucket.
4303//
4304// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4305// with awserr.Error's Code and Message methods to get detailed information about
4306// the error.
4307//
4308// See the AWS API reference guide for Amazon Simple Storage Service's
4309// API operation ListObjectVersions for usage and error information.
4310// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
4311func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
4312	req, out := c.ListObjectVersionsRequest(input)
4313	return out, req.Send()
4314}
4315
4316// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
4317// the ability to pass a context and additional request options.
4318//
4319// See ListObjectVersions for details on how to use this API operation.
4320//
4321// The context must be non-nil and will be used for request cancellation. If
4322// the context is nil a panic will occur. In the future the SDK may create
4323// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4324// for more information on using Contexts.
4325func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
4326	req, out := c.ListObjectVersionsRequest(input)
4327	req.SetContext(ctx)
4328	req.ApplyOptions(opts...)
4329	return out, req.Send()
4330}
4331
4332// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
4333// calling the "fn" function with the response data for each page. To stop
4334// iterating, return false from the fn function.
4335//
4336// See ListObjectVersions method for more information on how to use this operation.
4337//
4338// Note: This operation can generate multiple requests to a service.
4339//
4340//    // Example iterating over at most 3 pages of a ListObjectVersions operation.
4341//    pageNum := 0
4342//    err := client.ListObjectVersionsPages(params,
4343//        func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
4344//            pageNum++
4345//            fmt.Println(page)
4346//            return pageNum <= 3
4347//        })
4348//
4349func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
4350	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
4351}
4352
4353// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
4354// it takes a Context and allows setting request options on the pages.
4355//
4356// The context must be non-nil and will be used for request cancellation. If
4357// the context is nil a panic will occur. In the future the SDK may create
4358// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4359// for more information on using Contexts.
4360func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
4361	p := request.Pagination{
4362		NewRequest: func() (*request.Request, error) {
4363			var inCpy *ListObjectVersionsInput
4364			if input != nil {
4365				tmp := *input
4366				inCpy = &tmp
4367			}
4368			req, _ := c.ListObjectVersionsRequest(inCpy)
4369			req.SetContext(ctx)
4370			req.ApplyOptions(opts...)
4371			return req, nil
4372		},
4373	}
4374
4375	cont := true
4376	for p.Next() && cont {
4377		cont = fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage())
4378	}
4379	return p.Err()
4380}
4381
4382const opListObjects = "ListObjects"
4383
4384// ListObjectsRequest generates a "aws/request.Request" representing the
4385// client's request for the ListObjects operation. The "output" return
4386// value will be populated with the request's response once the request completes
4387// successfully.
4388//
4389// Use "Send" method on the returned Request to send the API call to the service.
4390// the "output" return value is not valid until after Send returns without error.
4391//
4392// See ListObjects for more information on using the ListObjects
4393// API call, and error handling.
4394//
4395// This method is useful when you want to inject custom logic or configuration
4396// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4397//
4398//
4399//    // Example sending a request using the ListObjectsRequest method.
4400//    req, resp := client.ListObjectsRequest(params)
4401//
4402//    err := req.Send()
4403//    if err == nil { // resp is now filled
4404//        fmt.Println(resp)
4405//    }
4406//
4407// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
4408func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
4409	op := &request.Operation{
4410		Name:       opListObjects,
4411		HTTPMethod: "GET",
4412		HTTPPath:   "/{Bucket}",
4413		Paginator: &request.Paginator{
4414			InputTokens:     []string{"Marker"},
4415			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
4416			LimitToken:      "MaxKeys",
4417			TruncationToken: "IsTruncated",
4418		},
4419	}
4420
4421	if input == nil {
4422		input = &ListObjectsInput{}
4423	}
4424
4425	output = &ListObjectsOutput{}
4426	req = c.newRequest(op, input, output)
4427	return
4428}
4429
4430// ListObjects API operation for Amazon Simple Storage Service.
4431//
4432// Returns some or all (up to 1000) of the objects in a bucket. You can use
4433// the request parameters as selection criteria to return a subset of the objects
4434// in a bucket.
4435//
4436// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4437// with awserr.Error's Code and Message methods to get detailed information about
4438// the error.
4439//
4440// See the AWS API reference guide for Amazon Simple Storage Service's
4441// API operation ListObjects for usage and error information.
4442//
4443// Returned Error Codes:
4444//   * ErrCodeNoSuchBucket "NoSuchBucket"
4445//   The specified bucket does not exist.
4446//
4447// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
4448func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
4449	req, out := c.ListObjectsRequest(input)
4450	return out, req.Send()
4451}
4452
4453// ListObjectsWithContext is the same as ListObjects with the addition of
4454// the ability to pass a context and additional request options.
4455//
4456// See ListObjects for details on how to use this API operation.
4457//
4458// The context must be non-nil and will be used for request cancellation. If
4459// the context is nil a panic will occur. In the future the SDK may create
4460// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4461// for more information on using Contexts.
4462func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
4463	req, out := c.ListObjectsRequest(input)
4464	req.SetContext(ctx)
4465	req.ApplyOptions(opts...)
4466	return out, req.Send()
4467}
4468
4469// ListObjectsPages iterates over the pages of a ListObjects operation,
4470// calling the "fn" function with the response data for each page. To stop
4471// iterating, return false from the fn function.
4472//
4473// See ListObjects method for more information on how to use this operation.
4474//
4475// Note: This operation can generate multiple requests to a service.
4476//
4477//    // Example iterating over at most 3 pages of a ListObjects operation.
4478//    pageNum := 0
4479//    err := client.ListObjectsPages(params,
4480//        func(page *s3.ListObjectsOutput, lastPage bool) bool {
4481//            pageNum++
4482//            fmt.Println(page)
4483//            return pageNum <= 3
4484//        })
4485//
4486func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
4487	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
4488}
4489
4490// ListObjectsPagesWithContext same as ListObjectsPages except
4491// it takes a Context and allows setting request options on the pages.
4492//
4493// The context must be non-nil and will be used for request cancellation. If
4494// the context is nil a panic will occur. In the future the SDK may create
4495// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4496// for more information on using Contexts.
4497func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
4498	p := request.Pagination{
4499		NewRequest: func() (*request.Request, error) {
4500			var inCpy *ListObjectsInput
4501			if input != nil {
4502				tmp := *input
4503				inCpy = &tmp
4504			}
4505			req, _ := c.ListObjectsRequest(inCpy)
4506			req.SetContext(ctx)
4507			req.ApplyOptions(opts...)
4508			return req, nil
4509		},
4510	}
4511
4512	cont := true
4513	for p.Next() && cont {
4514		cont = fn(p.Page().(*ListObjectsOutput), !p.HasNextPage())
4515	}
4516	return p.Err()
4517}
4518
4519const opListObjectsV2 = "ListObjectsV2"
4520
4521// ListObjectsV2Request generates a "aws/request.Request" representing the
4522// client's request for the ListObjectsV2 operation. The "output" return
4523// value will be populated with the request's response once the request completes
4524// successfully.
4525//
4526// Use "Send" method on the returned Request to send the API call to the service.
4527// the "output" return value is not valid until after Send returns without error.
4528//
4529// See ListObjectsV2 for more information on using the ListObjectsV2
4530// API call, and error handling.
4531//
4532// This method is useful when you want to inject custom logic or configuration
4533// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4534//
4535//
4536//    // Example sending a request using the ListObjectsV2Request method.
4537//    req, resp := client.ListObjectsV2Request(params)
4538//
4539//    err := req.Send()
4540//    if err == nil { // resp is now filled
4541//        fmt.Println(resp)
4542//    }
4543//
4544// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
4545func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
4546	op := &request.Operation{
4547		Name:       opListObjectsV2,
4548		HTTPMethod: "GET",
4549		HTTPPath:   "/{Bucket}?list-type=2",
4550		Paginator: &request.Paginator{
4551			InputTokens:     []string{"ContinuationToken"},
4552			OutputTokens:    []string{"NextContinuationToken"},
4553			LimitToken:      "MaxKeys",
4554			TruncationToken: "",
4555		},
4556	}
4557
4558	if input == nil {
4559		input = &ListObjectsV2Input{}
4560	}
4561
4562	output = &ListObjectsV2Output{}
4563	req = c.newRequest(op, input, output)
4564	return
4565}
4566
4567// ListObjectsV2 API operation for Amazon Simple Storage Service.
4568//
4569// Returns some or all (up to 1000) of the objects in a bucket. You can use
4570// the request parameters as selection criteria to return a subset of the objects
4571// in a bucket. Note: ListObjectsV2 is the revised List Objects API and we recommend
4572// you use this revised API for new application development.
4573//
4574// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4575// with awserr.Error's Code and Message methods to get detailed information about
4576// the error.
4577//
4578// See the AWS API reference guide for Amazon Simple Storage Service's
4579// API operation ListObjectsV2 for usage and error information.
4580//
4581// Returned Error Codes:
4582//   * ErrCodeNoSuchBucket "NoSuchBucket"
4583//   The specified bucket does not exist.
4584//
4585// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
4586func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
4587	req, out := c.ListObjectsV2Request(input)
4588	return out, req.Send()
4589}
4590
4591// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
4592// the ability to pass a context and additional request options.
4593//
4594// See ListObjectsV2 for details on how to use this API operation.
4595//
4596// The context must be non-nil and will be used for request cancellation. If
4597// the context is nil a panic will occur. In the future the SDK may create
4598// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4599// for more information on using Contexts.
4600func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
4601	req, out := c.ListObjectsV2Request(input)
4602	req.SetContext(ctx)
4603	req.ApplyOptions(opts...)
4604	return out, req.Send()
4605}
4606
4607// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
4608// calling the "fn" function with the response data for each page. To stop
4609// iterating, return false from the fn function.
4610//
4611// See ListObjectsV2 method for more information on how to use this operation.
4612//
4613// Note: This operation can generate multiple requests to a service.
4614//
4615//    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
4616//    pageNum := 0
4617//    err := client.ListObjectsV2Pages(params,
4618//        func(page *s3.ListObjectsV2Output, lastPage bool) bool {
4619//            pageNum++
4620//            fmt.Println(page)
4621//            return pageNum <= 3
4622//        })
4623//
4624func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
4625	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
4626}
4627
4628// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
4629// it takes a Context and allows setting request options on the pages.
4630//
4631// The context must be non-nil and will be used for request cancellation. If
4632// the context is nil a panic will occur. In the future the SDK may create
4633// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4634// for more information on using Contexts.
4635func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
4636	p := request.Pagination{
4637		NewRequest: func() (*request.Request, error) {
4638			var inCpy *ListObjectsV2Input
4639			if input != nil {
4640				tmp := *input
4641				inCpy = &tmp
4642			}
4643			req, _ := c.ListObjectsV2Request(inCpy)
4644			req.SetContext(ctx)
4645			req.ApplyOptions(opts...)
4646			return req, nil
4647		},
4648	}
4649
4650	cont := true
4651	for p.Next() && cont {
4652		cont = fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage())
4653	}
4654	return p.Err()
4655}
4656
4657const opListParts = "ListParts"
4658
4659// ListPartsRequest generates a "aws/request.Request" representing the
4660// client's request for the ListParts operation. The "output" return
4661// value will be populated with the request's response once the request completes
4662// successfully.
4663//
4664// Use "Send" method on the returned Request to send the API call to the service.
4665// the "output" return value is not valid until after Send returns without error.
4666//
4667// See ListParts for more information on using the ListParts
4668// API call, and error handling.
4669//
4670// This method is useful when you want to inject custom logic or configuration
4671// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4672//
4673//
4674//    // Example sending a request using the ListPartsRequest method.
4675//    req, resp := client.ListPartsRequest(params)
4676//
4677//    err := req.Send()
4678//    if err == nil { // resp is now filled
4679//        fmt.Println(resp)
4680//    }
4681//
4682// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
4683func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
4684	op := &request.Operation{
4685		Name:       opListParts,
4686		HTTPMethod: "GET",
4687		HTTPPath:   "/{Bucket}/{Key+}",
4688		Paginator: &request.Paginator{
4689			InputTokens:     []string{"PartNumberMarker"},
4690			OutputTokens:    []string{"NextPartNumberMarker"},
4691			LimitToken:      "MaxParts",
4692			TruncationToken: "IsTruncated",
4693		},
4694	}
4695
4696	if input == nil {
4697		input = &ListPartsInput{}
4698	}
4699
4700	output = &ListPartsOutput{}
4701	req = c.newRequest(op, input, output)
4702	return
4703}
4704
4705// ListParts API operation for Amazon Simple Storage Service.
4706//
4707// Lists the parts that have been uploaded for a specific multipart upload.
4708//
4709// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4710// with awserr.Error's Code and Message methods to get detailed information about
4711// the error.
4712//
4713// See the AWS API reference guide for Amazon Simple Storage Service's
4714// API operation ListParts for usage and error information.
4715// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
4716func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
4717	req, out := c.ListPartsRequest(input)
4718	return out, req.Send()
4719}
4720
4721// ListPartsWithContext is the same as ListParts with the addition of
4722// the ability to pass a context and additional request options.
4723//
4724// See ListParts for details on how to use this API operation.
4725//
4726// The context must be non-nil and will be used for request cancellation. If
4727// the context is nil a panic will occur. In the future the SDK may create
4728// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4729// for more information on using Contexts.
4730func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
4731	req, out := c.ListPartsRequest(input)
4732	req.SetContext(ctx)
4733	req.ApplyOptions(opts...)
4734	return out, req.Send()
4735}
4736
4737// ListPartsPages iterates over the pages of a ListParts operation,
4738// calling the "fn" function with the response data for each page. To stop
4739// iterating, return false from the fn function.
4740//
4741// See ListParts method for more information on how to use this operation.
4742//
4743// Note: This operation can generate multiple requests to a service.
4744//
4745//    // Example iterating over at most 3 pages of a ListParts operation.
4746//    pageNum := 0
4747//    err := client.ListPartsPages(params,
4748//        func(page *s3.ListPartsOutput, lastPage bool) bool {
4749//            pageNum++
4750//            fmt.Println(page)
4751//            return pageNum <= 3
4752//        })
4753//
4754func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
4755	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
4756}
4757
4758// ListPartsPagesWithContext same as ListPartsPages except
4759// it takes a Context and allows setting request options on the pages.
4760//
4761// The context must be non-nil and will be used for request cancellation. If
4762// the context is nil a panic will occur. In the future the SDK may create
4763// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4764// for more information on using Contexts.
4765func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
4766	p := request.Pagination{
4767		NewRequest: func() (*request.Request, error) {
4768			var inCpy *ListPartsInput
4769			if input != nil {
4770				tmp := *input
4771				inCpy = &tmp
4772			}
4773			req, _ := c.ListPartsRequest(inCpy)
4774			req.SetContext(ctx)
4775			req.ApplyOptions(opts...)
4776			return req, nil
4777		},
4778	}
4779
4780	cont := true
4781	for p.Next() && cont {
4782		cont = fn(p.Page().(*ListPartsOutput), !p.HasNextPage())
4783	}
4784	return p.Err()
4785}
4786
4787const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
4788
4789// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
4790// client's request for the PutBucketAccelerateConfiguration operation. The "output" return
4791// value will be populated with the request's response once the request completes
4792// successfully.
4793//
4794// Use "Send" method on the returned Request to send the API call to the service.
4795// the "output" return value is not valid until after Send returns without error.
4796//
4797// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
4798// API call, and error handling.
4799//
4800// This method is useful when you want to inject custom logic or configuration
4801// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4802//
4803//
4804//    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
4805//    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
4806//
4807//    err := req.Send()
4808//    if err == nil { // resp is now filled
4809//        fmt.Println(resp)
4810//    }
4811//
4812// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
4813func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
4814	op := &request.Operation{
4815		Name:       opPutBucketAccelerateConfiguration,
4816		HTTPMethod: "PUT",
4817		HTTPPath:   "/{Bucket}?accelerate",
4818	}
4819
4820	if input == nil {
4821		input = &PutBucketAccelerateConfigurationInput{}
4822	}
4823
4824	output = &PutBucketAccelerateConfigurationOutput{}
4825	req = c.newRequest(op, input, output)
4826	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4827	return
4828}
4829
4830// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
4831//
4832// Sets the accelerate configuration of an existing bucket.
4833//
4834// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4835// with awserr.Error's Code and Message methods to get detailed information about
4836// the error.
4837//
4838// See the AWS API reference guide for Amazon Simple Storage Service's
4839// API operation PutBucketAccelerateConfiguration for usage and error information.
4840// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
4841func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
4842	req, out := c.PutBucketAccelerateConfigurationRequest(input)
4843	return out, req.Send()
4844}
4845
4846// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
4847// the ability to pass a context and additional request options.
4848//
4849// See PutBucketAccelerateConfiguration for details on how to use this API operation.
4850//
4851// The context must be non-nil and will be used for request cancellation. If
4852// the context is nil a panic will occur. In the future the SDK may create
4853// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4854// for more information on using Contexts.
4855func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
4856	req, out := c.PutBucketAccelerateConfigurationRequest(input)
4857	req.SetContext(ctx)
4858	req.ApplyOptions(opts...)
4859	return out, req.Send()
4860}
4861
4862const opPutBucketAcl = "PutBucketAcl"
4863
4864// PutBucketAclRequest generates a "aws/request.Request" representing the
4865// client's request for the PutBucketAcl operation. The "output" return
4866// value will be populated with the request's response once the request completes
4867// successfully.
4868//
4869// Use "Send" method on the returned Request to send the API call to the service.
4870// the "output" return value is not valid until after Send returns without error.
4871//
4872// See PutBucketAcl for more information on using the PutBucketAcl
4873// API call, and error handling.
4874//
4875// This method is useful when you want to inject custom logic or configuration
4876// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4877//
4878//
4879//    // Example sending a request using the PutBucketAclRequest method.
4880//    req, resp := client.PutBucketAclRequest(params)
4881//
4882//    err := req.Send()
4883//    if err == nil { // resp is now filled
4884//        fmt.Println(resp)
4885//    }
4886//
4887// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
4888func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
4889	op := &request.Operation{
4890		Name:       opPutBucketAcl,
4891		HTTPMethod: "PUT",
4892		HTTPPath:   "/{Bucket}?acl",
4893	}
4894
4895	if input == nil {
4896		input = &PutBucketAclInput{}
4897	}
4898
4899	output = &PutBucketAclOutput{}
4900	req = c.newRequest(op, input, output)
4901	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4902	return
4903}
4904
4905// PutBucketAcl API operation for Amazon Simple Storage Service.
4906//
4907// Sets the permissions on a bucket using access control lists (ACL).
4908//
4909// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4910// with awserr.Error's Code and Message methods to get detailed information about
4911// the error.
4912//
4913// See the AWS API reference guide for Amazon Simple Storage Service's
4914// API operation PutBucketAcl for usage and error information.
4915// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
4916func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
4917	req, out := c.PutBucketAclRequest(input)
4918	return out, req.Send()
4919}
4920
4921// PutBucketAclWithContext is the same as PutBucketAcl with the addition of
4922// the ability to pass a context and additional request options.
4923//
4924// See PutBucketAcl for details on how to use this API operation.
4925//
4926// The context must be non-nil and will be used for request cancellation. If
4927// the context is nil a panic will occur. In the future the SDK may create
4928// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4929// for more information on using Contexts.
4930func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
4931	req, out := c.PutBucketAclRequest(input)
4932	req.SetContext(ctx)
4933	req.ApplyOptions(opts...)
4934	return out, req.Send()
4935}
4936
4937const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
4938
4939// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
4940// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
4941// value will be populated with the request's response once the request completes
4942// successfully.
4943//
4944// Use "Send" method on the returned Request to send the API call to the service.
4945// the "output" return value is not valid until after Send returns without error.
4946//
4947// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
4948// API call, and error handling.
4949//
4950// This method is useful when you want to inject custom logic or configuration
4951// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4952//
4953//
4954//    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
4955//    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
4956//
4957//    err := req.Send()
4958//    if err == nil { // resp is now filled
4959//        fmt.Println(resp)
4960//    }
4961//
4962// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
4963func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
4964	op := &request.Operation{
4965		Name:       opPutBucketAnalyticsConfiguration,
4966		HTTPMethod: "PUT",
4967		HTTPPath:   "/{Bucket}?analytics",
4968	}
4969
4970	if input == nil {
4971		input = &PutBucketAnalyticsConfigurationInput{}
4972	}
4973
4974	output = &PutBucketAnalyticsConfigurationOutput{}
4975	req = c.newRequest(op, input, output)
4976	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4977	return
4978}
4979
4980// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
4981//
4982// Sets an analytics configuration for the bucket (specified by the analytics
4983// configuration ID).
4984//
4985// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4986// with awserr.Error's Code and Message methods to get detailed information about
4987// the error.
4988//
4989// See the AWS API reference guide for Amazon Simple Storage Service's
4990// API operation PutBucketAnalyticsConfiguration for usage and error information.
4991// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
4992func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
4993	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
4994	return out, req.Send()
4995}
4996
4997// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
4998// the ability to pass a context and additional request options.
4999//
5000// See PutBucketAnalyticsConfiguration for details on how to use this API operation.
5001//
5002// The context must be non-nil and will be used for request cancellation. If
5003// the context is nil a panic will occur. In the future the SDK may create
5004// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5005// for more information on using Contexts.
5006func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
5007	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
5008	req.SetContext(ctx)
5009	req.ApplyOptions(opts...)
5010	return out, req.Send()
5011}
5012
5013const opPutBucketCors = "PutBucketCors"
5014
5015// PutBucketCorsRequest generates a "aws/request.Request" representing the
5016// client's request for the PutBucketCors operation. The "output" return
5017// value will be populated with the request's response once the request completes
5018// successfully.
5019//
5020// Use "Send" method on the returned Request to send the API call to the service.
5021// the "output" return value is not valid until after Send returns without error.
5022//
5023// See PutBucketCors for more information on using the PutBucketCors
5024// API call, and error handling.
5025//
5026// This method is useful when you want to inject custom logic or configuration
5027// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5028//
5029//
5030//    // Example sending a request using the PutBucketCorsRequest method.
5031//    req, resp := client.PutBucketCorsRequest(params)
5032//
5033//    err := req.Send()
5034//    if err == nil { // resp is now filled
5035//        fmt.Println(resp)
5036//    }
5037//
5038// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
5039func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
5040	op := &request.Operation{
5041		Name:       opPutBucketCors,
5042		HTTPMethod: "PUT",
5043		HTTPPath:   "/{Bucket}?cors",
5044	}
5045
5046	if input == nil {
5047		input = &PutBucketCorsInput{}
5048	}
5049
5050	output = &PutBucketCorsOutput{}
5051	req = c.newRequest(op, input, output)
5052	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5053	return
5054}
5055
5056// PutBucketCors API operation for Amazon Simple Storage Service.
5057//
5058// Sets the CORS configuration for a bucket.
5059//
5060// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5061// with awserr.Error's Code and Message methods to get detailed information about
5062// the error.
5063//
5064// See the AWS API reference guide for Amazon Simple Storage Service's
5065// API operation PutBucketCors for usage and error information.
5066// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
5067func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
5068	req, out := c.PutBucketCorsRequest(input)
5069	return out, req.Send()
5070}
5071
5072// PutBucketCorsWithContext is the same as PutBucketCors with the addition of
5073// the ability to pass a context and additional request options.
5074//
5075// See PutBucketCors for details on how to use this API operation.
5076//
5077// The context must be non-nil and will be used for request cancellation. If
5078// the context is nil a panic will occur. In the future the SDK may create
5079// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5080// for more information on using Contexts.
5081func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
5082	req, out := c.PutBucketCorsRequest(input)
5083	req.SetContext(ctx)
5084	req.ApplyOptions(opts...)
5085	return out, req.Send()
5086}
5087
5088const opPutBucketEncryption = "PutBucketEncryption"
5089
5090// PutBucketEncryptionRequest generates a "aws/request.Request" representing the
5091// client's request for the PutBucketEncryption operation. The "output" return
5092// value will be populated with the request's response once the request completes
5093// successfully.
5094//
5095// Use "Send" method on the returned Request to send the API call to the service.
5096// the "output" return value is not valid until after Send returns without error.
5097//
5098// See PutBucketEncryption for more information on using the PutBucketEncryption
5099// API call, and error handling.
5100//
5101// This method is useful when you want to inject custom logic or configuration
5102// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5103//
5104//
5105//    // Example sending a request using the PutBucketEncryptionRequest method.
5106//    req, resp := client.PutBucketEncryptionRequest(params)
5107//
5108//    err := req.Send()
5109//    if err == nil { // resp is now filled
5110//        fmt.Println(resp)
5111//    }
5112//
5113// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
5114func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
5115	op := &request.Operation{
5116		Name:       opPutBucketEncryption,
5117		HTTPMethod: "PUT",
5118		HTTPPath:   "/{Bucket}?encryption",
5119	}
5120
5121	if input == nil {
5122		input = &PutBucketEncryptionInput{}
5123	}
5124
5125	output = &PutBucketEncryptionOutput{}
5126	req = c.newRequest(op, input, output)
5127	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5128	return
5129}
5130
5131// PutBucketEncryption API operation for Amazon Simple Storage Service.
5132//
5133// Creates a new server-side encryption configuration (or replaces an existing
5134// one, if present).
5135//
5136// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5137// with awserr.Error's Code and Message methods to get detailed information about
5138// the error.
5139//
5140// See the AWS API reference guide for Amazon Simple Storage Service's
5141// API operation PutBucketEncryption for usage and error information.
5142// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
5143func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
5144	req, out := c.PutBucketEncryptionRequest(input)
5145	return out, req.Send()
5146}
5147
5148// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
5149// the ability to pass a context and additional request options.
5150//
5151// See PutBucketEncryption for details on how to use this API operation.
5152//
5153// The context must be non-nil and will be used for request cancellation. If
5154// the context is nil a panic will occur. In the future the SDK may create
5155// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5156// for more information on using Contexts.
5157func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
5158	req, out := c.PutBucketEncryptionRequest(input)
5159	req.SetContext(ctx)
5160	req.ApplyOptions(opts...)
5161	return out, req.Send()
5162}
5163
5164const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
5165
5166// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
5167// client's request for the PutBucketInventoryConfiguration operation. The "output" return
5168// value will be populated with the request's response once the request completes
5169// successfully.
5170//
5171// Use "Send" method on the returned Request to send the API call to the service.
5172// the "output" return value is not valid until after Send returns without error.
5173//
5174// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
5175// API call, and error handling.
5176//
5177// This method is useful when you want to inject custom logic or configuration
5178// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5179//
5180//
5181//    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
5182//    req, resp := client.PutBucketInventoryConfigurationRequest(params)
5183//
5184//    err := req.Send()
5185//    if err == nil { // resp is now filled
5186//        fmt.Println(resp)
5187//    }
5188//
5189// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
5190func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
5191	op := &request.Operation{
5192		Name:       opPutBucketInventoryConfiguration,
5193		HTTPMethod: "PUT",
5194		HTTPPath:   "/{Bucket}?inventory",
5195	}
5196
5197	if input == nil {
5198		input = &PutBucketInventoryConfigurationInput{}
5199	}
5200
5201	output = &PutBucketInventoryConfigurationOutput{}
5202	req = c.newRequest(op, input, output)
5203	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5204	return
5205}
5206
5207// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
5208//
5209// Adds an inventory configuration (identified by the inventory ID) from the
5210// bucket.
5211//
5212// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5213// with awserr.Error's Code and Message methods to get detailed information about
5214// the error.
5215//
5216// See the AWS API reference guide for Amazon Simple Storage Service's
5217// API operation PutBucketInventoryConfiguration for usage and error information.
5218// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
5219func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
5220	req, out := c.PutBucketInventoryConfigurationRequest(input)
5221	return out, req.Send()
5222}
5223
5224// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
5225// the ability to pass a context and additional request options.
5226//
5227// See PutBucketInventoryConfiguration for details on how to use this API operation.
5228//
5229// The context must be non-nil and will be used for request cancellation. If
5230// the context is nil a panic will occur. In the future the SDK may create
5231// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5232// for more information on using Contexts.
5233func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
5234	req, out := c.PutBucketInventoryConfigurationRequest(input)
5235	req.SetContext(ctx)
5236	req.ApplyOptions(opts...)
5237	return out, req.Send()
5238}
5239
5240const opPutBucketLifecycle = "PutBucketLifecycle"
5241
5242// PutBucketLifecycleRequest generates a "aws/request.Request" representing the
5243// client's request for the PutBucketLifecycle operation. The "output" return
5244// value will be populated with the request's response once the request completes
5245// successfully.
5246//
5247// Use "Send" method on the returned Request to send the API call to the service.
5248// the "output" return value is not valid until after Send returns without error.
5249//
5250// See PutBucketLifecycle for more information on using the PutBucketLifecycle
5251// API call, and error handling.
5252//
5253// This method is useful when you want to inject custom logic or configuration
5254// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5255//
5256//
5257//    // Example sending a request using the PutBucketLifecycleRequest method.
5258//    req, resp := client.PutBucketLifecycleRequest(params)
5259//
5260//    err := req.Send()
5261//    if err == nil { // resp is now filled
5262//        fmt.Println(resp)
5263//    }
5264//
5265// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
5266//
5267// Deprecated: PutBucketLifecycle has been deprecated
5268func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
5269	if c.Client.Config.Logger != nil {
5270		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
5271	}
5272	op := &request.Operation{
5273		Name:       opPutBucketLifecycle,
5274		HTTPMethod: "PUT",
5275		HTTPPath:   "/{Bucket}?lifecycle",
5276	}
5277
5278	if input == nil {
5279		input = &PutBucketLifecycleInput{}
5280	}
5281
5282	output = &PutBucketLifecycleOutput{}
5283	req = c.newRequest(op, input, output)
5284	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5285	return
5286}
5287
5288// PutBucketLifecycle API operation for Amazon Simple Storage Service.
5289//
5290// No longer used, see the PutBucketLifecycleConfiguration operation.
5291//
5292// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5293// with awserr.Error's Code and Message methods to get detailed information about
5294// the error.
5295//
5296// See the AWS API reference guide for Amazon Simple Storage Service's
5297// API operation PutBucketLifecycle for usage and error information.
5298// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
5299//
5300// Deprecated: PutBucketLifecycle has been deprecated
5301func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
5302	req, out := c.PutBucketLifecycleRequest(input)
5303	return out, req.Send()
5304}
5305
5306// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
5307// the ability to pass a context and additional request options.
5308//
5309// See PutBucketLifecycle for details on how to use this API operation.
5310//
5311// The context must be non-nil and will be used for request cancellation. If
5312// the context is nil a panic will occur. In the future the SDK may create
5313// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5314// for more information on using Contexts.
5315//
5316// Deprecated: PutBucketLifecycleWithContext has been deprecated
5317func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
5318	req, out := c.PutBucketLifecycleRequest(input)
5319	req.SetContext(ctx)
5320	req.ApplyOptions(opts...)
5321	return out, req.Send()
5322}
5323
5324const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
5325
5326// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
5327// client's request for the PutBucketLifecycleConfiguration operation. The "output" return
5328// value will be populated with the request's response once the request completes
5329// successfully.
5330//
5331// Use "Send" method on the returned Request to send the API call to the service.
5332// the "output" return value is not valid until after Send returns without error.
5333//
5334// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
5335// API call, and error handling.
5336//
5337// This method is useful when you want to inject custom logic or configuration
5338// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5339//
5340//
5341//    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
5342//    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
5343//
5344//    err := req.Send()
5345//    if err == nil { // resp is now filled
5346//        fmt.Println(resp)
5347//    }
5348//
5349// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
5350func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
5351	op := &request.Operation{
5352		Name:       opPutBucketLifecycleConfiguration,
5353		HTTPMethod: "PUT",
5354		HTTPPath:   "/{Bucket}?lifecycle",
5355	}
5356
5357	if input == nil {
5358		input = &PutBucketLifecycleConfigurationInput{}
5359	}
5360
5361	output = &PutBucketLifecycleConfigurationOutput{}
5362	req = c.newRequest(op, input, output)
5363	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5364	return
5365}
5366
5367// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
5368//
5369// Sets lifecycle configuration for your bucket. If a lifecycle configuration
5370// exists, it replaces it.
5371//
5372// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5373// with awserr.Error's Code and Message methods to get detailed information about
5374// the error.
5375//
5376// See the AWS API reference guide for Amazon Simple Storage Service's
5377// API operation PutBucketLifecycleConfiguration for usage and error information.
5378// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
5379func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
5380	req, out := c.PutBucketLifecycleConfigurationRequest(input)
5381	return out, req.Send()
5382}
5383
5384// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
5385// the ability to pass a context and additional request options.
5386//
5387// See PutBucketLifecycleConfiguration for details on how to use this API operation.
5388//
5389// The context must be non-nil and will be used for request cancellation. If
5390// the context is nil a panic will occur. In the future the SDK may create
5391// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5392// for more information on using Contexts.
5393func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
5394	req, out := c.PutBucketLifecycleConfigurationRequest(input)
5395	req.SetContext(ctx)
5396	req.ApplyOptions(opts...)
5397	return out, req.Send()
5398}
5399
5400const opPutBucketLogging = "PutBucketLogging"
5401
5402// PutBucketLoggingRequest generates a "aws/request.Request" representing the
5403// client's request for the PutBucketLogging operation. The "output" return
5404// value will be populated with the request's response once the request completes
5405// successfully.
5406//
5407// Use "Send" method on the returned Request to send the API call to the service.
5408// the "output" return value is not valid until after Send returns without error.
5409//
5410// See PutBucketLogging for more information on using the PutBucketLogging
5411// API call, and error handling.
5412//
5413// This method is useful when you want to inject custom logic or configuration
5414// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5415//
5416//
5417//    // Example sending a request using the PutBucketLoggingRequest method.
5418//    req, resp := client.PutBucketLoggingRequest(params)
5419//
5420//    err := req.Send()
5421//    if err == nil { // resp is now filled
5422//        fmt.Println(resp)
5423//    }
5424//
5425// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
5426func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
5427	op := &request.Operation{
5428		Name:       opPutBucketLogging,
5429		HTTPMethod: "PUT",
5430		HTTPPath:   "/{Bucket}?logging",
5431	}
5432
5433	if input == nil {
5434		input = &PutBucketLoggingInput{}
5435	}
5436
5437	output = &PutBucketLoggingOutput{}
5438	req = c.newRequest(op, input, output)
5439	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5440	return
5441}
5442
5443// PutBucketLogging API operation for Amazon Simple Storage Service.
5444//
5445// Set the logging parameters for a bucket and to specify permissions for who
5446// can view and modify the logging parameters. To set the logging status of
5447// a bucket, you must be the bucket owner.
5448//
5449// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5450// with awserr.Error's Code and Message methods to get detailed information about
5451// the error.
5452//
5453// See the AWS API reference guide for Amazon Simple Storage Service's
5454// API operation PutBucketLogging for usage and error information.
5455// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
5456func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
5457	req, out := c.PutBucketLoggingRequest(input)
5458	return out, req.Send()
5459}
5460
5461// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
5462// the ability to pass a context and additional request options.
5463//
5464// See PutBucketLogging for details on how to use this API operation.
5465//
5466// The context must be non-nil and will be used for request cancellation. If
5467// the context is nil a panic will occur. In the future the SDK may create
5468// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5469// for more information on using Contexts.
5470func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
5471	req, out := c.PutBucketLoggingRequest(input)
5472	req.SetContext(ctx)
5473	req.ApplyOptions(opts...)
5474	return out, req.Send()
5475}
5476
5477const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
5478
5479// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
5480// client's request for the PutBucketMetricsConfiguration operation. The "output" return
5481// value will be populated with the request's response once the request completes
5482// successfully.
5483//
5484// Use "Send" method on the returned Request to send the API call to the service.
5485// the "output" return value is not valid until after Send returns without error.
5486//
5487// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
5488// API call, and error handling.
5489//
5490// This method is useful when you want to inject custom logic or configuration
5491// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5492//
5493//
5494//    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
5495//    req, resp := client.PutBucketMetricsConfigurationRequest(params)
5496//
5497//    err := req.Send()
5498//    if err == nil { // resp is now filled
5499//        fmt.Println(resp)
5500//    }
5501//
5502// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
5503func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
5504	op := &request.Operation{
5505		Name:       opPutBucketMetricsConfiguration,
5506		HTTPMethod: "PUT",
5507		HTTPPath:   "/{Bucket}?metrics",
5508	}
5509
5510	if input == nil {
5511		input = &PutBucketMetricsConfigurationInput{}
5512	}
5513
5514	output = &PutBucketMetricsConfigurationOutput{}
5515	req = c.newRequest(op, input, output)
5516	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5517	return
5518}
5519
5520// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
5521//
5522// Sets a metrics configuration (specified by the metrics configuration ID)
5523// for the bucket.
5524//
5525// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5526// with awserr.Error's Code and Message methods to get detailed information about
5527// the error.
5528//
5529// See the AWS API reference guide for Amazon Simple Storage Service's
5530// API operation PutBucketMetricsConfiguration for usage and error information.
5531// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
5532func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
5533	req, out := c.PutBucketMetricsConfigurationRequest(input)
5534	return out, req.Send()
5535}
5536
5537// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
5538// the ability to pass a context and additional request options.
5539//
5540// See PutBucketMetricsConfiguration for details on how to use this API operation.
5541//
5542// The context must be non-nil and will be used for request cancellation. If
5543// the context is nil a panic will occur. In the future the SDK may create
5544// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5545// for more information on using Contexts.
5546func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
5547	req, out := c.PutBucketMetricsConfigurationRequest(input)
5548	req.SetContext(ctx)
5549	req.ApplyOptions(opts...)
5550	return out, req.Send()
5551}
5552
5553const opPutBucketNotification = "PutBucketNotification"
5554
5555// PutBucketNotificationRequest generates a "aws/request.Request" representing the
5556// client's request for the PutBucketNotification operation. The "output" return
5557// value will be populated with the request's response once the request completes
5558// successfully.
5559//
5560// Use "Send" method on the returned Request to send the API call to the service.
5561// the "output" return value is not valid until after Send returns without error.
5562//
5563// See PutBucketNotification for more information on using the PutBucketNotification
5564// API call, and error handling.
5565//
5566// This method is useful when you want to inject custom logic or configuration
5567// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5568//
5569//
5570//    // Example sending a request using the PutBucketNotificationRequest method.
5571//    req, resp := client.PutBucketNotificationRequest(params)
5572//
5573//    err := req.Send()
5574//    if err == nil { // resp is now filled
5575//        fmt.Println(resp)
5576//    }
5577//
5578// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
5579//
5580// Deprecated: PutBucketNotification has been deprecated
5581func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
5582	if c.Client.Config.Logger != nil {
5583		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
5584	}
5585	op := &request.Operation{
5586		Name:       opPutBucketNotification,
5587		HTTPMethod: "PUT",
5588		HTTPPath:   "/{Bucket}?notification",
5589	}
5590
5591	if input == nil {
5592		input = &PutBucketNotificationInput{}
5593	}
5594
5595	output = &PutBucketNotificationOutput{}
5596	req = c.newRequest(op, input, output)
5597	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5598	return
5599}
5600
5601// PutBucketNotification API operation for Amazon Simple Storage Service.
5602//
5603// No longer used, see the PutBucketNotificationConfiguration operation.
5604//
5605// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5606// with awserr.Error's Code and Message methods to get detailed information about
5607// the error.
5608//
5609// See the AWS API reference guide for Amazon Simple Storage Service's
5610// API operation PutBucketNotification for usage and error information.
5611// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
5612//
5613// Deprecated: PutBucketNotification has been deprecated
5614func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
5615	req, out := c.PutBucketNotificationRequest(input)
5616	return out, req.Send()
5617}
5618
5619// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
5620// the ability to pass a context and additional request options.
5621//
5622// See PutBucketNotification for details on how to use this API operation.
5623//
5624// The context must be non-nil and will be used for request cancellation. If
5625// the context is nil a panic will occur. In the future the SDK may create
5626// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5627// for more information on using Contexts.
5628//
5629// Deprecated: PutBucketNotificationWithContext has been deprecated
5630func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
5631	req, out := c.PutBucketNotificationRequest(input)
5632	req.SetContext(ctx)
5633	req.ApplyOptions(opts...)
5634	return out, req.Send()
5635}
5636
5637const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
5638
5639// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
5640// client's request for the PutBucketNotificationConfiguration operation. The "output" return
5641// value will be populated with the request's response once the request completes
5642// successfully.
5643//
5644// Use "Send" method on the returned Request to send the API call to the service.
5645// the "output" return value is not valid until after Send returns without error.
5646//
5647// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
5648// API call, and error handling.
5649//
5650// This method is useful when you want to inject custom logic or configuration
5651// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5652//
5653//
5654//    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
5655//    req, resp := client.PutBucketNotificationConfigurationRequest(params)
5656//
5657//    err := req.Send()
5658//    if err == nil { // resp is now filled
5659//        fmt.Println(resp)
5660//    }
5661//
5662// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
5663func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
5664	op := &request.Operation{
5665		Name:       opPutBucketNotificationConfiguration,
5666		HTTPMethod: "PUT",
5667		HTTPPath:   "/{Bucket}?notification",
5668	}
5669
5670	if input == nil {
5671		input = &PutBucketNotificationConfigurationInput{}
5672	}
5673
5674	output = &PutBucketNotificationConfigurationOutput{}
5675	req = c.newRequest(op, input, output)
5676	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5677	return
5678}
5679
5680// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
5681//
5682// Enables notifications of specified events for a bucket.
5683//
5684// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5685// with awserr.Error's Code and Message methods to get detailed information about
5686// the error.
5687//
5688// See the AWS API reference guide for Amazon Simple Storage Service's
5689// API operation PutBucketNotificationConfiguration for usage and error information.
5690// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
5691func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
5692	req, out := c.PutBucketNotificationConfigurationRequest(input)
5693	return out, req.Send()
5694}
5695
5696// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
5697// the ability to pass a context and additional request options.
5698//
5699// See PutBucketNotificationConfiguration for details on how to use this API operation.
5700//
5701// The context must be non-nil and will be used for request cancellation. If
5702// the context is nil a panic will occur. In the future the SDK may create
5703// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5704// for more information on using Contexts.
5705func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
5706	req, out := c.PutBucketNotificationConfigurationRequest(input)
5707	req.SetContext(ctx)
5708	req.ApplyOptions(opts...)
5709	return out, req.Send()
5710}
5711
5712const opPutBucketPolicy = "PutBucketPolicy"
5713
5714// PutBucketPolicyRequest generates a "aws/request.Request" representing the
5715// client's request for the PutBucketPolicy operation. The "output" return
5716// value will be populated with the request's response once the request completes
5717// successfully.
5718//
5719// Use "Send" method on the returned Request to send the API call to the service.
5720// the "output" return value is not valid until after Send returns without error.
5721//
5722// See PutBucketPolicy for more information on using the PutBucketPolicy
5723// API call, and error handling.
5724//
5725// This method is useful when you want to inject custom logic or configuration
5726// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5727//
5728//
5729//    // Example sending a request using the PutBucketPolicyRequest method.
5730//    req, resp := client.PutBucketPolicyRequest(params)
5731//
5732//    err := req.Send()
5733//    if err == nil { // resp is now filled
5734//        fmt.Println(resp)
5735//    }
5736//
5737// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
5738func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
5739	op := &request.Operation{
5740		Name:       opPutBucketPolicy,
5741		HTTPMethod: "PUT",
5742		HTTPPath:   "/{Bucket}?policy",
5743	}
5744
5745	if input == nil {
5746		input = &PutBucketPolicyInput{}
5747	}
5748
5749	output = &PutBucketPolicyOutput{}
5750	req = c.newRequest(op, input, output)
5751	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5752	return
5753}
5754
5755// PutBucketPolicy API operation for Amazon Simple Storage Service.
5756//
5757// Replaces a policy on a bucket. If the bucket already has a policy, the one
5758// in this request completely replaces it.
5759//
5760// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5761// with awserr.Error's Code and Message methods to get detailed information about
5762// the error.
5763//
5764// See the AWS API reference guide for Amazon Simple Storage Service's
5765// API operation PutBucketPolicy for usage and error information.
5766// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
5767func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
5768	req, out := c.PutBucketPolicyRequest(input)
5769	return out, req.Send()
5770}
5771
5772// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
5773// the ability to pass a context and additional request options.
5774//
5775// See PutBucketPolicy for details on how to use this API operation.
5776//
5777// The context must be non-nil and will be used for request cancellation. If
5778// the context is nil a panic will occur. In the future the SDK may create
5779// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5780// for more information on using Contexts.
5781func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
5782	req, out := c.PutBucketPolicyRequest(input)
5783	req.SetContext(ctx)
5784	req.ApplyOptions(opts...)
5785	return out, req.Send()
5786}
5787
5788const opPutBucketReplication = "PutBucketReplication"
5789
5790// PutBucketReplicationRequest generates a "aws/request.Request" representing the
5791// client's request for the PutBucketReplication operation. The "output" return
5792// value will be populated with the request's response once the request completes
5793// successfully.
5794//
5795// Use "Send" method on the returned Request to send the API call to the service.
5796// the "output" return value is not valid until after Send returns without error.
5797//
5798// See PutBucketReplication for more information on using the PutBucketReplication
5799// API call, and error handling.
5800//
5801// This method is useful when you want to inject custom logic or configuration
5802// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5803//
5804//
5805//    // Example sending a request using the PutBucketReplicationRequest method.
5806//    req, resp := client.PutBucketReplicationRequest(params)
5807//
5808//    err := req.Send()
5809//    if err == nil { // resp is now filled
5810//        fmt.Println(resp)
5811//    }
5812//
5813// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
5814func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
5815	op := &request.Operation{
5816		Name:       opPutBucketReplication,
5817		HTTPMethod: "PUT",
5818		HTTPPath:   "/{Bucket}?replication",
5819	}
5820
5821	if input == nil {
5822		input = &PutBucketReplicationInput{}
5823	}
5824
5825	output = &PutBucketReplicationOutput{}
5826	req = c.newRequest(op, input, output)
5827	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5828	return
5829}
5830
5831// PutBucketReplication API operation for Amazon Simple Storage Service.
5832//
5833// Creates a replication configuration or replaces an existing one. For more
5834// information, see Cross-Region Replication (CRR) (https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html)
5835// in the Amazon S3 Developer Guide.
5836//
5837// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5838// with awserr.Error's Code and Message methods to get detailed information about
5839// the error.
5840//
5841// See the AWS API reference guide for Amazon Simple Storage Service's
5842// API operation PutBucketReplication for usage and error information.
5843// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
5844func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
5845	req, out := c.PutBucketReplicationRequest(input)
5846	return out, req.Send()
5847}
5848
5849// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
5850// the ability to pass a context and additional request options.
5851//
5852// See PutBucketReplication for details on how to use this API operation.
5853//
5854// The context must be non-nil and will be used for request cancellation. If
5855// the context is nil a panic will occur. In the future the SDK may create
5856// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5857// for more information on using Contexts.
5858func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
5859	req, out := c.PutBucketReplicationRequest(input)
5860	req.SetContext(ctx)
5861	req.ApplyOptions(opts...)
5862	return out, req.Send()
5863}
5864
5865const opPutBucketRequestPayment = "PutBucketRequestPayment"
5866
5867// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
5868// client's request for the PutBucketRequestPayment operation. The "output" return
5869// value will be populated with the request's response once the request completes
5870// successfully.
5871//
5872// Use "Send" method on the returned Request to send the API call to the service.
5873// the "output" return value is not valid until after Send returns without error.
5874//
5875// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
5876// API call, and error handling.
5877//
5878// This method is useful when you want to inject custom logic or configuration
5879// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5880//
5881//
5882//    // Example sending a request using the PutBucketRequestPaymentRequest method.
5883//    req, resp := client.PutBucketRequestPaymentRequest(params)
5884//
5885//    err := req.Send()
5886//    if err == nil { // resp is now filled
5887//        fmt.Println(resp)
5888//    }
5889//
5890// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
5891func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
5892	op := &request.Operation{
5893		Name:       opPutBucketRequestPayment,
5894		HTTPMethod: "PUT",
5895		HTTPPath:   "/{Bucket}?requestPayment",
5896	}
5897
5898	if input == nil {
5899		input = &PutBucketRequestPaymentInput{}
5900	}
5901
5902	output = &PutBucketRequestPaymentOutput{}
5903	req = c.newRequest(op, input, output)
5904	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5905	return
5906}
5907
5908// PutBucketRequestPayment API operation for Amazon Simple Storage Service.
5909//
5910// Sets the request payment configuration for a bucket. By default, the bucket
5911// owner pays for downloads from the bucket. This configuration parameter enables
5912// the bucket owner (only) to specify that the person requesting the download
5913// will be charged for the download. Documentation on requester pays buckets
5914// can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html
5915//
5916// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5917// with awserr.Error's Code and Message methods to get detailed information about
5918// the error.
5919//
5920// See the AWS API reference guide for Amazon Simple Storage Service's
5921// API operation PutBucketRequestPayment for usage and error information.
5922// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
5923func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
5924	req, out := c.PutBucketRequestPaymentRequest(input)
5925	return out, req.Send()
5926}
5927
5928// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
5929// the ability to pass a context and additional request options.
5930//
5931// See PutBucketRequestPayment for details on how to use this API operation.
5932//
5933// The context must be non-nil and will be used for request cancellation. If
5934// the context is nil a panic will occur. In the future the SDK may create
5935// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5936// for more information on using Contexts.
5937func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
5938	req, out := c.PutBucketRequestPaymentRequest(input)
5939	req.SetContext(ctx)
5940	req.ApplyOptions(opts...)
5941	return out, req.Send()
5942}
5943
5944const opPutBucketTagging = "PutBucketTagging"
5945
5946// PutBucketTaggingRequest generates a "aws/request.Request" representing the
5947// client's request for the PutBucketTagging operation. The "output" return
5948// value will be populated with the request's response once the request completes
5949// successfully.
5950//
5951// Use "Send" method on the returned Request to send the API call to the service.
5952// the "output" return value is not valid until after Send returns without error.
5953//
5954// See PutBucketTagging for more information on using the PutBucketTagging
5955// API call, and error handling.
5956//
5957// This method is useful when you want to inject custom logic or configuration
5958// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5959//
5960//
5961//    // Example sending a request using the PutBucketTaggingRequest method.
5962//    req, resp := client.PutBucketTaggingRequest(params)
5963//
5964//    err := req.Send()
5965//    if err == nil { // resp is now filled
5966//        fmt.Println(resp)
5967//    }
5968//
5969// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
5970func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
5971	op := &request.Operation{
5972		Name:       opPutBucketTagging,
5973		HTTPMethod: "PUT",
5974		HTTPPath:   "/{Bucket}?tagging",
5975	}
5976
5977	if input == nil {
5978		input = &PutBucketTaggingInput{}
5979	}
5980
5981	output = &PutBucketTaggingOutput{}
5982	req = c.newRequest(op, input, output)
5983	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5984	return
5985}
5986
5987// PutBucketTagging API operation for Amazon Simple Storage Service.
5988//
5989// Sets the tags for a bucket.
5990//
5991// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5992// with awserr.Error's Code and Message methods to get detailed information about
5993// the error.
5994//
5995// See the AWS API reference guide for Amazon Simple Storage Service's
5996// API operation PutBucketTagging for usage and error information.
5997// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
5998func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
5999	req, out := c.PutBucketTaggingRequest(input)
6000	return out, req.Send()
6001}
6002
6003// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
6004// the ability to pass a context and additional request options.
6005//
6006// See PutBucketTagging for details on how to use this API operation.
6007//
6008// The context must be non-nil and will be used for request cancellation. If
6009// the context is nil a panic will occur. In the future the SDK may create
6010// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6011// for more information on using Contexts.
6012func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
6013	req, out := c.PutBucketTaggingRequest(input)
6014	req.SetContext(ctx)
6015	req.ApplyOptions(opts...)
6016	return out, req.Send()
6017}
6018
6019const opPutBucketVersioning = "PutBucketVersioning"
6020
6021// PutBucketVersioningRequest generates a "aws/request.Request" representing the
6022// client's request for the PutBucketVersioning operation. The "output" return
6023// value will be populated with the request's response once the request completes
6024// successfully.
6025//
6026// Use "Send" method on the returned Request to send the API call to the service.
6027// the "output" return value is not valid until after Send returns without error.
6028//
6029// See PutBucketVersioning for more information on using the PutBucketVersioning
6030// API call, and error handling.
6031//
6032// This method is useful when you want to inject custom logic or configuration
6033// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6034//
6035//
6036//    // Example sending a request using the PutBucketVersioningRequest method.
6037//    req, resp := client.PutBucketVersioningRequest(params)
6038//
6039//    err := req.Send()
6040//    if err == nil { // resp is now filled
6041//        fmt.Println(resp)
6042//    }
6043//
6044// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
6045func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
6046	op := &request.Operation{
6047		Name:       opPutBucketVersioning,
6048		HTTPMethod: "PUT",
6049		HTTPPath:   "/{Bucket}?versioning",
6050	}
6051
6052	if input == nil {
6053		input = &PutBucketVersioningInput{}
6054	}
6055
6056	output = &PutBucketVersioningOutput{}
6057	req = c.newRequest(op, input, output)
6058	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6059	return
6060}
6061
6062// PutBucketVersioning API operation for Amazon Simple Storage Service.
6063//
6064// Sets the versioning state of an existing bucket. To set the versioning state,
6065// you must be the bucket owner.
6066//
6067// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6068// with awserr.Error's Code and Message methods to get detailed information about
6069// the error.
6070//
6071// See the AWS API reference guide for Amazon Simple Storage Service's
6072// API operation PutBucketVersioning for usage and error information.
6073// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
6074func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
6075	req, out := c.PutBucketVersioningRequest(input)
6076	return out, req.Send()
6077}
6078
6079// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
6080// the ability to pass a context and additional request options.
6081//
6082// See PutBucketVersioning for details on how to use this API operation.
6083//
6084// The context must be non-nil and will be used for request cancellation. If
6085// the context is nil a panic will occur. In the future the SDK may create
6086// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6087// for more information on using Contexts.
6088func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
6089	req, out := c.PutBucketVersioningRequest(input)
6090	req.SetContext(ctx)
6091	req.ApplyOptions(opts...)
6092	return out, req.Send()
6093}
6094
6095const opPutBucketWebsite = "PutBucketWebsite"
6096
6097// PutBucketWebsiteRequest generates a "aws/request.Request" representing the
6098// client's request for the PutBucketWebsite operation. The "output" return
6099// value will be populated with the request's response once the request completes
6100// successfully.
6101//
6102// Use "Send" method on the returned Request to send the API call to the service.
6103// the "output" return value is not valid until after Send returns without error.
6104//
6105// See PutBucketWebsite for more information on using the PutBucketWebsite
6106// API call, and error handling.
6107//
6108// This method is useful when you want to inject custom logic or configuration
6109// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6110//
6111//
6112//    // Example sending a request using the PutBucketWebsiteRequest method.
6113//    req, resp := client.PutBucketWebsiteRequest(params)
6114//
6115//    err := req.Send()
6116//    if err == nil { // resp is now filled
6117//        fmt.Println(resp)
6118//    }
6119//
6120// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
6121func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
6122	op := &request.Operation{
6123		Name:       opPutBucketWebsite,
6124		HTTPMethod: "PUT",
6125		HTTPPath:   "/{Bucket}?website",
6126	}
6127
6128	if input == nil {
6129		input = &PutBucketWebsiteInput{}
6130	}
6131
6132	output = &PutBucketWebsiteOutput{}
6133	req = c.newRequest(op, input, output)
6134	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6135	return
6136}
6137
6138// PutBucketWebsite API operation for Amazon Simple Storage Service.
6139//
6140// Set the website configuration for a bucket.
6141//
6142// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6143// with awserr.Error's Code and Message methods to get detailed information about
6144// the error.
6145//
6146// See the AWS API reference guide for Amazon Simple Storage Service's
6147// API operation PutBucketWebsite for usage and error information.
6148// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
6149func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
6150	req, out := c.PutBucketWebsiteRequest(input)
6151	return out, req.Send()
6152}
6153
6154// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
6155// the ability to pass a context and additional request options.
6156//
6157// See PutBucketWebsite for details on how to use this API operation.
6158//
6159// The context must be non-nil and will be used for request cancellation. If
6160// the context is nil a panic will occur. In the future the SDK may create
6161// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6162// for more information on using Contexts.
6163func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
6164	req, out := c.PutBucketWebsiteRequest(input)
6165	req.SetContext(ctx)
6166	req.ApplyOptions(opts...)
6167	return out, req.Send()
6168}
6169
6170const opPutObject = "PutObject"
6171
6172// PutObjectRequest generates a "aws/request.Request" representing the
6173// client's request for the PutObject operation. The "output" return
6174// value will be populated with the request's response once the request completes
6175// successfully.
6176//
6177// Use "Send" method on the returned Request to send the API call to the service.
6178// the "output" return value is not valid until after Send returns without error.
6179//
6180// See PutObject for more information on using the PutObject
6181// API call, and error handling.
6182//
6183// This method is useful when you want to inject custom logic or configuration
6184// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6185//
6186//
6187//    // Example sending a request using the PutObjectRequest method.
6188//    req, resp := client.PutObjectRequest(params)
6189//
6190//    err := req.Send()
6191//    if err == nil { // resp is now filled
6192//        fmt.Println(resp)
6193//    }
6194//
6195// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
6196func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
6197	op := &request.Operation{
6198		Name:       opPutObject,
6199		HTTPMethod: "PUT",
6200		HTTPPath:   "/{Bucket}/{Key+}",
6201	}
6202
6203	if input == nil {
6204		input = &PutObjectInput{}
6205	}
6206
6207	output = &PutObjectOutput{}
6208	req = c.newRequest(op, input, output)
6209	return
6210}
6211
6212// PutObject API operation for Amazon Simple Storage Service.
6213//
6214// Adds an object to a bucket.
6215//
6216// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6217// with awserr.Error's Code and Message methods to get detailed information about
6218// the error.
6219//
6220// See the AWS API reference guide for Amazon Simple Storage Service's
6221// API operation PutObject for usage and error information.
6222// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
6223func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
6224	req, out := c.PutObjectRequest(input)
6225	return out, req.Send()
6226}
6227
6228// PutObjectWithContext is the same as PutObject with the addition of
6229// the ability to pass a context and additional request options.
6230//
6231// See PutObject for details on how to use this API operation.
6232//
6233// The context must be non-nil and will be used for request cancellation. If
6234// the context is nil a panic will occur. In the future the SDK may create
6235// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6236// for more information on using Contexts.
6237func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
6238	req, out := c.PutObjectRequest(input)
6239	req.SetContext(ctx)
6240	req.ApplyOptions(opts...)
6241	return out, req.Send()
6242}
6243
6244const opPutObjectAcl = "PutObjectAcl"
6245
6246// PutObjectAclRequest generates a "aws/request.Request" representing the
6247// client's request for the PutObjectAcl operation. The "output" return
6248// value will be populated with the request's response once the request completes
6249// successfully.
6250//
6251// Use "Send" method on the returned Request to send the API call to the service.
6252// the "output" return value is not valid until after Send returns without error.
6253//
6254// See PutObjectAcl for more information on using the PutObjectAcl
6255// API call, and error handling.
6256//
6257// This method is useful when you want to inject custom logic or configuration
6258// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6259//
6260//
6261//    // Example sending a request using the PutObjectAclRequest method.
6262//    req, resp := client.PutObjectAclRequest(params)
6263//
6264//    err := req.Send()
6265//    if err == nil { // resp is now filled
6266//        fmt.Println(resp)
6267//    }
6268//
6269// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
6270func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
6271	op := &request.Operation{
6272		Name:       opPutObjectAcl,
6273		HTTPMethod: "PUT",
6274		HTTPPath:   "/{Bucket}/{Key+}?acl",
6275	}
6276
6277	if input == nil {
6278		input = &PutObjectAclInput{}
6279	}
6280
6281	output = &PutObjectAclOutput{}
6282	req = c.newRequest(op, input, output)
6283	return
6284}
6285
6286// PutObjectAcl API operation for Amazon Simple Storage Service.
6287//
6288// uses the acl subresource to set the access control list (ACL) permissions
6289// for an object that already exists in a bucket
6290//
6291// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6292// with awserr.Error's Code and Message methods to get detailed information about
6293// the error.
6294//
6295// See the AWS API reference guide for Amazon Simple Storage Service's
6296// API operation PutObjectAcl for usage and error information.
6297//
6298// Returned Error Codes:
6299//   * ErrCodeNoSuchKey "NoSuchKey"
6300//   The specified key does not exist.
6301//
6302// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
6303func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
6304	req, out := c.PutObjectAclRequest(input)
6305	return out, req.Send()
6306}
6307
6308// PutObjectAclWithContext is the same as PutObjectAcl with the addition of
6309// the ability to pass a context and additional request options.
6310//
6311// See PutObjectAcl for details on how to use this API operation.
6312//
6313// The context must be non-nil and will be used for request cancellation. If
6314// the context is nil a panic will occur. In the future the SDK may create
6315// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6316// for more information on using Contexts.
6317func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
6318	req, out := c.PutObjectAclRequest(input)
6319	req.SetContext(ctx)
6320	req.ApplyOptions(opts...)
6321	return out, req.Send()
6322}
6323
6324const opPutObjectLegalHold = "PutObjectLegalHold"
6325
6326// PutObjectLegalHoldRequest generates a "aws/request.Request" representing the
6327// client's request for the PutObjectLegalHold operation. The "output" return
6328// value will be populated with the request's response once the request completes
6329// successfully.
6330//
6331// Use "Send" method on the returned Request to send the API call to the service.
6332// the "output" return value is not valid until after Send returns without error.
6333//
6334// See PutObjectLegalHold for more information on using the PutObjectLegalHold
6335// API call, and error handling.
6336//
6337// This method is useful when you want to inject custom logic or configuration
6338// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6339//
6340//
6341//    // Example sending a request using the PutObjectLegalHoldRequest method.
6342//    req, resp := client.PutObjectLegalHoldRequest(params)
6343//
6344//    err := req.Send()
6345//    if err == nil { // resp is now filled
6346//        fmt.Println(resp)
6347//    }
6348//
6349// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
6350func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) {
6351	op := &request.Operation{
6352		Name:       opPutObjectLegalHold,
6353		HTTPMethod: "PUT",
6354		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
6355	}
6356
6357	if input == nil {
6358		input = &PutObjectLegalHoldInput{}
6359	}
6360
6361	output = &PutObjectLegalHoldOutput{}
6362	req = c.newRequest(op, input, output)
6363	return
6364}
6365
6366// PutObjectLegalHold API operation for Amazon Simple Storage Service.
6367//
6368// Applies a Legal Hold configuration to the specified object.
6369//
6370// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6371// with awserr.Error's Code and Message methods to get detailed information about
6372// the error.
6373//
6374// See the AWS API reference guide for Amazon Simple Storage Service's
6375// API operation PutObjectLegalHold for usage and error information.
6376// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
6377func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) {
6378	req, out := c.PutObjectLegalHoldRequest(input)
6379	return out, req.Send()
6380}
6381
6382// PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of
6383// the ability to pass a context and additional request options.
6384//
6385// See PutObjectLegalHold for details on how to use this API operation.
6386//
6387// The context must be non-nil and will be used for request cancellation. If
6388// the context is nil a panic will occur. In the future the SDK may create
6389// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6390// for more information on using Contexts.
6391func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) {
6392	req, out := c.PutObjectLegalHoldRequest(input)
6393	req.SetContext(ctx)
6394	req.ApplyOptions(opts...)
6395	return out, req.Send()
6396}
6397
6398const opPutObjectLockConfiguration = "PutObjectLockConfiguration"
6399
6400// PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the
6401// client's request for the PutObjectLockConfiguration operation. The "output" return
6402// value will be populated with the request's response once the request completes
6403// successfully.
6404//
6405// Use "Send" method on the returned Request to send the API call to the service.
6406// the "output" return value is not valid until after Send returns without error.
6407//
6408// See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration
6409// API call, and error handling.
6410//
6411// This method is useful when you want to inject custom logic or configuration
6412// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6413//
6414//
6415//    // Example sending a request using the PutObjectLockConfigurationRequest method.
6416//    req, resp := client.PutObjectLockConfigurationRequest(params)
6417//
6418//    err := req.Send()
6419//    if err == nil { // resp is now filled
6420//        fmt.Println(resp)
6421//    }
6422//
6423// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
6424func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) {
6425	op := &request.Operation{
6426		Name:       opPutObjectLockConfiguration,
6427		HTTPMethod: "PUT",
6428		HTTPPath:   "/{Bucket}?object-lock",
6429	}
6430
6431	if input == nil {
6432		input = &PutObjectLockConfigurationInput{}
6433	}
6434
6435	output = &PutObjectLockConfigurationOutput{}
6436	req = c.newRequest(op, input, output)
6437	return
6438}
6439
6440// PutObjectLockConfiguration API operation for Amazon Simple Storage Service.
6441//
6442// Places an Object Lock configuration on the specified bucket. The rule specified
6443// in the Object Lock configuration will be applied by default to every new
6444// object placed in the specified bucket.
6445//
6446// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6447// with awserr.Error's Code and Message methods to get detailed information about
6448// the error.
6449//
6450// See the AWS API reference guide for Amazon Simple Storage Service's
6451// API operation PutObjectLockConfiguration for usage and error information.
6452// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
6453func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) {
6454	req, out := c.PutObjectLockConfigurationRequest(input)
6455	return out, req.Send()
6456}
6457
6458// PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of
6459// the ability to pass a context and additional request options.
6460//
6461// See PutObjectLockConfiguration for details on how to use this API operation.
6462//
6463// The context must be non-nil and will be used for request cancellation. If
6464// the context is nil a panic will occur. In the future the SDK may create
6465// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6466// for more information on using Contexts.
6467func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) {
6468	req, out := c.PutObjectLockConfigurationRequest(input)
6469	req.SetContext(ctx)
6470	req.ApplyOptions(opts...)
6471	return out, req.Send()
6472}
6473
6474const opPutObjectRetention = "PutObjectRetention"
6475
6476// PutObjectRetentionRequest generates a "aws/request.Request" representing the
6477// client's request for the PutObjectRetention operation. The "output" return
6478// value will be populated with the request's response once the request completes
6479// successfully.
6480//
6481// Use "Send" method on the returned Request to send the API call to the service.
6482// the "output" return value is not valid until after Send returns without error.
6483//
6484// See PutObjectRetention for more information on using the PutObjectRetention
6485// API call, and error handling.
6486//
6487// This method is useful when you want to inject custom logic or configuration
6488// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6489//
6490//
6491//    // Example sending a request using the PutObjectRetentionRequest method.
6492//    req, resp := client.PutObjectRetentionRequest(params)
6493//
6494//    err := req.Send()
6495//    if err == nil { // resp is now filled
6496//        fmt.Println(resp)
6497//    }
6498//
6499// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
6500func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) {
6501	op := &request.Operation{
6502		Name:       opPutObjectRetention,
6503		HTTPMethod: "PUT",
6504		HTTPPath:   "/{Bucket}/{Key+}?retention",
6505	}
6506
6507	if input == nil {
6508		input = &PutObjectRetentionInput{}
6509	}
6510
6511	output = &PutObjectRetentionOutput{}
6512	req = c.newRequest(op, input, output)
6513	return
6514}
6515
6516// PutObjectRetention API operation for Amazon Simple Storage Service.
6517//
6518// Places an Object Retention configuration on an object.
6519//
6520// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6521// with awserr.Error's Code and Message methods to get detailed information about
6522// the error.
6523//
6524// See the AWS API reference guide for Amazon Simple Storage Service's
6525// API operation PutObjectRetention for usage and error information.
6526// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
6527func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) {
6528	req, out := c.PutObjectRetentionRequest(input)
6529	return out, req.Send()
6530}
6531
6532// PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of
6533// the ability to pass a context and additional request options.
6534//
6535// See PutObjectRetention for details on how to use this API operation.
6536//
6537// The context must be non-nil and will be used for request cancellation. If
6538// the context is nil a panic will occur. In the future the SDK may create
6539// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6540// for more information on using Contexts.
6541func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) {
6542	req, out := c.PutObjectRetentionRequest(input)
6543	req.SetContext(ctx)
6544	req.ApplyOptions(opts...)
6545	return out, req.Send()
6546}
6547
6548const opPutObjectTagging = "PutObjectTagging"
6549
6550// PutObjectTaggingRequest generates a "aws/request.Request" representing the
6551// client's request for the PutObjectTagging operation. The "output" return
6552// value will be populated with the request's response once the request completes
6553// successfully.
6554//
6555// Use "Send" method on the returned Request to send the API call to the service.
6556// the "output" return value is not valid until after Send returns without error.
6557//
6558// See PutObjectTagging for more information on using the PutObjectTagging
6559// API call, and error handling.
6560//
6561// This method is useful when you want to inject custom logic or configuration
6562// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6563//
6564//
6565//    // Example sending a request using the PutObjectTaggingRequest method.
6566//    req, resp := client.PutObjectTaggingRequest(params)
6567//
6568//    err := req.Send()
6569//    if err == nil { // resp is now filled
6570//        fmt.Println(resp)
6571//    }
6572//
6573// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
6574func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
6575	op := &request.Operation{
6576		Name:       opPutObjectTagging,
6577		HTTPMethod: "PUT",
6578		HTTPPath:   "/{Bucket}/{Key+}?tagging",
6579	}
6580
6581	if input == nil {
6582		input = &PutObjectTaggingInput{}
6583	}
6584
6585	output = &PutObjectTaggingOutput{}
6586	req = c.newRequest(op, input, output)
6587	return
6588}
6589
6590// PutObjectTagging API operation for Amazon Simple Storage Service.
6591//
6592// Sets the supplied tag-set to an object that already exists in a bucket
6593//
6594// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6595// with awserr.Error's Code and Message methods to get detailed information about
6596// the error.
6597//
6598// See the AWS API reference guide for Amazon Simple Storage Service's
6599// API operation PutObjectTagging for usage and error information.
6600// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
6601func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
6602	req, out := c.PutObjectTaggingRequest(input)
6603	return out, req.Send()
6604}
6605
6606// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
6607// the ability to pass a context and additional request options.
6608//
6609// See PutObjectTagging for details on how to use this API operation.
6610//
6611// The context must be non-nil and will be used for request cancellation. If
6612// the context is nil a panic will occur. In the future the SDK may create
6613// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6614// for more information on using Contexts.
6615func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
6616	req, out := c.PutObjectTaggingRequest(input)
6617	req.SetContext(ctx)
6618	req.ApplyOptions(opts...)
6619	return out, req.Send()
6620}
6621
6622const opPutPublicAccessBlock = "PutPublicAccessBlock"
6623
6624// PutPublicAccessBlockRequest generates a "aws/request.Request" representing the
6625// client's request for the PutPublicAccessBlock operation. The "output" return
6626// value will be populated with the request's response once the request completes
6627// successfully.
6628//
6629// Use "Send" method on the returned Request to send the API call to the service.
6630// the "output" return value is not valid until after Send returns without error.
6631//
6632// See PutPublicAccessBlock for more information on using the PutPublicAccessBlock
6633// API call, and error handling.
6634//
6635// This method is useful when you want to inject custom logic or configuration
6636// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6637//
6638//
6639//    // Example sending a request using the PutPublicAccessBlockRequest method.
6640//    req, resp := client.PutPublicAccessBlockRequest(params)
6641//
6642//    err := req.Send()
6643//    if err == nil { // resp is now filled
6644//        fmt.Println(resp)
6645//    }
6646//
6647// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
6648func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) {
6649	op := &request.Operation{
6650		Name:       opPutPublicAccessBlock,
6651		HTTPMethod: "PUT",
6652		HTTPPath:   "/{Bucket}?publicAccessBlock",
6653	}
6654
6655	if input == nil {
6656		input = &PutPublicAccessBlockInput{}
6657	}
6658
6659	output = &PutPublicAccessBlockOutput{}
6660	req = c.newRequest(op, input, output)
6661	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6662	return
6663}
6664
6665// PutPublicAccessBlock API operation for Amazon Simple Storage Service.
6666//
6667// Creates or modifies the PublicAccessBlock configuration for an Amazon S3
6668// bucket.
6669//
6670// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6671// with awserr.Error's Code and Message methods to get detailed information about
6672// the error.
6673//
6674// See the AWS API reference guide for Amazon Simple Storage Service's
6675// API operation PutPublicAccessBlock for usage and error information.
6676// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
6677func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) {
6678	req, out := c.PutPublicAccessBlockRequest(input)
6679	return out, req.Send()
6680}
6681
6682// PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of
6683// the ability to pass a context and additional request options.
6684//
6685// See PutPublicAccessBlock for details on how to use this API operation.
6686//
6687// The context must be non-nil and will be used for request cancellation. If
6688// the context is nil a panic will occur. In the future the SDK may create
6689// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6690// for more information on using Contexts.
6691func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) {
6692	req, out := c.PutPublicAccessBlockRequest(input)
6693	req.SetContext(ctx)
6694	req.ApplyOptions(opts...)
6695	return out, req.Send()
6696}
6697
6698const opRestoreObject = "RestoreObject"
6699
6700// RestoreObjectRequest generates a "aws/request.Request" representing the
6701// client's request for the RestoreObject operation. The "output" return
6702// value will be populated with the request's response once the request completes
6703// successfully.
6704//
6705// Use "Send" method on the returned Request to send the API call to the service.
6706// the "output" return value is not valid until after Send returns without error.
6707//
6708// See RestoreObject for more information on using the RestoreObject
6709// API call, and error handling.
6710//
6711// This method is useful when you want to inject custom logic or configuration
6712// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6713//
6714//
6715//    // Example sending a request using the RestoreObjectRequest method.
6716//    req, resp := client.RestoreObjectRequest(params)
6717//
6718//    err := req.Send()
6719//    if err == nil { // resp is now filled
6720//        fmt.Println(resp)
6721//    }
6722//
6723// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
6724func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
6725	op := &request.Operation{
6726		Name:       opRestoreObject,
6727		HTTPMethod: "POST",
6728		HTTPPath:   "/{Bucket}/{Key+}?restore",
6729	}
6730
6731	if input == nil {
6732		input = &RestoreObjectInput{}
6733	}
6734
6735	output = &RestoreObjectOutput{}
6736	req = c.newRequest(op, input, output)
6737	return
6738}
6739
6740// RestoreObject API operation for Amazon Simple Storage Service.
6741//
6742// Restores an archived copy of an object back into Amazon S3
6743//
6744// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6745// with awserr.Error's Code and Message methods to get detailed information about
6746// the error.
6747//
6748// See the AWS API reference guide for Amazon Simple Storage Service's
6749// API operation RestoreObject for usage and error information.
6750//
6751// Returned Error Codes:
6752//   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
6753//   This operation is not allowed against this storage tier
6754//
6755// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
6756func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
6757	req, out := c.RestoreObjectRequest(input)
6758	return out, req.Send()
6759}
6760
6761// RestoreObjectWithContext is the same as RestoreObject with the addition of
6762// the ability to pass a context and additional request options.
6763//
6764// See RestoreObject for details on how to use this API operation.
6765//
6766// The context must be non-nil and will be used for request cancellation. If
6767// the context is nil a panic will occur. In the future the SDK may create
6768// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6769// for more information on using Contexts.
6770func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
6771	req, out := c.RestoreObjectRequest(input)
6772	req.SetContext(ctx)
6773	req.ApplyOptions(opts...)
6774	return out, req.Send()
6775}
6776
6777const opSelectObjectContent = "SelectObjectContent"
6778
6779// SelectObjectContentRequest generates a "aws/request.Request" representing the
6780// client's request for the SelectObjectContent operation. The "output" return
6781// value will be populated with the request's response once the request completes
6782// successfully.
6783//
6784// Use "Send" method on the returned Request to send the API call to the service.
6785// the "output" return value is not valid until after Send returns without error.
6786//
6787// See SelectObjectContent for more information on using the SelectObjectContent
6788// API call, and error handling.
6789//
6790// This method is useful when you want to inject custom logic or configuration
6791// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6792//
6793//
6794//    // Example sending a request using the SelectObjectContentRequest method.
6795//    req, resp := client.SelectObjectContentRequest(params)
6796//
6797//    err := req.Send()
6798//    if err == nil { // resp is now filled
6799//        fmt.Println(resp)
6800//    }
6801//
6802// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
6803func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
6804	op := &request.Operation{
6805		Name:       opSelectObjectContent,
6806		HTTPMethod: "POST",
6807		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
6808	}
6809
6810	if input == nil {
6811		input = &SelectObjectContentInput{}
6812	}
6813
6814	output = &SelectObjectContentOutput{}
6815	req = c.newRequest(op, input, output)
6816	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
6817	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
6818	req.Handlers.Unmarshal.PushBack(output.runEventStreamLoop)
6819	return
6820}
6821
6822// SelectObjectContent API operation for Amazon Simple Storage Service.
6823//
6824// This operation filters the contents of an Amazon S3 object based on a simple
6825// Structured Query Language (SQL) statement. In the request, along with the
6826// SQL expression, you must also specify a data serialization format (JSON or
6827// CSV) of the object. Amazon S3 uses this to parse object data into records,
6828// and returns only records that match the specified SQL expression. You must
6829// also specify the data serialization format for the response.
6830//
6831// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6832// with awserr.Error's Code and Message methods to get detailed information about
6833// the error.
6834//
6835// See the AWS API reference guide for Amazon Simple Storage Service's
6836// API operation SelectObjectContent for usage and error information.
6837// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
6838func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
6839	req, out := c.SelectObjectContentRequest(input)
6840	return out, req.Send()
6841}
6842
6843// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
6844// the ability to pass a context and additional request options.
6845//
6846// See SelectObjectContent for details on how to use this API operation.
6847//
6848// The context must be non-nil and will be used for request cancellation. If
6849// the context is nil a panic will occur. In the future the SDK may create
6850// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6851// for more information on using Contexts.
6852func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
6853	req, out := c.SelectObjectContentRequest(input)
6854	req.SetContext(ctx)
6855	req.ApplyOptions(opts...)
6856	return out, req.Send()
6857}
6858
6859const opUploadPart = "UploadPart"
6860
6861// UploadPartRequest generates a "aws/request.Request" representing the
6862// client's request for the UploadPart operation. The "output" return
6863// value will be populated with the request's response once the request completes
6864// successfully.
6865//
6866// Use "Send" method on the returned Request to send the API call to the service.
6867// the "output" return value is not valid until after Send returns without error.
6868//
6869// See UploadPart for more information on using the UploadPart
6870// API call, and error handling.
6871//
6872// This method is useful when you want to inject custom logic or configuration
6873// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6874//
6875//
6876//    // Example sending a request using the UploadPartRequest method.
6877//    req, resp := client.UploadPartRequest(params)
6878//
6879//    err := req.Send()
6880//    if err == nil { // resp is now filled
6881//        fmt.Println(resp)
6882//    }
6883//
6884// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
6885func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
6886	op := &request.Operation{
6887		Name:       opUploadPart,
6888		HTTPMethod: "PUT",
6889		HTTPPath:   "/{Bucket}/{Key+}",
6890	}
6891
6892	if input == nil {
6893		input = &UploadPartInput{}
6894	}
6895
6896	output = &UploadPartOutput{}
6897	req = c.newRequest(op, input, output)
6898	return
6899}
6900
6901// UploadPart API operation for Amazon Simple Storage Service.
6902//
6903// Uploads a part in a multipart upload.
6904//
6905// Note: After you initiate multipart upload and upload one or more parts, you
6906// must either complete or abort multipart upload in order to stop getting charged
6907// for storage of the uploaded parts. Only after you either complete or abort
6908// multipart upload, Amazon S3 frees up the parts storage and stops charging
6909// you for the parts storage.
6910//
6911// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6912// with awserr.Error's Code and Message methods to get detailed information about
6913// the error.
6914//
6915// See the AWS API reference guide for Amazon Simple Storage Service's
6916// API operation UploadPart for usage and error information.
6917// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
6918func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
6919	req, out := c.UploadPartRequest(input)
6920	return out, req.Send()
6921}
6922
6923// UploadPartWithContext is the same as UploadPart with the addition of
6924// the ability to pass a context and additional request options.
6925//
6926// See UploadPart for details on how to use this API operation.
6927//
6928// The context must be non-nil and will be used for request cancellation. If
6929// the context is nil a panic will occur. In the future the SDK may create
6930// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6931// for more information on using Contexts.
6932func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
6933	req, out := c.UploadPartRequest(input)
6934	req.SetContext(ctx)
6935	req.ApplyOptions(opts...)
6936	return out, req.Send()
6937}
6938
6939const opUploadPartCopy = "UploadPartCopy"
6940
6941// UploadPartCopyRequest generates a "aws/request.Request" representing the
6942// client's request for the UploadPartCopy operation. The "output" return
6943// value will be populated with the request's response once the request completes
6944// successfully.
6945//
6946// Use "Send" method on the returned Request to send the API call to the service.
6947// the "output" return value is not valid until after Send returns without error.
6948//
6949// See UploadPartCopy for more information on using the UploadPartCopy
6950// API call, and error handling.
6951//
6952// This method is useful when you want to inject custom logic or configuration
6953// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6954//
6955//
6956//    // Example sending a request using the UploadPartCopyRequest method.
6957//    req, resp := client.UploadPartCopyRequest(params)
6958//
6959//    err := req.Send()
6960//    if err == nil { // resp is now filled
6961//        fmt.Println(resp)
6962//    }
6963//
6964// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
6965func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
6966	op := &request.Operation{
6967		Name:       opUploadPartCopy,
6968		HTTPMethod: "PUT",
6969		HTTPPath:   "/{Bucket}/{Key+}",
6970	}
6971
6972	if input == nil {
6973		input = &UploadPartCopyInput{}
6974	}
6975
6976	output = &UploadPartCopyOutput{}
6977	req = c.newRequest(op, input, output)
6978	return
6979}
6980
6981// UploadPartCopy API operation for Amazon Simple Storage Service.
6982//
6983// Uploads a part by copying data from an existing object as data source.
6984//
6985// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6986// with awserr.Error's Code and Message methods to get detailed information about
6987// the error.
6988//
6989// See the AWS API reference guide for Amazon Simple Storage Service's
6990// API operation UploadPartCopy for usage and error information.
6991// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
6992func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
6993	req, out := c.UploadPartCopyRequest(input)
6994	return out, req.Send()
6995}
6996
6997// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
6998// the ability to pass a context and additional request options.
6999//
7000// See UploadPartCopy for details on how to use this API operation.
7001//
7002// The context must be non-nil and will be used for request cancellation. If
7003// the context is nil a panic will occur. In the future the SDK may create
7004// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7005// for more information on using Contexts.
7006func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
7007	req, out := c.UploadPartCopyRequest(input)
7008	req.SetContext(ctx)
7009	req.ApplyOptions(opts...)
7010	return out, req.Send()
7011}
7012
7013// Specifies the days since the initiation of an Incomplete Multipart Upload
7014// that Lifecycle will wait before permanently removing all parts of the upload.
7015type AbortIncompleteMultipartUpload struct {
7016	_ struct{} `type:"structure"`
7017
7018	// Indicates the number of days that must pass since initiation for Lifecycle
7019	// to abort an Incomplete Multipart Upload.
7020	DaysAfterInitiation *int64 `type:"integer"`
7021}
7022
7023// String returns the string representation
7024func (s AbortIncompleteMultipartUpload) String() string {
7025	return awsutil.Prettify(s)
7026}
7027
7028// GoString returns the string representation
7029func (s AbortIncompleteMultipartUpload) GoString() string {
7030	return s.String()
7031}
7032
7033// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
7034func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
7035	s.DaysAfterInitiation = &v
7036	return s
7037}
7038
7039type AbortMultipartUploadInput struct {
7040	_ struct{} `type:"structure"`
7041
7042	// Bucket is a required field
7043	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
7044
7045	// Key is a required field
7046	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
7047
7048	// Confirms that the requester knows that she or he will be charged for the
7049	// request. Bucket owners need not specify this parameter in their requests.
7050	// Documentation on downloading objects from requester pays buckets can be found
7051	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
7052	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
7053
7054	// UploadId is a required field
7055	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
7056}
7057
7058// String returns the string representation
7059func (s AbortMultipartUploadInput) String() string {
7060	return awsutil.Prettify(s)
7061}
7062
7063// GoString returns the string representation
7064func (s AbortMultipartUploadInput) GoString() string {
7065	return s.String()
7066}
7067
7068// Validate inspects the fields of the type to determine if they are valid.
7069func (s *AbortMultipartUploadInput) Validate() error {
7070	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
7071	if s.Bucket == nil {
7072		invalidParams.Add(request.NewErrParamRequired("Bucket"))
7073	}
7074	if s.Bucket != nil && len(*s.Bucket) < 1 {
7075		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
7076	}
7077	if s.Key == nil {
7078		invalidParams.Add(request.NewErrParamRequired("Key"))
7079	}
7080	if s.Key != nil && len(*s.Key) < 1 {
7081		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
7082	}
7083	if s.UploadId == nil {
7084		invalidParams.Add(request.NewErrParamRequired("UploadId"))
7085	}
7086
7087	if invalidParams.Len() > 0 {
7088		return invalidParams
7089	}
7090	return nil
7091}
7092
7093// SetBucket sets the Bucket field's value.
7094func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
7095	s.Bucket = &v
7096	return s
7097}
7098
7099func (s *AbortMultipartUploadInput) getBucket() (v string) {
7100	if s.Bucket == nil {
7101		return v
7102	}
7103	return *s.Bucket
7104}
7105
7106// SetKey sets the Key field's value.
7107func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
7108	s.Key = &v
7109	return s
7110}
7111
7112// SetRequestPayer sets the RequestPayer field's value.
7113func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
7114	s.RequestPayer = &v
7115	return s
7116}
7117
7118// SetUploadId sets the UploadId field's value.
7119func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
7120	s.UploadId = &v
7121	return s
7122}
7123
7124type AbortMultipartUploadOutput struct {
7125	_ struct{} `type:"structure"`
7126
7127	// If present, indicates that the requester was successfully charged for the
7128	// request.
7129	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
7130}
7131
7132// String returns the string representation
7133func (s AbortMultipartUploadOutput) String() string {
7134	return awsutil.Prettify(s)
7135}
7136
7137// GoString returns the string representation
7138func (s AbortMultipartUploadOutput) GoString() string {
7139	return s.String()
7140}
7141
7142// SetRequestCharged sets the RequestCharged field's value.
7143func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
7144	s.RequestCharged = &v
7145	return s
7146}
7147
7148type AccelerateConfiguration struct {
7149	_ struct{} `type:"structure"`
7150
7151	// The accelerate configuration of the bucket.
7152	Status *string `type:"string" enum:"BucketAccelerateStatus"`
7153}
7154
7155// String returns the string representation
7156func (s AccelerateConfiguration) String() string {
7157	return awsutil.Prettify(s)
7158}
7159
7160// GoString returns the string representation
7161func (s AccelerateConfiguration) GoString() string {
7162	return s.String()
7163}
7164
7165// SetStatus sets the Status field's value.
7166func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
7167	s.Status = &v
7168	return s
7169}
7170
7171type AccessControlPolicy struct {
7172	_ struct{} `type:"structure"`
7173
7174	// A list of grants.
7175	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
7176
7177	Owner *Owner `type:"structure"`
7178}
7179
7180// String returns the string representation
7181func (s AccessControlPolicy) String() string {
7182	return awsutil.Prettify(s)
7183}
7184
7185// GoString returns the string representation
7186func (s AccessControlPolicy) GoString() string {
7187	return s.String()
7188}
7189
7190// Validate inspects the fields of the type to determine if they are valid.
7191func (s *AccessControlPolicy) Validate() error {
7192	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
7193	if s.Grants != nil {
7194		for i, v := range s.Grants {
7195			if v == nil {
7196				continue
7197			}
7198			if err := v.Validate(); err != nil {
7199				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
7200			}
7201		}
7202	}
7203
7204	if invalidParams.Len() > 0 {
7205		return invalidParams
7206	}
7207	return nil
7208}
7209
7210// SetGrants sets the Grants field's value.
7211func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
7212	s.Grants = v
7213	return s
7214}
7215
7216// SetOwner sets the Owner field's value.
7217func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
7218	s.Owner = v
7219	return s
7220}
7221
7222// A container for information about access control for replicas.
7223type AccessControlTranslation struct {
7224	_ struct{} `type:"structure"`
7225
7226	// The override value for the owner of the replica object.
7227	//
7228	// Owner is a required field
7229	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
7230}
7231
7232// String returns the string representation
7233func (s AccessControlTranslation) String() string {
7234	return awsutil.Prettify(s)
7235}
7236
7237// GoString returns the string representation
7238func (s AccessControlTranslation) GoString() string {
7239	return s.String()
7240}
7241
7242// Validate inspects the fields of the type to determine if they are valid.
7243func (s *AccessControlTranslation) Validate() error {
7244	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
7245	if s.Owner == nil {
7246		invalidParams.Add(request.NewErrParamRequired("Owner"))
7247	}
7248
7249	if invalidParams.Len() > 0 {
7250		return invalidParams
7251	}
7252	return nil
7253}
7254
7255// SetOwner sets the Owner field's value.
7256func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
7257	s.Owner = &v
7258	return s
7259}
7260
7261type AnalyticsAndOperator struct {
7262	_ struct{} `type:"structure"`
7263
7264	// The prefix to use when evaluating an AND predicate.
7265	Prefix *string `type:"string"`
7266
7267	// The list of tags to use when evaluating an AND predicate.
7268	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
7269}
7270
7271// String returns the string representation
7272func (s AnalyticsAndOperator) String() string {
7273	return awsutil.Prettify(s)
7274}
7275
7276// GoString returns the string representation
7277func (s AnalyticsAndOperator) GoString() string {
7278	return s.String()
7279}
7280
7281// Validate inspects the fields of the type to determine if they are valid.
7282func (s *AnalyticsAndOperator) Validate() error {
7283	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
7284	if s.Tags != nil {
7285		for i, v := range s.Tags {
7286			if v == nil {
7287				continue
7288			}
7289			if err := v.Validate(); err != nil {
7290				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
7291			}
7292		}
7293	}
7294
7295	if invalidParams.Len() > 0 {
7296		return invalidParams
7297	}
7298	return nil
7299}
7300
7301// SetPrefix sets the Prefix field's value.
7302func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
7303	s.Prefix = &v
7304	return s
7305}
7306
7307// SetTags sets the Tags field's value.
7308func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
7309	s.Tags = v
7310	return s
7311}
7312
7313type AnalyticsConfiguration struct {
7314	_ struct{} `type:"structure"`
7315
7316	// The filter used to describe a set of objects for analyses. A filter must
7317	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
7318	// If no filter is provided, all objects will be considered in any analysis.
7319	Filter *AnalyticsFilter `type:"structure"`
7320
7321	// The identifier used to represent an analytics configuration.
7322	//
7323	// Id is a required field
7324	Id *string `type:"string" required:"true"`
7325
7326	// If present, it indicates that data related to access patterns will be collected
7327	// and made available to analyze the tradeoffs between different storage classes.
7328	//
7329	// StorageClassAnalysis is a required field
7330	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
7331}
7332
7333// String returns the string representation
7334func (s AnalyticsConfiguration) String() string {
7335	return awsutil.Prettify(s)
7336}
7337
7338// GoString returns the string representation
7339func (s AnalyticsConfiguration) GoString() string {
7340	return s.String()
7341}
7342
7343// Validate inspects the fields of the type to determine if they are valid.
7344func (s *AnalyticsConfiguration) Validate() error {
7345	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
7346	if s.Id == nil {
7347		invalidParams.Add(request.NewErrParamRequired("Id"))
7348	}
7349	if s.StorageClassAnalysis == nil {
7350		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
7351	}
7352	if s.Filter != nil {
7353		if err := s.Filter.Validate(); err != nil {
7354			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
7355		}
7356	}
7357	if s.StorageClassAnalysis != nil {
7358		if err := s.StorageClassAnalysis.Validate(); err != nil {
7359			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
7360		}
7361	}
7362
7363	if invalidParams.Len() > 0 {
7364		return invalidParams
7365	}
7366	return nil
7367}
7368
7369// SetFilter sets the Filter field's value.
7370func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
7371	s.Filter = v
7372	return s
7373}
7374
7375// SetId sets the Id field's value.
7376func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
7377	s.Id = &v
7378	return s
7379}
7380
7381// SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
7382func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
7383	s.StorageClassAnalysis = v
7384	return s
7385}
7386
7387type AnalyticsExportDestination struct {
7388	_ struct{} `type:"structure"`
7389
7390	// A destination signifying output to an S3 bucket.
7391	//
7392	// S3BucketDestination is a required field
7393	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
7394}
7395
7396// String returns the string representation
7397func (s AnalyticsExportDestination) String() string {
7398	return awsutil.Prettify(s)
7399}
7400
7401// GoString returns the string representation
7402func (s AnalyticsExportDestination) GoString() string {
7403	return s.String()
7404}
7405
7406// Validate inspects the fields of the type to determine if they are valid.
7407func (s *AnalyticsExportDestination) Validate() error {
7408	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
7409	if s.S3BucketDestination == nil {
7410		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
7411	}
7412	if s.S3BucketDestination != nil {
7413		if err := s.S3BucketDestination.Validate(); err != nil {
7414			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
7415		}
7416	}
7417
7418	if invalidParams.Len() > 0 {
7419		return invalidParams
7420	}
7421	return nil
7422}
7423
7424// SetS3BucketDestination sets the S3BucketDestination field's value.
7425func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
7426	s.S3BucketDestination = v
7427	return s
7428}
7429
7430type AnalyticsFilter struct {
7431	_ struct{} `type:"structure"`
7432
7433	// A conjunction (logical AND) of predicates, which is used in evaluating an
7434	// analytics filter. The operator must have at least two predicates.
7435	And *AnalyticsAndOperator `type:"structure"`
7436
7437	// The prefix to use when evaluating an analytics filter.
7438	Prefix *string `type:"string"`
7439
7440	// The tag to use when evaluating an analytics filter.
7441	Tag *Tag `type:"structure"`
7442}
7443
7444// String returns the string representation
7445func (s AnalyticsFilter) String() string {
7446	return awsutil.Prettify(s)
7447}
7448
7449// GoString returns the string representation
7450func (s AnalyticsFilter) GoString() string {
7451	return s.String()
7452}
7453
7454// Validate inspects the fields of the type to determine if they are valid.
7455func (s *AnalyticsFilter) Validate() error {
7456	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
7457	if s.And != nil {
7458		if err := s.And.Validate(); err != nil {
7459			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
7460		}
7461	}
7462	if s.Tag != nil {
7463		if err := s.Tag.Validate(); err != nil {
7464			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
7465		}
7466	}
7467
7468	if invalidParams.Len() > 0 {
7469		return invalidParams
7470	}
7471	return nil
7472}
7473
7474// SetAnd sets the And field's value.
7475func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
7476	s.And = v
7477	return s
7478}
7479
7480// SetPrefix sets the Prefix field's value.
7481func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
7482	s.Prefix = &v
7483	return s
7484}
7485
7486// SetTag sets the Tag field's value.
7487func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
7488	s.Tag = v
7489	return s
7490}
7491
7492type AnalyticsS3BucketDestination struct {
7493	_ struct{} `type:"structure"`
7494
7495	// The Amazon resource name (ARN) of the bucket to which data is exported.
7496	//
7497	// Bucket is a required field
7498	Bucket *string `type:"string" required:"true"`
7499
7500	// The account ID that owns the destination bucket. If no account ID is provided,
7501	// the owner will not be validated prior to exporting data.
7502	BucketAccountId *string `type:"string"`
7503
7504	// The file format used when exporting data to Amazon S3.
7505	//
7506	// Format is a required field
7507	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
7508
7509	// The prefix to use when exporting data. The exported data begins with this
7510	// prefix.
7511	Prefix *string `type:"string"`
7512}
7513
7514// String returns the string representation
7515func (s AnalyticsS3BucketDestination) String() string {
7516	return awsutil.Prettify(s)
7517}
7518
7519// GoString returns the string representation
7520func (s AnalyticsS3BucketDestination) GoString() string {
7521	return s.String()
7522}
7523
7524// Validate inspects the fields of the type to determine if they are valid.
7525func (s *AnalyticsS3BucketDestination) Validate() error {
7526	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
7527	if s.Bucket == nil {
7528		invalidParams.Add(request.NewErrParamRequired("Bucket"))
7529	}
7530	if s.Format == nil {
7531		invalidParams.Add(request.NewErrParamRequired("Format"))
7532	}
7533
7534	if invalidParams.Len() > 0 {
7535		return invalidParams
7536	}
7537	return nil
7538}
7539
7540// SetBucket sets the Bucket field's value.
7541func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
7542	s.Bucket = &v
7543	return s
7544}
7545
7546func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
7547	if s.Bucket == nil {
7548		return v
7549	}
7550	return *s.Bucket
7551}
7552
7553// SetBucketAccountId sets the BucketAccountId field's value.
7554func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
7555	s.BucketAccountId = &v
7556	return s
7557}
7558
7559// SetFormat sets the Format field's value.
7560func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
7561	s.Format = &v
7562	return s
7563}
7564
7565// SetPrefix sets the Prefix field's value.
7566func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
7567	s.Prefix = &v
7568	return s
7569}
7570
7571type Bucket struct {
7572	_ struct{} `type:"structure"`
7573
7574	// Date the bucket was created.
7575	CreationDate *time.Time `type:"timestamp"`
7576
7577	// The name of the bucket.
7578	Name *string `type:"string"`
7579}
7580
7581// String returns the string representation
7582func (s Bucket) String() string {
7583	return awsutil.Prettify(s)
7584}
7585
7586// GoString returns the string representation
7587func (s Bucket) GoString() string {
7588	return s.String()
7589}
7590
7591// SetCreationDate sets the CreationDate field's value.
7592func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
7593	s.CreationDate = &v
7594	return s
7595}
7596
7597// SetName sets the Name field's value.
7598func (s *Bucket) SetName(v string) *Bucket {
7599	s.Name = &v
7600	return s
7601}
7602
7603type BucketLifecycleConfiguration struct {
7604	_ struct{} `type:"structure"`
7605
7606	// Rules is a required field
7607	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
7608}
7609
7610// String returns the string representation
7611func (s BucketLifecycleConfiguration) String() string {
7612	return awsutil.Prettify(s)
7613}
7614
7615// GoString returns the string representation
7616func (s BucketLifecycleConfiguration) GoString() string {
7617	return s.String()
7618}
7619
7620// Validate inspects the fields of the type to determine if they are valid.
7621func (s *BucketLifecycleConfiguration) Validate() error {
7622	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
7623	if s.Rules == nil {
7624		invalidParams.Add(request.NewErrParamRequired("Rules"))
7625	}
7626	if s.Rules != nil {
7627		for i, v := range s.Rules {
7628			if v == nil {
7629				continue
7630			}
7631			if err := v.Validate(); err != nil {
7632				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
7633			}
7634		}
7635	}
7636
7637	if invalidParams.Len() > 0 {
7638		return invalidParams
7639	}
7640	return nil
7641}
7642
7643// SetRules sets the Rules field's value.
7644func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
7645	s.Rules = v
7646	return s
7647}
7648
7649type BucketLoggingStatus struct {
7650	_ struct{} `type:"structure"`
7651
7652	// Container for logging information. Presence of this element indicates that
7653	// logging is enabled. Parameters TargetBucket and TargetPrefix are required
7654	// in this case.
7655	LoggingEnabled *LoggingEnabled `type:"structure"`
7656}
7657
7658// String returns the string representation
7659func (s BucketLoggingStatus) String() string {
7660	return awsutil.Prettify(s)
7661}
7662
7663// GoString returns the string representation
7664func (s BucketLoggingStatus) GoString() string {
7665	return s.String()
7666}
7667
7668// Validate inspects the fields of the type to determine if they are valid.
7669func (s *BucketLoggingStatus) Validate() error {
7670	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
7671	if s.LoggingEnabled != nil {
7672		if err := s.LoggingEnabled.Validate(); err != nil {
7673			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
7674		}
7675	}
7676
7677	if invalidParams.Len() > 0 {
7678		return invalidParams
7679	}
7680	return nil
7681}
7682
7683// SetLoggingEnabled sets the LoggingEnabled field's value.
7684func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
7685	s.LoggingEnabled = v
7686	return s
7687}
7688
7689type CORSConfiguration struct {
7690	_ struct{} `type:"structure"`
7691
7692	// CORSRules is a required field
7693	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
7694}
7695
7696// String returns the string representation
7697func (s CORSConfiguration) String() string {
7698	return awsutil.Prettify(s)
7699}
7700
7701// GoString returns the string representation
7702func (s CORSConfiguration) GoString() string {
7703	return s.String()
7704}
7705
7706// Validate inspects the fields of the type to determine if they are valid.
7707func (s *CORSConfiguration) Validate() error {
7708	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
7709	if s.CORSRules == nil {
7710		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
7711	}
7712	if s.CORSRules != nil {
7713		for i, v := range s.CORSRules {
7714			if v == nil {
7715				continue
7716			}
7717			if err := v.Validate(); err != nil {
7718				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
7719			}
7720		}
7721	}
7722
7723	if invalidParams.Len() > 0 {
7724		return invalidParams
7725	}
7726	return nil
7727}
7728
7729// SetCORSRules sets the CORSRules field's value.
7730func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
7731	s.CORSRules = v
7732	return s
7733}
7734
7735type CORSRule struct {
7736	_ struct{} `type:"structure"`
7737
7738	// Specifies which headers are allowed in a pre-flight OPTIONS request.
7739	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
7740
7741	// Identifies HTTP methods that the domain/origin specified in the rule is allowed
7742	// to execute.
7743	//
7744	// AllowedMethods is a required field
7745	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
7746
7747	// One or more origins you want customers to be able to access the bucket from.
7748	//
7749	// AllowedOrigins is a required field
7750	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
7751
7752	// One or more headers in the response that you want customers to be able to
7753	// access from their applications (for example, from a JavaScript XMLHttpRequest
7754	// object).
7755	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
7756
7757	// The time in seconds that your browser is to cache the preflight response
7758	// for the specified resource.
7759	MaxAgeSeconds *int64 `type:"integer"`
7760}
7761
7762// String returns the string representation
7763func (s CORSRule) String() string {
7764	return awsutil.Prettify(s)
7765}
7766
7767// GoString returns the string representation
7768func (s CORSRule) GoString() string {
7769	return s.String()
7770}
7771
7772// Validate inspects the fields of the type to determine if they are valid.
7773func (s *CORSRule) Validate() error {
7774	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
7775	if s.AllowedMethods == nil {
7776		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
7777	}
7778	if s.AllowedOrigins == nil {
7779		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
7780	}
7781
7782	if invalidParams.Len() > 0 {
7783		return invalidParams
7784	}
7785	return nil
7786}
7787
7788// SetAllowedHeaders sets the AllowedHeaders field's value.
7789func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
7790	s.AllowedHeaders = v
7791	return s
7792}
7793
7794// SetAllowedMethods sets the AllowedMethods field's value.
7795func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
7796	s.AllowedMethods = v
7797	return s
7798}
7799
7800// SetAllowedOrigins sets the AllowedOrigins field's value.
7801func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
7802	s.AllowedOrigins = v
7803	return s
7804}
7805
7806// SetExposeHeaders sets the ExposeHeaders field's value.
7807func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
7808	s.ExposeHeaders = v
7809	return s
7810}
7811
7812// SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
7813func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
7814	s.MaxAgeSeconds = &v
7815	return s
7816}
7817
7818// Describes how a CSV-formatted input object is formatted.
7819type CSVInput struct {
7820	_ struct{} `type:"structure"`
7821
7822	// Specifies that CSV field values may contain quoted record delimiters and
7823	// such records should be allowed. Default value is FALSE. Setting this value
7824	// to TRUE may lower performance.
7825	AllowQuotedRecordDelimiter *bool `type:"boolean"`
7826
7827	// The single character used to indicate a row should be ignored when present
7828	// at the start of a row.
7829	Comments *string `type:"string"`
7830
7831	// The value used to separate individual fields in a record.
7832	FieldDelimiter *string `type:"string"`
7833
7834	// Describes the first line of input. Valid values: None, Ignore, Use.
7835	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
7836
7837	// Value used for escaping where the field delimiter is part of the value.
7838	QuoteCharacter *string `type:"string"`
7839
7840	// The single character used for escaping the quote character inside an already
7841	// escaped value.
7842	QuoteEscapeCharacter *string `type:"string"`
7843
7844	// The value used to separate individual records.
7845	RecordDelimiter *string `type:"string"`
7846}
7847
7848// String returns the string representation
7849func (s CSVInput) String() string {
7850	return awsutil.Prettify(s)
7851}
7852
7853// GoString returns the string representation
7854func (s CSVInput) GoString() string {
7855	return s.String()
7856}
7857
7858// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
7859func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
7860	s.AllowQuotedRecordDelimiter = &v
7861	return s
7862}
7863
7864// SetComments sets the Comments field's value.
7865func (s *CSVInput) SetComments(v string) *CSVInput {
7866	s.Comments = &v
7867	return s
7868}
7869
7870// SetFieldDelimiter sets the FieldDelimiter field's value.
7871func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
7872	s.FieldDelimiter = &v
7873	return s
7874}
7875
7876// SetFileHeaderInfo sets the FileHeaderInfo field's value.
7877func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
7878	s.FileHeaderInfo = &v
7879	return s
7880}
7881
7882// SetQuoteCharacter sets the QuoteCharacter field's value.
7883func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
7884	s.QuoteCharacter = &v
7885	return s
7886}
7887
7888// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
7889func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
7890	s.QuoteEscapeCharacter = &v
7891	return s
7892}
7893
7894// SetRecordDelimiter sets the RecordDelimiter field's value.
7895func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
7896	s.RecordDelimiter = &v
7897	return s
7898}
7899
7900// Describes how CSV-formatted results are formatted.
7901type CSVOutput struct {
7902	_ struct{} `type:"structure"`
7903
7904	// The value used to separate individual fields in a record.
7905	FieldDelimiter *string `type:"string"`
7906
7907	// The value used for escaping where the field delimiter is part of the value.
7908	QuoteCharacter *string `type:"string"`
7909
7910	// Th single character used for escaping the quote character inside an already
7911	// escaped value.
7912	QuoteEscapeCharacter *string `type:"string"`
7913
7914	// Indicates whether or not all output fields should be quoted.
7915	QuoteFields *string `type:"string" enum:"QuoteFields"`
7916
7917	// The value used to separate individual records.
7918	RecordDelimiter *string `type:"string"`
7919}
7920
7921// String returns the string representation
7922func (s CSVOutput) String() string {
7923	return awsutil.Prettify(s)
7924}
7925
7926// GoString returns the string representation
7927func (s CSVOutput) GoString() string {
7928	return s.String()
7929}
7930
7931// SetFieldDelimiter sets the FieldDelimiter field's value.
7932func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
7933	s.FieldDelimiter = &v
7934	return s
7935}
7936
7937// SetQuoteCharacter sets the QuoteCharacter field's value.
7938func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
7939	s.QuoteCharacter = &v
7940	return s
7941}
7942
7943// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
7944func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
7945	s.QuoteEscapeCharacter = &v
7946	return s
7947}
7948
7949// SetQuoteFields sets the QuoteFields field's value.
7950func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
7951	s.QuoteFields = &v
7952	return s
7953}
7954
7955// SetRecordDelimiter sets the RecordDelimiter field's value.
7956func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
7957	s.RecordDelimiter = &v
7958	return s
7959}
7960
7961type CloudFunctionConfiguration struct {
7962	_ struct{} `type:"structure"`
7963
7964	CloudFunction *string `type:"string"`
7965
7966	// The bucket event for which to send notifications.
7967	//
7968	// Deprecated: Event has been deprecated
7969	Event *string `deprecated:"true" type:"string" enum:"Event"`
7970
7971	Events []*string `locationName:"Event" type:"list" flattened:"true"`
7972
7973	// An optional unique identifier for configurations in a notification configuration.
7974	// If you don't provide one, Amazon S3 will assign an ID.
7975	Id *string `type:"string"`
7976
7977	InvocationRole *string `type:"string"`
7978}
7979
7980// String returns the string representation
7981func (s CloudFunctionConfiguration) String() string {
7982	return awsutil.Prettify(s)
7983}
7984
7985// GoString returns the string representation
7986func (s CloudFunctionConfiguration) GoString() string {
7987	return s.String()
7988}
7989
7990// SetCloudFunction sets the CloudFunction field's value.
7991func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
7992	s.CloudFunction = &v
7993	return s
7994}
7995
7996// SetEvent sets the Event field's value.
7997func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
7998	s.Event = &v
7999	return s
8000}
8001
8002// SetEvents sets the Events field's value.
8003func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
8004	s.Events = v
8005	return s
8006}
8007
8008// SetId sets the Id field's value.
8009func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
8010	s.Id = &v
8011	return s
8012}
8013
8014// SetInvocationRole sets the InvocationRole field's value.
8015func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
8016	s.InvocationRole = &v
8017	return s
8018}
8019
8020type CommonPrefix struct {
8021	_ struct{} `type:"structure"`
8022
8023	Prefix *string `type:"string"`
8024}
8025
8026// String returns the string representation
8027func (s CommonPrefix) String() string {
8028	return awsutil.Prettify(s)
8029}
8030
8031// GoString returns the string representation
8032func (s CommonPrefix) GoString() string {
8033	return s.String()
8034}
8035
8036// SetPrefix sets the Prefix field's value.
8037func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
8038	s.Prefix = &v
8039	return s
8040}
8041
8042type CompleteMultipartUploadInput struct {
8043	_ struct{} `type:"structure" payload:"MultipartUpload"`
8044
8045	// Bucket is a required field
8046	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8047
8048	// Key is a required field
8049	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
8050
8051	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
8052
8053	// Confirms that the requester knows that she or he will be charged for the
8054	// request. Bucket owners need not specify this parameter in their requests.
8055	// Documentation on downloading objects from requester pays buckets can be found
8056	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
8057	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
8058
8059	// UploadId is a required field
8060	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
8061}
8062
8063// String returns the string representation
8064func (s CompleteMultipartUploadInput) String() string {
8065	return awsutil.Prettify(s)
8066}
8067
8068// GoString returns the string representation
8069func (s CompleteMultipartUploadInput) GoString() string {
8070	return s.String()
8071}
8072
8073// Validate inspects the fields of the type to determine if they are valid.
8074func (s *CompleteMultipartUploadInput) Validate() error {
8075	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
8076	if s.Bucket == nil {
8077		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8078	}
8079	if s.Bucket != nil && len(*s.Bucket) < 1 {
8080		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
8081	}
8082	if s.Key == nil {
8083		invalidParams.Add(request.NewErrParamRequired("Key"))
8084	}
8085	if s.Key != nil && len(*s.Key) < 1 {
8086		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
8087	}
8088	if s.UploadId == nil {
8089		invalidParams.Add(request.NewErrParamRequired("UploadId"))
8090	}
8091
8092	if invalidParams.Len() > 0 {
8093		return invalidParams
8094	}
8095	return nil
8096}
8097
8098// SetBucket sets the Bucket field's value.
8099func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
8100	s.Bucket = &v
8101	return s
8102}
8103
8104func (s *CompleteMultipartUploadInput) getBucket() (v string) {
8105	if s.Bucket == nil {
8106		return v
8107	}
8108	return *s.Bucket
8109}
8110
8111// SetKey sets the Key field's value.
8112func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
8113	s.Key = &v
8114	return s
8115}
8116
8117// SetMultipartUpload sets the MultipartUpload field's value.
8118func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
8119	s.MultipartUpload = v
8120	return s
8121}
8122
8123// SetRequestPayer sets the RequestPayer field's value.
8124func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
8125	s.RequestPayer = &v
8126	return s
8127}
8128
8129// SetUploadId sets the UploadId field's value.
8130func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
8131	s.UploadId = &v
8132	return s
8133}
8134
8135type CompleteMultipartUploadOutput struct {
8136	_ struct{} `type:"structure"`
8137
8138	Bucket *string `type:"string"`
8139
8140	// Entity tag of the object.
8141	ETag *string `type:"string"`
8142
8143	// If the object expiration is configured, this will contain the expiration
8144	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
8145	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
8146
8147	Key *string `min:"1" type:"string"`
8148
8149	Location *string `type:"string"`
8150
8151	// If present, indicates that the requester was successfully charged for the
8152	// request.
8153	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
8154
8155	// If present, specifies the ID of the AWS Key Management Service (KMS) master
8156	// encryption key that was used for the object.
8157	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
8158
8159	// The Server-side encryption algorithm used when storing this object in S3
8160	// (e.g., AES256, aws:kms).
8161	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
8162
8163	// Version of the object.
8164	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
8165}
8166
8167// String returns the string representation
8168func (s CompleteMultipartUploadOutput) String() string {
8169	return awsutil.Prettify(s)
8170}
8171
8172// GoString returns the string representation
8173func (s CompleteMultipartUploadOutput) GoString() string {
8174	return s.String()
8175}
8176
8177// SetBucket sets the Bucket field's value.
8178func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
8179	s.Bucket = &v
8180	return s
8181}
8182
8183func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
8184	if s.Bucket == nil {
8185		return v
8186	}
8187	return *s.Bucket
8188}
8189
8190// SetETag sets the ETag field's value.
8191func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
8192	s.ETag = &v
8193	return s
8194}
8195
8196// SetExpiration sets the Expiration field's value.
8197func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
8198	s.Expiration = &v
8199	return s
8200}
8201
8202// SetKey sets the Key field's value.
8203func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
8204	s.Key = &v
8205	return s
8206}
8207
8208// SetLocation sets the Location field's value.
8209func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
8210	s.Location = &v
8211	return s
8212}
8213
8214// SetRequestCharged sets the RequestCharged field's value.
8215func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
8216	s.RequestCharged = &v
8217	return s
8218}
8219
8220// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
8221func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
8222	s.SSEKMSKeyId = &v
8223	return s
8224}
8225
8226// SetServerSideEncryption sets the ServerSideEncryption field's value.
8227func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
8228	s.ServerSideEncryption = &v
8229	return s
8230}
8231
8232// SetVersionId sets the VersionId field's value.
8233func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
8234	s.VersionId = &v
8235	return s
8236}
8237
8238type CompletedMultipartUpload struct {
8239	_ struct{} `type:"structure"`
8240
8241	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
8242}
8243
8244// String returns the string representation
8245func (s CompletedMultipartUpload) String() string {
8246	return awsutil.Prettify(s)
8247}
8248
8249// GoString returns the string representation
8250func (s CompletedMultipartUpload) GoString() string {
8251	return s.String()
8252}
8253
8254// SetParts sets the Parts field's value.
8255func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
8256	s.Parts = v
8257	return s
8258}
8259
8260type CompletedPart struct {
8261	_ struct{} `type:"structure"`
8262
8263	// Entity tag returned when the part was uploaded.
8264	ETag *string `type:"string"`
8265
8266	// Part number that identifies the part. This is a positive integer between
8267	// 1 and 10,000.
8268	PartNumber *int64 `type:"integer"`
8269}
8270
8271// String returns the string representation
8272func (s CompletedPart) String() string {
8273	return awsutil.Prettify(s)
8274}
8275
8276// GoString returns the string representation
8277func (s CompletedPart) GoString() string {
8278	return s.String()
8279}
8280
8281// SetETag sets the ETag field's value.
8282func (s *CompletedPart) SetETag(v string) *CompletedPart {
8283	s.ETag = &v
8284	return s
8285}
8286
8287// SetPartNumber sets the PartNumber field's value.
8288func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
8289	s.PartNumber = &v
8290	return s
8291}
8292
8293type Condition struct {
8294	_ struct{} `type:"structure"`
8295
8296	// The HTTP error code when the redirect is applied. In the event of an error,
8297	// if the error code equals this value, then the specified redirect is applied.
8298	// Required when parent element Condition is specified and sibling KeyPrefixEquals
8299	// is not specified. If both are specified, then both must be true for the redirect
8300	// to be applied.
8301	HttpErrorCodeReturnedEquals *string `type:"string"`
8302
8303	// The object key name prefix when the redirect is applied. For example, to
8304	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
8305	// To redirect request for all pages with the prefix docs/, the key prefix will
8306	// be /docs, which identifies all objects in the docs/ folder. Required when
8307	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
8308	// is not specified. If both conditions are specified, both must be true for
8309	// the redirect to be applied.
8310	KeyPrefixEquals *string `type:"string"`
8311}
8312
8313// String returns the string representation
8314func (s Condition) String() string {
8315	return awsutil.Prettify(s)
8316}
8317
8318// GoString returns the string representation
8319func (s Condition) GoString() string {
8320	return s.String()
8321}
8322
8323// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
8324func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
8325	s.HttpErrorCodeReturnedEquals = &v
8326	return s
8327}
8328
8329// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
8330func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
8331	s.KeyPrefixEquals = &v
8332	return s
8333}
8334
8335type ContinuationEvent struct {
8336	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
8337}
8338
8339// String returns the string representation
8340func (s ContinuationEvent) String() string {
8341	return awsutil.Prettify(s)
8342}
8343
8344// GoString returns the string representation
8345func (s ContinuationEvent) GoString() string {
8346	return s.String()
8347}
8348
8349// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
8350func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
8351
8352// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
8353// This method is only used internally within the SDK's EventStream handling.
8354func (s *ContinuationEvent) UnmarshalEvent(
8355	payloadUnmarshaler protocol.PayloadUnmarshaler,
8356	msg eventstream.Message,
8357) error {
8358	return nil
8359}
8360
8361type CopyObjectInput struct {
8362	_ struct{} `type:"structure"`
8363
8364	// The canned ACL to apply to the object.
8365	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
8366
8367	// Bucket is a required field
8368	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8369
8370	// Specifies caching behavior along the request/reply chain.
8371	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
8372
8373	// Specifies presentational information for the object.
8374	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
8375
8376	// Specifies what content encodings have been applied to the object and thus
8377	// what decoding mechanisms must be applied to obtain the media-type referenced
8378	// by the Content-Type header field.
8379	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
8380
8381	// The language the content is in.
8382	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
8383
8384	// A standard MIME type describing the format of the object data.
8385	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
8386
8387	// The name of the source bucket and key name of the source object, separated
8388	// by a slash (/). Must be URL-encoded.
8389	//
8390	// CopySource is a required field
8391	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
8392
8393	// Copies the object if its entity tag (ETag) matches the specified tag.
8394	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
8395
8396	// Copies the object if it has been modified since the specified time.
8397	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
8398
8399	// Copies the object if its entity tag (ETag) is different than the specified
8400	// ETag.
8401	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
8402
8403	// Copies the object if it hasn't been modified since the specified time.
8404	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
8405
8406	// Specifies the algorithm to use when decrypting the source object (e.g., AES256).
8407	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
8408
8409	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
8410	// the source object. The encryption key provided in this header must be one
8411	// that was used when the source object was created.
8412	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
8413
8414	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
8415	// Amazon S3 uses this header for a message integrity check to ensure the encryption
8416	// key was transmitted without error.
8417	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
8418
8419	// The date and time at which the object is no longer cacheable.
8420	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
8421
8422	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
8423	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
8424
8425	// Allows grantee to read the object data and its metadata.
8426	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
8427
8428	// Allows grantee to read the object ACL.
8429	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
8430
8431	// Allows grantee to write the ACL for the applicable object.
8432	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
8433
8434	// Key is a required field
8435	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
8436
8437	// A map of metadata to store with the object in S3.
8438	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
8439
8440	// Specifies whether the metadata is copied from the source object or replaced
8441	// with metadata provided in the request.
8442	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
8443
8444	// Specifies whether you want to apply a Legal Hold to the copied object.
8445	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
8446
8447	// The Object Lock mode that you want to apply to the copied object.
8448	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
8449
8450	// The date and time when you want the copied object's Object Lock to expire.
8451	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
8452
8453	// Confirms that the requester knows that she or he will be charged for the
8454	// request. Bucket owners need not specify this parameter in their requests.
8455	// Documentation on downloading objects from requester pays buckets can be found
8456	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
8457	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
8458
8459	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
8460	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
8461
8462	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
8463	// data. This value is used to store the object and then it is discarded; Amazon
8464	// does not store the encryption key. The key must be appropriate for use with
8465	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
8466	// header.
8467	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
8468
8469	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
8470	// Amazon S3 uses this header for a message integrity check to ensure the encryption
8471	// key was transmitted without error.
8472	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
8473
8474	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
8475	// requests for an object protected by AWS KMS will fail if not made via SSL
8476	// or using SigV4. Documentation on configuring any of the officially supported
8477	// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
8478	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
8479
8480	// The Server-side encryption algorithm used when storing this object in S3
8481	// (e.g., AES256, aws:kms).
8482	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
8483
8484	// The type of storage to use for the object. Defaults to 'STANDARD'.
8485	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
8486
8487	// The tag-set for the object destination object this value must be used in
8488	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
8489	// Query parameters
8490	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
8491
8492	// Specifies whether the object tag-set are copied from the source object or
8493	// replaced with tag-set provided in the request.
8494	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
8495
8496	// If the bucket is configured as a website, redirects requests for this object
8497	// to another object in the same bucket or to an external URL. Amazon S3 stores
8498	// the value of this header in the object metadata.
8499	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
8500}
8501
8502// String returns the string representation
8503func (s CopyObjectInput) String() string {
8504	return awsutil.Prettify(s)
8505}
8506
8507// GoString returns the string representation
8508func (s CopyObjectInput) GoString() string {
8509	return s.String()
8510}
8511
8512// Validate inspects the fields of the type to determine if they are valid.
8513func (s *CopyObjectInput) Validate() error {
8514	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
8515	if s.Bucket == nil {
8516		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8517	}
8518	if s.Bucket != nil && len(*s.Bucket) < 1 {
8519		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
8520	}
8521	if s.CopySource == nil {
8522		invalidParams.Add(request.NewErrParamRequired("CopySource"))
8523	}
8524	if s.Key == nil {
8525		invalidParams.Add(request.NewErrParamRequired("Key"))
8526	}
8527	if s.Key != nil && len(*s.Key) < 1 {
8528		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
8529	}
8530
8531	if invalidParams.Len() > 0 {
8532		return invalidParams
8533	}
8534	return nil
8535}
8536
8537// SetACL sets the ACL field's value.
8538func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
8539	s.ACL = &v
8540	return s
8541}
8542
8543// SetBucket sets the Bucket field's value.
8544func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
8545	s.Bucket = &v
8546	return s
8547}
8548
8549func (s *CopyObjectInput) getBucket() (v string) {
8550	if s.Bucket == nil {
8551		return v
8552	}
8553	return *s.Bucket
8554}
8555
8556// SetCacheControl sets the CacheControl field's value.
8557func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
8558	s.CacheControl = &v
8559	return s
8560}
8561
8562// SetContentDisposition sets the ContentDisposition field's value.
8563func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
8564	s.ContentDisposition = &v
8565	return s
8566}
8567
8568// SetContentEncoding sets the ContentEncoding field's value.
8569func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
8570	s.ContentEncoding = &v
8571	return s
8572}
8573
8574// SetContentLanguage sets the ContentLanguage field's value.
8575func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
8576	s.ContentLanguage = &v
8577	return s
8578}
8579
8580// SetContentType sets the ContentType field's value.
8581func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
8582	s.ContentType = &v
8583	return s
8584}
8585
8586// SetCopySource sets the CopySource field's value.
8587func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
8588	s.CopySource = &v
8589	return s
8590}
8591
8592// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
8593func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
8594	s.CopySourceIfMatch = &v
8595	return s
8596}
8597
8598// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
8599func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
8600	s.CopySourceIfModifiedSince = &v
8601	return s
8602}
8603
8604// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
8605func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
8606	s.CopySourceIfNoneMatch = &v
8607	return s
8608}
8609
8610// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
8611func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
8612	s.CopySourceIfUnmodifiedSince = &v
8613	return s
8614}
8615
8616// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
8617func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
8618	s.CopySourceSSECustomerAlgorithm = &v
8619	return s
8620}
8621
8622// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
8623func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
8624	s.CopySourceSSECustomerKey = &v
8625	return s
8626}
8627
8628func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
8629	if s.CopySourceSSECustomerKey == nil {
8630		return v
8631	}
8632	return *s.CopySourceSSECustomerKey
8633}
8634
8635// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
8636func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
8637	s.CopySourceSSECustomerKeyMD5 = &v
8638	return s
8639}
8640
8641// SetExpires sets the Expires field's value.
8642func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
8643	s.Expires = &v
8644	return s
8645}
8646
8647// SetGrantFullControl sets the GrantFullControl field's value.
8648func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
8649	s.GrantFullControl = &v
8650	return s
8651}
8652
8653// SetGrantRead sets the GrantRead field's value.
8654func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
8655	s.GrantRead = &v
8656	return s
8657}
8658
8659// SetGrantReadACP sets the GrantReadACP field's value.
8660func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
8661	s.GrantReadACP = &v
8662	return s
8663}
8664
8665// SetGrantWriteACP sets the GrantWriteACP field's value.
8666func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
8667	s.GrantWriteACP = &v
8668	return s
8669}
8670
8671// SetKey sets the Key field's value.
8672func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
8673	s.Key = &v
8674	return s
8675}
8676
8677// SetMetadata sets the Metadata field's value.
8678func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
8679	s.Metadata = v
8680	return s
8681}
8682
8683// SetMetadataDirective sets the MetadataDirective field's value.
8684func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
8685	s.MetadataDirective = &v
8686	return s
8687}
8688
8689// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
8690func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput {
8691	s.ObjectLockLegalHoldStatus = &v
8692	return s
8693}
8694
8695// SetObjectLockMode sets the ObjectLockMode field's value.
8696func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput {
8697	s.ObjectLockMode = &v
8698	return s
8699}
8700
8701// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
8702func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput {
8703	s.ObjectLockRetainUntilDate = &v
8704	return s
8705}
8706
8707// SetRequestPayer sets the RequestPayer field's value.
8708func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
8709	s.RequestPayer = &v
8710	return s
8711}
8712
8713// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
8714func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
8715	s.SSECustomerAlgorithm = &v
8716	return s
8717}
8718
8719// SetSSECustomerKey sets the SSECustomerKey field's value.
8720func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
8721	s.SSECustomerKey = &v
8722	return s
8723}
8724
8725func (s *CopyObjectInput) getSSECustomerKey() (v string) {
8726	if s.SSECustomerKey == nil {
8727		return v
8728	}
8729	return *s.SSECustomerKey
8730}
8731
8732// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
8733func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
8734	s.SSECustomerKeyMD5 = &v
8735	return s
8736}
8737
8738// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
8739func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
8740	s.SSEKMSKeyId = &v
8741	return s
8742}
8743
8744// SetServerSideEncryption sets the ServerSideEncryption field's value.
8745func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
8746	s.ServerSideEncryption = &v
8747	return s
8748}
8749
8750// SetStorageClass sets the StorageClass field's value.
8751func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
8752	s.StorageClass = &v
8753	return s
8754}
8755
8756// SetTagging sets the Tagging field's value.
8757func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
8758	s.Tagging = &v
8759	return s
8760}
8761
8762// SetTaggingDirective sets the TaggingDirective field's value.
8763func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
8764	s.TaggingDirective = &v
8765	return s
8766}
8767
8768// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
8769func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
8770	s.WebsiteRedirectLocation = &v
8771	return s
8772}
8773
8774type CopyObjectOutput struct {
8775	_ struct{} `type:"structure" payload:"CopyObjectResult"`
8776
8777	CopyObjectResult *CopyObjectResult `type:"structure"`
8778
8779	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
8780
8781	// If the object expiration is configured, the response includes this header.
8782	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
8783
8784	// If present, indicates that the requester was successfully charged for the
8785	// request.
8786	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
8787
8788	// If server-side encryption with a customer-provided encryption key was requested,
8789	// the response will include this header confirming the encryption algorithm
8790	// used.
8791	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
8792
8793	// If server-side encryption with a customer-provided encryption key was requested,
8794	// the response will include this header to provide round trip message integrity
8795	// verification of the customer-provided encryption key.
8796	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
8797
8798	// If present, specifies the ID of the AWS Key Management Service (KMS) master
8799	// encryption key that was used for the object.
8800	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
8801
8802	// The Server-side encryption algorithm used when storing this object in S3
8803	// (e.g., AES256, aws:kms).
8804	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
8805
8806	// Version ID of the newly created copy.
8807	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
8808}
8809
8810// String returns the string representation
8811func (s CopyObjectOutput) String() string {
8812	return awsutil.Prettify(s)
8813}
8814
8815// GoString returns the string representation
8816func (s CopyObjectOutput) GoString() string {
8817	return s.String()
8818}
8819
8820// SetCopyObjectResult sets the CopyObjectResult field's value.
8821func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
8822	s.CopyObjectResult = v
8823	return s
8824}
8825
8826// SetCopySourceVersionId sets the CopySourceVersionId field's value.
8827func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
8828	s.CopySourceVersionId = &v
8829	return s
8830}
8831
8832// SetExpiration sets the Expiration field's value.
8833func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
8834	s.Expiration = &v
8835	return s
8836}
8837
8838// SetRequestCharged sets the RequestCharged field's value.
8839func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
8840	s.RequestCharged = &v
8841	return s
8842}
8843
8844// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
8845func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
8846	s.SSECustomerAlgorithm = &v
8847	return s
8848}
8849
8850// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
8851func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
8852	s.SSECustomerKeyMD5 = &v
8853	return s
8854}
8855
8856// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
8857func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
8858	s.SSEKMSKeyId = &v
8859	return s
8860}
8861
8862// SetServerSideEncryption sets the ServerSideEncryption field's value.
8863func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
8864	s.ServerSideEncryption = &v
8865	return s
8866}
8867
8868// SetVersionId sets the VersionId field's value.
8869func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
8870	s.VersionId = &v
8871	return s
8872}
8873
8874type CopyObjectResult struct {
8875	_ struct{} `type:"structure"`
8876
8877	ETag *string `type:"string"`
8878
8879	LastModified *time.Time `type:"timestamp"`
8880}
8881
8882// String returns the string representation
8883func (s CopyObjectResult) String() string {
8884	return awsutil.Prettify(s)
8885}
8886
8887// GoString returns the string representation
8888func (s CopyObjectResult) GoString() string {
8889	return s.String()
8890}
8891
8892// SetETag sets the ETag field's value.
8893func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
8894	s.ETag = &v
8895	return s
8896}
8897
8898// SetLastModified sets the LastModified field's value.
8899func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
8900	s.LastModified = &v
8901	return s
8902}
8903
8904type CopyPartResult struct {
8905	_ struct{} `type:"structure"`
8906
8907	// Entity tag of the object.
8908	ETag *string `type:"string"`
8909
8910	// Date and time at which the object was uploaded.
8911	LastModified *time.Time `type:"timestamp"`
8912}
8913
8914// String returns the string representation
8915func (s CopyPartResult) String() string {
8916	return awsutil.Prettify(s)
8917}
8918
8919// GoString returns the string representation
8920func (s CopyPartResult) GoString() string {
8921	return s.String()
8922}
8923
8924// SetETag sets the ETag field's value.
8925func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
8926	s.ETag = &v
8927	return s
8928}
8929
8930// SetLastModified sets the LastModified field's value.
8931func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
8932	s.LastModified = &v
8933	return s
8934}
8935
8936type CreateBucketConfiguration struct {
8937	_ struct{} `type:"structure"`
8938
8939	// Specifies the region where the bucket will be created. If you don't specify
8940	// a region, the bucket is created in US East (N. Virginia) Region (us-east-1).
8941	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
8942}
8943
8944// String returns the string representation
8945func (s CreateBucketConfiguration) String() string {
8946	return awsutil.Prettify(s)
8947}
8948
8949// GoString returns the string representation
8950func (s CreateBucketConfiguration) GoString() string {
8951	return s.String()
8952}
8953
8954// SetLocationConstraint sets the LocationConstraint field's value.
8955func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
8956	s.LocationConstraint = &v
8957	return s
8958}
8959
8960type CreateBucketInput struct {
8961	_ struct{} `type:"structure" payload:"CreateBucketConfiguration"`
8962
8963	// The canned ACL to apply to the bucket.
8964	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
8965
8966	// Bucket is a required field
8967	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8968
8969	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
8970
8971	// Allows grantee the read, write, read ACP, and write ACP permissions on the
8972	// bucket.
8973	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
8974
8975	// Allows grantee to list the objects in the bucket.
8976	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
8977
8978	// Allows grantee to read the bucket ACL.
8979	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
8980
8981	// Allows grantee to create, overwrite, and delete any object in the bucket.
8982	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
8983
8984	// Allows grantee to write the ACL for the applicable bucket.
8985	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
8986
8987	// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
8988	ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"`
8989}
8990
8991// String returns the string representation
8992func (s CreateBucketInput) String() string {
8993	return awsutil.Prettify(s)
8994}
8995
8996// GoString returns the string representation
8997func (s CreateBucketInput) GoString() string {
8998	return s.String()
8999}
9000
9001// Validate inspects the fields of the type to determine if they are valid.
9002func (s *CreateBucketInput) Validate() error {
9003	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
9004	if s.Bucket == nil {
9005		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9006	}
9007	if s.Bucket != nil && len(*s.Bucket) < 1 {
9008		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9009	}
9010
9011	if invalidParams.Len() > 0 {
9012		return invalidParams
9013	}
9014	return nil
9015}
9016
9017// SetACL sets the ACL field's value.
9018func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
9019	s.ACL = &v
9020	return s
9021}
9022
9023// SetBucket sets the Bucket field's value.
9024func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
9025	s.Bucket = &v
9026	return s
9027}
9028
9029func (s *CreateBucketInput) getBucket() (v string) {
9030	if s.Bucket == nil {
9031		return v
9032	}
9033	return *s.Bucket
9034}
9035
9036// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
9037func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
9038	s.CreateBucketConfiguration = v
9039	return s
9040}
9041
9042// SetGrantFullControl sets the GrantFullControl field's value.
9043func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
9044	s.GrantFullControl = &v
9045	return s
9046}
9047
9048// SetGrantRead sets the GrantRead field's value.
9049func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
9050	s.GrantRead = &v
9051	return s
9052}
9053
9054// SetGrantReadACP sets the GrantReadACP field's value.
9055func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
9056	s.GrantReadACP = &v
9057	return s
9058}
9059
9060// SetGrantWrite sets the GrantWrite field's value.
9061func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
9062	s.GrantWrite = &v
9063	return s
9064}
9065
9066// SetGrantWriteACP sets the GrantWriteACP field's value.
9067func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
9068	s.GrantWriteACP = &v
9069	return s
9070}
9071
9072// SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value.
9073func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput {
9074	s.ObjectLockEnabledForBucket = &v
9075	return s
9076}
9077
9078type CreateBucketOutput struct {
9079	_ struct{} `type:"structure"`
9080
9081	Location *string `location:"header" locationName:"Location" type:"string"`
9082}
9083
9084// String returns the string representation
9085func (s CreateBucketOutput) String() string {
9086	return awsutil.Prettify(s)
9087}
9088
9089// GoString returns the string representation
9090func (s CreateBucketOutput) GoString() string {
9091	return s.String()
9092}
9093
9094// SetLocation sets the Location field's value.
9095func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
9096	s.Location = &v
9097	return s
9098}
9099
9100type CreateMultipartUploadInput struct {
9101	_ struct{} `type:"structure"`
9102
9103	// The canned ACL to apply to the object.
9104	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
9105
9106	// Bucket is a required field
9107	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9108
9109	// Specifies caching behavior along the request/reply chain.
9110	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
9111
9112	// Specifies presentational information for the object.
9113	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
9114
9115	// Specifies what content encodings have been applied to the object and thus
9116	// what decoding mechanisms must be applied to obtain the media-type referenced
9117	// by the Content-Type header field.
9118	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
9119
9120	// The language the content is in.
9121	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
9122
9123	// A standard MIME type describing the format of the object data.
9124	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
9125
9126	// The date and time at which the object is no longer cacheable.
9127	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
9128
9129	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
9130	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
9131
9132	// Allows grantee to read the object data and its metadata.
9133	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
9134
9135	// Allows grantee to read the object ACL.
9136	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
9137
9138	// Allows grantee to write the ACL for the applicable object.
9139	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
9140
9141	// Key is a required field
9142	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
9143
9144	// A map of metadata to store with the object in S3.
9145	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
9146
9147	// Specifies whether you want to apply a Legal Hold to the uploaded object.
9148	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
9149
9150	// Specifies the Object Lock mode that you want to apply to the uploaded object.
9151	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
9152
9153	// Specifies the date and time when you want the Object Lock to expire.
9154	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
9155
9156	// Confirms that the requester knows that she or he will be charged for the
9157	// request. Bucket owners need not specify this parameter in their requests.
9158	// Documentation on downloading objects from requester pays buckets can be found
9159	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
9160	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
9161
9162	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
9163	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
9164
9165	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
9166	// data. This value is used to store the object and then it is discarded; Amazon
9167	// does not store the encryption key. The key must be appropriate for use with
9168	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
9169	// header.
9170	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
9171
9172	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
9173	// Amazon S3 uses this header for a message integrity check to ensure the encryption
9174	// key was transmitted without error.
9175	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
9176
9177	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
9178	// requests for an object protected by AWS KMS will fail if not made via SSL
9179	// or using SigV4. Documentation on configuring any of the officially supported
9180	// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
9181	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
9182
9183	// The Server-side encryption algorithm used when storing this object in S3
9184	// (e.g., AES256, aws:kms).
9185	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
9186
9187	// The type of storage to use for the object. Defaults to 'STANDARD'.
9188	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
9189
9190	// The tag-set for the object. The tag-set must be encoded as URL Query parameters
9191	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
9192
9193	// If the bucket is configured as a website, redirects requests for this object
9194	// to another object in the same bucket or to an external URL. Amazon S3 stores
9195	// the value of this header in the object metadata.
9196	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
9197}
9198
9199// String returns the string representation
9200func (s CreateMultipartUploadInput) String() string {
9201	return awsutil.Prettify(s)
9202}
9203
9204// GoString returns the string representation
9205func (s CreateMultipartUploadInput) GoString() string {
9206	return s.String()
9207}
9208
9209// Validate inspects the fields of the type to determine if they are valid.
9210func (s *CreateMultipartUploadInput) Validate() error {
9211	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
9212	if s.Bucket == nil {
9213		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9214	}
9215	if s.Bucket != nil && len(*s.Bucket) < 1 {
9216		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9217	}
9218	if s.Key == nil {
9219		invalidParams.Add(request.NewErrParamRequired("Key"))
9220	}
9221	if s.Key != nil && len(*s.Key) < 1 {
9222		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
9223	}
9224
9225	if invalidParams.Len() > 0 {
9226		return invalidParams
9227	}
9228	return nil
9229}
9230
9231// SetACL sets the ACL field's value.
9232func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
9233	s.ACL = &v
9234	return s
9235}
9236
9237// SetBucket sets the Bucket field's value.
9238func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
9239	s.Bucket = &v
9240	return s
9241}
9242
9243func (s *CreateMultipartUploadInput) getBucket() (v string) {
9244	if s.Bucket == nil {
9245		return v
9246	}
9247	return *s.Bucket
9248}
9249
9250// SetCacheControl sets the CacheControl field's value.
9251func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
9252	s.CacheControl = &v
9253	return s
9254}
9255
9256// SetContentDisposition sets the ContentDisposition field's value.
9257func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
9258	s.ContentDisposition = &v
9259	return s
9260}
9261
9262// SetContentEncoding sets the ContentEncoding field's value.
9263func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
9264	s.ContentEncoding = &v
9265	return s
9266}
9267
9268// SetContentLanguage sets the ContentLanguage field's value.
9269func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
9270	s.ContentLanguage = &v
9271	return s
9272}
9273
9274// SetContentType sets the ContentType field's value.
9275func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
9276	s.ContentType = &v
9277	return s
9278}
9279
9280// SetExpires sets the Expires field's value.
9281func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
9282	s.Expires = &v
9283	return s
9284}
9285
9286// SetGrantFullControl sets the GrantFullControl field's value.
9287func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
9288	s.GrantFullControl = &v
9289	return s
9290}
9291
9292// SetGrantRead sets the GrantRead field's value.
9293func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
9294	s.GrantRead = &v
9295	return s
9296}
9297
9298// SetGrantReadACP sets the GrantReadACP field's value.
9299func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
9300	s.GrantReadACP = &v
9301	return s
9302}
9303
9304// SetGrantWriteACP sets the GrantWriteACP field's value.
9305func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
9306	s.GrantWriteACP = &v
9307	return s
9308}
9309
9310// SetKey sets the Key field's value.
9311func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
9312	s.Key = &v
9313	return s
9314}
9315
9316// SetMetadata sets the Metadata field's value.
9317func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
9318	s.Metadata = v
9319	return s
9320}
9321
9322// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
9323func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput {
9324	s.ObjectLockLegalHoldStatus = &v
9325	return s
9326}
9327
9328// SetObjectLockMode sets the ObjectLockMode field's value.
9329func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput {
9330	s.ObjectLockMode = &v
9331	return s
9332}
9333
9334// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
9335func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput {
9336	s.ObjectLockRetainUntilDate = &v
9337	return s
9338}
9339
9340// SetRequestPayer sets the RequestPayer field's value.
9341func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
9342	s.RequestPayer = &v
9343	return s
9344}
9345
9346// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
9347func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
9348	s.SSECustomerAlgorithm = &v
9349	return s
9350}
9351
9352// SetSSECustomerKey sets the SSECustomerKey field's value.
9353func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
9354	s.SSECustomerKey = &v
9355	return s
9356}
9357
9358func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
9359	if s.SSECustomerKey == nil {
9360		return v
9361	}
9362	return *s.SSECustomerKey
9363}
9364
9365// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
9366func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
9367	s.SSECustomerKeyMD5 = &v
9368	return s
9369}
9370
9371// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
9372func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
9373	s.SSEKMSKeyId = &v
9374	return s
9375}
9376
9377// SetServerSideEncryption sets the ServerSideEncryption field's value.
9378func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
9379	s.ServerSideEncryption = &v
9380	return s
9381}
9382
9383// SetStorageClass sets the StorageClass field's value.
9384func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
9385	s.StorageClass = &v
9386	return s
9387}
9388
9389// SetTagging sets the Tagging field's value.
9390func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
9391	s.Tagging = &v
9392	return s
9393}
9394
9395// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
9396func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
9397	s.WebsiteRedirectLocation = &v
9398	return s
9399}
9400
9401type CreateMultipartUploadOutput struct {
9402	_ struct{} `type:"structure"`
9403
9404	// Date when multipart upload will become eligible for abort operation by lifecycle.
9405	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
9406
9407	// Id of the lifecycle rule that makes a multipart upload eligible for abort
9408	// operation.
9409	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
9410
9411	// Name of the bucket to which the multipart upload was initiated.
9412	Bucket *string `locationName:"Bucket" type:"string"`
9413
9414	// Object key for which the multipart upload was initiated.
9415	Key *string `min:"1" type:"string"`
9416
9417	// If present, indicates that the requester was successfully charged for the
9418	// request.
9419	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
9420
9421	// If server-side encryption with a customer-provided encryption key was requested,
9422	// the response will include this header confirming the encryption algorithm
9423	// used.
9424	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
9425
9426	// If server-side encryption with a customer-provided encryption key was requested,
9427	// the response will include this header to provide round trip message integrity
9428	// verification of the customer-provided encryption key.
9429	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
9430
9431	// If present, specifies the ID of the AWS Key Management Service (KMS) master
9432	// encryption key that was used for the object.
9433	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
9434
9435	// The Server-side encryption algorithm used when storing this object in S3
9436	// (e.g., AES256, aws:kms).
9437	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
9438
9439	// ID for the initiated multipart upload.
9440	UploadId *string `type:"string"`
9441}
9442
9443// String returns the string representation
9444func (s CreateMultipartUploadOutput) String() string {
9445	return awsutil.Prettify(s)
9446}
9447
9448// GoString returns the string representation
9449func (s CreateMultipartUploadOutput) GoString() string {
9450	return s.String()
9451}
9452
9453// SetAbortDate sets the AbortDate field's value.
9454func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
9455	s.AbortDate = &v
9456	return s
9457}
9458
9459// SetAbortRuleId sets the AbortRuleId field's value.
9460func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
9461	s.AbortRuleId = &v
9462	return s
9463}
9464
9465// SetBucket sets the Bucket field's value.
9466func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
9467	s.Bucket = &v
9468	return s
9469}
9470
9471func (s *CreateMultipartUploadOutput) getBucket() (v string) {
9472	if s.Bucket == nil {
9473		return v
9474	}
9475	return *s.Bucket
9476}
9477
9478// SetKey sets the Key field's value.
9479func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
9480	s.Key = &v
9481	return s
9482}
9483
9484// SetRequestCharged sets the RequestCharged field's value.
9485func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
9486	s.RequestCharged = &v
9487	return s
9488}
9489
9490// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
9491func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
9492	s.SSECustomerAlgorithm = &v
9493	return s
9494}
9495
9496// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
9497func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
9498	s.SSECustomerKeyMD5 = &v
9499	return s
9500}
9501
9502// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
9503func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
9504	s.SSEKMSKeyId = &v
9505	return s
9506}
9507
9508// SetServerSideEncryption sets the ServerSideEncryption field's value.
9509func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
9510	s.ServerSideEncryption = &v
9511	return s
9512}
9513
9514// SetUploadId sets the UploadId field's value.
9515func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
9516	s.UploadId = &v
9517	return s
9518}
9519
9520// The container element for specifying the default Object Lock retention settings
9521// for new objects placed in the specified bucket.
9522type DefaultRetention struct {
9523	_ struct{} `type:"structure"`
9524
9525	// The number of days that you want to specify for the default retention period.
9526	Days *int64 `type:"integer"`
9527
9528	// The default Object Lock retention mode you want to apply to new objects placed
9529	// in the specified bucket.
9530	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
9531
9532	// The number of years that you want to specify for the default retention period.
9533	Years *int64 `type:"integer"`
9534}
9535
9536// String returns the string representation
9537func (s DefaultRetention) String() string {
9538	return awsutil.Prettify(s)
9539}
9540
9541// GoString returns the string representation
9542func (s DefaultRetention) GoString() string {
9543	return s.String()
9544}
9545
9546// SetDays sets the Days field's value.
9547func (s *DefaultRetention) SetDays(v int64) *DefaultRetention {
9548	s.Days = &v
9549	return s
9550}
9551
9552// SetMode sets the Mode field's value.
9553func (s *DefaultRetention) SetMode(v string) *DefaultRetention {
9554	s.Mode = &v
9555	return s
9556}
9557
9558// SetYears sets the Years field's value.
9559func (s *DefaultRetention) SetYears(v int64) *DefaultRetention {
9560	s.Years = &v
9561	return s
9562}
9563
9564type Delete struct {
9565	_ struct{} `type:"structure"`
9566
9567	// Objects is a required field
9568	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
9569
9570	// Element to enable quiet mode for the request. When you add this element,
9571	// you must set its value to true.
9572	Quiet *bool `type:"boolean"`
9573}
9574
9575// String returns the string representation
9576func (s Delete) String() string {
9577	return awsutil.Prettify(s)
9578}
9579
9580// GoString returns the string representation
9581func (s Delete) GoString() string {
9582	return s.String()
9583}
9584
9585// Validate inspects the fields of the type to determine if they are valid.
9586func (s *Delete) Validate() error {
9587	invalidParams := request.ErrInvalidParams{Context: "Delete"}
9588	if s.Objects == nil {
9589		invalidParams.Add(request.NewErrParamRequired("Objects"))
9590	}
9591	if s.Objects != nil {
9592		for i, v := range s.Objects {
9593			if v == nil {
9594				continue
9595			}
9596			if err := v.Validate(); err != nil {
9597				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
9598			}
9599		}
9600	}
9601
9602	if invalidParams.Len() > 0 {
9603		return invalidParams
9604	}
9605	return nil
9606}
9607
9608// SetObjects sets the Objects field's value.
9609func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
9610	s.Objects = v
9611	return s
9612}
9613
9614// SetQuiet sets the Quiet field's value.
9615func (s *Delete) SetQuiet(v bool) *Delete {
9616	s.Quiet = &v
9617	return s
9618}
9619
9620type DeleteBucketAnalyticsConfigurationInput struct {
9621	_ struct{} `type:"structure"`
9622
9623	// The name of the bucket from which an analytics configuration is deleted.
9624	//
9625	// Bucket is a required field
9626	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9627
9628	// The identifier used to represent an analytics configuration.
9629	//
9630	// Id is a required field
9631	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
9632}
9633
9634// String returns the string representation
9635func (s DeleteBucketAnalyticsConfigurationInput) String() string {
9636	return awsutil.Prettify(s)
9637}
9638
9639// GoString returns the string representation
9640func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
9641	return s.String()
9642}
9643
9644// Validate inspects the fields of the type to determine if they are valid.
9645func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
9646	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
9647	if s.Bucket == nil {
9648		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9649	}
9650	if s.Bucket != nil && len(*s.Bucket) < 1 {
9651		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9652	}
9653	if s.Id == nil {
9654		invalidParams.Add(request.NewErrParamRequired("Id"))
9655	}
9656
9657	if invalidParams.Len() > 0 {
9658		return invalidParams
9659	}
9660	return nil
9661}
9662
9663// SetBucket sets the Bucket field's value.
9664func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
9665	s.Bucket = &v
9666	return s
9667}
9668
9669func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
9670	if s.Bucket == nil {
9671		return v
9672	}
9673	return *s.Bucket
9674}
9675
9676// SetId sets the Id field's value.
9677func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
9678	s.Id = &v
9679	return s
9680}
9681
9682type DeleteBucketAnalyticsConfigurationOutput struct {
9683	_ struct{} `type:"structure"`
9684}
9685
9686// String returns the string representation
9687func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
9688	return awsutil.Prettify(s)
9689}
9690
9691// GoString returns the string representation
9692func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
9693	return s.String()
9694}
9695
9696type DeleteBucketCorsInput struct {
9697	_ struct{} `type:"structure"`
9698
9699	// Bucket is a required field
9700	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9701}
9702
9703// String returns the string representation
9704func (s DeleteBucketCorsInput) String() string {
9705	return awsutil.Prettify(s)
9706}
9707
9708// GoString returns the string representation
9709func (s DeleteBucketCorsInput) GoString() string {
9710	return s.String()
9711}
9712
9713// Validate inspects the fields of the type to determine if they are valid.
9714func (s *DeleteBucketCorsInput) Validate() error {
9715	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
9716	if s.Bucket == nil {
9717		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9718	}
9719	if s.Bucket != nil && len(*s.Bucket) < 1 {
9720		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9721	}
9722
9723	if invalidParams.Len() > 0 {
9724		return invalidParams
9725	}
9726	return nil
9727}
9728
9729// SetBucket sets the Bucket field's value.
9730func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
9731	s.Bucket = &v
9732	return s
9733}
9734
9735func (s *DeleteBucketCorsInput) getBucket() (v string) {
9736	if s.Bucket == nil {
9737		return v
9738	}
9739	return *s.Bucket
9740}
9741
9742type DeleteBucketCorsOutput struct {
9743	_ struct{} `type:"structure"`
9744}
9745
9746// String returns the string representation
9747func (s DeleteBucketCorsOutput) String() string {
9748	return awsutil.Prettify(s)
9749}
9750
9751// GoString returns the string representation
9752func (s DeleteBucketCorsOutput) GoString() string {
9753	return s.String()
9754}
9755
9756type DeleteBucketEncryptionInput struct {
9757	_ struct{} `type:"structure"`
9758
9759	// The name of the bucket containing the server-side encryption configuration
9760	// to delete.
9761	//
9762	// Bucket is a required field
9763	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9764}
9765
9766// String returns the string representation
9767func (s DeleteBucketEncryptionInput) String() string {
9768	return awsutil.Prettify(s)
9769}
9770
9771// GoString returns the string representation
9772func (s DeleteBucketEncryptionInput) GoString() string {
9773	return s.String()
9774}
9775
9776// Validate inspects the fields of the type to determine if they are valid.
9777func (s *DeleteBucketEncryptionInput) Validate() error {
9778	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
9779	if s.Bucket == nil {
9780		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9781	}
9782	if s.Bucket != nil && len(*s.Bucket) < 1 {
9783		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9784	}
9785
9786	if invalidParams.Len() > 0 {
9787		return invalidParams
9788	}
9789	return nil
9790}
9791
9792// SetBucket sets the Bucket field's value.
9793func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
9794	s.Bucket = &v
9795	return s
9796}
9797
9798func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
9799	if s.Bucket == nil {
9800		return v
9801	}
9802	return *s.Bucket
9803}
9804
9805type DeleteBucketEncryptionOutput struct {
9806	_ struct{} `type:"structure"`
9807}
9808
9809// String returns the string representation
9810func (s DeleteBucketEncryptionOutput) String() string {
9811	return awsutil.Prettify(s)
9812}
9813
9814// GoString returns the string representation
9815func (s DeleteBucketEncryptionOutput) GoString() string {
9816	return s.String()
9817}
9818
9819type DeleteBucketInput struct {
9820	_ struct{} `type:"structure"`
9821
9822	// Bucket is a required field
9823	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9824}
9825
9826// String returns the string representation
9827func (s DeleteBucketInput) String() string {
9828	return awsutil.Prettify(s)
9829}
9830
9831// GoString returns the string representation
9832func (s DeleteBucketInput) GoString() string {
9833	return s.String()
9834}
9835
9836// Validate inspects the fields of the type to determine if they are valid.
9837func (s *DeleteBucketInput) Validate() error {
9838	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
9839	if s.Bucket == nil {
9840		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9841	}
9842	if s.Bucket != nil && len(*s.Bucket) < 1 {
9843		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9844	}
9845
9846	if invalidParams.Len() > 0 {
9847		return invalidParams
9848	}
9849	return nil
9850}
9851
9852// SetBucket sets the Bucket field's value.
9853func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
9854	s.Bucket = &v
9855	return s
9856}
9857
9858func (s *DeleteBucketInput) getBucket() (v string) {
9859	if s.Bucket == nil {
9860		return v
9861	}
9862	return *s.Bucket
9863}
9864
9865type DeleteBucketInventoryConfigurationInput struct {
9866	_ struct{} `type:"structure"`
9867
9868	// The name of the bucket containing the inventory configuration to delete.
9869	//
9870	// Bucket is a required field
9871	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9872
9873	// The ID used to identify the inventory configuration.
9874	//
9875	// Id is a required field
9876	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
9877}
9878
9879// String returns the string representation
9880func (s DeleteBucketInventoryConfigurationInput) String() string {
9881	return awsutil.Prettify(s)
9882}
9883
9884// GoString returns the string representation
9885func (s DeleteBucketInventoryConfigurationInput) GoString() string {
9886	return s.String()
9887}
9888
9889// Validate inspects the fields of the type to determine if they are valid.
9890func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
9891	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
9892	if s.Bucket == nil {
9893		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9894	}
9895	if s.Bucket != nil && len(*s.Bucket) < 1 {
9896		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9897	}
9898	if s.Id == nil {
9899		invalidParams.Add(request.NewErrParamRequired("Id"))
9900	}
9901
9902	if invalidParams.Len() > 0 {
9903		return invalidParams
9904	}
9905	return nil
9906}
9907
9908// SetBucket sets the Bucket field's value.
9909func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
9910	s.Bucket = &v
9911	return s
9912}
9913
9914func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
9915	if s.Bucket == nil {
9916		return v
9917	}
9918	return *s.Bucket
9919}
9920
9921// SetId sets the Id field's value.
9922func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
9923	s.Id = &v
9924	return s
9925}
9926
9927type DeleteBucketInventoryConfigurationOutput struct {
9928	_ struct{} `type:"structure"`
9929}
9930
9931// String returns the string representation
9932func (s DeleteBucketInventoryConfigurationOutput) String() string {
9933	return awsutil.Prettify(s)
9934}
9935
9936// GoString returns the string representation
9937func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
9938	return s.String()
9939}
9940
9941type DeleteBucketLifecycleInput struct {
9942	_ struct{} `type:"structure"`
9943
9944	// Bucket is a required field
9945	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9946}
9947
9948// String returns the string representation
9949func (s DeleteBucketLifecycleInput) String() string {
9950	return awsutil.Prettify(s)
9951}
9952
9953// GoString returns the string representation
9954func (s DeleteBucketLifecycleInput) GoString() string {
9955	return s.String()
9956}
9957
9958// Validate inspects the fields of the type to determine if they are valid.
9959func (s *DeleteBucketLifecycleInput) Validate() error {
9960	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
9961	if s.Bucket == nil {
9962		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9963	}
9964	if s.Bucket != nil && len(*s.Bucket) < 1 {
9965		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
9966	}
9967
9968	if invalidParams.Len() > 0 {
9969		return invalidParams
9970	}
9971	return nil
9972}
9973
9974// SetBucket sets the Bucket field's value.
9975func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
9976	s.Bucket = &v
9977	return s
9978}
9979
9980func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
9981	if s.Bucket == nil {
9982		return v
9983	}
9984	return *s.Bucket
9985}
9986
9987type DeleteBucketLifecycleOutput struct {
9988	_ struct{} `type:"structure"`
9989}
9990
9991// String returns the string representation
9992func (s DeleteBucketLifecycleOutput) String() string {
9993	return awsutil.Prettify(s)
9994}
9995
9996// GoString returns the string representation
9997func (s DeleteBucketLifecycleOutput) GoString() string {
9998	return s.String()
9999}
10000
10001type DeleteBucketMetricsConfigurationInput struct {
10002	_ struct{} `type:"structure"`
10003
10004	// The name of the bucket containing the metrics configuration to delete.
10005	//
10006	// Bucket is a required field
10007	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10008
10009	// The ID used to identify the metrics configuration.
10010	//
10011	// Id is a required field
10012	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
10013}
10014
10015// String returns the string representation
10016func (s DeleteBucketMetricsConfigurationInput) String() string {
10017	return awsutil.Prettify(s)
10018}
10019
10020// GoString returns the string representation
10021func (s DeleteBucketMetricsConfigurationInput) GoString() string {
10022	return s.String()
10023}
10024
10025// Validate inspects the fields of the type to determine if they are valid.
10026func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
10027	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
10028	if s.Bucket == nil {
10029		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10030	}
10031	if s.Bucket != nil && len(*s.Bucket) < 1 {
10032		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10033	}
10034	if s.Id == nil {
10035		invalidParams.Add(request.NewErrParamRequired("Id"))
10036	}
10037
10038	if invalidParams.Len() > 0 {
10039		return invalidParams
10040	}
10041	return nil
10042}
10043
10044// SetBucket sets the Bucket field's value.
10045func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
10046	s.Bucket = &v
10047	return s
10048}
10049
10050func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
10051	if s.Bucket == nil {
10052		return v
10053	}
10054	return *s.Bucket
10055}
10056
10057// SetId sets the Id field's value.
10058func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
10059	s.Id = &v
10060	return s
10061}
10062
10063type DeleteBucketMetricsConfigurationOutput struct {
10064	_ struct{} `type:"structure"`
10065}
10066
10067// String returns the string representation
10068func (s DeleteBucketMetricsConfigurationOutput) String() string {
10069	return awsutil.Prettify(s)
10070}
10071
10072// GoString returns the string representation
10073func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
10074	return s.String()
10075}
10076
10077type DeleteBucketOutput struct {
10078	_ struct{} `type:"structure"`
10079}
10080
10081// String returns the string representation
10082func (s DeleteBucketOutput) String() string {
10083	return awsutil.Prettify(s)
10084}
10085
10086// GoString returns the string representation
10087func (s DeleteBucketOutput) GoString() string {
10088	return s.String()
10089}
10090
10091type DeleteBucketPolicyInput struct {
10092	_ struct{} `type:"structure"`
10093
10094	// Bucket is a required field
10095	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10096}
10097
10098// String returns the string representation
10099func (s DeleteBucketPolicyInput) String() string {
10100	return awsutil.Prettify(s)
10101}
10102
10103// GoString returns the string representation
10104func (s DeleteBucketPolicyInput) GoString() string {
10105	return s.String()
10106}
10107
10108// Validate inspects the fields of the type to determine if they are valid.
10109func (s *DeleteBucketPolicyInput) Validate() error {
10110	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
10111	if s.Bucket == nil {
10112		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10113	}
10114	if s.Bucket != nil && len(*s.Bucket) < 1 {
10115		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10116	}
10117
10118	if invalidParams.Len() > 0 {
10119		return invalidParams
10120	}
10121	return nil
10122}
10123
10124// SetBucket sets the Bucket field's value.
10125func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
10126	s.Bucket = &v
10127	return s
10128}
10129
10130func (s *DeleteBucketPolicyInput) getBucket() (v string) {
10131	if s.Bucket == nil {
10132		return v
10133	}
10134	return *s.Bucket
10135}
10136
10137type DeleteBucketPolicyOutput struct {
10138	_ struct{} `type:"structure"`
10139}
10140
10141// String returns the string representation
10142func (s DeleteBucketPolicyOutput) String() string {
10143	return awsutil.Prettify(s)
10144}
10145
10146// GoString returns the string representation
10147func (s DeleteBucketPolicyOutput) GoString() string {
10148	return s.String()
10149}
10150
10151type DeleteBucketReplicationInput struct {
10152	_ struct{} `type:"structure"`
10153
10154	// The bucket name.
10155	//
10156	// It can take a while to propagate the deletion of a replication configuration
10157	// to all Amazon S3 systems.
10158	//
10159	// Bucket is a required field
10160	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10161}
10162
10163// String returns the string representation
10164func (s DeleteBucketReplicationInput) String() string {
10165	return awsutil.Prettify(s)
10166}
10167
10168// GoString returns the string representation
10169func (s DeleteBucketReplicationInput) GoString() string {
10170	return s.String()
10171}
10172
10173// Validate inspects the fields of the type to determine if they are valid.
10174func (s *DeleteBucketReplicationInput) Validate() error {
10175	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
10176	if s.Bucket == nil {
10177		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10178	}
10179	if s.Bucket != nil && len(*s.Bucket) < 1 {
10180		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10181	}
10182
10183	if invalidParams.Len() > 0 {
10184		return invalidParams
10185	}
10186	return nil
10187}
10188
10189// SetBucket sets the Bucket field's value.
10190func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
10191	s.Bucket = &v
10192	return s
10193}
10194
10195func (s *DeleteBucketReplicationInput) getBucket() (v string) {
10196	if s.Bucket == nil {
10197		return v
10198	}
10199	return *s.Bucket
10200}
10201
10202type DeleteBucketReplicationOutput struct {
10203	_ struct{} `type:"structure"`
10204}
10205
10206// String returns the string representation
10207func (s DeleteBucketReplicationOutput) String() string {
10208	return awsutil.Prettify(s)
10209}
10210
10211// GoString returns the string representation
10212func (s DeleteBucketReplicationOutput) GoString() string {
10213	return s.String()
10214}
10215
10216type DeleteBucketTaggingInput struct {
10217	_ struct{} `type:"structure"`
10218
10219	// Bucket is a required field
10220	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10221}
10222
10223// String returns the string representation
10224func (s DeleteBucketTaggingInput) String() string {
10225	return awsutil.Prettify(s)
10226}
10227
10228// GoString returns the string representation
10229func (s DeleteBucketTaggingInput) GoString() string {
10230	return s.String()
10231}
10232
10233// Validate inspects the fields of the type to determine if they are valid.
10234func (s *DeleteBucketTaggingInput) Validate() error {
10235	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
10236	if s.Bucket == nil {
10237		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10238	}
10239	if s.Bucket != nil && len(*s.Bucket) < 1 {
10240		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10241	}
10242
10243	if invalidParams.Len() > 0 {
10244		return invalidParams
10245	}
10246	return nil
10247}
10248
10249// SetBucket sets the Bucket field's value.
10250func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
10251	s.Bucket = &v
10252	return s
10253}
10254
10255func (s *DeleteBucketTaggingInput) getBucket() (v string) {
10256	if s.Bucket == nil {
10257		return v
10258	}
10259	return *s.Bucket
10260}
10261
10262type DeleteBucketTaggingOutput struct {
10263	_ struct{} `type:"structure"`
10264}
10265
10266// String returns the string representation
10267func (s DeleteBucketTaggingOutput) String() string {
10268	return awsutil.Prettify(s)
10269}
10270
10271// GoString returns the string representation
10272func (s DeleteBucketTaggingOutput) GoString() string {
10273	return s.String()
10274}
10275
10276type DeleteBucketWebsiteInput struct {
10277	_ struct{} `type:"structure"`
10278
10279	// Bucket is a required field
10280	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10281}
10282
10283// String returns the string representation
10284func (s DeleteBucketWebsiteInput) String() string {
10285	return awsutil.Prettify(s)
10286}
10287
10288// GoString returns the string representation
10289func (s DeleteBucketWebsiteInput) GoString() string {
10290	return s.String()
10291}
10292
10293// Validate inspects the fields of the type to determine if they are valid.
10294func (s *DeleteBucketWebsiteInput) Validate() error {
10295	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
10296	if s.Bucket == nil {
10297		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10298	}
10299	if s.Bucket != nil && len(*s.Bucket) < 1 {
10300		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10301	}
10302
10303	if invalidParams.Len() > 0 {
10304		return invalidParams
10305	}
10306	return nil
10307}
10308
10309// SetBucket sets the Bucket field's value.
10310func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
10311	s.Bucket = &v
10312	return s
10313}
10314
10315func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
10316	if s.Bucket == nil {
10317		return v
10318	}
10319	return *s.Bucket
10320}
10321
10322type DeleteBucketWebsiteOutput struct {
10323	_ struct{} `type:"structure"`
10324}
10325
10326// String returns the string representation
10327func (s DeleteBucketWebsiteOutput) String() string {
10328	return awsutil.Prettify(s)
10329}
10330
10331// GoString returns the string representation
10332func (s DeleteBucketWebsiteOutput) GoString() string {
10333	return s.String()
10334}
10335
10336type DeleteMarkerEntry struct {
10337	_ struct{} `type:"structure"`
10338
10339	// Specifies whether the object is (true) or is not (false) the latest version
10340	// of an object.
10341	IsLatest *bool `type:"boolean"`
10342
10343	// The object key.
10344	Key *string `min:"1" type:"string"`
10345
10346	// Date and time the object was last modified.
10347	LastModified *time.Time `type:"timestamp"`
10348
10349	Owner *Owner `type:"structure"`
10350
10351	// Version ID of an object.
10352	VersionId *string `type:"string"`
10353}
10354
10355// String returns the string representation
10356func (s DeleteMarkerEntry) String() string {
10357	return awsutil.Prettify(s)
10358}
10359
10360// GoString returns the string representation
10361func (s DeleteMarkerEntry) GoString() string {
10362	return s.String()
10363}
10364
10365// SetIsLatest sets the IsLatest field's value.
10366func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
10367	s.IsLatest = &v
10368	return s
10369}
10370
10371// SetKey sets the Key field's value.
10372func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
10373	s.Key = &v
10374	return s
10375}
10376
10377// SetLastModified sets the LastModified field's value.
10378func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
10379	s.LastModified = &v
10380	return s
10381}
10382
10383// SetOwner sets the Owner field's value.
10384func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
10385	s.Owner = v
10386	return s
10387}
10388
10389// SetVersionId sets the VersionId field's value.
10390func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
10391	s.VersionId = &v
10392	return s
10393}
10394
10395// Specifies whether Amazon S3 should replicate delete makers.
10396type DeleteMarkerReplication struct {
10397	_ struct{} `type:"structure"`
10398
10399	// The status of the delete marker replication.
10400	//
10401	// In the current implementation, Amazon S3 doesn't replicate the delete markers.
10402	// The status must be Disabled.
10403	Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
10404}
10405
10406// String returns the string representation
10407func (s DeleteMarkerReplication) String() string {
10408	return awsutil.Prettify(s)
10409}
10410
10411// GoString returns the string representation
10412func (s DeleteMarkerReplication) GoString() string {
10413	return s.String()
10414}
10415
10416// SetStatus sets the Status field's value.
10417func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication {
10418	s.Status = &v
10419	return s
10420}
10421
10422type DeleteObjectInput struct {
10423	_ struct{} `type:"structure"`
10424
10425	// Bucket is a required field
10426	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10427
10428	// Indicates whether S3 Object Lock should bypass Governance-mode restrictions
10429	// to process this operation.
10430	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
10431
10432	// Key is a required field
10433	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
10434
10435	// The concatenation of the authentication device's serial number, a space,
10436	// and the value that is displayed on your authentication device.
10437	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
10438
10439	// Confirms that the requester knows that she or he will be charged for the
10440	// request. Bucket owners need not specify this parameter in their requests.
10441	// Documentation on downloading objects from requester pays buckets can be found
10442	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
10443	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
10444
10445	// VersionId used to reference a specific version of the object.
10446	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
10447}
10448
10449// String returns the string representation
10450func (s DeleteObjectInput) String() string {
10451	return awsutil.Prettify(s)
10452}
10453
10454// GoString returns the string representation
10455func (s DeleteObjectInput) GoString() string {
10456	return s.String()
10457}
10458
10459// Validate inspects the fields of the type to determine if they are valid.
10460func (s *DeleteObjectInput) Validate() error {
10461	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
10462	if s.Bucket == nil {
10463		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10464	}
10465	if s.Bucket != nil && len(*s.Bucket) < 1 {
10466		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10467	}
10468	if s.Key == nil {
10469		invalidParams.Add(request.NewErrParamRequired("Key"))
10470	}
10471	if s.Key != nil && len(*s.Key) < 1 {
10472		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
10473	}
10474
10475	if invalidParams.Len() > 0 {
10476		return invalidParams
10477	}
10478	return nil
10479}
10480
10481// SetBucket sets the Bucket field's value.
10482func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
10483	s.Bucket = &v
10484	return s
10485}
10486
10487func (s *DeleteObjectInput) getBucket() (v string) {
10488	if s.Bucket == nil {
10489		return v
10490	}
10491	return *s.Bucket
10492}
10493
10494// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
10495func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput {
10496	s.BypassGovernanceRetention = &v
10497	return s
10498}
10499
10500// SetKey sets the Key field's value.
10501func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
10502	s.Key = &v
10503	return s
10504}
10505
10506// SetMFA sets the MFA field's value.
10507func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
10508	s.MFA = &v
10509	return s
10510}
10511
10512// SetRequestPayer sets the RequestPayer field's value.
10513func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
10514	s.RequestPayer = &v
10515	return s
10516}
10517
10518// SetVersionId sets the VersionId field's value.
10519func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
10520	s.VersionId = &v
10521	return s
10522}
10523
10524type DeleteObjectOutput struct {
10525	_ struct{} `type:"structure"`
10526
10527	// Specifies whether the versioned object that was permanently deleted was (true)
10528	// or was not (false) a delete marker.
10529	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
10530
10531	// If present, indicates that the requester was successfully charged for the
10532	// request.
10533	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
10534
10535	// Returns the version ID of the delete marker created as a result of the DELETE
10536	// operation.
10537	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
10538}
10539
10540// String returns the string representation
10541func (s DeleteObjectOutput) String() string {
10542	return awsutil.Prettify(s)
10543}
10544
10545// GoString returns the string representation
10546func (s DeleteObjectOutput) GoString() string {
10547	return s.String()
10548}
10549
10550// SetDeleteMarker sets the DeleteMarker field's value.
10551func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
10552	s.DeleteMarker = &v
10553	return s
10554}
10555
10556// SetRequestCharged sets the RequestCharged field's value.
10557func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
10558	s.RequestCharged = &v
10559	return s
10560}
10561
10562// SetVersionId sets the VersionId field's value.
10563func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
10564	s.VersionId = &v
10565	return s
10566}
10567
10568type DeleteObjectTaggingInput struct {
10569	_ struct{} `type:"structure"`
10570
10571	// Bucket is a required field
10572	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10573
10574	// Key is a required field
10575	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
10576
10577	// The versionId of the object that the tag-set will be removed from.
10578	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
10579}
10580
10581// String returns the string representation
10582func (s DeleteObjectTaggingInput) String() string {
10583	return awsutil.Prettify(s)
10584}
10585
10586// GoString returns the string representation
10587func (s DeleteObjectTaggingInput) GoString() string {
10588	return s.String()
10589}
10590
10591// Validate inspects the fields of the type to determine if they are valid.
10592func (s *DeleteObjectTaggingInput) Validate() error {
10593	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
10594	if s.Bucket == nil {
10595		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10596	}
10597	if s.Bucket != nil && len(*s.Bucket) < 1 {
10598		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10599	}
10600	if s.Key == nil {
10601		invalidParams.Add(request.NewErrParamRequired("Key"))
10602	}
10603	if s.Key != nil && len(*s.Key) < 1 {
10604		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
10605	}
10606
10607	if invalidParams.Len() > 0 {
10608		return invalidParams
10609	}
10610	return nil
10611}
10612
10613// SetBucket sets the Bucket field's value.
10614func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
10615	s.Bucket = &v
10616	return s
10617}
10618
10619func (s *DeleteObjectTaggingInput) getBucket() (v string) {
10620	if s.Bucket == nil {
10621		return v
10622	}
10623	return *s.Bucket
10624}
10625
10626// SetKey sets the Key field's value.
10627func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
10628	s.Key = &v
10629	return s
10630}
10631
10632// SetVersionId sets the VersionId field's value.
10633func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
10634	s.VersionId = &v
10635	return s
10636}
10637
10638type DeleteObjectTaggingOutput struct {
10639	_ struct{} `type:"structure"`
10640
10641	// The versionId of the object the tag-set was removed from.
10642	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
10643}
10644
10645// String returns the string representation
10646func (s DeleteObjectTaggingOutput) String() string {
10647	return awsutil.Prettify(s)
10648}
10649
10650// GoString returns the string representation
10651func (s DeleteObjectTaggingOutput) GoString() string {
10652	return s.String()
10653}
10654
10655// SetVersionId sets the VersionId field's value.
10656func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
10657	s.VersionId = &v
10658	return s
10659}
10660
10661type DeleteObjectsInput struct {
10662	_ struct{} `type:"structure" payload:"Delete"`
10663
10664	// Bucket is a required field
10665	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10666
10667	// Specifies whether you want to delete this object even if it has a Governance-type
10668	// Object Lock in place. You must have sufficient permissions to perform this
10669	// operation.
10670	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
10671
10672	// Delete is a required field
10673	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
10674
10675	// The concatenation of the authentication device's serial number, a space,
10676	// and the value that is displayed on your authentication device.
10677	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
10678
10679	// Confirms that the requester knows that she or he will be charged for the
10680	// request. Bucket owners need not specify this parameter in their requests.
10681	// Documentation on downloading objects from requester pays buckets can be found
10682	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
10683	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
10684}
10685
10686// String returns the string representation
10687func (s DeleteObjectsInput) String() string {
10688	return awsutil.Prettify(s)
10689}
10690
10691// GoString returns the string representation
10692func (s DeleteObjectsInput) GoString() string {
10693	return s.String()
10694}
10695
10696// Validate inspects the fields of the type to determine if they are valid.
10697func (s *DeleteObjectsInput) Validate() error {
10698	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
10699	if s.Bucket == nil {
10700		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10701	}
10702	if s.Bucket != nil && len(*s.Bucket) < 1 {
10703		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10704	}
10705	if s.Delete == nil {
10706		invalidParams.Add(request.NewErrParamRequired("Delete"))
10707	}
10708	if s.Delete != nil {
10709		if err := s.Delete.Validate(); err != nil {
10710			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
10711		}
10712	}
10713
10714	if invalidParams.Len() > 0 {
10715		return invalidParams
10716	}
10717	return nil
10718}
10719
10720// SetBucket sets the Bucket field's value.
10721func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
10722	s.Bucket = &v
10723	return s
10724}
10725
10726func (s *DeleteObjectsInput) getBucket() (v string) {
10727	if s.Bucket == nil {
10728		return v
10729	}
10730	return *s.Bucket
10731}
10732
10733// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
10734func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput {
10735	s.BypassGovernanceRetention = &v
10736	return s
10737}
10738
10739// SetDelete sets the Delete field's value.
10740func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
10741	s.Delete = v
10742	return s
10743}
10744
10745// SetMFA sets the MFA field's value.
10746func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
10747	s.MFA = &v
10748	return s
10749}
10750
10751// SetRequestPayer sets the RequestPayer field's value.
10752func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
10753	s.RequestPayer = &v
10754	return s
10755}
10756
10757type DeleteObjectsOutput struct {
10758	_ struct{} `type:"structure"`
10759
10760	Deleted []*DeletedObject `type:"list" flattened:"true"`
10761
10762	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
10763
10764	// If present, indicates that the requester was successfully charged for the
10765	// request.
10766	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
10767}
10768
10769// String returns the string representation
10770func (s DeleteObjectsOutput) String() string {
10771	return awsutil.Prettify(s)
10772}
10773
10774// GoString returns the string representation
10775func (s DeleteObjectsOutput) GoString() string {
10776	return s.String()
10777}
10778
10779// SetDeleted sets the Deleted field's value.
10780func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
10781	s.Deleted = v
10782	return s
10783}
10784
10785// SetErrors sets the Errors field's value.
10786func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
10787	s.Errors = v
10788	return s
10789}
10790
10791// SetRequestCharged sets the RequestCharged field's value.
10792func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
10793	s.RequestCharged = &v
10794	return s
10795}
10796
10797type DeletePublicAccessBlockInput struct {
10798	_ struct{} `type:"structure"`
10799
10800	// The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.
10801	//
10802	// Bucket is a required field
10803	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10804}
10805
10806// String returns the string representation
10807func (s DeletePublicAccessBlockInput) String() string {
10808	return awsutil.Prettify(s)
10809}
10810
10811// GoString returns the string representation
10812func (s DeletePublicAccessBlockInput) GoString() string {
10813	return s.String()
10814}
10815
10816// Validate inspects the fields of the type to determine if they are valid.
10817func (s *DeletePublicAccessBlockInput) Validate() error {
10818	invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"}
10819	if s.Bucket == nil {
10820		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10821	}
10822	if s.Bucket != nil && len(*s.Bucket) < 1 {
10823		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10824	}
10825
10826	if invalidParams.Len() > 0 {
10827		return invalidParams
10828	}
10829	return nil
10830}
10831
10832// SetBucket sets the Bucket field's value.
10833func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput {
10834	s.Bucket = &v
10835	return s
10836}
10837
10838func (s *DeletePublicAccessBlockInput) getBucket() (v string) {
10839	if s.Bucket == nil {
10840		return v
10841	}
10842	return *s.Bucket
10843}
10844
10845type DeletePublicAccessBlockOutput struct {
10846	_ struct{} `type:"structure"`
10847}
10848
10849// String returns the string representation
10850func (s DeletePublicAccessBlockOutput) String() string {
10851	return awsutil.Prettify(s)
10852}
10853
10854// GoString returns the string representation
10855func (s DeletePublicAccessBlockOutput) GoString() string {
10856	return s.String()
10857}
10858
10859type DeletedObject struct {
10860	_ struct{} `type:"structure"`
10861
10862	DeleteMarker *bool `type:"boolean"`
10863
10864	DeleteMarkerVersionId *string `type:"string"`
10865
10866	Key *string `min:"1" type:"string"`
10867
10868	VersionId *string `type:"string"`
10869}
10870
10871// String returns the string representation
10872func (s DeletedObject) String() string {
10873	return awsutil.Prettify(s)
10874}
10875
10876// GoString returns the string representation
10877func (s DeletedObject) GoString() string {
10878	return s.String()
10879}
10880
10881// SetDeleteMarker sets the DeleteMarker field's value.
10882func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
10883	s.DeleteMarker = &v
10884	return s
10885}
10886
10887// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
10888func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
10889	s.DeleteMarkerVersionId = &v
10890	return s
10891}
10892
10893// SetKey sets the Key field's value.
10894func (s *DeletedObject) SetKey(v string) *DeletedObject {
10895	s.Key = &v
10896	return s
10897}
10898
10899// SetVersionId sets the VersionId field's value.
10900func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
10901	s.VersionId = &v
10902	return s
10903}
10904
10905// A container for information about the replication destination.
10906type Destination struct {
10907	_ struct{} `type:"structure"`
10908
10909	// A container for information about access control for replicas.
10910	//
10911	// Use this element only in a cross-account scenario where source and destination
10912	// bucket owners are not the same to change replica ownership to the AWS account
10913	// that owns the destination bucket. If you don't add this element to the replication
10914	// configuration, the replicas are owned by same AWS account that owns the source
10915	// object.
10916	AccessControlTranslation *AccessControlTranslation `type:"structure"`
10917
10918	// The account ID of the destination bucket. Currently, Amazon S3 verifies this
10919	// value only if Access Control Translation is enabled.
10920	//
10921	// In a cross-account scenario, if you change replica ownership to the AWS account
10922	// that owns the destination bucket by adding the AccessControlTranslation element,
10923	// this is the account ID of the owner of the destination bucket.
10924	Account *string `type:"string"`
10925
10926	// The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
10927	// store replicas of the object identified by the rule.
10928	//
10929	// If there are multiple rules in your replication configuration, all rules
10930	// must specify the same bucket as the destination. A replication configuration
10931	// can replicate objects to only one destination bucket.
10932	//
10933	// Bucket is a required field
10934	Bucket *string `type:"string" required:"true"`
10935
10936	// A container that provides information about encryption. If SourceSelectionCriteria
10937	// is specified, you must specify this element.
10938	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
10939
10940	// The class of storage used to store the object. By default Amazon S3 uses
10941	// storage class of the source object when creating a replica.
10942	StorageClass *string `type:"string" enum:"StorageClass"`
10943}
10944
10945// String returns the string representation
10946func (s Destination) String() string {
10947	return awsutil.Prettify(s)
10948}
10949
10950// GoString returns the string representation
10951func (s Destination) GoString() string {
10952	return s.String()
10953}
10954
10955// Validate inspects the fields of the type to determine if they are valid.
10956func (s *Destination) Validate() error {
10957	invalidParams := request.ErrInvalidParams{Context: "Destination"}
10958	if s.Bucket == nil {
10959		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10960	}
10961	if s.AccessControlTranslation != nil {
10962		if err := s.AccessControlTranslation.Validate(); err != nil {
10963			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
10964		}
10965	}
10966
10967	if invalidParams.Len() > 0 {
10968		return invalidParams
10969	}
10970	return nil
10971}
10972
10973// SetAccessControlTranslation sets the AccessControlTranslation field's value.
10974func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
10975	s.AccessControlTranslation = v
10976	return s
10977}
10978
10979// SetAccount sets the Account field's value.
10980func (s *Destination) SetAccount(v string) *Destination {
10981	s.Account = &v
10982	return s
10983}
10984
10985// SetBucket sets the Bucket field's value.
10986func (s *Destination) SetBucket(v string) *Destination {
10987	s.Bucket = &v
10988	return s
10989}
10990
10991func (s *Destination) getBucket() (v string) {
10992	if s.Bucket == nil {
10993		return v
10994	}
10995	return *s.Bucket
10996}
10997
10998// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
10999func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
11000	s.EncryptionConfiguration = v
11001	return s
11002}
11003
11004// SetStorageClass sets the StorageClass field's value.
11005func (s *Destination) SetStorageClass(v string) *Destination {
11006	s.StorageClass = &v
11007	return s
11008}
11009
11010// Describes the server-side encryption that will be applied to the restore
11011// results.
11012type Encryption struct {
11013	_ struct{} `type:"structure"`
11014
11015	// The server-side encryption algorithm used when storing job results in Amazon
11016	// S3 (e.g., AES256, aws:kms).
11017	//
11018	// EncryptionType is a required field
11019	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
11020
11021	// If the encryption type is aws:kms, this optional value can be used to specify
11022	// the encryption context for the restore results.
11023	KMSContext *string `type:"string"`
11024
11025	// If the encryption type is aws:kms, this optional value specifies the AWS
11026	// KMS key ID to use for encryption of job results.
11027	KMSKeyId *string `type:"string" sensitive:"true"`
11028}
11029
11030// String returns the string representation
11031func (s Encryption) String() string {
11032	return awsutil.Prettify(s)
11033}
11034
11035// GoString returns the string representation
11036func (s Encryption) GoString() string {
11037	return s.String()
11038}
11039
11040// Validate inspects the fields of the type to determine if they are valid.
11041func (s *Encryption) Validate() error {
11042	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
11043	if s.EncryptionType == nil {
11044		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
11045	}
11046
11047	if invalidParams.Len() > 0 {
11048		return invalidParams
11049	}
11050	return nil
11051}
11052
11053// SetEncryptionType sets the EncryptionType field's value.
11054func (s *Encryption) SetEncryptionType(v string) *Encryption {
11055	s.EncryptionType = &v
11056	return s
11057}
11058
11059// SetKMSContext sets the KMSContext field's value.
11060func (s *Encryption) SetKMSContext(v string) *Encryption {
11061	s.KMSContext = &v
11062	return s
11063}
11064
11065// SetKMSKeyId sets the KMSKeyId field's value.
11066func (s *Encryption) SetKMSKeyId(v string) *Encryption {
11067	s.KMSKeyId = &v
11068	return s
11069}
11070
11071// A container for information about the encryption-based configuration for
11072// replicas.
11073type EncryptionConfiguration struct {
11074	_ struct{} `type:"structure"`
11075
11076	// The ID of the AWS KMS key for the AWS Region where the destination bucket
11077	// resides. Amazon S3 uses this key to encrypt the replica object.
11078	ReplicaKmsKeyID *string `type:"string"`
11079}
11080
11081// String returns the string representation
11082func (s EncryptionConfiguration) String() string {
11083	return awsutil.Prettify(s)
11084}
11085
11086// GoString returns the string representation
11087func (s EncryptionConfiguration) GoString() string {
11088	return s.String()
11089}
11090
11091// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
11092func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
11093	s.ReplicaKmsKeyID = &v
11094	return s
11095}
11096
11097type EndEvent struct {
11098	_ struct{} `locationName:"EndEvent" type:"structure"`
11099}
11100
11101// String returns the string representation
11102func (s EndEvent) String() string {
11103	return awsutil.Prettify(s)
11104}
11105
11106// GoString returns the string representation
11107func (s EndEvent) GoString() string {
11108	return s.String()
11109}
11110
11111// The EndEvent is and event in the SelectObjectContentEventStream group of events.
11112func (s *EndEvent) eventSelectObjectContentEventStream() {}
11113
11114// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
11115// This method is only used internally within the SDK's EventStream handling.
11116func (s *EndEvent) UnmarshalEvent(
11117	payloadUnmarshaler protocol.PayloadUnmarshaler,
11118	msg eventstream.Message,
11119) error {
11120	return nil
11121}
11122
11123type Error struct {
11124	_ struct{} `type:"structure"`
11125
11126	Code *string `type:"string"`
11127
11128	Key *string `min:"1" type:"string"`
11129
11130	Message *string `type:"string"`
11131
11132	VersionId *string `type:"string"`
11133}
11134
11135// String returns the string representation
11136func (s Error) String() string {
11137	return awsutil.Prettify(s)
11138}
11139
11140// GoString returns the string representation
11141func (s Error) GoString() string {
11142	return s.String()
11143}
11144
11145// SetCode sets the Code field's value.
11146func (s *Error) SetCode(v string) *Error {
11147	s.Code = &v
11148	return s
11149}
11150
11151// SetKey sets the Key field's value.
11152func (s *Error) SetKey(v string) *Error {
11153	s.Key = &v
11154	return s
11155}
11156
11157// SetMessage sets the Message field's value.
11158func (s *Error) SetMessage(v string) *Error {
11159	s.Message = &v
11160	return s
11161}
11162
11163// SetVersionId sets the VersionId field's value.
11164func (s *Error) SetVersionId(v string) *Error {
11165	s.VersionId = &v
11166	return s
11167}
11168
11169type ErrorDocument struct {
11170	_ struct{} `type:"structure"`
11171
11172	// The object key name to use when a 4XX class error occurs.
11173	//
11174	// Key is a required field
11175	Key *string `min:"1" type:"string" required:"true"`
11176}
11177
11178// String returns the string representation
11179func (s ErrorDocument) String() string {
11180	return awsutil.Prettify(s)
11181}
11182
11183// GoString returns the string representation
11184func (s ErrorDocument) GoString() string {
11185	return s.String()
11186}
11187
11188// Validate inspects the fields of the type to determine if they are valid.
11189func (s *ErrorDocument) Validate() error {
11190	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
11191	if s.Key == nil {
11192		invalidParams.Add(request.NewErrParamRequired("Key"))
11193	}
11194	if s.Key != nil && len(*s.Key) < 1 {
11195		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11196	}
11197
11198	if invalidParams.Len() > 0 {
11199		return invalidParams
11200	}
11201	return nil
11202}
11203
11204// SetKey sets the Key field's value.
11205func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
11206	s.Key = &v
11207	return s
11208}
11209
11210// A container for a key value pair that defines the criteria for the filter
11211// rule.
11212type FilterRule struct {
11213	_ struct{} `type:"structure"`
11214
11215	// The object key name prefix or suffix identifying one or more objects to which
11216	// the filtering rule applies. The maximum prefix length is 1,024 characters.
11217	// Overlapping prefixes and suffixes are not supported. For more information,
11218	// see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
11219	// in the Amazon Simple Storage Service Developer Guide.
11220	Name *string `type:"string" enum:"FilterRuleName"`
11221
11222	Value *string `type:"string"`
11223}
11224
11225// String returns the string representation
11226func (s FilterRule) String() string {
11227	return awsutil.Prettify(s)
11228}
11229
11230// GoString returns the string representation
11231func (s FilterRule) GoString() string {
11232	return s.String()
11233}
11234
11235// SetName sets the Name field's value.
11236func (s *FilterRule) SetName(v string) *FilterRule {
11237	s.Name = &v
11238	return s
11239}
11240
11241// SetValue sets the Value field's value.
11242func (s *FilterRule) SetValue(v string) *FilterRule {
11243	s.Value = &v
11244	return s
11245}
11246
11247type GetBucketAccelerateConfigurationInput struct {
11248	_ struct{} `type:"structure"`
11249
11250	// Name of the bucket for which the accelerate configuration is retrieved.
11251	//
11252	// Bucket is a required field
11253	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11254}
11255
11256// String returns the string representation
11257func (s GetBucketAccelerateConfigurationInput) String() string {
11258	return awsutil.Prettify(s)
11259}
11260
11261// GoString returns the string representation
11262func (s GetBucketAccelerateConfigurationInput) GoString() string {
11263	return s.String()
11264}
11265
11266// Validate inspects the fields of the type to determine if they are valid.
11267func (s *GetBucketAccelerateConfigurationInput) Validate() error {
11268	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
11269	if s.Bucket == nil {
11270		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11271	}
11272	if s.Bucket != nil && len(*s.Bucket) < 1 {
11273		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11274	}
11275
11276	if invalidParams.Len() > 0 {
11277		return invalidParams
11278	}
11279	return nil
11280}
11281
11282// SetBucket sets the Bucket field's value.
11283func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
11284	s.Bucket = &v
11285	return s
11286}
11287
11288func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
11289	if s.Bucket == nil {
11290		return v
11291	}
11292	return *s.Bucket
11293}
11294
11295type GetBucketAccelerateConfigurationOutput struct {
11296	_ struct{} `type:"structure"`
11297
11298	// The accelerate configuration of the bucket.
11299	Status *string `type:"string" enum:"BucketAccelerateStatus"`
11300}
11301
11302// String returns the string representation
11303func (s GetBucketAccelerateConfigurationOutput) String() string {
11304	return awsutil.Prettify(s)
11305}
11306
11307// GoString returns the string representation
11308func (s GetBucketAccelerateConfigurationOutput) GoString() string {
11309	return s.String()
11310}
11311
11312// SetStatus sets the Status field's value.
11313func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
11314	s.Status = &v
11315	return s
11316}
11317
11318type GetBucketAclInput struct {
11319	_ struct{} `type:"structure"`
11320
11321	// Bucket is a required field
11322	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11323}
11324
11325// String returns the string representation
11326func (s GetBucketAclInput) String() string {
11327	return awsutil.Prettify(s)
11328}
11329
11330// GoString returns the string representation
11331func (s GetBucketAclInput) GoString() string {
11332	return s.String()
11333}
11334
11335// Validate inspects the fields of the type to determine if they are valid.
11336func (s *GetBucketAclInput) Validate() error {
11337	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
11338	if s.Bucket == nil {
11339		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11340	}
11341	if s.Bucket != nil && len(*s.Bucket) < 1 {
11342		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11343	}
11344
11345	if invalidParams.Len() > 0 {
11346		return invalidParams
11347	}
11348	return nil
11349}
11350
11351// SetBucket sets the Bucket field's value.
11352func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
11353	s.Bucket = &v
11354	return s
11355}
11356
11357func (s *GetBucketAclInput) getBucket() (v string) {
11358	if s.Bucket == nil {
11359		return v
11360	}
11361	return *s.Bucket
11362}
11363
11364type GetBucketAclOutput struct {
11365	_ struct{} `type:"structure"`
11366
11367	// A list of grants.
11368	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
11369
11370	Owner *Owner `type:"structure"`
11371}
11372
11373// String returns the string representation
11374func (s GetBucketAclOutput) String() string {
11375	return awsutil.Prettify(s)
11376}
11377
11378// GoString returns the string representation
11379func (s GetBucketAclOutput) GoString() string {
11380	return s.String()
11381}
11382
11383// SetGrants sets the Grants field's value.
11384func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
11385	s.Grants = v
11386	return s
11387}
11388
11389// SetOwner sets the Owner field's value.
11390func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
11391	s.Owner = v
11392	return s
11393}
11394
11395type GetBucketAnalyticsConfigurationInput struct {
11396	_ struct{} `type:"structure"`
11397
11398	// The name of the bucket from which an analytics configuration is retrieved.
11399	//
11400	// Bucket is a required field
11401	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11402
11403	// The identifier used to represent an analytics configuration.
11404	//
11405	// Id is a required field
11406	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
11407}
11408
11409// String returns the string representation
11410func (s GetBucketAnalyticsConfigurationInput) String() string {
11411	return awsutil.Prettify(s)
11412}
11413
11414// GoString returns the string representation
11415func (s GetBucketAnalyticsConfigurationInput) GoString() string {
11416	return s.String()
11417}
11418
11419// Validate inspects the fields of the type to determine if they are valid.
11420func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
11421	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
11422	if s.Bucket == nil {
11423		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11424	}
11425	if s.Bucket != nil && len(*s.Bucket) < 1 {
11426		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11427	}
11428	if s.Id == nil {
11429		invalidParams.Add(request.NewErrParamRequired("Id"))
11430	}
11431
11432	if invalidParams.Len() > 0 {
11433		return invalidParams
11434	}
11435	return nil
11436}
11437
11438// SetBucket sets the Bucket field's value.
11439func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
11440	s.Bucket = &v
11441	return s
11442}
11443
11444func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
11445	if s.Bucket == nil {
11446		return v
11447	}
11448	return *s.Bucket
11449}
11450
11451// SetId sets the Id field's value.
11452func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
11453	s.Id = &v
11454	return s
11455}
11456
11457type GetBucketAnalyticsConfigurationOutput struct {
11458	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
11459
11460	// The configuration and any analyses for the analytics filter.
11461	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
11462}
11463
11464// String returns the string representation
11465func (s GetBucketAnalyticsConfigurationOutput) String() string {
11466	return awsutil.Prettify(s)
11467}
11468
11469// GoString returns the string representation
11470func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
11471	return s.String()
11472}
11473
11474// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
11475func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
11476	s.AnalyticsConfiguration = v
11477	return s
11478}
11479
11480type GetBucketCorsInput struct {
11481	_ struct{} `type:"structure"`
11482
11483	// Bucket is a required field
11484	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11485}
11486
11487// String returns the string representation
11488func (s GetBucketCorsInput) String() string {
11489	return awsutil.Prettify(s)
11490}
11491
11492// GoString returns the string representation
11493func (s GetBucketCorsInput) GoString() string {
11494	return s.String()
11495}
11496
11497// Validate inspects the fields of the type to determine if they are valid.
11498func (s *GetBucketCorsInput) Validate() error {
11499	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
11500	if s.Bucket == nil {
11501		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11502	}
11503	if s.Bucket != nil && len(*s.Bucket) < 1 {
11504		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11505	}
11506
11507	if invalidParams.Len() > 0 {
11508		return invalidParams
11509	}
11510	return nil
11511}
11512
11513// SetBucket sets the Bucket field's value.
11514func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
11515	s.Bucket = &v
11516	return s
11517}
11518
11519func (s *GetBucketCorsInput) getBucket() (v string) {
11520	if s.Bucket == nil {
11521		return v
11522	}
11523	return *s.Bucket
11524}
11525
11526type GetBucketCorsOutput struct {
11527	_ struct{} `type:"structure"`
11528
11529	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
11530}
11531
11532// String returns the string representation
11533func (s GetBucketCorsOutput) String() string {
11534	return awsutil.Prettify(s)
11535}
11536
11537// GoString returns the string representation
11538func (s GetBucketCorsOutput) GoString() string {
11539	return s.String()
11540}
11541
11542// SetCORSRules sets the CORSRules field's value.
11543func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
11544	s.CORSRules = v
11545	return s
11546}
11547
11548type GetBucketEncryptionInput struct {
11549	_ struct{} `type:"structure"`
11550
11551	// The name of the bucket from which the server-side encryption configuration
11552	// is retrieved.
11553	//
11554	// Bucket is a required field
11555	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11556}
11557
11558// String returns the string representation
11559func (s GetBucketEncryptionInput) String() string {
11560	return awsutil.Prettify(s)
11561}
11562
11563// GoString returns the string representation
11564func (s GetBucketEncryptionInput) GoString() string {
11565	return s.String()
11566}
11567
11568// Validate inspects the fields of the type to determine if they are valid.
11569func (s *GetBucketEncryptionInput) Validate() error {
11570	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
11571	if s.Bucket == nil {
11572		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11573	}
11574	if s.Bucket != nil && len(*s.Bucket) < 1 {
11575		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11576	}
11577
11578	if invalidParams.Len() > 0 {
11579		return invalidParams
11580	}
11581	return nil
11582}
11583
11584// SetBucket sets the Bucket field's value.
11585func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
11586	s.Bucket = &v
11587	return s
11588}
11589
11590func (s *GetBucketEncryptionInput) getBucket() (v string) {
11591	if s.Bucket == nil {
11592		return v
11593	}
11594	return *s.Bucket
11595}
11596
11597type GetBucketEncryptionOutput struct {
11598	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
11599
11600	// Container for server-side encryption configuration rules. Currently S3 supports
11601	// one rule only.
11602	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
11603}
11604
11605// String returns the string representation
11606func (s GetBucketEncryptionOutput) String() string {
11607	return awsutil.Prettify(s)
11608}
11609
11610// GoString returns the string representation
11611func (s GetBucketEncryptionOutput) GoString() string {
11612	return s.String()
11613}
11614
11615// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
11616func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
11617	s.ServerSideEncryptionConfiguration = v
11618	return s
11619}
11620
11621type GetBucketInventoryConfigurationInput struct {
11622	_ struct{} `type:"structure"`
11623
11624	// The name of the bucket containing the inventory configuration to retrieve.
11625	//
11626	// Bucket is a required field
11627	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11628
11629	// The ID used to identify the inventory configuration.
11630	//
11631	// Id is a required field
11632	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
11633}
11634
11635// String returns the string representation
11636func (s GetBucketInventoryConfigurationInput) String() string {
11637	return awsutil.Prettify(s)
11638}
11639
11640// GoString returns the string representation
11641func (s GetBucketInventoryConfigurationInput) GoString() string {
11642	return s.String()
11643}
11644
11645// Validate inspects the fields of the type to determine if they are valid.
11646func (s *GetBucketInventoryConfigurationInput) Validate() error {
11647	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
11648	if s.Bucket == nil {
11649		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11650	}
11651	if s.Bucket != nil && len(*s.Bucket) < 1 {
11652		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11653	}
11654	if s.Id == nil {
11655		invalidParams.Add(request.NewErrParamRequired("Id"))
11656	}
11657
11658	if invalidParams.Len() > 0 {
11659		return invalidParams
11660	}
11661	return nil
11662}
11663
11664// SetBucket sets the Bucket field's value.
11665func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
11666	s.Bucket = &v
11667	return s
11668}
11669
11670func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
11671	if s.Bucket == nil {
11672		return v
11673	}
11674	return *s.Bucket
11675}
11676
11677// SetId sets the Id field's value.
11678func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
11679	s.Id = &v
11680	return s
11681}
11682
11683type GetBucketInventoryConfigurationOutput struct {
11684	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
11685
11686	// Specifies the inventory configuration.
11687	InventoryConfiguration *InventoryConfiguration `type:"structure"`
11688}
11689
11690// String returns the string representation
11691func (s GetBucketInventoryConfigurationOutput) String() string {
11692	return awsutil.Prettify(s)
11693}
11694
11695// GoString returns the string representation
11696func (s GetBucketInventoryConfigurationOutput) GoString() string {
11697	return s.String()
11698}
11699
11700// SetInventoryConfiguration sets the InventoryConfiguration field's value.
11701func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
11702	s.InventoryConfiguration = v
11703	return s
11704}
11705
11706type GetBucketLifecycleConfigurationInput struct {
11707	_ struct{} `type:"structure"`
11708
11709	// Bucket is a required field
11710	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11711}
11712
11713// String returns the string representation
11714func (s GetBucketLifecycleConfigurationInput) String() string {
11715	return awsutil.Prettify(s)
11716}
11717
11718// GoString returns the string representation
11719func (s GetBucketLifecycleConfigurationInput) GoString() string {
11720	return s.String()
11721}
11722
11723// Validate inspects the fields of the type to determine if they are valid.
11724func (s *GetBucketLifecycleConfigurationInput) Validate() error {
11725	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
11726	if s.Bucket == nil {
11727		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11728	}
11729	if s.Bucket != nil && len(*s.Bucket) < 1 {
11730		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11731	}
11732
11733	if invalidParams.Len() > 0 {
11734		return invalidParams
11735	}
11736	return nil
11737}
11738
11739// SetBucket sets the Bucket field's value.
11740func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
11741	s.Bucket = &v
11742	return s
11743}
11744
11745func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
11746	if s.Bucket == nil {
11747		return v
11748	}
11749	return *s.Bucket
11750}
11751
11752type GetBucketLifecycleConfigurationOutput struct {
11753	_ struct{} `type:"structure"`
11754
11755	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
11756}
11757
11758// String returns the string representation
11759func (s GetBucketLifecycleConfigurationOutput) String() string {
11760	return awsutil.Prettify(s)
11761}
11762
11763// GoString returns the string representation
11764func (s GetBucketLifecycleConfigurationOutput) GoString() string {
11765	return s.String()
11766}
11767
11768// SetRules sets the Rules field's value.
11769func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
11770	s.Rules = v
11771	return s
11772}
11773
11774type GetBucketLifecycleInput struct {
11775	_ struct{} `type:"structure"`
11776
11777	// Bucket is a required field
11778	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11779}
11780
11781// String returns the string representation
11782func (s GetBucketLifecycleInput) String() string {
11783	return awsutil.Prettify(s)
11784}
11785
11786// GoString returns the string representation
11787func (s GetBucketLifecycleInput) GoString() string {
11788	return s.String()
11789}
11790
11791// Validate inspects the fields of the type to determine if they are valid.
11792func (s *GetBucketLifecycleInput) Validate() error {
11793	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
11794	if s.Bucket == nil {
11795		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11796	}
11797	if s.Bucket != nil && len(*s.Bucket) < 1 {
11798		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11799	}
11800
11801	if invalidParams.Len() > 0 {
11802		return invalidParams
11803	}
11804	return nil
11805}
11806
11807// SetBucket sets the Bucket field's value.
11808func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
11809	s.Bucket = &v
11810	return s
11811}
11812
11813func (s *GetBucketLifecycleInput) getBucket() (v string) {
11814	if s.Bucket == nil {
11815		return v
11816	}
11817	return *s.Bucket
11818}
11819
11820type GetBucketLifecycleOutput struct {
11821	_ struct{} `type:"structure"`
11822
11823	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
11824}
11825
11826// String returns the string representation
11827func (s GetBucketLifecycleOutput) String() string {
11828	return awsutil.Prettify(s)
11829}
11830
11831// GoString returns the string representation
11832func (s GetBucketLifecycleOutput) GoString() string {
11833	return s.String()
11834}
11835
11836// SetRules sets the Rules field's value.
11837func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
11838	s.Rules = v
11839	return s
11840}
11841
11842type GetBucketLocationInput struct {
11843	_ struct{} `type:"structure"`
11844
11845	// Bucket is a required field
11846	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11847}
11848
11849// String returns the string representation
11850func (s GetBucketLocationInput) String() string {
11851	return awsutil.Prettify(s)
11852}
11853
11854// GoString returns the string representation
11855func (s GetBucketLocationInput) GoString() string {
11856	return s.String()
11857}
11858
11859// Validate inspects the fields of the type to determine if they are valid.
11860func (s *GetBucketLocationInput) Validate() error {
11861	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
11862	if s.Bucket == nil {
11863		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11864	}
11865	if s.Bucket != nil && len(*s.Bucket) < 1 {
11866		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11867	}
11868
11869	if invalidParams.Len() > 0 {
11870		return invalidParams
11871	}
11872	return nil
11873}
11874
11875// SetBucket sets the Bucket field's value.
11876func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
11877	s.Bucket = &v
11878	return s
11879}
11880
11881func (s *GetBucketLocationInput) getBucket() (v string) {
11882	if s.Bucket == nil {
11883		return v
11884	}
11885	return *s.Bucket
11886}
11887
11888type GetBucketLocationOutput struct {
11889	_ struct{} `type:"structure"`
11890
11891	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
11892}
11893
11894// String returns the string representation
11895func (s GetBucketLocationOutput) String() string {
11896	return awsutil.Prettify(s)
11897}
11898
11899// GoString returns the string representation
11900func (s GetBucketLocationOutput) GoString() string {
11901	return s.String()
11902}
11903
11904// SetLocationConstraint sets the LocationConstraint field's value.
11905func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
11906	s.LocationConstraint = &v
11907	return s
11908}
11909
11910type GetBucketLoggingInput struct {
11911	_ struct{} `type:"structure"`
11912
11913	// Bucket is a required field
11914	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11915}
11916
11917// String returns the string representation
11918func (s GetBucketLoggingInput) String() string {
11919	return awsutil.Prettify(s)
11920}
11921
11922// GoString returns the string representation
11923func (s GetBucketLoggingInput) GoString() string {
11924	return s.String()
11925}
11926
11927// Validate inspects the fields of the type to determine if they are valid.
11928func (s *GetBucketLoggingInput) Validate() error {
11929	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
11930	if s.Bucket == nil {
11931		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11932	}
11933	if s.Bucket != nil && len(*s.Bucket) < 1 {
11934		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11935	}
11936
11937	if invalidParams.Len() > 0 {
11938		return invalidParams
11939	}
11940	return nil
11941}
11942
11943// SetBucket sets the Bucket field's value.
11944func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
11945	s.Bucket = &v
11946	return s
11947}
11948
11949func (s *GetBucketLoggingInput) getBucket() (v string) {
11950	if s.Bucket == nil {
11951		return v
11952	}
11953	return *s.Bucket
11954}
11955
11956type GetBucketLoggingOutput struct {
11957	_ struct{} `type:"structure"`
11958
11959	// Container for logging information. Presence of this element indicates that
11960	// logging is enabled. Parameters TargetBucket and TargetPrefix are required
11961	// in this case.
11962	LoggingEnabled *LoggingEnabled `type:"structure"`
11963}
11964
11965// String returns the string representation
11966func (s GetBucketLoggingOutput) String() string {
11967	return awsutil.Prettify(s)
11968}
11969
11970// GoString returns the string representation
11971func (s GetBucketLoggingOutput) GoString() string {
11972	return s.String()
11973}
11974
11975// SetLoggingEnabled sets the LoggingEnabled field's value.
11976func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
11977	s.LoggingEnabled = v
11978	return s
11979}
11980
11981type GetBucketMetricsConfigurationInput struct {
11982	_ struct{} `type:"structure"`
11983
11984	// The name of the bucket containing the metrics configuration to retrieve.
11985	//
11986	// Bucket is a required field
11987	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11988
11989	// The ID used to identify the metrics configuration.
11990	//
11991	// Id is a required field
11992	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
11993}
11994
11995// String returns the string representation
11996func (s GetBucketMetricsConfigurationInput) String() string {
11997	return awsutil.Prettify(s)
11998}
11999
12000// GoString returns the string representation
12001func (s GetBucketMetricsConfigurationInput) GoString() string {
12002	return s.String()
12003}
12004
12005// Validate inspects the fields of the type to determine if they are valid.
12006func (s *GetBucketMetricsConfigurationInput) Validate() error {
12007	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
12008	if s.Bucket == nil {
12009		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12010	}
12011	if s.Bucket != nil && len(*s.Bucket) < 1 {
12012		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12013	}
12014	if s.Id == nil {
12015		invalidParams.Add(request.NewErrParamRequired("Id"))
12016	}
12017
12018	if invalidParams.Len() > 0 {
12019		return invalidParams
12020	}
12021	return nil
12022}
12023
12024// SetBucket sets the Bucket field's value.
12025func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
12026	s.Bucket = &v
12027	return s
12028}
12029
12030func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
12031	if s.Bucket == nil {
12032		return v
12033	}
12034	return *s.Bucket
12035}
12036
12037// SetId sets the Id field's value.
12038func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
12039	s.Id = &v
12040	return s
12041}
12042
12043type GetBucketMetricsConfigurationOutput struct {
12044	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
12045
12046	// Specifies the metrics configuration.
12047	MetricsConfiguration *MetricsConfiguration `type:"structure"`
12048}
12049
12050// String returns the string representation
12051func (s GetBucketMetricsConfigurationOutput) String() string {
12052	return awsutil.Prettify(s)
12053}
12054
12055// GoString returns the string representation
12056func (s GetBucketMetricsConfigurationOutput) GoString() string {
12057	return s.String()
12058}
12059
12060// SetMetricsConfiguration sets the MetricsConfiguration field's value.
12061func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
12062	s.MetricsConfiguration = v
12063	return s
12064}
12065
12066type GetBucketNotificationConfigurationRequest struct {
12067	_ struct{} `type:"structure"`
12068
12069	// Name of the bucket to get the notification configuration for.
12070	//
12071	// Bucket is a required field
12072	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12073}
12074
12075// String returns the string representation
12076func (s GetBucketNotificationConfigurationRequest) String() string {
12077	return awsutil.Prettify(s)
12078}
12079
12080// GoString returns the string representation
12081func (s GetBucketNotificationConfigurationRequest) GoString() string {
12082	return s.String()
12083}
12084
12085// Validate inspects the fields of the type to determine if they are valid.
12086func (s *GetBucketNotificationConfigurationRequest) Validate() error {
12087	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
12088	if s.Bucket == nil {
12089		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12090	}
12091	if s.Bucket != nil && len(*s.Bucket) < 1 {
12092		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12093	}
12094
12095	if invalidParams.Len() > 0 {
12096		return invalidParams
12097	}
12098	return nil
12099}
12100
12101// SetBucket sets the Bucket field's value.
12102func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
12103	s.Bucket = &v
12104	return s
12105}
12106
12107func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
12108	if s.Bucket == nil {
12109		return v
12110	}
12111	return *s.Bucket
12112}
12113
12114type GetBucketPolicyInput struct {
12115	_ struct{} `type:"structure"`
12116
12117	// Bucket is a required field
12118	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12119}
12120
12121// String returns the string representation
12122func (s GetBucketPolicyInput) String() string {
12123	return awsutil.Prettify(s)
12124}
12125
12126// GoString returns the string representation
12127func (s GetBucketPolicyInput) GoString() string {
12128	return s.String()
12129}
12130
12131// Validate inspects the fields of the type to determine if they are valid.
12132func (s *GetBucketPolicyInput) Validate() error {
12133	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
12134	if s.Bucket == nil {
12135		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12136	}
12137	if s.Bucket != nil && len(*s.Bucket) < 1 {
12138		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12139	}
12140
12141	if invalidParams.Len() > 0 {
12142		return invalidParams
12143	}
12144	return nil
12145}
12146
12147// SetBucket sets the Bucket field's value.
12148func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
12149	s.Bucket = &v
12150	return s
12151}
12152
12153func (s *GetBucketPolicyInput) getBucket() (v string) {
12154	if s.Bucket == nil {
12155		return v
12156	}
12157	return *s.Bucket
12158}
12159
12160type GetBucketPolicyOutput struct {
12161	_ struct{} `type:"structure" payload:"Policy"`
12162
12163	// The bucket policy as a JSON document.
12164	Policy *string `type:"string"`
12165}
12166
12167// String returns the string representation
12168func (s GetBucketPolicyOutput) String() string {
12169	return awsutil.Prettify(s)
12170}
12171
12172// GoString returns the string representation
12173func (s GetBucketPolicyOutput) GoString() string {
12174	return s.String()
12175}
12176
12177// SetPolicy sets the Policy field's value.
12178func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
12179	s.Policy = &v
12180	return s
12181}
12182
12183type GetBucketPolicyStatusInput struct {
12184	_ struct{} `type:"structure"`
12185
12186	// The name of the Amazon S3 bucket whose policy status you want to retrieve.
12187	//
12188	// Bucket is a required field
12189	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12190}
12191
12192// String returns the string representation
12193func (s GetBucketPolicyStatusInput) String() string {
12194	return awsutil.Prettify(s)
12195}
12196
12197// GoString returns the string representation
12198func (s GetBucketPolicyStatusInput) GoString() string {
12199	return s.String()
12200}
12201
12202// Validate inspects the fields of the type to determine if they are valid.
12203func (s *GetBucketPolicyStatusInput) Validate() error {
12204	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"}
12205	if s.Bucket == nil {
12206		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12207	}
12208	if s.Bucket != nil && len(*s.Bucket) < 1 {
12209		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12210	}
12211
12212	if invalidParams.Len() > 0 {
12213		return invalidParams
12214	}
12215	return nil
12216}
12217
12218// SetBucket sets the Bucket field's value.
12219func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput {
12220	s.Bucket = &v
12221	return s
12222}
12223
12224func (s *GetBucketPolicyStatusInput) getBucket() (v string) {
12225	if s.Bucket == nil {
12226		return v
12227	}
12228	return *s.Bucket
12229}
12230
12231type GetBucketPolicyStatusOutput struct {
12232	_ struct{} `type:"structure" payload:"PolicyStatus"`
12233
12234	// The policy status for the specified bucket.
12235	PolicyStatus *PolicyStatus `type:"structure"`
12236}
12237
12238// String returns the string representation
12239func (s GetBucketPolicyStatusOutput) String() string {
12240	return awsutil.Prettify(s)
12241}
12242
12243// GoString returns the string representation
12244func (s GetBucketPolicyStatusOutput) GoString() string {
12245	return s.String()
12246}
12247
12248// SetPolicyStatus sets the PolicyStatus field's value.
12249func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput {
12250	s.PolicyStatus = v
12251	return s
12252}
12253
12254type GetBucketReplicationInput struct {
12255	_ struct{} `type:"structure"`
12256
12257	// Bucket is a required field
12258	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12259}
12260
12261// String returns the string representation
12262func (s GetBucketReplicationInput) String() string {
12263	return awsutil.Prettify(s)
12264}
12265
12266// GoString returns the string representation
12267func (s GetBucketReplicationInput) GoString() string {
12268	return s.String()
12269}
12270
12271// Validate inspects the fields of the type to determine if they are valid.
12272func (s *GetBucketReplicationInput) Validate() error {
12273	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
12274	if s.Bucket == nil {
12275		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12276	}
12277	if s.Bucket != nil && len(*s.Bucket) < 1 {
12278		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12279	}
12280
12281	if invalidParams.Len() > 0 {
12282		return invalidParams
12283	}
12284	return nil
12285}
12286
12287// SetBucket sets the Bucket field's value.
12288func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
12289	s.Bucket = &v
12290	return s
12291}
12292
12293func (s *GetBucketReplicationInput) getBucket() (v string) {
12294	if s.Bucket == nil {
12295		return v
12296	}
12297	return *s.Bucket
12298}
12299
12300type GetBucketReplicationOutput struct {
12301	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
12302
12303	// A container for replication rules. You can add up to 1,000 rules. The maximum
12304	// size of a replication configuration is 2 MB.
12305	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
12306}
12307
12308// String returns the string representation
12309func (s GetBucketReplicationOutput) String() string {
12310	return awsutil.Prettify(s)
12311}
12312
12313// GoString returns the string representation
12314func (s GetBucketReplicationOutput) GoString() string {
12315	return s.String()
12316}
12317
12318// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
12319func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
12320	s.ReplicationConfiguration = v
12321	return s
12322}
12323
12324type GetBucketRequestPaymentInput struct {
12325	_ struct{} `type:"structure"`
12326
12327	// Bucket is a required field
12328	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12329}
12330
12331// String returns the string representation
12332func (s GetBucketRequestPaymentInput) String() string {
12333	return awsutil.Prettify(s)
12334}
12335
12336// GoString returns the string representation
12337func (s GetBucketRequestPaymentInput) GoString() string {
12338	return s.String()
12339}
12340
12341// Validate inspects the fields of the type to determine if they are valid.
12342func (s *GetBucketRequestPaymentInput) Validate() error {
12343	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
12344	if s.Bucket == nil {
12345		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12346	}
12347	if s.Bucket != nil && len(*s.Bucket) < 1 {
12348		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12349	}
12350
12351	if invalidParams.Len() > 0 {
12352		return invalidParams
12353	}
12354	return nil
12355}
12356
12357// SetBucket sets the Bucket field's value.
12358func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
12359	s.Bucket = &v
12360	return s
12361}
12362
12363func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
12364	if s.Bucket == nil {
12365		return v
12366	}
12367	return *s.Bucket
12368}
12369
12370type GetBucketRequestPaymentOutput struct {
12371	_ struct{} `type:"structure"`
12372
12373	// Specifies who pays for the download and request fees.
12374	Payer *string `type:"string" enum:"Payer"`
12375}
12376
12377// String returns the string representation
12378func (s GetBucketRequestPaymentOutput) String() string {
12379	return awsutil.Prettify(s)
12380}
12381
12382// GoString returns the string representation
12383func (s GetBucketRequestPaymentOutput) GoString() string {
12384	return s.String()
12385}
12386
12387// SetPayer sets the Payer field's value.
12388func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
12389	s.Payer = &v
12390	return s
12391}
12392
12393type GetBucketTaggingInput struct {
12394	_ struct{} `type:"structure"`
12395
12396	// Bucket is a required field
12397	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12398}
12399
12400// String returns the string representation
12401func (s GetBucketTaggingInput) String() string {
12402	return awsutil.Prettify(s)
12403}
12404
12405// GoString returns the string representation
12406func (s GetBucketTaggingInput) GoString() string {
12407	return s.String()
12408}
12409
12410// Validate inspects the fields of the type to determine if they are valid.
12411func (s *GetBucketTaggingInput) Validate() error {
12412	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
12413	if s.Bucket == nil {
12414		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12415	}
12416	if s.Bucket != nil && len(*s.Bucket) < 1 {
12417		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12418	}
12419
12420	if invalidParams.Len() > 0 {
12421		return invalidParams
12422	}
12423	return nil
12424}
12425
12426// SetBucket sets the Bucket field's value.
12427func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
12428	s.Bucket = &v
12429	return s
12430}
12431
12432func (s *GetBucketTaggingInput) getBucket() (v string) {
12433	if s.Bucket == nil {
12434		return v
12435	}
12436	return *s.Bucket
12437}
12438
12439type GetBucketTaggingOutput struct {
12440	_ struct{} `type:"structure"`
12441
12442	// TagSet is a required field
12443	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
12444}
12445
12446// String returns the string representation
12447func (s GetBucketTaggingOutput) String() string {
12448	return awsutil.Prettify(s)
12449}
12450
12451// GoString returns the string representation
12452func (s GetBucketTaggingOutput) GoString() string {
12453	return s.String()
12454}
12455
12456// SetTagSet sets the TagSet field's value.
12457func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
12458	s.TagSet = v
12459	return s
12460}
12461
12462type GetBucketVersioningInput struct {
12463	_ struct{} `type:"structure"`
12464
12465	// Bucket is a required field
12466	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12467}
12468
12469// String returns the string representation
12470func (s GetBucketVersioningInput) String() string {
12471	return awsutil.Prettify(s)
12472}
12473
12474// GoString returns the string representation
12475func (s GetBucketVersioningInput) GoString() string {
12476	return s.String()
12477}
12478
12479// Validate inspects the fields of the type to determine if they are valid.
12480func (s *GetBucketVersioningInput) Validate() error {
12481	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
12482	if s.Bucket == nil {
12483		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12484	}
12485	if s.Bucket != nil && len(*s.Bucket) < 1 {
12486		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12487	}
12488
12489	if invalidParams.Len() > 0 {
12490		return invalidParams
12491	}
12492	return nil
12493}
12494
12495// SetBucket sets the Bucket field's value.
12496func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
12497	s.Bucket = &v
12498	return s
12499}
12500
12501func (s *GetBucketVersioningInput) getBucket() (v string) {
12502	if s.Bucket == nil {
12503		return v
12504	}
12505	return *s.Bucket
12506}
12507
12508type GetBucketVersioningOutput struct {
12509	_ struct{} `type:"structure"`
12510
12511	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
12512	// This element is only returned if the bucket has been configured with MFA
12513	// delete. If the bucket has never been so configured, this element is not returned.
12514	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
12515
12516	// The versioning state of the bucket.
12517	Status *string `type:"string" enum:"BucketVersioningStatus"`
12518}
12519
12520// String returns the string representation
12521func (s GetBucketVersioningOutput) String() string {
12522	return awsutil.Prettify(s)
12523}
12524
12525// GoString returns the string representation
12526func (s GetBucketVersioningOutput) GoString() string {
12527	return s.String()
12528}
12529
12530// SetMFADelete sets the MFADelete field's value.
12531func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
12532	s.MFADelete = &v
12533	return s
12534}
12535
12536// SetStatus sets the Status field's value.
12537func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
12538	s.Status = &v
12539	return s
12540}
12541
12542type GetBucketWebsiteInput struct {
12543	_ struct{} `type:"structure"`
12544
12545	// Bucket is a required field
12546	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12547}
12548
12549// String returns the string representation
12550func (s GetBucketWebsiteInput) String() string {
12551	return awsutil.Prettify(s)
12552}
12553
12554// GoString returns the string representation
12555func (s GetBucketWebsiteInput) GoString() string {
12556	return s.String()
12557}
12558
12559// Validate inspects the fields of the type to determine if they are valid.
12560func (s *GetBucketWebsiteInput) Validate() error {
12561	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
12562	if s.Bucket == nil {
12563		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12564	}
12565	if s.Bucket != nil && len(*s.Bucket) < 1 {
12566		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12567	}
12568
12569	if invalidParams.Len() > 0 {
12570		return invalidParams
12571	}
12572	return nil
12573}
12574
12575// SetBucket sets the Bucket field's value.
12576func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
12577	s.Bucket = &v
12578	return s
12579}
12580
12581func (s *GetBucketWebsiteInput) getBucket() (v string) {
12582	if s.Bucket == nil {
12583		return v
12584	}
12585	return *s.Bucket
12586}
12587
12588type GetBucketWebsiteOutput struct {
12589	_ struct{} `type:"structure"`
12590
12591	ErrorDocument *ErrorDocument `type:"structure"`
12592
12593	IndexDocument *IndexDocument `type:"structure"`
12594
12595	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
12596
12597	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
12598}
12599
12600// String returns the string representation
12601func (s GetBucketWebsiteOutput) String() string {
12602	return awsutil.Prettify(s)
12603}
12604
12605// GoString returns the string representation
12606func (s GetBucketWebsiteOutput) GoString() string {
12607	return s.String()
12608}
12609
12610// SetErrorDocument sets the ErrorDocument field's value.
12611func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
12612	s.ErrorDocument = v
12613	return s
12614}
12615
12616// SetIndexDocument sets the IndexDocument field's value.
12617func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
12618	s.IndexDocument = v
12619	return s
12620}
12621
12622// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
12623func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
12624	s.RedirectAllRequestsTo = v
12625	return s
12626}
12627
12628// SetRoutingRules sets the RoutingRules field's value.
12629func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
12630	s.RoutingRules = v
12631	return s
12632}
12633
12634type GetObjectAclInput struct {
12635	_ struct{} `type:"structure"`
12636
12637	// Bucket is a required field
12638	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12639
12640	// Key is a required field
12641	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12642
12643	// Confirms that the requester knows that she or he will be charged for the
12644	// request. Bucket owners need not specify this parameter in their requests.
12645	// Documentation on downloading objects from requester pays buckets can be found
12646	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
12647	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12648
12649	// VersionId used to reference a specific version of the object.
12650	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
12651}
12652
12653// String returns the string representation
12654func (s GetObjectAclInput) String() string {
12655	return awsutil.Prettify(s)
12656}
12657
12658// GoString returns the string representation
12659func (s GetObjectAclInput) GoString() string {
12660	return s.String()
12661}
12662
12663// Validate inspects the fields of the type to determine if they are valid.
12664func (s *GetObjectAclInput) Validate() error {
12665	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
12666	if s.Bucket == nil {
12667		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12668	}
12669	if s.Bucket != nil && len(*s.Bucket) < 1 {
12670		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12671	}
12672	if s.Key == nil {
12673		invalidParams.Add(request.NewErrParamRequired("Key"))
12674	}
12675	if s.Key != nil && len(*s.Key) < 1 {
12676		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12677	}
12678
12679	if invalidParams.Len() > 0 {
12680		return invalidParams
12681	}
12682	return nil
12683}
12684
12685// SetBucket sets the Bucket field's value.
12686func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
12687	s.Bucket = &v
12688	return s
12689}
12690
12691func (s *GetObjectAclInput) getBucket() (v string) {
12692	if s.Bucket == nil {
12693		return v
12694	}
12695	return *s.Bucket
12696}
12697
12698// SetKey sets the Key field's value.
12699func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
12700	s.Key = &v
12701	return s
12702}
12703
12704// SetRequestPayer sets the RequestPayer field's value.
12705func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
12706	s.RequestPayer = &v
12707	return s
12708}
12709
12710// SetVersionId sets the VersionId field's value.
12711func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
12712	s.VersionId = &v
12713	return s
12714}
12715
12716type GetObjectAclOutput struct {
12717	_ struct{} `type:"structure"`
12718
12719	// A list of grants.
12720	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
12721
12722	Owner *Owner `type:"structure"`
12723
12724	// If present, indicates that the requester was successfully charged for the
12725	// request.
12726	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12727}
12728
12729// String returns the string representation
12730func (s GetObjectAclOutput) String() string {
12731	return awsutil.Prettify(s)
12732}
12733
12734// GoString returns the string representation
12735func (s GetObjectAclOutput) GoString() string {
12736	return s.String()
12737}
12738
12739// SetGrants sets the Grants field's value.
12740func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
12741	s.Grants = v
12742	return s
12743}
12744
12745// SetOwner sets the Owner field's value.
12746func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
12747	s.Owner = v
12748	return s
12749}
12750
12751// SetRequestCharged sets the RequestCharged field's value.
12752func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
12753	s.RequestCharged = &v
12754	return s
12755}
12756
12757type GetObjectInput struct {
12758	_ struct{} `type:"structure"`
12759
12760	// Bucket is a required field
12761	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12762
12763	// Return the object only if its entity tag (ETag) is the same as the one specified,
12764	// otherwise return a 412 (precondition failed).
12765	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
12766
12767	// Return the object only if it has been modified since the specified time,
12768	// otherwise return a 304 (not modified).
12769	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
12770
12771	// Return the object only if its entity tag (ETag) is different from the one
12772	// specified, otherwise return a 304 (not modified).
12773	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
12774
12775	// Return the object only if it has not been modified since the specified time,
12776	// otherwise return a 412 (precondition failed).
12777	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
12778
12779	// Key is a required field
12780	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12781
12782	// Part number of the object being read. This is a positive integer between
12783	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
12784	// Useful for downloading just a part of an object.
12785	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
12786
12787	// Downloads the specified range bytes of an object. For more information about
12788	// the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
12789	Range *string `location:"header" locationName:"Range" type:"string"`
12790
12791	// Confirms that the requester knows that she or he will be charged for the
12792	// request. Bucket owners need not specify this parameter in their requests.
12793	// Documentation on downloading objects from requester pays buckets can be found
12794	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
12795	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12796
12797	// Sets the Cache-Control header of the response.
12798	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
12799
12800	// Sets the Content-Disposition header of the response
12801	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
12802
12803	// Sets the Content-Encoding header of the response.
12804	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
12805
12806	// Sets the Content-Language header of the response.
12807	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
12808
12809	// Sets the Content-Type header of the response.
12810	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
12811
12812	// Sets the Expires header of the response.
12813	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"`
12814
12815	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
12816	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12817
12818	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
12819	// data. This value is used to store the object and then it is discarded; Amazon
12820	// does not store the encryption key. The key must be appropriate for use with
12821	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
12822	// header.
12823	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
12824
12825	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
12826	// Amazon S3 uses this header for a message integrity check to ensure the encryption
12827	// key was transmitted without error.
12828	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12829
12830	// VersionId used to reference a specific version of the object.
12831	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
12832}
12833
12834// String returns the string representation
12835func (s GetObjectInput) String() string {
12836	return awsutil.Prettify(s)
12837}
12838
12839// GoString returns the string representation
12840func (s GetObjectInput) GoString() string {
12841	return s.String()
12842}
12843
12844// Validate inspects the fields of the type to determine if they are valid.
12845func (s *GetObjectInput) Validate() error {
12846	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
12847	if s.Bucket == nil {
12848		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12849	}
12850	if s.Bucket != nil && len(*s.Bucket) < 1 {
12851		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12852	}
12853	if s.Key == nil {
12854		invalidParams.Add(request.NewErrParamRequired("Key"))
12855	}
12856	if s.Key != nil && len(*s.Key) < 1 {
12857		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12858	}
12859
12860	if invalidParams.Len() > 0 {
12861		return invalidParams
12862	}
12863	return nil
12864}
12865
12866// SetBucket sets the Bucket field's value.
12867func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
12868	s.Bucket = &v
12869	return s
12870}
12871
12872func (s *GetObjectInput) getBucket() (v string) {
12873	if s.Bucket == nil {
12874		return v
12875	}
12876	return *s.Bucket
12877}
12878
12879// SetIfMatch sets the IfMatch field's value.
12880func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
12881	s.IfMatch = &v
12882	return s
12883}
12884
12885// SetIfModifiedSince sets the IfModifiedSince field's value.
12886func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
12887	s.IfModifiedSince = &v
12888	return s
12889}
12890
12891// SetIfNoneMatch sets the IfNoneMatch field's value.
12892func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
12893	s.IfNoneMatch = &v
12894	return s
12895}
12896
12897// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
12898func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
12899	s.IfUnmodifiedSince = &v
12900	return s
12901}
12902
12903// SetKey sets the Key field's value.
12904func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
12905	s.Key = &v
12906	return s
12907}
12908
12909// SetPartNumber sets the PartNumber field's value.
12910func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
12911	s.PartNumber = &v
12912	return s
12913}
12914
12915// SetRange sets the Range field's value.
12916func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
12917	s.Range = &v
12918	return s
12919}
12920
12921// SetRequestPayer sets the RequestPayer field's value.
12922func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
12923	s.RequestPayer = &v
12924	return s
12925}
12926
12927// SetResponseCacheControl sets the ResponseCacheControl field's value.
12928func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
12929	s.ResponseCacheControl = &v
12930	return s
12931}
12932
12933// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
12934func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
12935	s.ResponseContentDisposition = &v
12936	return s
12937}
12938
12939// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
12940func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
12941	s.ResponseContentEncoding = &v
12942	return s
12943}
12944
12945// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
12946func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
12947	s.ResponseContentLanguage = &v
12948	return s
12949}
12950
12951// SetResponseContentType sets the ResponseContentType field's value.
12952func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
12953	s.ResponseContentType = &v
12954	return s
12955}
12956
12957// SetResponseExpires sets the ResponseExpires field's value.
12958func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
12959	s.ResponseExpires = &v
12960	return s
12961}
12962
12963// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12964func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
12965	s.SSECustomerAlgorithm = &v
12966	return s
12967}
12968
12969// SetSSECustomerKey sets the SSECustomerKey field's value.
12970func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
12971	s.SSECustomerKey = &v
12972	return s
12973}
12974
12975func (s *GetObjectInput) getSSECustomerKey() (v string) {
12976	if s.SSECustomerKey == nil {
12977		return v
12978	}
12979	return *s.SSECustomerKey
12980}
12981
12982// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12983func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
12984	s.SSECustomerKeyMD5 = &v
12985	return s
12986}
12987
12988// SetVersionId sets the VersionId field's value.
12989func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
12990	s.VersionId = &v
12991	return s
12992}
12993
12994type GetObjectLegalHoldInput struct {
12995	_ struct{} `type:"structure"`
12996
12997	// The bucket containing the object whose Legal Hold status you want to retrieve.
12998	//
12999	// Bucket is a required field
13000	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13001
13002	// The key name for the object whose Legal Hold status you want to retrieve.
13003	//
13004	// Key is a required field
13005	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13006
13007	// Confirms that the requester knows that she or he will be charged for the
13008	// request. Bucket owners need not specify this parameter in their requests.
13009	// Documentation on downloading objects from requester pays buckets can be found
13010	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
13011	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13012
13013	// The version ID of the object whose Legal Hold status you want to retrieve.
13014	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
13015}
13016
13017// String returns the string representation
13018func (s GetObjectLegalHoldInput) String() string {
13019	return awsutil.Prettify(s)
13020}
13021
13022// GoString returns the string representation
13023func (s GetObjectLegalHoldInput) GoString() string {
13024	return s.String()
13025}
13026
13027// Validate inspects the fields of the type to determine if they are valid.
13028func (s *GetObjectLegalHoldInput) Validate() error {
13029	invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"}
13030	if s.Bucket == nil {
13031		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13032	}
13033	if s.Bucket != nil && len(*s.Bucket) < 1 {
13034		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13035	}
13036	if s.Key == nil {
13037		invalidParams.Add(request.NewErrParamRequired("Key"))
13038	}
13039	if s.Key != nil && len(*s.Key) < 1 {
13040		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13041	}
13042
13043	if invalidParams.Len() > 0 {
13044		return invalidParams
13045	}
13046	return nil
13047}
13048
13049// SetBucket sets the Bucket field's value.
13050func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput {
13051	s.Bucket = &v
13052	return s
13053}
13054
13055func (s *GetObjectLegalHoldInput) getBucket() (v string) {
13056	if s.Bucket == nil {
13057		return v
13058	}
13059	return *s.Bucket
13060}
13061
13062// SetKey sets the Key field's value.
13063func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput {
13064	s.Key = &v
13065	return s
13066}
13067
13068// SetRequestPayer sets the RequestPayer field's value.
13069func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput {
13070	s.RequestPayer = &v
13071	return s
13072}
13073
13074// SetVersionId sets the VersionId field's value.
13075func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput {
13076	s.VersionId = &v
13077	return s
13078}
13079
13080type GetObjectLegalHoldOutput struct {
13081	_ struct{} `type:"structure" payload:"LegalHold"`
13082
13083	// The current Legal Hold status for the specified object.
13084	LegalHold *ObjectLockLegalHold `type:"structure"`
13085}
13086
13087// String returns the string representation
13088func (s GetObjectLegalHoldOutput) String() string {
13089	return awsutil.Prettify(s)
13090}
13091
13092// GoString returns the string representation
13093func (s GetObjectLegalHoldOutput) GoString() string {
13094	return s.String()
13095}
13096
13097// SetLegalHold sets the LegalHold field's value.
13098func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput {
13099	s.LegalHold = v
13100	return s
13101}
13102
13103type GetObjectLockConfigurationInput struct {
13104	_ struct{} `type:"structure"`
13105
13106	// The bucket whose Object Lock configuration you want to retrieve.
13107	//
13108	// Bucket is a required field
13109	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13110}
13111
13112// String returns the string representation
13113func (s GetObjectLockConfigurationInput) String() string {
13114	return awsutil.Prettify(s)
13115}
13116
13117// GoString returns the string representation
13118func (s GetObjectLockConfigurationInput) GoString() string {
13119	return s.String()
13120}
13121
13122// Validate inspects the fields of the type to determine if they are valid.
13123func (s *GetObjectLockConfigurationInput) Validate() error {
13124	invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"}
13125	if s.Bucket == nil {
13126		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13127	}
13128	if s.Bucket != nil && len(*s.Bucket) < 1 {
13129		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13130	}
13131
13132	if invalidParams.Len() > 0 {
13133		return invalidParams
13134	}
13135	return nil
13136}
13137
13138// SetBucket sets the Bucket field's value.
13139func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput {
13140	s.Bucket = &v
13141	return s
13142}
13143
13144func (s *GetObjectLockConfigurationInput) getBucket() (v string) {
13145	if s.Bucket == nil {
13146		return v
13147	}
13148	return *s.Bucket
13149}
13150
13151type GetObjectLockConfigurationOutput struct {
13152	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
13153
13154	// The specified bucket's Object Lock configuration.
13155	ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"`
13156}
13157
13158// String returns the string representation
13159func (s GetObjectLockConfigurationOutput) String() string {
13160	return awsutil.Prettify(s)
13161}
13162
13163// GoString returns the string representation
13164func (s GetObjectLockConfigurationOutput) GoString() string {
13165	return s.String()
13166}
13167
13168// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
13169func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput {
13170	s.ObjectLockConfiguration = v
13171	return s
13172}
13173
13174type GetObjectOutput struct {
13175	_ struct{} `type:"structure" payload:"Body"`
13176
13177	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
13178
13179	// Object data.
13180	Body io.ReadCloser `type:"blob"`
13181
13182	// Specifies caching behavior along the request/reply chain.
13183	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
13184
13185	// Specifies presentational information for the object.
13186	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
13187
13188	// Specifies what content encodings have been applied to the object and thus
13189	// what decoding mechanisms must be applied to obtain the media-type referenced
13190	// by the Content-Type header field.
13191	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
13192
13193	// The language the content is in.
13194	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
13195
13196	// Size of the body in bytes.
13197	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
13198
13199	// The portion of the object returned in the response.
13200	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
13201
13202	// A standard MIME type describing the format of the object data.
13203	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
13204
13205	// Specifies whether the object retrieved was (true) or was not (false) a Delete
13206	// Marker. If false, this response header does not appear in the response.
13207	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
13208
13209	// An ETag is an opaque identifier assigned by a web server to a specific version
13210	// of a resource found at a URL
13211	ETag *string `location:"header" locationName:"ETag" type:"string"`
13212
13213	// If the object expiration is configured (see PUT Bucket lifecycle), the response
13214	// includes this header. It includes the expiry-date and rule-id key value pairs
13215	// providing object expiration information. The value of the rule-id is URL
13216	// encoded.
13217	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
13218
13219	// The date and time at which the object is no longer cacheable.
13220	Expires *string `location:"header" locationName:"Expires" type:"string"`
13221
13222	// Last modified date of the object
13223	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
13224
13225	// A map of metadata to store with the object in S3.
13226	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
13227
13228	// This is set to the number of metadata entries not returned in x-amz-meta
13229	// headers. This can happen if you create metadata using an API like SOAP that
13230	// supports more flexible metadata than the REST API. For example, using SOAP,
13231	// you can create metadata whose values are not legal HTTP headers.
13232	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
13233
13234	// Indicates whether this object has an active legal hold. This field is only
13235	// returned if you have permission to view an object's legal hold status.
13236	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
13237
13238	// The Object Lock mode currently in place for this object.
13239	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
13240
13241	// The date and time when this object's Object Lock will expire.
13242	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
13243
13244	// The count of parts this object has.
13245	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
13246
13247	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
13248
13249	// If present, indicates that the requester was successfully charged for the
13250	// request.
13251	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
13252
13253	// Provides information about object restoration operation and expiration time
13254	// of the restored object copy.
13255	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
13256
13257	// If server-side encryption with a customer-provided encryption key was requested,
13258	// the response will include this header confirming the encryption algorithm
13259	// used.
13260	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13261
13262	// If server-side encryption with a customer-provided encryption key was requested,
13263	// the response will include this header to provide round trip message integrity
13264	// verification of the customer-provided encryption key.
13265	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13266
13267	// If present, specifies the ID of the AWS Key Management Service (KMS) master
13268	// encryption key that was used for the object.
13269	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
13270
13271	// The Server-side encryption algorithm used when storing this object in S3
13272	// (e.g., AES256, aws:kms).
13273	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
13274
13275	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
13276
13277	// The number of tags, if any, on the object.
13278	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
13279
13280	// Version of the object.
13281	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
13282
13283	// If the bucket is configured as a website, redirects requests for this object
13284	// to another object in the same bucket or to an external URL. Amazon S3 stores
13285	// the value of this header in the object metadata.
13286	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
13287}
13288
13289// String returns the string representation
13290func (s GetObjectOutput) String() string {
13291	return awsutil.Prettify(s)
13292}
13293
13294// GoString returns the string representation
13295func (s GetObjectOutput) GoString() string {
13296	return s.String()
13297}
13298
13299// SetAcceptRanges sets the AcceptRanges field's value.
13300func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
13301	s.AcceptRanges = &v
13302	return s
13303}
13304
13305// SetBody sets the Body field's value.
13306func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
13307	s.Body = v
13308	return s
13309}
13310
13311// SetCacheControl sets the CacheControl field's value.
13312func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
13313	s.CacheControl = &v
13314	return s
13315}
13316
13317// SetContentDisposition sets the ContentDisposition field's value.
13318func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
13319	s.ContentDisposition = &v
13320	return s
13321}
13322
13323// SetContentEncoding sets the ContentEncoding field's value.
13324func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
13325	s.ContentEncoding = &v
13326	return s
13327}
13328
13329// SetContentLanguage sets the ContentLanguage field's value.
13330func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
13331	s.ContentLanguage = &v
13332	return s
13333}
13334
13335// SetContentLength sets the ContentLength field's value.
13336func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
13337	s.ContentLength = &v
13338	return s
13339}
13340
13341// SetContentRange sets the ContentRange field's value.
13342func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
13343	s.ContentRange = &v
13344	return s
13345}
13346
13347// SetContentType sets the ContentType field's value.
13348func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
13349	s.ContentType = &v
13350	return s
13351}
13352
13353// SetDeleteMarker sets the DeleteMarker field's value.
13354func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
13355	s.DeleteMarker = &v
13356	return s
13357}
13358
13359// SetETag sets the ETag field's value.
13360func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
13361	s.ETag = &v
13362	return s
13363}
13364
13365// SetExpiration sets the Expiration field's value.
13366func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
13367	s.Expiration = &v
13368	return s
13369}
13370
13371// SetExpires sets the Expires field's value.
13372func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
13373	s.Expires = &v
13374	return s
13375}
13376
13377// SetLastModified sets the LastModified field's value.
13378func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
13379	s.LastModified = &v
13380	return s
13381}
13382
13383// SetMetadata sets the Metadata field's value.
13384func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
13385	s.Metadata = v
13386	return s
13387}
13388
13389// SetMissingMeta sets the MissingMeta field's value.
13390func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
13391	s.MissingMeta = &v
13392	return s
13393}
13394
13395// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
13396func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput {
13397	s.ObjectLockLegalHoldStatus = &v
13398	return s
13399}
13400
13401// SetObjectLockMode sets the ObjectLockMode field's value.
13402func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput {
13403	s.ObjectLockMode = &v
13404	return s
13405}
13406
13407// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
13408func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput {
13409	s.ObjectLockRetainUntilDate = &v
13410	return s
13411}
13412
13413// SetPartsCount sets the PartsCount field's value.
13414func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
13415	s.PartsCount = &v
13416	return s
13417}
13418
13419// SetReplicationStatus sets the ReplicationStatus field's value.
13420func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
13421	s.ReplicationStatus = &v
13422	return s
13423}
13424
13425// SetRequestCharged sets the RequestCharged field's value.
13426func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
13427	s.RequestCharged = &v
13428	return s
13429}
13430
13431// SetRestore sets the Restore field's value.
13432func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
13433	s.Restore = &v
13434	return s
13435}
13436
13437// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
13438func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
13439	s.SSECustomerAlgorithm = &v
13440	return s
13441}
13442
13443// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
13444func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
13445	s.SSECustomerKeyMD5 = &v
13446	return s
13447}
13448
13449// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
13450func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
13451	s.SSEKMSKeyId = &v
13452	return s
13453}
13454
13455// SetServerSideEncryption sets the ServerSideEncryption field's value.
13456func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
13457	s.ServerSideEncryption = &v
13458	return s
13459}
13460
13461// SetStorageClass sets the StorageClass field's value.
13462func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
13463	s.StorageClass = &v
13464	return s
13465}
13466
13467// SetTagCount sets the TagCount field's value.
13468func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
13469	s.TagCount = &v
13470	return s
13471}
13472
13473// SetVersionId sets the VersionId field's value.
13474func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
13475	s.VersionId = &v
13476	return s
13477}
13478
13479// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
13480func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
13481	s.WebsiteRedirectLocation = &v
13482	return s
13483}
13484
13485type GetObjectRetentionInput struct {
13486	_ struct{} `type:"structure"`
13487
13488	// The bucket containing the object whose retention settings you want to retrieve.
13489	//
13490	// Bucket is a required field
13491	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13492
13493	// The key name for the object whose retention settings you want to retrieve.
13494	//
13495	// Key is a required field
13496	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13497
13498	// Confirms that the requester knows that she or he will be charged for the
13499	// request. Bucket owners need not specify this parameter in their requests.
13500	// Documentation on downloading objects from requester pays buckets can be found
13501	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
13502	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13503
13504	// The version ID for the object whose retention settings you want to retrieve.
13505	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
13506}
13507
13508// String returns the string representation
13509func (s GetObjectRetentionInput) String() string {
13510	return awsutil.Prettify(s)
13511}
13512
13513// GoString returns the string representation
13514func (s GetObjectRetentionInput) GoString() string {
13515	return s.String()
13516}
13517
13518// Validate inspects the fields of the type to determine if they are valid.
13519func (s *GetObjectRetentionInput) Validate() error {
13520	invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"}
13521	if s.Bucket == nil {
13522		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13523	}
13524	if s.Bucket != nil && len(*s.Bucket) < 1 {
13525		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13526	}
13527	if s.Key == nil {
13528		invalidParams.Add(request.NewErrParamRequired("Key"))
13529	}
13530	if s.Key != nil && len(*s.Key) < 1 {
13531		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13532	}
13533
13534	if invalidParams.Len() > 0 {
13535		return invalidParams
13536	}
13537	return nil
13538}
13539
13540// SetBucket sets the Bucket field's value.
13541func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput {
13542	s.Bucket = &v
13543	return s
13544}
13545
13546func (s *GetObjectRetentionInput) getBucket() (v string) {
13547	if s.Bucket == nil {
13548		return v
13549	}
13550	return *s.Bucket
13551}
13552
13553// SetKey sets the Key field's value.
13554func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput {
13555	s.Key = &v
13556	return s
13557}
13558
13559// SetRequestPayer sets the RequestPayer field's value.
13560func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput {
13561	s.RequestPayer = &v
13562	return s
13563}
13564
13565// SetVersionId sets the VersionId field's value.
13566func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput {
13567	s.VersionId = &v
13568	return s
13569}
13570
13571type GetObjectRetentionOutput struct {
13572	_ struct{} `type:"structure" payload:"Retention"`
13573
13574	// The container element for an object's retention settings.
13575	Retention *ObjectLockRetention `type:"structure"`
13576}
13577
13578// String returns the string representation
13579func (s GetObjectRetentionOutput) String() string {
13580	return awsutil.Prettify(s)
13581}
13582
13583// GoString returns the string representation
13584func (s GetObjectRetentionOutput) GoString() string {
13585	return s.String()
13586}
13587
13588// SetRetention sets the Retention field's value.
13589func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput {
13590	s.Retention = v
13591	return s
13592}
13593
13594type GetObjectTaggingInput struct {
13595	_ struct{} `type:"structure"`
13596
13597	// Bucket is a required field
13598	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13599
13600	// Key is a required field
13601	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13602
13603	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
13604}
13605
13606// String returns the string representation
13607func (s GetObjectTaggingInput) String() string {
13608	return awsutil.Prettify(s)
13609}
13610
13611// GoString returns the string representation
13612func (s GetObjectTaggingInput) GoString() string {
13613	return s.String()
13614}
13615
13616// Validate inspects the fields of the type to determine if they are valid.
13617func (s *GetObjectTaggingInput) Validate() error {
13618	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
13619	if s.Bucket == nil {
13620		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13621	}
13622	if s.Bucket != nil && len(*s.Bucket) < 1 {
13623		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13624	}
13625	if s.Key == nil {
13626		invalidParams.Add(request.NewErrParamRequired("Key"))
13627	}
13628	if s.Key != nil && len(*s.Key) < 1 {
13629		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13630	}
13631
13632	if invalidParams.Len() > 0 {
13633		return invalidParams
13634	}
13635	return nil
13636}
13637
13638// SetBucket sets the Bucket field's value.
13639func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
13640	s.Bucket = &v
13641	return s
13642}
13643
13644func (s *GetObjectTaggingInput) getBucket() (v string) {
13645	if s.Bucket == nil {
13646		return v
13647	}
13648	return *s.Bucket
13649}
13650
13651// SetKey sets the Key field's value.
13652func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
13653	s.Key = &v
13654	return s
13655}
13656
13657// SetVersionId sets the VersionId field's value.
13658func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
13659	s.VersionId = &v
13660	return s
13661}
13662
13663type GetObjectTaggingOutput struct {
13664	_ struct{} `type:"structure"`
13665
13666	// TagSet is a required field
13667	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
13668
13669	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
13670}
13671
13672// String returns the string representation
13673func (s GetObjectTaggingOutput) String() string {
13674	return awsutil.Prettify(s)
13675}
13676
13677// GoString returns the string representation
13678func (s GetObjectTaggingOutput) GoString() string {
13679	return s.String()
13680}
13681
13682// SetTagSet sets the TagSet field's value.
13683func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
13684	s.TagSet = v
13685	return s
13686}
13687
13688// SetVersionId sets the VersionId field's value.
13689func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
13690	s.VersionId = &v
13691	return s
13692}
13693
13694type GetObjectTorrentInput struct {
13695	_ struct{} `type:"structure"`
13696
13697	// Bucket is a required field
13698	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13699
13700	// Key is a required field
13701	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13702
13703	// Confirms that the requester knows that she or he will be charged for the
13704	// request. Bucket owners need not specify this parameter in their requests.
13705	// Documentation on downloading objects from requester pays buckets can be found
13706	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
13707	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13708}
13709
13710// String returns the string representation
13711func (s GetObjectTorrentInput) String() string {
13712	return awsutil.Prettify(s)
13713}
13714
13715// GoString returns the string representation
13716func (s GetObjectTorrentInput) GoString() string {
13717	return s.String()
13718}
13719
13720// Validate inspects the fields of the type to determine if they are valid.
13721func (s *GetObjectTorrentInput) Validate() error {
13722	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
13723	if s.Bucket == nil {
13724		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13725	}
13726	if s.Bucket != nil && len(*s.Bucket) < 1 {
13727		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13728	}
13729	if s.Key == nil {
13730		invalidParams.Add(request.NewErrParamRequired("Key"))
13731	}
13732	if s.Key != nil && len(*s.Key) < 1 {
13733		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13734	}
13735
13736	if invalidParams.Len() > 0 {
13737		return invalidParams
13738	}
13739	return nil
13740}
13741
13742// SetBucket sets the Bucket field's value.
13743func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
13744	s.Bucket = &v
13745	return s
13746}
13747
13748func (s *GetObjectTorrentInput) getBucket() (v string) {
13749	if s.Bucket == nil {
13750		return v
13751	}
13752	return *s.Bucket
13753}
13754
13755// SetKey sets the Key field's value.
13756func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
13757	s.Key = &v
13758	return s
13759}
13760
13761// SetRequestPayer sets the RequestPayer field's value.
13762func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
13763	s.RequestPayer = &v
13764	return s
13765}
13766
13767type GetObjectTorrentOutput struct {
13768	_ struct{} `type:"structure" payload:"Body"`
13769
13770	Body io.ReadCloser `type:"blob"`
13771
13772	// If present, indicates that the requester was successfully charged for the
13773	// request.
13774	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
13775}
13776
13777// String returns the string representation
13778func (s GetObjectTorrentOutput) String() string {
13779	return awsutil.Prettify(s)
13780}
13781
13782// GoString returns the string representation
13783func (s GetObjectTorrentOutput) GoString() string {
13784	return s.String()
13785}
13786
13787// SetBody sets the Body field's value.
13788func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
13789	s.Body = v
13790	return s
13791}
13792
13793// SetRequestCharged sets the RequestCharged field's value.
13794func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
13795	s.RequestCharged = &v
13796	return s
13797}
13798
13799type GetPublicAccessBlockInput struct {
13800	_ struct{} `type:"structure"`
13801
13802	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
13803	// want to retrieve.
13804	//
13805	// Bucket is a required field
13806	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13807}
13808
13809// String returns the string representation
13810func (s GetPublicAccessBlockInput) String() string {
13811	return awsutil.Prettify(s)
13812}
13813
13814// GoString returns the string representation
13815func (s GetPublicAccessBlockInput) GoString() string {
13816	return s.String()
13817}
13818
13819// Validate inspects the fields of the type to determine if they are valid.
13820func (s *GetPublicAccessBlockInput) Validate() error {
13821	invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"}
13822	if s.Bucket == nil {
13823		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13824	}
13825	if s.Bucket != nil && len(*s.Bucket) < 1 {
13826		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13827	}
13828
13829	if invalidParams.Len() > 0 {
13830		return invalidParams
13831	}
13832	return nil
13833}
13834
13835// SetBucket sets the Bucket field's value.
13836func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput {
13837	s.Bucket = &v
13838	return s
13839}
13840
13841func (s *GetPublicAccessBlockInput) getBucket() (v string) {
13842	if s.Bucket == nil {
13843		return v
13844	}
13845	return *s.Bucket
13846}
13847
13848type GetPublicAccessBlockOutput struct {
13849	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
13850
13851	// The PublicAccessBlock configuration currently in effect for this Amazon S3
13852	// bucket.
13853	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"`
13854}
13855
13856// String returns the string representation
13857func (s GetPublicAccessBlockOutput) String() string {
13858	return awsutil.Prettify(s)
13859}
13860
13861// GoString returns the string representation
13862func (s GetPublicAccessBlockOutput) GoString() string {
13863	return s.String()
13864}
13865
13866// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
13867func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput {
13868	s.PublicAccessBlockConfiguration = v
13869	return s
13870}
13871
13872type GlacierJobParameters struct {
13873	_ struct{} `type:"structure"`
13874
13875	// Glacier retrieval tier at which the restore will be processed.
13876	//
13877	// Tier is a required field
13878	Tier *string `type:"string" required:"true" enum:"Tier"`
13879}
13880
13881// String returns the string representation
13882func (s GlacierJobParameters) String() string {
13883	return awsutil.Prettify(s)
13884}
13885
13886// GoString returns the string representation
13887func (s GlacierJobParameters) GoString() string {
13888	return s.String()
13889}
13890
13891// Validate inspects the fields of the type to determine if they are valid.
13892func (s *GlacierJobParameters) Validate() error {
13893	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
13894	if s.Tier == nil {
13895		invalidParams.Add(request.NewErrParamRequired("Tier"))
13896	}
13897
13898	if invalidParams.Len() > 0 {
13899		return invalidParams
13900	}
13901	return nil
13902}
13903
13904// SetTier sets the Tier field's value.
13905func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
13906	s.Tier = &v
13907	return s
13908}
13909
13910type Grant struct {
13911	_ struct{} `type:"structure"`
13912
13913	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
13914
13915	// Specifies the permission given to the grantee.
13916	Permission *string `type:"string" enum:"Permission"`
13917}
13918
13919// String returns the string representation
13920func (s Grant) String() string {
13921	return awsutil.Prettify(s)
13922}
13923
13924// GoString returns the string representation
13925func (s Grant) GoString() string {
13926	return s.String()
13927}
13928
13929// Validate inspects the fields of the type to determine if they are valid.
13930func (s *Grant) Validate() error {
13931	invalidParams := request.ErrInvalidParams{Context: "Grant"}
13932	if s.Grantee != nil {
13933		if err := s.Grantee.Validate(); err != nil {
13934			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
13935		}
13936	}
13937
13938	if invalidParams.Len() > 0 {
13939		return invalidParams
13940	}
13941	return nil
13942}
13943
13944// SetGrantee sets the Grantee field's value.
13945func (s *Grant) SetGrantee(v *Grantee) *Grant {
13946	s.Grantee = v
13947	return s
13948}
13949
13950// SetPermission sets the Permission field's value.
13951func (s *Grant) SetPermission(v string) *Grant {
13952	s.Permission = &v
13953	return s
13954}
13955
13956type Grantee struct {
13957	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
13958
13959	// Screen name of the grantee.
13960	DisplayName *string `type:"string"`
13961
13962	// Email address of the grantee.
13963	EmailAddress *string `type:"string"`
13964
13965	// The canonical user ID of the grantee.
13966	ID *string `type:"string"`
13967
13968	// Type of grantee
13969	//
13970	// Type is a required field
13971	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
13972
13973	// URI of the grantee group.
13974	URI *string `type:"string"`
13975}
13976
13977// String returns the string representation
13978func (s Grantee) String() string {
13979	return awsutil.Prettify(s)
13980}
13981
13982// GoString returns the string representation
13983func (s Grantee) GoString() string {
13984	return s.String()
13985}
13986
13987// Validate inspects the fields of the type to determine if they are valid.
13988func (s *Grantee) Validate() error {
13989	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
13990	if s.Type == nil {
13991		invalidParams.Add(request.NewErrParamRequired("Type"))
13992	}
13993
13994	if invalidParams.Len() > 0 {
13995		return invalidParams
13996	}
13997	return nil
13998}
13999
14000// SetDisplayName sets the DisplayName field's value.
14001func (s *Grantee) SetDisplayName(v string) *Grantee {
14002	s.DisplayName = &v
14003	return s
14004}
14005
14006// SetEmailAddress sets the EmailAddress field's value.
14007func (s *Grantee) SetEmailAddress(v string) *Grantee {
14008	s.EmailAddress = &v
14009	return s
14010}
14011
14012// SetID sets the ID field's value.
14013func (s *Grantee) SetID(v string) *Grantee {
14014	s.ID = &v
14015	return s
14016}
14017
14018// SetType sets the Type field's value.
14019func (s *Grantee) SetType(v string) *Grantee {
14020	s.Type = &v
14021	return s
14022}
14023
14024// SetURI sets the URI field's value.
14025func (s *Grantee) SetURI(v string) *Grantee {
14026	s.URI = &v
14027	return s
14028}
14029
14030type HeadBucketInput struct {
14031	_ struct{} `type:"structure"`
14032
14033	// Bucket is a required field
14034	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14035}
14036
14037// String returns the string representation
14038func (s HeadBucketInput) String() string {
14039	return awsutil.Prettify(s)
14040}
14041
14042// GoString returns the string representation
14043func (s HeadBucketInput) GoString() string {
14044	return s.String()
14045}
14046
14047// Validate inspects the fields of the type to determine if they are valid.
14048func (s *HeadBucketInput) Validate() error {
14049	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
14050	if s.Bucket == nil {
14051		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14052	}
14053	if s.Bucket != nil && len(*s.Bucket) < 1 {
14054		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14055	}
14056
14057	if invalidParams.Len() > 0 {
14058		return invalidParams
14059	}
14060	return nil
14061}
14062
14063// SetBucket sets the Bucket field's value.
14064func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
14065	s.Bucket = &v
14066	return s
14067}
14068
14069func (s *HeadBucketInput) getBucket() (v string) {
14070	if s.Bucket == nil {
14071		return v
14072	}
14073	return *s.Bucket
14074}
14075
14076type HeadBucketOutput struct {
14077	_ struct{} `type:"structure"`
14078}
14079
14080// String returns the string representation
14081func (s HeadBucketOutput) String() string {
14082	return awsutil.Prettify(s)
14083}
14084
14085// GoString returns the string representation
14086func (s HeadBucketOutput) GoString() string {
14087	return s.String()
14088}
14089
14090type HeadObjectInput struct {
14091	_ struct{} `type:"structure"`
14092
14093	// Bucket is a required field
14094	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14095
14096	// Return the object only if its entity tag (ETag) is the same as the one specified,
14097	// otherwise return a 412 (precondition failed).
14098	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
14099
14100	// Return the object only if it has been modified since the specified time,
14101	// otherwise return a 304 (not modified).
14102	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
14103
14104	// Return the object only if its entity tag (ETag) is different from the one
14105	// specified, otherwise return a 304 (not modified).
14106	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
14107
14108	// Return the object only if it has not been modified since the specified time,
14109	// otherwise return a 412 (precondition failed).
14110	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
14111
14112	// Key is a required field
14113	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
14114
14115	// Part number of the object being read. This is a positive integer between
14116	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
14117	// Useful querying about the size of the part and the number of parts in this
14118	// object.
14119	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
14120
14121	// Downloads the specified range bytes of an object. For more information about
14122	// the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
14123	Range *string `location:"header" locationName:"Range" type:"string"`
14124
14125	// Confirms that the requester knows that she or he will be charged for the
14126	// request. Bucket owners need not specify this parameter in their requests.
14127	// Documentation on downloading objects from requester pays buckets can be found
14128	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
14129	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
14130
14131	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
14132	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
14133
14134	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
14135	// data. This value is used to store the object and then it is discarded; Amazon
14136	// does not store the encryption key. The key must be appropriate for use with
14137	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
14138	// header.
14139	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
14140
14141	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
14142	// Amazon S3 uses this header for a message integrity check to ensure the encryption
14143	// key was transmitted without error.
14144	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
14145
14146	// VersionId used to reference a specific version of the object.
14147	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
14148}
14149
14150// String returns the string representation
14151func (s HeadObjectInput) String() string {
14152	return awsutil.Prettify(s)
14153}
14154
14155// GoString returns the string representation
14156func (s HeadObjectInput) GoString() string {
14157	return s.String()
14158}
14159
14160// Validate inspects the fields of the type to determine if they are valid.
14161func (s *HeadObjectInput) Validate() error {
14162	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
14163	if s.Bucket == nil {
14164		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14165	}
14166	if s.Bucket != nil && len(*s.Bucket) < 1 {
14167		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14168	}
14169	if s.Key == nil {
14170		invalidParams.Add(request.NewErrParamRequired("Key"))
14171	}
14172	if s.Key != nil && len(*s.Key) < 1 {
14173		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14174	}
14175
14176	if invalidParams.Len() > 0 {
14177		return invalidParams
14178	}
14179	return nil
14180}
14181
14182// SetBucket sets the Bucket field's value.
14183func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
14184	s.Bucket = &v
14185	return s
14186}
14187
14188func (s *HeadObjectInput) getBucket() (v string) {
14189	if s.Bucket == nil {
14190		return v
14191	}
14192	return *s.Bucket
14193}
14194
14195// SetIfMatch sets the IfMatch field's value.
14196func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
14197	s.IfMatch = &v
14198	return s
14199}
14200
14201// SetIfModifiedSince sets the IfModifiedSince field's value.
14202func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
14203	s.IfModifiedSince = &v
14204	return s
14205}
14206
14207// SetIfNoneMatch sets the IfNoneMatch field's value.
14208func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
14209	s.IfNoneMatch = &v
14210	return s
14211}
14212
14213// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
14214func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
14215	s.IfUnmodifiedSince = &v
14216	return s
14217}
14218
14219// SetKey sets the Key field's value.
14220func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
14221	s.Key = &v
14222	return s
14223}
14224
14225// SetPartNumber sets the PartNumber field's value.
14226func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
14227	s.PartNumber = &v
14228	return s
14229}
14230
14231// SetRange sets the Range field's value.
14232func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
14233	s.Range = &v
14234	return s
14235}
14236
14237// SetRequestPayer sets the RequestPayer field's value.
14238func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
14239	s.RequestPayer = &v
14240	return s
14241}
14242
14243// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
14244func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
14245	s.SSECustomerAlgorithm = &v
14246	return s
14247}
14248
14249// SetSSECustomerKey sets the SSECustomerKey field's value.
14250func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
14251	s.SSECustomerKey = &v
14252	return s
14253}
14254
14255func (s *HeadObjectInput) getSSECustomerKey() (v string) {
14256	if s.SSECustomerKey == nil {
14257		return v
14258	}
14259	return *s.SSECustomerKey
14260}
14261
14262// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
14263func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
14264	s.SSECustomerKeyMD5 = &v
14265	return s
14266}
14267
14268// SetVersionId sets the VersionId field's value.
14269func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
14270	s.VersionId = &v
14271	return s
14272}
14273
14274type HeadObjectOutput struct {
14275	_ struct{} `type:"structure"`
14276
14277	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
14278
14279	// Specifies caching behavior along the request/reply chain.
14280	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
14281
14282	// Specifies presentational information for the object.
14283	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
14284
14285	// Specifies what content encodings have been applied to the object and thus
14286	// what decoding mechanisms must be applied to obtain the media-type referenced
14287	// by the Content-Type header field.
14288	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
14289
14290	// The language the content is in.
14291	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
14292
14293	// Size of the body in bytes.
14294	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
14295
14296	// A standard MIME type describing the format of the object data.
14297	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
14298
14299	// Specifies whether the object retrieved was (true) or was not (false) a Delete
14300	// Marker. If false, this response header does not appear in the response.
14301	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
14302
14303	// An ETag is an opaque identifier assigned by a web server to a specific version
14304	// of a resource found at a URL
14305	ETag *string `location:"header" locationName:"ETag" type:"string"`
14306
14307	// If the object expiration is configured (see PUT Bucket lifecycle), the response
14308	// includes this header. It includes the expiry-date and rule-id key value pairs
14309	// providing object expiration information. The value of the rule-id is URL
14310	// encoded.
14311	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
14312
14313	// The date and time at which the object is no longer cacheable.
14314	Expires *string `location:"header" locationName:"Expires" type:"string"`
14315
14316	// Last modified date of the object
14317	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
14318
14319	// A map of metadata to store with the object in S3.
14320	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
14321
14322	// This is set to the number of metadata entries not returned in x-amz-meta
14323	// headers. This can happen if you create metadata using an API like SOAP that
14324	// supports more flexible metadata than the REST API. For example, using SOAP,
14325	// you can create metadata whose values are not legal HTTP headers.
14326	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
14327
14328	// The Legal Hold status for the specified object.
14329	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
14330
14331	// The Object Lock mode currently in place for this object.
14332	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
14333
14334	// The date and time when this object's Object Lock will expire.
14335	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
14336
14337	// The count of parts this object has.
14338	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
14339
14340	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
14341
14342	// If present, indicates that the requester was successfully charged for the
14343	// request.
14344	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
14345
14346	// Provides information about object restoration operation and expiration time
14347	// of the restored object copy.
14348	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
14349
14350	// If server-side encryption with a customer-provided encryption key was requested,
14351	// the response will include this header confirming the encryption algorithm
14352	// used.
14353	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
14354
14355	// If server-side encryption with a customer-provided encryption key was requested,
14356	// the response will include this header to provide round trip message integrity
14357	// verification of the customer-provided encryption key.
14358	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
14359
14360	// If present, specifies the ID of the AWS Key Management Service (KMS) master
14361	// encryption key that was used for the object.
14362	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
14363
14364	// The Server-side encryption algorithm used when storing this object in S3
14365	// (e.g., AES256, aws:kms).
14366	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
14367
14368	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
14369
14370	// Version of the object.
14371	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
14372
14373	// If the bucket is configured as a website, redirects requests for this object
14374	// to another object in the same bucket or to an external URL. Amazon S3 stores
14375	// the value of this header in the object metadata.
14376	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
14377}
14378
14379// String returns the string representation
14380func (s HeadObjectOutput) String() string {
14381	return awsutil.Prettify(s)
14382}
14383
14384// GoString returns the string representation
14385func (s HeadObjectOutput) GoString() string {
14386	return s.String()
14387}
14388
14389// SetAcceptRanges sets the AcceptRanges field's value.
14390func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
14391	s.AcceptRanges = &v
14392	return s
14393}
14394
14395// SetCacheControl sets the CacheControl field's value.
14396func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
14397	s.CacheControl = &v
14398	return s
14399}
14400
14401// SetContentDisposition sets the ContentDisposition field's value.
14402func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
14403	s.ContentDisposition = &v
14404	return s
14405}
14406
14407// SetContentEncoding sets the ContentEncoding field's value.
14408func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
14409	s.ContentEncoding = &v
14410	return s
14411}
14412
14413// SetContentLanguage sets the ContentLanguage field's value.
14414func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
14415	s.ContentLanguage = &v
14416	return s
14417}
14418
14419// SetContentLength sets the ContentLength field's value.
14420func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
14421	s.ContentLength = &v
14422	return s
14423}
14424
14425// SetContentType sets the ContentType field's value.
14426func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
14427	s.ContentType = &v
14428	return s
14429}
14430
14431// SetDeleteMarker sets the DeleteMarker field's value.
14432func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
14433	s.DeleteMarker = &v
14434	return s
14435}
14436
14437// SetETag sets the ETag field's value.
14438func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
14439	s.ETag = &v
14440	return s
14441}
14442
14443// SetExpiration sets the Expiration field's value.
14444func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
14445	s.Expiration = &v
14446	return s
14447}
14448
14449// SetExpires sets the Expires field's value.
14450func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
14451	s.Expires = &v
14452	return s
14453}
14454
14455// SetLastModified sets the LastModified field's value.
14456func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
14457	s.LastModified = &v
14458	return s
14459}
14460
14461// SetMetadata sets the Metadata field's value.
14462func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
14463	s.Metadata = v
14464	return s
14465}
14466
14467// SetMissingMeta sets the MissingMeta field's value.
14468func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
14469	s.MissingMeta = &v
14470	return s
14471}
14472
14473// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
14474func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput {
14475	s.ObjectLockLegalHoldStatus = &v
14476	return s
14477}
14478
14479// SetObjectLockMode sets the ObjectLockMode field's value.
14480func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput {
14481	s.ObjectLockMode = &v
14482	return s
14483}
14484
14485// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
14486func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput {
14487	s.ObjectLockRetainUntilDate = &v
14488	return s
14489}
14490
14491// SetPartsCount sets the PartsCount field's value.
14492func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
14493	s.PartsCount = &v
14494	return s
14495}
14496
14497// SetReplicationStatus sets the ReplicationStatus field's value.
14498func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
14499	s.ReplicationStatus = &v
14500	return s
14501}
14502
14503// SetRequestCharged sets the RequestCharged field's value.
14504func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
14505	s.RequestCharged = &v
14506	return s
14507}
14508
14509// SetRestore sets the Restore field's value.
14510func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
14511	s.Restore = &v
14512	return s
14513}
14514
14515// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
14516func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
14517	s.SSECustomerAlgorithm = &v
14518	return s
14519}
14520
14521// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
14522func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
14523	s.SSECustomerKeyMD5 = &v
14524	return s
14525}
14526
14527// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
14528func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
14529	s.SSEKMSKeyId = &v
14530	return s
14531}
14532
14533// SetServerSideEncryption sets the ServerSideEncryption field's value.
14534func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
14535	s.ServerSideEncryption = &v
14536	return s
14537}
14538
14539// SetStorageClass sets the StorageClass field's value.
14540func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
14541	s.StorageClass = &v
14542	return s
14543}
14544
14545// SetVersionId sets the VersionId field's value.
14546func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
14547	s.VersionId = &v
14548	return s
14549}
14550
14551// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
14552func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
14553	s.WebsiteRedirectLocation = &v
14554	return s
14555}
14556
14557type IndexDocument struct {
14558	_ struct{} `type:"structure"`
14559
14560	// A suffix that is appended to a request that is for a directory on the website
14561	// endpoint (e.g. if the suffix is index.html and you make a request to samplebucket/images/
14562	// the data that is returned will be for the object with the key name images/index.html)
14563	// The suffix must not be empty and must not include a slash character.
14564	//
14565	// Suffix is a required field
14566	Suffix *string `type:"string" required:"true"`
14567}
14568
14569// String returns the string representation
14570func (s IndexDocument) String() string {
14571	return awsutil.Prettify(s)
14572}
14573
14574// GoString returns the string representation
14575func (s IndexDocument) GoString() string {
14576	return s.String()
14577}
14578
14579// Validate inspects the fields of the type to determine if they are valid.
14580func (s *IndexDocument) Validate() error {
14581	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
14582	if s.Suffix == nil {
14583		invalidParams.Add(request.NewErrParamRequired("Suffix"))
14584	}
14585
14586	if invalidParams.Len() > 0 {
14587		return invalidParams
14588	}
14589	return nil
14590}
14591
14592// SetSuffix sets the Suffix field's value.
14593func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
14594	s.Suffix = &v
14595	return s
14596}
14597
14598type Initiator struct {
14599	_ struct{} `type:"structure"`
14600
14601	// Name of the Principal.
14602	DisplayName *string `type:"string"`
14603
14604	// If the principal is an AWS account, it provides the Canonical User ID. If
14605	// the principal is an IAM User, it provides a user ARN value.
14606	ID *string `type:"string"`
14607}
14608
14609// String returns the string representation
14610func (s Initiator) String() string {
14611	return awsutil.Prettify(s)
14612}
14613
14614// GoString returns the string representation
14615func (s Initiator) GoString() string {
14616	return s.String()
14617}
14618
14619// SetDisplayName sets the DisplayName field's value.
14620func (s *Initiator) SetDisplayName(v string) *Initiator {
14621	s.DisplayName = &v
14622	return s
14623}
14624
14625// SetID sets the ID field's value.
14626func (s *Initiator) SetID(v string) *Initiator {
14627	s.ID = &v
14628	return s
14629}
14630
14631// Describes the serialization format of the object.
14632type InputSerialization struct {
14633	_ struct{} `type:"structure"`
14634
14635	// Describes the serialization of a CSV-encoded object.
14636	CSV *CSVInput `type:"structure"`
14637
14638	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
14639	// Value: NONE.
14640	CompressionType *string `type:"string" enum:"CompressionType"`
14641
14642	// Specifies JSON as object's input serialization format.
14643	JSON *JSONInput `type:"structure"`
14644
14645	// Specifies Parquet as object's input serialization format.
14646	Parquet *ParquetInput `type:"structure"`
14647}
14648
14649// String returns the string representation
14650func (s InputSerialization) String() string {
14651	return awsutil.Prettify(s)
14652}
14653
14654// GoString returns the string representation
14655func (s InputSerialization) GoString() string {
14656	return s.String()
14657}
14658
14659// SetCSV sets the CSV field's value.
14660func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
14661	s.CSV = v
14662	return s
14663}
14664
14665// SetCompressionType sets the CompressionType field's value.
14666func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
14667	s.CompressionType = &v
14668	return s
14669}
14670
14671// SetJSON sets the JSON field's value.
14672func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
14673	s.JSON = v
14674	return s
14675}
14676
14677// SetParquet sets the Parquet field's value.
14678func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
14679	s.Parquet = v
14680	return s
14681}
14682
14683type InventoryConfiguration struct {
14684	_ struct{} `type:"structure"`
14685
14686	// Contains information about where to publish the inventory results.
14687	//
14688	// Destination is a required field
14689	Destination *InventoryDestination `type:"structure" required:"true"`
14690
14691	// Specifies an inventory filter. The inventory only includes objects that meet
14692	// the filter's criteria.
14693	Filter *InventoryFilter `type:"structure"`
14694
14695	// The ID used to identify the inventory configuration.
14696	//
14697	// Id is a required field
14698	Id *string `type:"string" required:"true"`
14699
14700	// Specifies which object version(s) to included in the inventory results.
14701	//
14702	// IncludedObjectVersions is a required field
14703	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
14704
14705	// Specifies whether the inventory is enabled or disabled.
14706	//
14707	// IsEnabled is a required field
14708	IsEnabled *bool `type:"boolean" required:"true"`
14709
14710	// Contains the optional fields that are included in the inventory results.
14711	OptionalFields []*string `locationNameList:"Field" type:"list"`
14712
14713	// Specifies the schedule for generating inventory results.
14714	//
14715	// Schedule is a required field
14716	Schedule *InventorySchedule `type:"structure" required:"true"`
14717}
14718
14719// String returns the string representation
14720func (s InventoryConfiguration) String() string {
14721	return awsutil.Prettify(s)
14722}
14723
14724// GoString returns the string representation
14725func (s InventoryConfiguration) GoString() string {
14726	return s.String()
14727}
14728
14729// Validate inspects the fields of the type to determine if they are valid.
14730func (s *InventoryConfiguration) Validate() error {
14731	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
14732	if s.Destination == nil {
14733		invalidParams.Add(request.NewErrParamRequired("Destination"))
14734	}
14735	if s.Id == nil {
14736		invalidParams.Add(request.NewErrParamRequired("Id"))
14737	}
14738	if s.IncludedObjectVersions == nil {
14739		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
14740	}
14741	if s.IsEnabled == nil {
14742		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
14743	}
14744	if s.Schedule == nil {
14745		invalidParams.Add(request.NewErrParamRequired("Schedule"))
14746	}
14747	if s.Destination != nil {
14748		if err := s.Destination.Validate(); err != nil {
14749			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
14750		}
14751	}
14752	if s.Filter != nil {
14753		if err := s.Filter.Validate(); err != nil {
14754			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
14755		}
14756	}
14757	if s.Schedule != nil {
14758		if err := s.Schedule.Validate(); err != nil {
14759			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
14760		}
14761	}
14762
14763	if invalidParams.Len() > 0 {
14764		return invalidParams
14765	}
14766	return nil
14767}
14768
14769// SetDestination sets the Destination field's value.
14770func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
14771	s.Destination = v
14772	return s
14773}
14774
14775// SetFilter sets the Filter field's value.
14776func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
14777	s.Filter = v
14778	return s
14779}
14780
14781// SetId sets the Id field's value.
14782func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
14783	s.Id = &v
14784	return s
14785}
14786
14787// SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
14788func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
14789	s.IncludedObjectVersions = &v
14790	return s
14791}
14792
14793// SetIsEnabled sets the IsEnabled field's value.
14794func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
14795	s.IsEnabled = &v
14796	return s
14797}
14798
14799// SetOptionalFields sets the OptionalFields field's value.
14800func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
14801	s.OptionalFields = v
14802	return s
14803}
14804
14805// SetSchedule sets the Schedule field's value.
14806func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
14807	s.Schedule = v
14808	return s
14809}
14810
14811type InventoryDestination struct {
14812	_ struct{} `type:"structure"`
14813
14814	// Contains the bucket name, file format, bucket owner (optional), and prefix
14815	// (optional) where inventory results are published.
14816	//
14817	// S3BucketDestination is a required field
14818	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
14819}
14820
14821// String returns the string representation
14822func (s InventoryDestination) String() string {
14823	return awsutil.Prettify(s)
14824}
14825
14826// GoString returns the string representation
14827func (s InventoryDestination) GoString() string {
14828	return s.String()
14829}
14830
14831// Validate inspects the fields of the type to determine if they are valid.
14832func (s *InventoryDestination) Validate() error {
14833	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
14834	if s.S3BucketDestination == nil {
14835		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
14836	}
14837	if s.S3BucketDestination != nil {
14838		if err := s.S3BucketDestination.Validate(); err != nil {
14839			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
14840		}
14841	}
14842
14843	if invalidParams.Len() > 0 {
14844		return invalidParams
14845	}
14846	return nil
14847}
14848
14849// SetS3BucketDestination sets the S3BucketDestination field's value.
14850func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
14851	s.S3BucketDestination = v
14852	return s
14853}
14854
14855// Contains the type of server-side encryption used to encrypt the inventory
14856// results.
14857type InventoryEncryption struct {
14858	_ struct{} `type:"structure"`
14859
14860	// Specifies the use of SSE-KMS to encrypt delivered Inventory reports.
14861	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
14862
14863	// Specifies the use of SSE-S3 to encrypt delivered Inventory reports.
14864	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
14865}
14866
14867// String returns the string representation
14868func (s InventoryEncryption) String() string {
14869	return awsutil.Prettify(s)
14870}
14871
14872// GoString returns the string representation
14873func (s InventoryEncryption) GoString() string {
14874	return s.String()
14875}
14876
14877// Validate inspects the fields of the type to determine if they are valid.
14878func (s *InventoryEncryption) Validate() error {
14879	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
14880	if s.SSEKMS != nil {
14881		if err := s.SSEKMS.Validate(); err != nil {
14882			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
14883		}
14884	}
14885
14886	if invalidParams.Len() > 0 {
14887		return invalidParams
14888	}
14889	return nil
14890}
14891
14892// SetSSEKMS sets the SSEKMS field's value.
14893func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
14894	s.SSEKMS = v
14895	return s
14896}
14897
14898// SetSSES3 sets the SSES3 field's value.
14899func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
14900	s.SSES3 = v
14901	return s
14902}
14903
14904type InventoryFilter struct {
14905	_ struct{} `type:"structure"`
14906
14907	// The prefix that an object must have to be included in the inventory results.
14908	//
14909	// Prefix is a required field
14910	Prefix *string `type:"string" required:"true"`
14911}
14912
14913// String returns the string representation
14914func (s InventoryFilter) String() string {
14915	return awsutil.Prettify(s)
14916}
14917
14918// GoString returns the string representation
14919func (s InventoryFilter) GoString() string {
14920	return s.String()
14921}
14922
14923// Validate inspects the fields of the type to determine if they are valid.
14924func (s *InventoryFilter) Validate() error {
14925	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
14926	if s.Prefix == nil {
14927		invalidParams.Add(request.NewErrParamRequired("Prefix"))
14928	}
14929
14930	if invalidParams.Len() > 0 {
14931		return invalidParams
14932	}
14933	return nil
14934}
14935
14936// SetPrefix sets the Prefix field's value.
14937func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
14938	s.Prefix = &v
14939	return s
14940}
14941
14942type InventoryS3BucketDestination struct {
14943	_ struct{} `type:"structure"`
14944
14945	// The ID of the account that owns the destination bucket.
14946	AccountId *string `type:"string"`
14947
14948	// The Amazon resource name (ARN) of the bucket where inventory results will
14949	// be published.
14950	//
14951	// Bucket is a required field
14952	Bucket *string `type:"string" required:"true"`
14953
14954	// Contains the type of server-side encryption used to encrypt the inventory
14955	// results.
14956	Encryption *InventoryEncryption `type:"structure"`
14957
14958	// Specifies the output format of the inventory results.
14959	//
14960	// Format is a required field
14961	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
14962
14963	// The prefix that is prepended to all inventory results.
14964	Prefix *string `type:"string"`
14965}
14966
14967// String returns the string representation
14968func (s InventoryS3BucketDestination) String() string {
14969	return awsutil.Prettify(s)
14970}
14971
14972// GoString returns the string representation
14973func (s InventoryS3BucketDestination) GoString() string {
14974	return s.String()
14975}
14976
14977// Validate inspects the fields of the type to determine if they are valid.
14978func (s *InventoryS3BucketDestination) Validate() error {
14979	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
14980	if s.Bucket == nil {
14981		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14982	}
14983	if s.Format == nil {
14984		invalidParams.Add(request.NewErrParamRequired("Format"))
14985	}
14986	if s.Encryption != nil {
14987		if err := s.Encryption.Validate(); err != nil {
14988			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
14989		}
14990	}
14991
14992	if invalidParams.Len() > 0 {
14993		return invalidParams
14994	}
14995	return nil
14996}
14997
14998// SetAccountId sets the AccountId field's value.
14999func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
15000	s.AccountId = &v
15001	return s
15002}
15003
15004// SetBucket sets the Bucket field's value.
15005func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
15006	s.Bucket = &v
15007	return s
15008}
15009
15010func (s *InventoryS3BucketDestination) getBucket() (v string) {
15011	if s.Bucket == nil {
15012		return v
15013	}
15014	return *s.Bucket
15015}
15016
15017// SetEncryption sets the Encryption field's value.
15018func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
15019	s.Encryption = v
15020	return s
15021}
15022
15023// SetFormat sets the Format field's value.
15024func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
15025	s.Format = &v
15026	return s
15027}
15028
15029// SetPrefix sets the Prefix field's value.
15030func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
15031	s.Prefix = &v
15032	return s
15033}
15034
15035type InventorySchedule struct {
15036	_ struct{} `type:"structure"`
15037
15038	// Specifies how frequently inventory results are produced.
15039	//
15040	// Frequency is a required field
15041	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
15042}
15043
15044// String returns the string representation
15045func (s InventorySchedule) String() string {
15046	return awsutil.Prettify(s)
15047}
15048
15049// GoString returns the string representation
15050func (s InventorySchedule) GoString() string {
15051	return s.String()
15052}
15053
15054// Validate inspects the fields of the type to determine if they are valid.
15055func (s *InventorySchedule) Validate() error {
15056	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
15057	if s.Frequency == nil {
15058		invalidParams.Add(request.NewErrParamRequired("Frequency"))
15059	}
15060
15061	if invalidParams.Len() > 0 {
15062		return invalidParams
15063	}
15064	return nil
15065}
15066
15067// SetFrequency sets the Frequency field's value.
15068func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
15069	s.Frequency = &v
15070	return s
15071}
15072
15073type JSONInput struct {
15074	_ struct{} `type:"structure"`
15075
15076	// The type of JSON. Valid values: Document, Lines.
15077	Type *string `type:"string" enum:"JSONType"`
15078}
15079
15080// String returns the string representation
15081func (s JSONInput) String() string {
15082	return awsutil.Prettify(s)
15083}
15084
15085// GoString returns the string representation
15086func (s JSONInput) GoString() string {
15087	return s.String()
15088}
15089
15090// SetType sets the Type field's value.
15091func (s *JSONInput) SetType(v string) *JSONInput {
15092	s.Type = &v
15093	return s
15094}
15095
15096type JSONOutput struct {
15097	_ struct{} `type:"structure"`
15098
15099	// The value used to separate individual records in the output.
15100	RecordDelimiter *string `type:"string"`
15101}
15102
15103// String returns the string representation
15104func (s JSONOutput) String() string {
15105	return awsutil.Prettify(s)
15106}
15107
15108// GoString returns the string representation
15109func (s JSONOutput) GoString() string {
15110	return s.String()
15111}
15112
15113// SetRecordDelimiter sets the RecordDelimiter field's value.
15114func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
15115	s.RecordDelimiter = &v
15116	return s
15117}
15118
15119// A container for object key name prefix and suffix filtering rules.
15120type KeyFilter struct {
15121	_ struct{} `type:"structure"`
15122
15123	// A list of containers for the key value pair that defines the criteria for
15124	// the filter rule.
15125	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
15126}
15127
15128// String returns the string representation
15129func (s KeyFilter) String() string {
15130	return awsutil.Prettify(s)
15131}
15132
15133// GoString returns the string representation
15134func (s KeyFilter) GoString() string {
15135	return s.String()
15136}
15137
15138// SetFilterRules sets the FilterRules field's value.
15139func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
15140	s.FilterRules = v
15141	return s
15142}
15143
15144// A container for specifying the configuration for AWS Lambda notifications.
15145type LambdaFunctionConfiguration struct {
15146	_ struct{} `type:"structure"`
15147
15148	// Events is a required field
15149	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
15150
15151	// A container for object key name filtering rules. For information about key
15152	// name filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
15153	// in the Amazon Simple Storage Service Developer Guide.
15154	Filter *NotificationConfigurationFilter `type:"structure"`
15155
15156	// An optional unique identifier for configurations in a notification configuration.
15157	// If you don't provide one, Amazon S3 will assign an ID.
15158	Id *string `type:"string"`
15159
15160	// The Amazon Resource Name (ARN) of the Lambda cloud function that Amazon S3
15161	// can invoke when it detects events of the specified type.
15162	//
15163	// LambdaFunctionArn is a required field
15164	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
15165}
15166
15167// String returns the string representation
15168func (s LambdaFunctionConfiguration) String() string {
15169	return awsutil.Prettify(s)
15170}
15171
15172// GoString returns the string representation
15173func (s LambdaFunctionConfiguration) GoString() string {
15174	return s.String()
15175}
15176
15177// Validate inspects the fields of the type to determine if they are valid.
15178func (s *LambdaFunctionConfiguration) Validate() error {
15179	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
15180	if s.Events == nil {
15181		invalidParams.Add(request.NewErrParamRequired("Events"))
15182	}
15183	if s.LambdaFunctionArn == nil {
15184		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
15185	}
15186
15187	if invalidParams.Len() > 0 {
15188		return invalidParams
15189	}
15190	return nil
15191}
15192
15193// SetEvents sets the Events field's value.
15194func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
15195	s.Events = v
15196	return s
15197}
15198
15199// SetFilter sets the Filter field's value.
15200func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
15201	s.Filter = v
15202	return s
15203}
15204
15205// SetId sets the Id field's value.
15206func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
15207	s.Id = &v
15208	return s
15209}
15210
15211// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
15212func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
15213	s.LambdaFunctionArn = &v
15214	return s
15215}
15216
15217type LifecycleConfiguration struct {
15218	_ struct{} `type:"structure"`
15219
15220	// Rules is a required field
15221	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
15222}
15223
15224// String returns the string representation
15225func (s LifecycleConfiguration) String() string {
15226	return awsutil.Prettify(s)
15227}
15228
15229// GoString returns the string representation
15230func (s LifecycleConfiguration) GoString() string {
15231	return s.String()
15232}
15233
15234// Validate inspects the fields of the type to determine if they are valid.
15235func (s *LifecycleConfiguration) Validate() error {
15236	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
15237	if s.Rules == nil {
15238		invalidParams.Add(request.NewErrParamRequired("Rules"))
15239	}
15240	if s.Rules != nil {
15241		for i, v := range s.Rules {
15242			if v == nil {
15243				continue
15244			}
15245			if err := v.Validate(); err != nil {
15246				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
15247			}
15248		}
15249	}
15250
15251	if invalidParams.Len() > 0 {
15252		return invalidParams
15253	}
15254	return nil
15255}
15256
15257// SetRules sets the Rules field's value.
15258func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
15259	s.Rules = v
15260	return s
15261}
15262
15263type LifecycleExpiration struct {
15264	_ struct{} `type:"structure"`
15265
15266	// Indicates at what date the object is to be moved or deleted. Should be in
15267	// GMT ISO 8601 Format.
15268	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
15269
15270	// Indicates the lifetime, in days, of the objects that are subject to the rule.
15271	// The value must be a non-zero positive integer.
15272	Days *int64 `type:"integer"`
15273
15274	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
15275	// versions. If set to true, the delete marker will be expired; if set to false
15276	// the policy takes no action. This cannot be specified with Days or Date in
15277	// a Lifecycle Expiration Policy.
15278	ExpiredObjectDeleteMarker *bool `type:"boolean"`
15279}
15280
15281// String returns the string representation
15282func (s LifecycleExpiration) String() string {
15283	return awsutil.Prettify(s)
15284}
15285
15286// GoString returns the string representation
15287func (s LifecycleExpiration) GoString() string {
15288	return s.String()
15289}
15290
15291// SetDate sets the Date field's value.
15292func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
15293	s.Date = &v
15294	return s
15295}
15296
15297// SetDays sets the Days field's value.
15298func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
15299	s.Days = &v
15300	return s
15301}
15302
15303// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
15304func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
15305	s.ExpiredObjectDeleteMarker = &v
15306	return s
15307}
15308
15309type LifecycleRule struct {
15310	_ struct{} `type:"structure"`
15311
15312	// Specifies the days since the initiation of an Incomplete Multipart Upload
15313	// that Lifecycle will wait before permanently removing all parts of the upload.
15314	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
15315
15316	Expiration *LifecycleExpiration `type:"structure"`
15317
15318	// The Filter is used to identify objects that a Lifecycle Rule applies to.
15319	// A Filter must have exactly one of Prefix, Tag, or And specified.
15320	Filter *LifecycleRuleFilter `type:"structure"`
15321
15322	// Unique identifier for the rule. The value cannot be longer than 255 characters.
15323	ID *string `type:"string"`
15324
15325	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
15326	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
15327	// configuration action on a bucket that has versioning enabled (or suspended)
15328	// to request that Amazon S3 delete noncurrent object versions at a specific
15329	// period in the object's lifetime.
15330	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
15331
15332	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
15333
15334	// Prefix identifying one or more objects to which the rule applies. This is
15335	// No longer used; use Filter instead.
15336	//
15337	// Deprecated: Prefix has been deprecated
15338	Prefix *string `deprecated:"true" type:"string"`
15339
15340	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
15341	// is not currently being applied.
15342	//
15343	// Status is a required field
15344	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
15345
15346	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
15347}
15348
15349// String returns the string representation
15350func (s LifecycleRule) String() string {
15351	return awsutil.Prettify(s)
15352}
15353
15354// GoString returns the string representation
15355func (s LifecycleRule) GoString() string {
15356	return s.String()
15357}
15358
15359// Validate inspects the fields of the type to determine if they are valid.
15360func (s *LifecycleRule) Validate() error {
15361	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
15362	if s.Status == nil {
15363		invalidParams.Add(request.NewErrParamRequired("Status"))
15364	}
15365	if s.Filter != nil {
15366		if err := s.Filter.Validate(); err != nil {
15367			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
15368		}
15369	}
15370
15371	if invalidParams.Len() > 0 {
15372		return invalidParams
15373	}
15374	return nil
15375}
15376
15377// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
15378func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
15379	s.AbortIncompleteMultipartUpload = v
15380	return s
15381}
15382
15383// SetExpiration sets the Expiration field's value.
15384func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
15385	s.Expiration = v
15386	return s
15387}
15388
15389// SetFilter sets the Filter field's value.
15390func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
15391	s.Filter = v
15392	return s
15393}
15394
15395// SetID sets the ID field's value.
15396func (s *LifecycleRule) SetID(v string) *LifecycleRule {
15397	s.ID = &v
15398	return s
15399}
15400
15401// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
15402func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
15403	s.NoncurrentVersionExpiration = v
15404	return s
15405}
15406
15407// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
15408func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
15409	s.NoncurrentVersionTransitions = v
15410	return s
15411}
15412
15413// SetPrefix sets the Prefix field's value.
15414func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
15415	s.Prefix = &v
15416	return s
15417}
15418
15419// SetStatus sets the Status field's value.
15420func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
15421	s.Status = &v
15422	return s
15423}
15424
15425// SetTransitions sets the Transitions field's value.
15426func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
15427	s.Transitions = v
15428	return s
15429}
15430
15431// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
15432// more predicates. The Lifecycle Rule will apply to any object matching all
15433// of the predicates configured inside the And operator.
15434type LifecycleRuleAndOperator struct {
15435	_ struct{} `type:"structure"`
15436
15437	Prefix *string `type:"string"`
15438
15439	// All of these tags must exist in the object's tag set in order for the rule
15440	// to apply.
15441	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
15442}
15443
15444// String returns the string representation
15445func (s LifecycleRuleAndOperator) String() string {
15446	return awsutil.Prettify(s)
15447}
15448
15449// GoString returns the string representation
15450func (s LifecycleRuleAndOperator) GoString() string {
15451	return s.String()
15452}
15453
15454// Validate inspects the fields of the type to determine if they are valid.
15455func (s *LifecycleRuleAndOperator) Validate() error {
15456	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
15457	if s.Tags != nil {
15458		for i, v := range s.Tags {
15459			if v == nil {
15460				continue
15461			}
15462			if err := v.Validate(); err != nil {
15463				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
15464			}
15465		}
15466	}
15467
15468	if invalidParams.Len() > 0 {
15469		return invalidParams
15470	}
15471	return nil
15472}
15473
15474// SetPrefix sets the Prefix field's value.
15475func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
15476	s.Prefix = &v
15477	return s
15478}
15479
15480// SetTags sets the Tags field's value.
15481func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
15482	s.Tags = v
15483	return s
15484}
15485
15486// The Filter is used to identify objects that a Lifecycle Rule applies to.
15487// A Filter must have exactly one of Prefix, Tag, or And specified.
15488type LifecycleRuleFilter struct {
15489	_ struct{} `type:"structure"`
15490
15491	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
15492	// more predicates. The Lifecycle Rule will apply to any object matching all
15493	// of the predicates configured inside the And operator.
15494	And *LifecycleRuleAndOperator `type:"structure"`
15495
15496	// Prefix identifying one or more objects to which the rule applies.
15497	Prefix *string `type:"string"`
15498
15499	// This tag must exist in the object's tag set in order for the rule to apply.
15500	Tag *Tag `type:"structure"`
15501}
15502
15503// String returns the string representation
15504func (s LifecycleRuleFilter) String() string {
15505	return awsutil.Prettify(s)
15506}
15507
15508// GoString returns the string representation
15509func (s LifecycleRuleFilter) GoString() string {
15510	return s.String()
15511}
15512
15513// Validate inspects the fields of the type to determine if they are valid.
15514func (s *LifecycleRuleFilter) Validate() error {
15515	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
15516	if s.And != nil {
15517		if err := s.And.Validate(); err != nil {
15518			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
15519		}
15520	}
15521	if s.Tag != nil {
15522		if err := s.Tag.Validate(); err != nil {
15523			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
15524		}
15525	}
15526
15527	if invalidParams.Len() > 0 {
15528		return invalidParams
15529	}
15530	return nil
15531}
15532
15533// SetAnd sets the And field's value.
15534func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
15535	s.And = v
15536	return s
15537}
15538
15539// SetPrefix sets the Prefix field's value.
15540func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
15541	s.Prefix = &v
15542	return s
15543}
15544
15545// SetTag sets the Tag field's value.
15546func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
15547	s.Tag = v
15548	return s
15549}
15550
15551type ListBucketAnalyticsConfigurationsInput struct {
15552	_ struct{} `type:"structure"`
15553
15554	// The name of the bucket from which analytics configurations are retrieved.
15555	//
15556	// Bucket is a required field
15557	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15558
15559	// The ContinuationToken that represents a placeholder from where this request
15560	// should begin.
15561	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
15562}
15563
15564// String returns the string representation
15565func (s ListBucketAnalyticsConfigurationsInput) String() string {
15566	return awsutil.Prettify(s)
15567}
15568
15569// GoString returns the string representation
15570func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
15571	return s.String()
15572}
15573
15574// Validate inspects the fields of the type to determine if they are valid.
15575func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
15576	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
15577	if s.Bucket == nil {
15578		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15579	}
15580	if s.Bucket != nil && len(*s.Bucket) < 1 {
15581		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15582	}
15583
15584	if invalidParams.Len() > 0 {
15585		return invalidParams
15586	}
15587	return nil
15588}
15589
15590// SetBucket sets the Bucket field's value.
15591func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
15592	s.Bucket = &v
15593	return s
15594}
15595
15596func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
15597	if s.Bucket == nil {
15598		return v
15599	}
15600	return *s.Bucket
15601}
15602
15603// SetContinuationToken sets the ContinuationToken field's value.
15604func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
15605	s.ContinuationToken = &v
15606	return s
15607}
15608
15609type ListBucketAnalyticsConfigurationsOutput struct {
15610	_ struct{} `type:"structure"`
15611
15612	// The list of analytics configurations for a bucket.
15613	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
15614
15615	// The ContinuationToken that represents where this request began.
15616	ContinuationToken *string `type:"string"`
15617
15618	// Indicates whether the returned list of analytics configurations is complete.
15619	// A value of true indicates that the list is not complete and the NextContinuationToken
15620	// will be provided for a subsequent request.
15621	IsTruncated *bool `type:"boolean"`
15622
15623	// NextContinuationToken is sent when isTruncated is true, which indicates that
15624	// there are more analytics configurations to list. The next request must include
15625	// this NextContinuationToken. The token is obfuscated and is not a usable value.
15626	NextContinuationToken *string `type:"string"`
15627}
15628
15629// String returns the string representation
15630func (s ListBucketAnalyticsConfigurationsOutput) String() string {
15631	return awsutil.Prettify(s)
15632}
15633
15634// GoString returns the string representation
15635func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
15636	return s.String()
15637}
15638
15639// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
15640func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
15641	s.AnalyticsConfigurationList = v
15642	return s
15643}
15644
15645// SetContinuationToken sets the ContinuationToken field's value.
15646func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
15647	s.ContinuationToken = &v
15648	return s
15649}
15650
15651// SetIsTruncated sets the IsTruncated field's value.
15652func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
15653	s.IsTruncated = &v
15654	return s
15655}
15656
15657// SetNextContinuationToken sets the NextContinuationToken field's value.
15658func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
15659	s.NextContinuationToken = &v
15660	return s
15661}
15662
15663type ListBucketInventoryConfigurationsInput struct {
15664	_ struct{} `type:"structure"`
15665
15666	// The name of the bucket containing the inventory configurations to retrieve.
15667	//
15668	// Bucket is a required field
15669	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15670
15671	// The marker used to continue an inventory configuration listing that has been
15672	// truncated. Use the NextContinuationToken from a previously truncated list
15673	// response to continue the listing. The continuation token is an opaque value
15674	// that Amazon S3 understands.
15675	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
15676}
15677
15678// String returns the string representation
15679func (s ListBucketInventoryConfigurationsInput) String() string {
15680	return awsutil.Prettify(s)
15681}
15682
15683// GoString returns the string representation
15684func (s ListBucketInventoryConfigurationsInput) GoString() string {
15685	return s.String()
15686}
15687
15688// Validate inspects the fields of the type to determine if they are valid.
15689func (s *ListBucketInventoryConfigurationsInput) Validate() error {
15690	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
15691	if s.Bucket == nil {
15692		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15693	}
15694	if s.Bucket != nil && len(*s.Bucket) < 1 {
15695		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15696	}
15697
15698	if invalidParams.Len() > 0 {
15699		return invalidParams
15700	}
15701	return nil
15702}
15703
15704// SetBucket sets the Bucket field's value.
15705func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
15706	s.Bucket = &v
15707	return s
15708}
15709
15710func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
15711	if s.Bucket == nil {
15712		return v
15713	}
15714	return *s.Bucket
15715}
15716
15717// SetContinuationToken sets the ContinuationToken field's value.
15718func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
15719	s.ContinuationToken = &v
15720	return s
15721}
15722
15723type ListBucketInventoryConfigurationsOutput struct {
15724	_ struct{} `type:"structure"`
15725
15726	// If sent in the request, the marker that is used as a starting point for this
15727	// inventory configuration list response.
15728	ContinuationToken *string `type:"string"`
15729
15730	// The list of inventory configurations for a bucket.
15731	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
15732
15733	// Indicates whether the returned list of inventory configurations is truncated
15734	// in this response. A value of true indicates that the list is truncated.
15735	IsTruncated *bool `type:"boolean"`
15736
15737	// The marker used to continue this inventory configuration listing. Use the
15738	// NextContinuationToken from this response to continue the listing in a subsequent
15739	// request. The continuation token is an opaque value that Amazon S3 understands.
15740	NextContinuationToken *string `type:"string"`
15741}
15742
15743// String returns the string representation
15744func (s ListBucketInventoryConfigurationsOutput) String() string {
15745	return awsutil.Prettify(s)
15746}
15747
15748// GoString returns the string representation
15749func (s ListBucketInventoryConfigurationsOutput) GoString() string {
15750	return s.String()
15751}
15752
15753// SetContinuationToken sets the ContinuationToken field's value.
15754func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
15755	s.ContinuationToken = &v
15756	return s
15757}
15758
15759// SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
15760func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
15761	s.InventoryConfigurationList = v
15762	return s
15763}
15764
15765// SetIsTruncated sets the IsTruncated field's value.
15766func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
15767	s.IsTruncated = &v
15768	return s
15769}
15770
15771// SetNextContinuationToken sets the NextContinuationToken field's value.
15772func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
15773	s.NextContinuationToken = &v
15774	return s
15775}
15776
15777type ListBucketMetricsConfigurationsInput struct {
15778	_ struct{} `type:"structure"`
15779
15780	// The name of the bucket containing the metrics configurations to retrieve.
15781	//
15782	// Bucket is a required field
15783	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15784
15785	// The marker that is used to continue a metrics configuration listing that
15786	// has been truncated. Use the NextContinuationToken from a previously truncated
15787	// list response to continue the listing. The continuation token is an opaque
15788	// value that Amazon S3 understands.
15789	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
15790}
15791
15792// String returns the string representation
15793func (s ListBucketMetricsConfigurationsInput) String() string {
15794	return awsutil.Prettify(s)
15795}
15796
15797// GoString returns the string representation
15798func (s ListBucketMetricsConfigurationsInput) GoString() string {
15799	return s.String()
15800}
15801
15802// Validate inspects the fields of the type to determine if they are valid.
15803func (s *ListBucketMetricsConfigurationsInput) Validate() error {
15804	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
15805	if s.Bucket == nil {
15806		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15807	}
15808	if s.Bucket != nil && len(*s.Bucket) < 1 {
15809		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15810	}
15811
15812	if invalidParams.Len() > 0 {
15813		return invalidParams
15814	}
15815	return nil
15816}
15817
15818// SetBucket sets the Bucket field's value.
15819func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
15820	s.Bucket = &v
15821	return s
15822}
15823
15824func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
15825	if s.Bucket == nil {
15826		return v
15827	}
15828	return *s.Bucket
15829}
15830
15831// SetContinuationToken sets the ContinuationToken field's value.
15832func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
15833	s.ContinuationToken = &v
15834	return s
15835}
15836
15837type ListBucketMetricsConfigurationsOutput struct {
15838	_ struct{} `type:"structure"`
15839
15840	// The marker that is used as a starting point for this metrics configuration
15841	// list response. This value is present if it was sent in the request.
15842	ContinuationToken *string `type:"string"`
15843
15844	// Indicates whether the returned list of metrics configurations is complete.
15845	// A value of true indicates that the list is not complete and the NextContinuationToken
15846	// will be provided for a subsequent request.
15847	IsTruncated *bool `type:"boolean"`
15848
15849	// The list of metrics configurations for a bucket.
15850	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
15851
15852	// The marker used to continue a metrics configuration listing that has been
15853	// truncated. Use the NextContinuationToken from a previously truncated list
15854	// response to continue the listing. The continuation token is an opaque value
15855	// that Amazon S3 understands.
15856	NextContinuationToken *string `type:"string"`
15857}
15858
15859// String returns the string representation
15860func (s ListBucketMetricsConfigurationsOutput) String() string {
15861	return awsutil.Prettify(s)
15862}
15863
15864// GoString returns the string representation
15865func (s ListBucketMetricsConfigurationsOutput) GoString() string {
15866	return s.String()
15867}
15868
15869// SetContinuationToken sets the ContinuationToken field's value.
15870func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
15871	s.ContinuationToken = &v
15872	return s
15873}
15874
15875// SetIsTruncated sets the IsTruncated field's value.
15876func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
15877	s.IsTruncated = &v
15878	return s
15879}
15880
15881// SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
15882func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
15883	s.MetricsConfigurationList = v
15884	return s
15885}
15886
15887// SetNextContinuationToken sets the NextContinuationToken field's value.
15888func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
15889	s.NextContinuationToken = &v
15890	return s
15891}
15892
15893type ListBucketsInput struct {
15894	_ struct{} `type:"structure"`
15895}
15896
15897// String returns the string representation
15898func (s ListBucketsInput) String() string {
15899	return awsutil.Prettify(s)
15900}
15901
15902// GoString returns the string representation
15903func (s ListBucketsInput) GoString() string {
15904	return s.String()
15905}
15906
15907type ListBucketsOutput struct {
15908	_ struct{} `type:"structure"`
15909
15910	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
15911
15912	Owner *Owner `type:"structure"`
15913}
15914
15915// String returns the string representation
15916func (s ListBucketsOutput) String() string {
15917	return awsutil.Prettify(s)
15918}
15919
15920// GoString returns the string representation
15921func (s ListBucketsOutput) GoString() string {
15922	return s.String()
15923}
15924
15925// SetBuckets sets the Buckets field's value.
15926func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
15927	s.Buckets = v
15928	return s
15929}
15930
15931// SetOwner sets the Owner field's value.
15932func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
15933	s.Owner = v
15934	return s
15935}
15936
15937type ListMultipartUploadsInput struct {
15938	_ struct{} `type:"structure"`
15939
15940	// Bucket is a required field
15941	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15942
15943	// Character you use to group keys.
15944	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
15945
15946	// Requests Amazon S3 to encode the object keys in the response and specifies
15947	// the encoding method to use. An object key may contain any Unicode character;
15948	// however, XML 1.0 parser cannot parse some characters, such as characters
15949	// with an ASCII value from 0 to 10. For characters that are not supported in
15950	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
15951	// keys in the response.
15952	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
15953
15954	// Together with upload-id-marker, this parameter specifies the multipart upload
15955	// after which listing should begin.
15956	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
15957
15958	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
15959	// in the response body. 1,000 is the maximum number of uploads that can be
15960	// returned in a response.
15961	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
15962
15963	// Lists in-progress uploads only for those keys that begin with the specified
15964	// prefix.
15965	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
15966
15967	// Together with key-marker, specifies the multipart upload after which listing
15968	// should begin. If key-marker is not specified, the upload-id-marker parameter
15969	// is ignored.
15970	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
15971}
15972
15973// String returns the string representation
15974func (s ListMultipartUploadsInput) String() string {
15975	return awsutil.Prettify(s)
15976}
15977
15978// GoString returns the string representation
15979func (s ListMultipartUploadsInput) GoString() string {
15980	return s.String()
15981}
15982
15983// Validate inspects the fields of the type to determine if they are valid.
15984func (s *ListMultipartUploadsInput) Validate() error {
15985	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
15986	if s.Bucket == nil {
15987		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15988	}
15989	if s.Bucket != nil && len(*s.Bucket) < 1 {
15990		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15991	}
15992
15993	if invalidParams.Len() > 0 {
15994		return invalidParams
15995	}
15996	return nil
15997}
15998
15999// SetBucket sets the Bucket field's value.
16000func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
16001	s.Bucket = &v
16002	return s
16003}
16004
16005func (s *ListMultipartUploadsInput) getBucket() (v string) {
16006	if s.Bucket == nil {
16007		return v
16008	}
16009	return *s.Bucket
16010}
16011
16012// SetDelimiter sets the Delimiter field's value.
16013func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
16014	s.Delimiter = &v
16015	return s
16016}
16017
16018// SetEncodingType sets the EncodingType field's value.
16019func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
16020	s.EncodingType = &v
16021	return s
16022}
16023
16024// SetKeyMarker sets the KeyMarker field's value.
16025func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
16026	s.KeyMarker = &v
16027	return s
16028}
16029
16030// SetMaxUploads sets the MaxUploads field's value.
16031func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
16032	s.MaxUploads = &v
16033	return s
16034}
16035
16036// SetPrefix sets the Prefix field's value.
16037func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
16038	s.Prefix = &v
16039	return s
16040}
16041
16042// SetUploadIdMarker sets the UploadIdMarker field's value.
16043func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
16044	s.UploadIdMarker = &v
16045	return s
16046}
16047
16048type ListMultipartUploadsOutput struct {
16049	_ struct{} `type:"structure"`
16050
16051	// Name of the bucket to which the multipart upload was initiated.
16052	Bucket *string `type:"string"`
16053
16054	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
16055
16056	Delimiter *string `type:"string"`
16057
16058	// Encoding type used by Amazon S3 to encode object keys in the response.
16059	EncodingType *string `type:"string" enum:"EncodingType"`
16060
16061	// Indicates whether the returned list of multipart uploads is truncated. A
16062	// value of true indicates that the list was truncated. The list can be truncated
16063	// if the number of multipart uploads exceeds the limit allowed or specified
16064	// by max uploads.
16065	IsTruncated *bool `type:"boolean"`
16066
16067	// The key at or after which the listing began.
16068	KeyMarker *string `type:"string"`
16069
16070	// Maximum number of multipart uploads that could have been included in the
16071	// response.
16072	MaxUploads *int64 `type:"integer"`
16073
16074	// When a list is truncated, this element specifies the value that should be
16075	// used for the key-marker request parameter in a subsequent request.
16076	NextKeyMarker *string `type:"string"`
16077
16078	// When a list is truncated, this element specifies the value that should be
16079	// used for the upload-id-marker request parameter in a subsequent request.
16080	NextUploadIdMarker *string `type:"string"`
16081
16082	// When a prefix is provided in the request, this field contains the specified
16083	// prefix. The result contains only keys starting with the specified prefix.
16084	Prefix *string `type:"string"`
16085
16086	// Upload ID after which listing began.
16087	UploadIdMarker *string `type:"string"`
16088
16089	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
16090}
16091
16092// String returns the string representation
16093func (s ListMultipartUploadsOutput) String() string {
16094	return awsutil.Prettify(s)
16095}
16096
16097// GoString returns the string representation
16098func (s ListMultipartUploadsOutput) GoString() string {
16099	return s.String()
16100}
16101
16102// SetBucket sets the Bucket field's value.
16103func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
16104	s.Bucket = &v
16105	return s
16106}
16107
16108func (s *ListMultipartUploadsOutput) getBucket() (v string) {
16109	if s.Bucket == nil {
16110		return v
16111	}
16112	return *s.Bucket
16113}
16114
16115// SetCommonPrefixes sets the CommonPrefixes field's value.
16116func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
16117	s.CommonPrefixes = v
16118	return s
16119}
16120
16121// SetDelimiter sets the Delimiter field's value.
16122func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
16123	s.Delimiter = &v
16124	return s
16125}
16126
16127// SetEncodingType sets the EncodingType field's value.
16128func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
16129	s.EncodingType = &v
16130	return s
16131}
16132
16133// SetIsTruncated sets the IsTruncated field's value.
16134func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
16135	s.IsTruncated = &v
16136	return s
16137}
16138
16139// SetKeyMarker sets the KeyMarker field's value.
16140func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
16141	s.KeyMarker = &v
16142	return s
16143}
16144
16145// SetMaxUploads sets the MaxUploads field's value.
16146func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
16147	s.MaxUploads = &v
16148	return s
16149}
16150
16151// SetNextKeyMarker sets the NextKeyMarker field's value.
16152func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
16153	s.NextKeyMarker = &v
16154	return s
16155}
16156
16157// SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
16158func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
16159	s.NextUploadIdMarker = &v
16160	return s
16161}
16162
16163// SetPrefix sets the Prefix field's value.
16164func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
16165	s.Prefix = &v
16166	return s
16167}
16168
16169// SetUploadIdMarker sets the UploadIdMarker field's value.
16170func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
16171	s.UploadIdMarker = &v
16172	return s
16173}
16174
16175// SetUploads sets the Uploads field's value.
16176func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
16177	s.Uploads = v
16178	return s
16179}
16180
16181type ListObjectVersionsInput struct {
16182	_ struct{} `type:"structure"`
16183
16184	// Bucket is a required field
16185	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16186
16187	// A delimiter is a character you use to group keys.
16188	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
16189
16190	// Requests Amazon S3 to encode the object keys in the response and specifies
16191	// the encoding method to use. An object key may contain any Unicode character;
16192	// however, XML 1.0 parser cannot parse some characters, such as characters
16193	// with an ASCII value from 0 to 10. For characters that are not supported in
16194	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
16195	// keys in the response.
16196	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
16197
16198	// Specifies the key to start with when listing objects in a bucket.
16199	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
16200
16201	// Sets the maximum number of keys returned in the response. The response might
16202	// contain fewer keys but will never contain more.
16203	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
16204
16205	// Limits the response to keys that begin with the specified prefix.
16206	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
16207
16208	// Specifies the object version you want to start listing from.
16209	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
16210}
16211
16212// String returns the string representation
16213func (s ListObjectVersionsInput) String() string {
16214	return awsutil.Prettify(s)
16215}
16216
16217// GoString returns the string representation
16218func (s ListObjectVersionsInput) GoString() string {
16219	return s.String()
16220}
16221
16222// Validate inspects the fields of the type to determine if they are valid.
16223func (s *ListObjectVersionsInput) Validate() error {
16224	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
16225	if s.Bucket == nil {
16226		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16227	}
16228	if s.Bucket != nil && len(*s.Bucket) < 1 {
16229		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16230	}
16231
16232	if invalidParams.Len() > 0 {
16233		return invalidParams
16234	}
16235	return nil
16236}
16237
16238// SetBucket sets the Bucket field's value.
16239func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
16240	s.Bucket = &v
16241	return s
16242}
16243
16244func (s *ListObjectVersionsInput) getBucket() (v string) {
16245	if s.Bucket == nil {
16246		return v
16247	}
16248	return *s.Bucket
16249}
16250
16251// SetDelimiter sets the Delimiter field's value.
16252func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
16253	s.Delimiter = &v
16254	return s
16255}
16256
16257// SetEncodingType sets the EncodingType field's value.
16258func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
16259	s.EncodingType = &v
16260	return s
16261}
16262
16263// SetKeyMarker sets the KeyMarker field's value.
16264func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
16265	s.KeyMarker = &v
16266	return s
16267}
16268
16269// SetMaxKeys sets the MaxKeys field's value.
16270func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
16271	s.MaxKeys = &v
16272	return s
16273}
16274
16275// SetPrefix sets the Prefix field's value.
16276func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
16277	s.Prefix = &v
16278	return s
16279}
16280
16281// SetVersionIdMarker sets the VersionIdMarker field's value.
16282func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
16283	s.VersionIdMarker = &v
16284	return s
16285}
16286
16287type ListObjectVersionsOutput struct {
16288	_ struct{} `type:"structure"`
16289
16290	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
16291
16292	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
16293
16294	Delimiter *string `type:"string"`
16295
16296	// Encoding type used by Amazon S3 to encode object keys in the response.
16297	EncodingType *string `type:"string" enum:"EncodingType"`
16298
16299	// A flag that indicates whether or not Amazon S3 returned all of the results
16300	// that satisfied the search criteria. If your results were truncated, you can
16301	// make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
16302	// response parameters as a starting place in another request to return the
16303	// rest of the results.
16304	IsTruncated *bool `type:"boolean"`
16305
16306	// Marks the last Key returned in a truncated response.
16307	KeyMarker *string `type:"string"`
16308
16309	MaxKeys *int64 `type:"integer"`
16310
16311	Name *string `type:"string"`
16312
16313	// Use this value for the key marker request parameter in a subsequent request.
16314	NextKeyMarker *string `type:"string"`
16315
16316	// Use this value for the next version id marker parameter in a subsequent request.
16317	NextVersionIdMarker *string `type:"string"`
16318
16319	Prefix *string `type:"string"`
16320
16321	VersionIdMarker *string `type:"string"`
16322
16323	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
16324}
16325
16326// String returns the string representation
16327func (s ListObjectVersionsOutput) String() string {
16328	return awsutil.Prettify(s)
16329}
16330
16331// GoString returns the string representation
16332func (s ListObjectVersionsOutput) GoString() string {
16333	return s.String()
16334}
16335
16336// SetCommonPrefixes sets the CommonPrefixes field's value.
16337func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
16338	s.CommonPrefixes = v
16339	return s
16340}
16341
16342// SetDeleteMarkers sets the DeleteMarkers field's value.
16343func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
16344	s.DeleteMarkers = v
16345	return s
16346}
16347
16348// SetDelimiter sets the Delimiter field's value.
16349func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
16350	s.Delimiter = &v
16351	return s
16352}
16353
16354// SetEncodingType sets the EncodingType field's value.
16355func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
16356	s.EncodingType = &v
16357	return s
16358}
16359
16360// SetIsTruncated sets the IsTruncated field's value.
16361func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
16362	s.IsTruncated = &v
16363	return s
16364}
16365
16366// SetKeyMarker sets the KeyMarker field's value.
16367func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
16368	s.KeyMarker = &v
16369	return s
16370}
16371
16372// SetMaxKeys sets the MaxKeys field's value.
16373func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
16374	s.MaxKeys = &v
16375	return s
16376}
16377
16378// SetName sets the Name field's value.
16379func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
16380	s.Name = &v
16381	return s
16382}
16383
16384// SetNextKeyMarker sets the NextKeyMarker field's value.
16385func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
16386	s.NextKeyMarker = &v
16387	return s
16388}
16389
16390// SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
16391func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
16392	s.NextVersionIdMarker = &v
16393	return s
16394}
16395
16396// SetPrefix sets the Prefix field's value.
16397func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
16398	s.Prefix = &v
16399	return s
16400}
16401
16402// SetVersionIdMarker sets the VersionIdMarker field's value.
16403func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
16404	s.VersionIdMarker = &v
16405	return s
16406}
16407
16408// SetVersions sets the Versions field's value.
16409func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
16410	s.Versions = v
16411	return s
16412}
16413
16414type ListObjectsInput struct {
16415	_ struct{} `type:"structure"`
16416
16417	// Bucket is a required field
16418	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16419
16420	// A delimiter is a character you use to group keys.
16421	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
16422
16423	// Requests Amazon S3 to encode the object keys in the response and specifies
16424	// the encoding method to use. An object key may contain any Unicode character;
16425	// however, XML 1.0 parser cannot parse some characters, such as characters
16426	// with an ASCII value from 0 to 10. For characters that are not supported in
16427	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
16428	// keys in the response.
16429	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
16430
16431	// Specifies the key to start with when listing objects in a bucket.
16432	Marker *string `location:"querystring" locationName:"marker" type:"string"`
16433
16434	// Sets the maximum number of keys returned in the response. The response might
16435	// contain fewer keys but will never contain more.
16436	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
16437
16438	// Limits the response to keys that begin with the specified prefix.
16439	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
16440
16441	// Confirms that the requester knows that she or he will be charged for the
16442	// list objects request. Bucket owners need not specify this parameter in their
16443	// requests.
16444	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16445}
16446
16447// String returns the string representation
16448func (s ListObjectsInput) String() string {
16449	return awsutil.Prettify(s)
16450}
16451
16452// GoString returns the string representation
16453func (s ListObjectsInput) GoString() string {
16454	return s.String()
16455}
16456
16457// Validate inspects the fields of the type to determine if they are valid.
16458func (s *ListObjectsInput) Validate() error {
16459	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
16460	if s.Bucket == nil {
16461		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16462	}
16463	if s.Bucket != nil && len(*s.Bucket) < 1 {
16464		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16465	}
16466
16467	if invalidParams.Len() > 0 {
16468		return invalidParams
16469	}
16470	return nil
16471}
16472
16473// SetBucket sets the Bucket field's value.
16474func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
16475	s.Bucket = &v
16476	return s
16477}
16478
16479func (s *ListObjectsInput) getBucket() (v string) {
16480	if s.Bucket == nil {
16481		return v
16482	}
16483	return *s.Bucket
16484}
16485
16486// SetDelimiter sets the Delimiter field's value.
16487func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
16488	s.Delimiter = &v
16489	return s
16490}
16491
16492// SetEncodingType sets the EncodingType field's value.
16493func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
16494	s.EncodingType = &v
16495	return s
16496}
16497
16498// SetMarker sets the Marker field's value.
16499func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
16500	s.Marker = &v
16501	return s
16502}
16503
16504// SetMaxKeys sets the MaxKeys field's value.
16505func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
16506	s.MaxKeys = &v
16507	return s
16508}
16509
16510// SetPrefix sets the Prefix field's value.
16511func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
16512	s.Prefix = &v
16513	return s
16514}
16515
16516// SetRequestPayer sets the RequestPayer field's value.
16517func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
16518	s.RequestPayer = &v
16519	return s
16520}
16521
16522type ListObjectsOutput struct {
16523	_ struct{} `type:"structure"`
16524
16525	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
16526
16527	Contents []*Object `type:"list" flattened:"true"`
16528
16529	Delimiter *string `type:"string"`
16530
16531	// Encoding type used by Amazon S3 to encode object keys in the response.
16532	EncodingType *string `type:"string" enum:"EncodingType"`
16533
16534	// A flag that indicates whether or not Amazon S3 returned all of the results
16535	// that satisfied the search criteria.
16536	IsTruncated *bool `type:"boolean"`
16537
16538	Marker *string `type:"string"`
16539
16540	MaxKeys *int64 `type:"integer"`
16541
16542	Name *string `type:"string"`
16543
16544	// When response is truncated (the IsTruncated element value in the response
16545	// is true), you can use the key name in this field as marker in the subsequent
16546	// request to get next set of objects. Amazon S3 lists objects in alphabetical
16547	// order Note: This element is returned only if you have delimiter request parameter
16548	// specified. If response does not include the NextMaker and it is truncated,
16549	// you can use the value of the last Key in the response as the marker in the
16550	// subsequent request to get the next set of object keys.
16551	NextMarker *string `type:"string"`
16552
16553	Prefix *string `type:"string"`
16554}
16555
16556// String returns the string representation
16557func (s ListObjectsOutput) String() string {
16558	return awsutil.Prettify(s)
16559}
16560
16561// GoString returns the string representation
16562func (s ListObjectsOutput) GoString() string {
16563	return s.String()
16564}
16565
16566// SetCommonPrefixes sets the CommonPrefixes field's value.
16567func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
16568	s.CommonPrefixes = v
16569	return s
16570}
16571
16572// SetContents sets the Contents field's value.
16573func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
16574	s.Contents = v
16575	return s
16576}
16577
16578// SetDelimiter sets the Delimiter field's value.
16579func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
16580	s.Delimiter = &v
16581	return s
16582}
16583
16584// SetEncodingType sets the EncodingType field's value.
16585func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
16586	s.EncodingType = &v
16587	return s
16588}
16589
16590// SetIsTruncated sets the IsTruncated field's value.
16591func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
16592	s.IsTruncated = &v
16593	return s
16594}
16595
16596// SetMarker sets the Marker field's value.
16597func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
16598	s.Marker = &v
16599	return s
16600}
16601
16602// SetMaxKeys sets the MaxKeys field's value.
16603func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
16604	s.MaxKeys = &v
16605	return s
16606}
16607
16608// SetName sets the Name field's value.
16609func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
16610	s.Name = &v
16611	return s
16612}
16613
16614// SetNextMarker sets the NextMarker field's value.
16615func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
16616	s.NextMarker = &v
16617	return s
16618}
16619
16620// SetPrefix sets the Prefix field's value.
16621func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
16622	s.Prefix = &v
16623	return s
16624}
16625
16626type ListObjectsV2Input struct {
16627	_ struct{} `type:"structure"`
16628
16629	// Name of the bucket to list.
16630	//
16631	// Bucket is a required field
16632	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16633
16634	// ContinuationToken indicates Amazon S3 that the list is being continued on
16635	// this bucket with a token. ContinuationToken is obfuscated and is not a real
16636	// key
16637	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
16638
16639	// A delimiter is a character you use to group keys.
16640	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
16641
16642	// Encoding type used by Amazon S3 to encode object keys in the response.
16643	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
16644
16645	// The owner field is not present in listV2 by default, if you want to return
16646	// owner field with each key in the result then set the fetch owner field to
16647	// true
16648	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
16649
16650	// Sets the maximum number of keys returned in the response. The response might
16651	// contain fewer keys but will never contain more.
16652	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
16653
16654	// Limits the response to keys that begin with the specified prefix.
16655	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
16656
16657	// Confirms that the requester knows that she or he will be charged for the
16658	// list objects request in V2 style. Bucket owners need not specify this parameter
16659	// in their requests.
16660	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16661
16662	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
16663	// listing after this specified key. StartAfter can be any key in the bucket
16664	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
16665}
16666
16667// String returns the string representation
16668func (s ListObjectsV2Input) String() string {
16669	return awsutil.Prettify(s)
16670}
16671
16672// GoString returns the string representation
16673func (s ListObjectsV2Input) GoString() string {
16674	return s.String()
16675}
16676
16677// Validate inspects the fields of the type to determine if they are valid.
16678func (s *ListObjectsV2Input) Validate() error {
16679	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
16680	if s.Bucket == nil {
16681		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16682	}
16683	if s.Bucket != nil && len(*s.Bucket) < 1 {
16684		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16685	}
16686
16687	if invalidParams.Len() > 0 {
16688		return invalidParams
16689	}
16690	return nil
16691}
16692
16693// SetBucket sets the Bucket field's value.
16694func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
16695	s.Bucket = &v
16696	return s
16697}
16698
16699func (s *ListObjectsV2Input) getBucket() (v string) {
16700	if s.Bucket == nil {
16701		return v
16702	}
16703	return *s.Bucket
16704}
16705
16706// SetContinuationToken sets the ContinuationToken field's value.
16707func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
16708	s.ContinuationToken = &v
16709	return s
16710}
16711
16712// SetDelimiter sets the Delimiter field's value.
16713func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
16714	s.Delimiter = &v
16715	return s
16716}
16717
16718// SetEncodingType sets the EncodingType field's value.
16719func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
16720	s.EncodingType = &v
16721	return s
16722}
16723
16724// SetFetchOwner sets the FetchOwner field's value.
16725func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
16726	s.FetchOwner = &v
16727	return s
16728}
16729
16730// SetMaxKeys sets the MaxKeys field's value.
16731func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
16732	s.MaxKeys = &v
16733	return s
16734}
16735
16736// SetPrefix sets the Prefix field's value.
16737func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
16738	s.Prefix = &v
16739	return s
16740}
16741
16742// SetRequestPayer sets the RequestPayer field's value.
16743func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
16744	s.RequestPayer = &v
16745	return s
16746}
16747
16748// SetStartAfter sets the StartAfter field's value.
16749func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
16750	s.StartAfter = &v
16751	return s
16752}
16753
16754type ListObjectsV2Output struct {
16755	_ struct{} `type:"structure"`
16756
16757	// CommonPrefixes contains all (if there are any) keys between Prefix and the
16758	// next occurrence of the string specified by delimiter
16759	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
16760
16761	// Metadata about each object returned.
16762	Contents []*Object `type:"list" flattened:"true"`
16763
16764	// ContinuationToken indicates Amazon S3 that the list is being continued on
16765	// this bucket with a token. ContinuationToken is obfuscated and is not a real
16766	// key
16767	ContinuationToken *string `type:"string"`
16768
16769	// A delimiter is a character you use to group keys.
16770	Delimiter *string `type:"string"`
16771
16772	// Encoding type used by Amazon S3 to encode object keys in the response.
16773	EncodingType *string `type:"string" enum:"EncodingType"`
16774
16775	// A flag that indicates whether or not Amazon S3 returned all of the results
16776	// that satisfied the search criteria.
16777	IsTruncated *bool `type:"boolean"`
16778
16779	// KeyCount is the number of keys returned with this request. KeyCount will
16780	// always be less than equals to MaxKeys field. Say you ask for 50 keys, your
16781	// result will include less than equals 50 keys
16782	KeyCount *int64 `type:"integer"`
16783
16784	// Sets the maximum number of keys returned in the response. The response might
16785	// contain fewer keys but will never contain more.
16786	MaxKeys *int64 `type:"integer"`
16787
16788	// Name of the bucket to list.
16789	Name *string `type:"string"`
16790
16791	// NextContinuationToken is sent when isTruncated is true which means there
16792	// are more keys in the bucket that can be listed. The next list requests to
16793	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
16794	// is obfuscated and is not a real key
16795	NextContinuationToken *string `type:"string"`
16796
16797	// Limits the response to keys that begin with the specified prefix.
16798	Prefix *string `type:"string"`
16799
16800	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
16801	// listing after this specified key. StartAfter can be any key in the bucket
16802	StartAfter *string `type:"string"`
16803}
16804
16805// String returns the string representation
16806func (s ListObjectsV2Output) String() string {
16807	return awsutil.Prettify(s)
16808}
16809
16810// GoString returns the string representation
16811func (s ListObjectsV2Output) GoString() string {
16812	return s.String()
16813}
16814
16815// SetCommonPrefixes sets the CommonPrefixes field's value.
16816func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
16817	s.CommonPrefixes = v
16818	return s
16819}
16820
16821// SetContents sets the Contents field's value.
16822func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
16823	s.Contents = v
16824	return s
16825}
16826
16827// SetContinuationToken sets the ContinuationToken field's value.
16828func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
16829	s.ContinuationToken = &v
16830	return s
16831}
16832
16833// SetDelimiter sets the Delimiter field's value.
16834func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
16835	s.Delimiter = &v
16836	return s
16837}
16838
16839// SetEncodingType sets the EncodingType field's value.
16840func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
16841	s.EncodingType = &v
16842	return s
16843}
16844
16845// SetIsTruncated sets the IsTruncated field's value.
16846func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
16847	s.IsTruncated = &v
16848	return s
16849}
16850
16851// SetKeyCount sets the KeyCount field's value.
16852func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
16853	s.KeyCount = &v
16854	return s
16855}
16856
16857// SetMaxKeys sets the MaxKeys field's value.
16858func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
16859	s.MaxKeys = &v
16860	return s
16861}
16862
16863// SetName sets the Name field's value.
16864func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
16865	s.Name = &v
16866	return s
16867}
16868
16869// SetNextContinuationToken sets the NextContinuationToken field's value.
16870func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
16871	s.NextContinuationToken = &v
16872	return s
16873}
16874
16875// SetPrefix sets the Prefix field's value.
16876func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
16877	s.Prefix = &v
16878	return s
16879}
16880
16881// SetStartAfter sets the StartAfter field's value.
16882func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
16883	s.StartAfter = &v
16884	return s
16885}
16886
16887type ListPartsInput struct {
16888	_ struct{} `type:"structure"`
16889
16890	// Bucket is a required field
16891	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16892
16893	// Key is a required field
16894	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
16895
16896	// Sets the maximum number of parts to return.
16897	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
16898
16899	// Specifies the part after which listing should begin. Only parts with higher
16900	// part numbers will be listed.
16901	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
16902
16903	// Confirms that the requester knows that she or he will be charged for the
16904	// request. Bucket owners need not specify this parameter in their requests.
16905	// Documentation on downloading objects from requester pays buckets can be found
16906	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
16907	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16908
16909	// Upload ID identifying the multipart upload whose parts are being listed.
16910	//
16911	// UploadId is a required field
16912	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
16913}
16914
16915// String returns the string representation
16916func (s ListPartsInput) String() string {
16917	return awsutil.Prettify(s)
16918}
16919
16920// GoString returns the string representation
16921func (s ListPartsInput) GoString() string {
16922	return s.String()
16923}
16924
16925// Validate inspects the fields of the type to determine if they are valid.
16926func (s *ListPartsInput) Validate() error {
16927	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
16928	if s.Bucket == nil {
16929		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16930	}
16931	if s.Bucket != nil && len(*s.Bucket) < 1 {
16932		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16933	}
16934	if s.Key == nil {
16935		invalidParams.Add(request.NewErrParamRequired("Key"))
16936	}
16937	if s.Key != nil && len(*s.Key) < 1 {
16938		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16939	}
16940	if s.UploadId == nil {
16941		invalidParams.Add(request.NewErrParamRequired("UploadId"))
16942	}
16943
16944	if invalidParams.Len() > 0 {
16945		return invalidParams
16946	}
16947	return nil
16948}
16949
16950// SetBucket sets the Bucket field's value.
16951func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
16952	s.Bucket = &v
16953	return s
16954}
16955
16956func (s *ListPartsInput) getBucket() (v string) {
16957	if s.Bucket == nil {
16958		return v
16959	}
16960	return *s.Bucket
16961}
16962
16963// SetKey sets the Key field's value.
16964func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
16965	s.Key = &v
16966	return s
16967}
16968
16969// SetMaxParts sets the MaxParts field's value.
16970func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
16971	s.MaxParts = &v
16972	return s
16973}
16974
16975// SetPartNumberMarker sets the PartNumberMarker field's value.
16976func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
16977	s.PartNumberMarker = &v
16978	return s
16979}
16980
16981// SetRequestPayer sets the RequestPayer field's value.
16982func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
16983	s.RequestPayer = &v
16984	return s
16985}
16986
16987// SetUploadId sets the UploadId field's value.
16988func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
16989	s.UploadId = &v
16990	return s
16991}
16992
16993type ListPartsOutput struct {
16994	_ struct{} `type:"structure"`
16995
16996	// Date when multipart upload will become eligible for abort operation by lifecycle.
16997	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
16998
16999	// Id of the lifecycle rule that makes a multipart upload eligible for abort
17000	// operation.
17001	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
17002
17003	// Name of the bucket to which the multipart upload was initiated.
17004	Bucket *string `type:"string"`
17005
17006	// Identifies who initiated the multipart upload.
17007	Initiator *Initiator `type:"structure"`
17008
17009	// Indicates whether the returned list of parts is truncated.
17010	IsTruncated *bool `type:"boolean"`
17011
17012	// Object key for which the multipart upload was initiated.
17013	Key *string `min:"1" type:"string"`
17014
17015	// Maximum number of parts that were allowed in the response.
17016	MaxParts *int64 `type:"integer"`
17017
17018	// When a list is truncated, this element specifies the last part in the list,
17019	// as well as the value to use for the part-number-marker request parameter
17020	// in a subsequent request.
17021	NextPartNumberMarker *int64 `type:"integer"`
17022
17023	Owner *Owner `type:"structure"`
17024
17025	// Part number after which listing begins.
17026	PartNumberMarker *int64 `type:"integer"`
17027
17028	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
17029
17030	// If present, indicates that the requester was successfully charged for the
17031	// request.
17032	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
17033
17034	// The class of storage used to store the object.
17035	StorageClass *string `type:"string" enum:"StorageClass"`
17036
17037	// Upload ID identifying the multipart upload whose parts are being listed.
17038	UploadId *string `type:"string"`
17039}
17040
17041// String returns the string representation
17042func (s ListPartsOutput) String() string {
17043	return awsutil.Prettify(s)
17044}
17045
17046// GoString returns the string representation
17047func (s ListPartsOutput) GoString() string {
17048	return s.String()
17049}
17050
17051// SetAbortDate sets the AbortDate field's value.
17052func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
17053	s.AbortDate = &v
17054	return s
17055}
17056
17057// SetAbortRuleId sets the AbortRuleId field's value.
17058func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
17059	s.AbortRuleId = &v
17060	return s
17061}
17062
17063// SetBucket sets the Bucket field's value.
17064func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
17065	s.Bucket = &v
17066	return s
17067}
17068
17069func (s *ListPartsOutput) getBucket() (v string) {
17070	if s.Bucket == nil {
17071		return v
17072	}
17073	return *s.Bucket
17074}
17075
17076// SetInitiator sets the Initiator field's value.
17077func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
17078	s.Initiator = v
17079	return s
17080}
17081
17082// SetIsTruncated sets the IsTruncated field's value.
17083func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
17084	s.IsTruncated = &v
17085	return s
17086}
17087
17088// SetKey sets the Key field's value.
17089func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
17090	s.Key = &v
17091	return s
17092}
17093
17094// SetMaxParts sets the MaxParts field's value.
17095func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
17096	s.MaxParts = &v
17097	return s
17098}
17099
17100// SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
17101func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
17102	s.NextPartNumberMarker = &v
17103	return s
17104}
17105
17106// SetOwner sets the Owner field's value.
17107func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
17108	s.Owner = v
17109	return s
17110}
17111
17112// SetPartNumberMarker sets the PartNumberMarker field's value.
17113func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
17114	s.PartNumberMarker = &v
17115	return s
17116}
17117
17118// SetParts sets the Parts field's value.
17119func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
17120	s.Parts = v
17121	return s
17122}
17123
17124// SetRequestCharged sets the RequestCharged field's value.
17125func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
17126	s.RequestCharged = &v
17127	return s
17128}
17129
17130// SetStorageClass sets the StorageClass field's value.
17131func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
17132	s.StorageClass = &v
17133	return s
17134}
17135
17136// SetUploadId sets the UploadId field's value.
17137func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
17138	s.UploadId = &v
17139	return s
17140}
17141
17142// Describes an S3 location that will receive the results of the restore request.
17143type Location struct {
17144	_ struct{} `type:"structure"`
17145
17146	// A list of grants that control access to the staged results.
17147	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
17148
17149	// The name of the bucket where the restore results will be placed.
17150	//
17151	// BucketName is a required field
17152	BucketName *string `type:"string" required:"true"`
17153
17154	// The canned ACL to apply to the restore results.
17155	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
17156
17157	// Describes the server-side encryption that will be applied to the restore
17158	// results.
17159	Encryption *Encryption `type:"structure"`
17160
17161	// The prefix that is prepended to the restore results for this request.
17162	//
17163	// Prefix is a required field
17164	Prefix *string `type:"string" required:"true"`
17165
17166	// The class of storage used to store the restore results.
17167	StorageClass *string `type:"string" enum:"StorageClass"`
17168
17169	// The tag-set that is applied to the restore results.
17170	Tagging *Tagging `type:"structure"`
17171
17172	// A list of metadata to store with the restore results in S3.
17173	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
17174}
17175
17176// String returns the string representation
17177func (s Location) String() string {
17178	return awsutil.Prettify(s)
17179}
17180
17181// GoString returns the string representation
17182func (s Location) GoString() string {
17183	return s.String()
17184}
17185
17186// Validate inspects the fields of the type to determine if they are valid.
17187func (s *Location) Validate() error {
17188	invalidParams := request.ErrInvalidParams{Context: "Location"}
17189	if s.BucketName == nil {
17190		invalidParams.Add(request.NewErrParamRequired("BucketName"))
17191	}
17192	if s.Prefix == nil {
17193		invalidParams.Add(request.NewErrParamRequired("Prefix"))
17194	}
17195	if s.AccessControlList != nil {
17196		for i, v := range s.AccessControlList {
17197			if v == nil {
17198				continue
17199			}
17200			if err := v.Validate(); err != nil {
17201				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
17202			}
17203		}
17204	}
17205	if s.Encryption != nil {
17206		if err := s.Encryption.Validate(); err != nil {
17207			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
17208		}
17209	}
17210	if s.Tagging != nil {
17211		if err := s.Tagging.Validate(); err != nil {
17212			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
17213		}
17214	}
17215
17216	if invalidParams.Len() > 0 {
17217		return invalidParams
17218	}
17219	return nil
17220}
17221
17222// SetAccessControlList sets the AccessControlList field's value.
17223func (s *Location) SetAccessControlList(v []*Grant) *Location {
17224	s.AccessControlList = v
17225	return s
17226}
17227
17228// SetBucketName sets the BucketName field's value.
17229func (s *Location) SetBucketName(v string) *Location {
17230	s.BucketName = &v
17231	return s
17232}
17233
17234// SetCannedACL sets the CannedACL field's value.
17235func (s *Location) SetCannedACL(v string) *Location {
17236	s.CannedACL = &v
17237	return s
17238}
17239
17240// SetEncryption sets the Encryption field's value.
17241func (s *Location) SetEncryption(v *Encryption) *Location {
17242	s.Encryption = v
17243	return s
17244}
17245
17246// SetPrefix sets the Prefix field's value.
17247func (s *Location) SetPrefix(v string) *Location {
17248	s.Prefix = &v
17249	return s
17250}
17251
17252// SetStorageClass sets the StorageClass field's value.
17253func (s *Location) SetStorageClass(v string) *Location {
17254	s.StorageClass = &v
17255	return s
17256}
17257
17258// SetTagging sets the Tagging field's value.
17259func (s *Location) SetTagging(v *Tagging) *Location {
17260	s.Tagging = v
17261	return s
17262}
17263
17264// SetUserMetadata sets the UserMetadata field's value.
17265func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
17266	s.UserMetadata = v
17267	return s
17268}
17269
17270// Container for logging information. Presence of this element indicates that
17271// logging is enabled. Parameters TargetBucket and TargetPrefix are required
17272// in this case.
17273type LoggingEnabled struct {
17274	_ struct{} `type:"structure"`
17275
17276	// Specifies the bucket where you want Amazon S3 to store server access logs.
17277	// You can have your logs delivered to any bucket that you own, including the
17278	// same bucket that is being logged. You can also configure multiple buckets
17279	// to deliver their logs to the same target bucket. In this case you should
17280	// choose a different TargetPrefix for each source bucket so that the delivered
17281	// log files can be distinguished by key.
17282	//
17283	// TargetBucket is a required field
17284	TargetBucket *string `type:"string" required:"true"`
17285
17286	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
17287
17288	// This element lets you specify a prefix for the keys that the log files will
17289	// be stored under.
17290	//
17291	// TargetPrefix is a required field
17292	TargetPrefix *string `type:"string" required:"true"`
17293}
17294
17295// String returns the string representation
17296func (s LoggingEnabled) String() string {
17297	return awsutil.Prettify(s)
17298}
17299
17300// GoString returns the string representation
17301func (s LoggingEnabled) GoString() string {
17302	return s.String()
17303}
17304
17305// Validate inspects the fields of the type to determine if they are valid.
17306func (s *LoggingEnabled) Validate() error {
17307	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
17308	if s.TargetBucket == nil {
17309		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
17310	}
17311	if s.TargetPrefix == nil {
17312		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
17313	}
17314	if s.TargetGrants != nil {
17315		for i, v := range s.TargetGrants {
17316			if v == nil {
17317				continue
17318			}
17319			if err := v.Validate(); err != nil {
17320				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
17321			}
17322		}
17323	}
17324
17325	if invalidParams.Len() > 0 {
17326		return invalidParams
17327	}
17328	return nil
17329}
17330
17331// SetTargetBucket sets the TargetBucket field's value.
17332func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
17333	s.TargetBucket = &v
17334	return s
17335}
17336
17337// SetTargetGrants sets the TargetGrants field's value.
17338func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
17339	s.TargetGrants = v
17340	return s
17341}
17342
17343// SetTargetPrefix sets the TargetPrefix field's value.
17344func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
17345	s.TargetPrefix = &v
17346	return s
17347}
17348
17349// A metadata key-value pair to store with an object.
17350type MetadataEntry struct {
17351	_ struct{} `type:"structure"`
17352
17353	Name *string `type:"string"`
17354
17355	Value *string `type:"string"`
17356}
17357
17358// String returns the string representation
17359func (s MetadataEntry) String() string {
17360	return awsutil.Prettify(s)
17361}
17362
17363// GoString returns the string representation
17364func (s MetadataEntry) GoString() string {
17365	return s.String()
17366}
17367
17368// SetName sets the Name field's value.
17369func (s *MetadataEntry) SetName(v string) *MetadataEntry {
17370	s.Name = &v
17371	return s
17372}
17373
17374// SetValue sets the Value field's value.
17375func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
17376	s.Value = &v
17377	return s
17378}
17379
17380type MetricsAndOperator struct {
17381	_ struct{} `type:"structure"`
17382
17383	// The prefix used when evaluating an AND predicate.
17384	Prefix *string `type:"string"`
17385
17386	// The list of tags used when evaluating an AND predicate.
17387	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
17388}
17389
17390// String returns the string representation
17391func (s MetricsAndOperator) String() string {
17392	return awsutil.Prettify(s)
17393}
17394
17395// GoString returns the string representation
17396func (s MetricsAndOperator) GoString() string {
17397	return s.String()
17398}
17399
17400// Validate inspects the fields of the type to determine if they are valid.
17401func (s *MetricsAndOperator) Validate() error {
17402	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
17403	if s.Tags != nil {
17404		for i, v := range s.Tags {
17405			if v == nil {
17406				continue
17407			}
17408			if err := v.Validate(); err != nil {
17409				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
17410			}
17411		}
17412	}
17413
17414	if invalidParams.Len() > 0 {
17415		return invalidParams
17416	}
17417	return nil
17418}
17419
17420// SetPrefix sets the Prefix field's value.
17421func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
17422	s.Prefix = &v
17423	return s
17424}
17425
17426// SetTags sets the Tags field's value.
17427func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
17428	s.Tags = v
17429	return s
17430}
17431
17432type MetricsConfiguration struct {
17433	_ struct{} `type:"structure"`
17434
17435	// Specifies a metrics configuration filter. The metrics configuration will
17436	// only include objects that meet the filter's criteria. A filter must be a
17437	// prefix, a tag, or a conjunction (MetricsAndOperator).
17438	Filter *MetricsFilter `type:"structure"`
17439
17440	// The ID used to identify the metrics configuration.
17441	//
17442	// Id is a required field
17443	Id *string `type:"string" required:"true"`
17444}
17445
17446// String returns the string representation
17447func (s MetricsConfiguration) String() string {
17448	return awsutil.Prettify(s)
17449}
17450
17451// GoString returns the string representation
17452func (s MetricsConfiguration) GoString() string {
17453	return s.String()
17454}
17455
17456// Validate inspects the fields of the type to determine if they are valid.
17457func (s *MetricsConfiguration) Validate() error {
17458	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
17459	if s.Id == nil {
17460		invalidParams.Add(request.NewErrParamRequired("Id"))
17461	}
17462	if s.Filter != nil {
17463		if err := s.Filter.Validate(); err != nil {
17464			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
17465		}
17466	}
17467
17468	if invalidParams.Len() > 0 {
17469		return invalidParams
17470	}
17471	return nil
17472}
17473
17474// SetFilter sets the Filter field's value.
17475func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
17476	s.Filter = v
17477	return s
17478}
17479
17480// SetId sets the Id field's value.
17481func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
17482	s.Id = &v
17483	return s
17484}
17485
17486type MetricsFilter struct {
17487	_ struct{} `type:"structure"`
17488
17489	// A conjunction (logical AND) of predicates, which is used in evaluating a
17490	// metrics filter. The operator must have at least two predicates, and an object
17491	// must match all of the predicates in order for the filter to apply.
17492	And *MetricsAndOperator `type:"structure"`
17493
17494	// The prefix used when evaluating a metrics filter.
17495	Prefix *string `type:"string"`
17496
17497	// The tag used when evaluating a metrics filter.
17498	Tag *Tag `type:"structure"`
17499}
17500
17501// String returns the string representation
17502func (s MetricsFilter) String() string {
17503	return awsutil.Prettify(s)
17504}
17505
17506// GoString returns the string representation
17507func (s MetricsFilter) GoString() string {
17508	return s.String()
17509}
17510
17511// Validate inspects the fields of the type to determine if they are valid.
17512func (s *MetricsFilter) Validate() error {
17513	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
17514	if s.And != nil {
17515		if err := s.And.Validate(); err != nil {
17516			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
17517		}
17518	}
17519	if s.Tag != nil {
17520		if err := s.Tag.Validate(); err != nil {
17521			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
17522		}
17523	}
17524
17525	if invalidParams.Len() > 0 {
17526		return invalidParams
17527	}
17528	return nil
17529}
17530
17531// SetAnd sets the And field's value.
17532func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
17533	s.And = v
17534	return s
17535}
17536
17537// SetPrefix sets the Prefix field's value.
17538func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
17539	s.Prefix = &v
17540	return s
17541}
17542
17543// SetTag sets the Tag field's value.
17544func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
17545	s.Tag = v
17546	return s
17547}
17548
17549type MultipartUpload struct {
17550	_ struct{} `type:"structure"`
17551
17552	// Date and time at which the multipart upload was initiated.
17553	Initiated *time.Time `type:"timestamp"`
17554
17555	// Identifies who initiated the multipart upload.
17556	Initiator *Initiator `type:"structure"`
17557
17558	// Key of the object for which the multipart upload was initiated.
17559	Key *string `min:"1" type:"string"`
17560
17561	Owner *Owner `type:"structure"`
17562
17563	// The class of storage used to store the object.
17564	StorageClass *string `type:"string" enum:"StorageClass"`
17565
17566	// Upload ID that identifies the multipart upload.
17567	UploadId *string `type:"string"`
17568}
17569
17570// String returns the string representation
17571func (s MultipartUpload) String() string {
17572	return awsutil.Prettify(s)
17573}
17574
17575// GoString returns the string representation
17576func (s MultipartUpload) GoString() string {
17577	return s.String()
17578}
17579
17580// SetInitiated sets the Initiated field's value.
17581func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
17582	s.Initiated = &v
17583	return s
17584}
17585
17586// SetInitiator sets the Initiator field's value.
17587func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
17588	s.Initiator = v
17589	return s
17590}
17591
17592// SetKey sets the Key field's value.
17593func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
17594	s.Key = &v
17595	return s
17596}
17597
17598// SetOwner sets the Owner field's value.
17599func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
17600	s.Owner = v
17601	return s
17602}
17603
17604// SetStorageClass sets the StorageClass field's value.
17605func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
17606	s.StorageClass = &v
17607	return s
17608}
17609
17610// SetUploadId sets the UploadId field's value.
17611func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
17612	s.UploadId = &v
17613	return s
17614}
17615
17616// Specifies when noncurrent object versions expire. Upon expiration, Amazon
17617// S3 permanently deletes the noncurrent object versions. You set this lifecycle
17618// configuration action on a bucket that has versioning enabled (or suspended)
17619// to request that Amazon S3 delete noncurrent object versions at a specific
17620// period in the object's lifetime.
17621type NoncurrentVersionExpiration struct {
17622	_ struct{} `type:"structure"`
17623
17624	// Specifies the number of days an object is noncurrent before Amazon S3 can
17625	// perform the associated action. For information about the noncurrent days
17626	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
17627	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
17628	// in the Amazon Simple Storage Service Developer Guide.
17629	NoncurrentDays *int64 `type:"integer"`
17630}
17631
17632// String returns the string representation
17633func (s NoncurrentVersionExpiration) String() string {
17634	return awsutil.Prettify(s)
17635}
17636
17637// GoString returns the string representation
17638func (s NoncurrentVersionExpiration) GoString() string {
17639	return s.String()
17640}
17641
17642// SetNoncurrentDays sets the NoncurrentDays field's value.
17643func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
17644	s.NoncurrentDays = &v
17645	return s
17646}
17647
17648// Container for the transition rule that describes when noncurrent objects
17649// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER or
17650// DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
17651// is suspended), you can set this action to request that Amazon S3 transition
17652// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
17653// GLACIER or DEEP_ARCHIVE storage class at a specific period in the object's
17654// lifetime.
17655type NoncurrentVersionTransition struct {
17656	_ struct{} `type:"structure"`
17657
17658	// Specifies the number of days an object is noncurrent before Amazon S3 can
17659	// perform the associated action. For information about the noncurrent days
17660	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
17661	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
17662	// in the Amazon Simple Storage Service Developer Guide.
17663	NoncurrentDays *int64 `type:"integer"`
17664
17665	// The class of storage used to store the object.
17666	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
17667}
17668
17669// String returns the string representation
17670func (s NoncurrentVersionTransition) String() string {
17671	return awsutil.Prettify(s)
17672}
17673
17674// GoString returns the string representation
17675func (s NoncurrentVersionTransition) GoString() string {
17676	return s.String()
17677}
17678
17679// SetNoncurrentDays sets the NoncurrentDays field's value.
17680func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
17681	s.NoncurrentDays = &v
17682	return s
17683}
17684
17685// SetStorageClass sets the StorageClass field's value.
17686func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
17687	s.StorageClass = &v
17688	return s
17689}
17690
17691// A container for specifying the notification configuration of the bucket.
17692// If this element is empty, notifications are turned off for the bucket.
17693type NotificationConfiguration struct {
17694	_ struct{} `type:"structure"`
17695
17696	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
17697
17698	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
17699
17700	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
17701}
17702
17703// String returns the string representation
17704func (s NotificationConfiguration) String() string {
17705	return awsutil.Prettify(s)
17706}
17707
17708// GoString returns the string representation
17709func (s NotificationConfiguration) GoString() string {
17710	return s.String()
17711}
17712
17713// Validate inspects the fields of the type to determine if they are valid.
17714func (s *NotificationConfiguration) Validate() error {
17715	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
17716	if s.LambdaFunctionConfigurations != nil {
17717		for i, v := range s.LambdaFunctionConfigurations {
17718			if v == nil {
17719				continue
17720			}
17721			if err := v.Validate(); err != nil {
17722				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
17723			}
17724		}
17725	}
17726	if s.QueueConfigurations != nil {
17727		for i, v := range s.QueueConfigurations {
17728			if v == nil {
17729				continue
17730			}
17731			if err := v.Validate(); err != nil {
17732				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
17733			}
17734		}
17735	}
17736	if s.TopicConfigurations != nil {
17737		for i, v := range s.TopicConfigurations {
17738			if v == nil {
17739				continue
17740			}
17741			if err := v.Validate(); err != nil {
17742				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
17743			}
17744		}
17745	}
17746
17747	if invalidParams.Len() > 0 {
17748		return invalidParams
17749	}
17750	return nil
17751}
17752
17753// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
17754func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
17755	s.LambdaFunctionConfigurations = v
17756	return s
17757}
17758
17759// SetQueueConfigurations sets the QueueConfigurations field's value.
17760func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
17761	s.QueueConfigurations = v
17762	return s
17763}
17764
17765// SetTopicConfigurations sets the TopicConfigurations field's value.
17766func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
17767	s.TopicConfigurations = v
17768	return s
17769}
17770
17771type NotificationConfigurationDeprecated struct {
17772	_ struct{} `type:"structure"`
17773
17774	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
17775
17776	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
17777
17778	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
17779}
17780
17781// String returns the string representation
17782func (s NotificationConfigurationDeprecated) String() string {
17783	return awsutil.Prettify(s)
17784}
17785
17786// GoString returns the string representation
17787func (s NotificationConfigurationDeprecated) GoString() string {
17788	return s.String()
17789}
17790
17791// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
17792func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
17793	s.CloudFunctionConfiguration = v
17794	return s
17795}
17796
17797// SetQueueConfiguration sets the QueueConfiguration field's value.
17798func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
17799	s.QueueConfiguration = v
17800	return s
17801}
17802
17803// SetTopicConfiguration sets the TopicConfiguration field's value.
17804func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
17805	s.TopicConfiguration = v
17806	return s
17807}
17808
17809// A container for object key name filtering rules. For information about key
17810// name filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
17811// in the Amazon Simple Storage Service Developer Guide.
17812type NotificationConfigurationFilter struct {
17813	_ struct{} `type:"structure"`
17814
17815	// A container for object key name prefix and suffix filtering rules.
17816	Key *KeyFilter `locationName:"S3Key" type:"structure"`
17817}
17818
17819// String returns the string representation
17820func (s NotificationConfigurationFilter) String() string {
17821	return awsutil.Prettify(s)
17822}
17823
17824// GoString returns the string representation
17825func (s NotificationConfigurationFilter) GoString() string {
17826	return s.String()
17827}
17828
17829// SetKey sets the Key field's value.
17830func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
17831	s.Key = v
17832	return s
17833}
17834
17835type Object struct {
17836	_ struct{} `type:"structure"`
17837
17838	ETag *string `type:"string"`
17839
17840	Key *string `min:"1" type:"string"`
17841
17842	LastModified *time.Time `type:"timestamp"`
17843
17844	Owner *Owner `type:"structure"`
17845
17846	Size *int64 `type:"integer"`
17847
17848	// The class of storage used to store the object.
17849	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
17850}
17851
17852// String returns the string representation
17853func (s Object) String() string {
17854	return awsutil.Prettify(s)
17855}
17856
17857// GoString returns the string representation
17858func (s Object) GoString() string {
17859	return s.String()
17860}
17861
17862// SetETag sets the ETag field's value.
17863func (s *Object) SetETag(v string) *Object {
17864	s.ETag = &v
17865	return s
17866}
17867
17868// SetKey sets the Key field's value.
17869func (s *Object) SetKey(v string) *Object {
17870	s.Key = &v
17871	return s
17872}
17873
17874// SetLastModified sets the LastModified field's value.
17875func (s *Object) SetLastModified(v time.Time) *Object {
17876	s.LastModified = &v
17877	return s
17878}
17879
17880// SetOwner sets the Owner field's value.
17881func (s *Object) SetOwner(v *Owner) *Object {
17882	s.Owner = v
17883	return s
17884}
17885
17886// SetSize sets the Size field's value.
17887func (s *Object) SetSize(v int64) *Object {
17888	s.Size = &v
17889	return s
17890}
17891
17892// SetStorageClass sets the StorageClass field's value.
17893func (s *Object) SetStorageClass(v string) *Object {
17894	s.StorageClass = &v
17895	return s
17896}
17897
17898type ObjectIdentifier struct {
17899	_ struct{} `type:"structure"`
17900
17901	// Key name of the object to delete.
17902	//
17903	// Key is a required field
17904	Key *string `min:"1" type:"string" required:"true"`
17905
17906	// VersionId for the specific version of the object to delete.
17907	VersionId *string `type:"string"`
17908}
17909
17910// String returns the string representation
17911func (s ObjectIdentifier) String() string {
17912	return awsutil.Prettify(s)
17913}
17914
17915// GoString returns the string representation
17916func (s ObjectIdentifier) GoString() string {
17917	return s.String()
17918}
17919
17920// Validate inspects the fields of the type to determine if they are valid.
17921func (s *ObjectIdentifier) Validate() error {
17922	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
17923	if s.Key == nil {
17924		invalidParams.Add(request.NewErrParamRequired("Key"))
17925	}
17926	if s.Key != nil && len(*s.Key) < 1 {
17927		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17928	}
17929
17930	if invalidParams.Len() > 0 {
17931		return invalidParams
17932	}
17933	return nil
17934}
17935
17936// SetKey sets the Key field's value.
17937func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
17938	s.Key = &v
17939	return s
17940}
17941
17942// SetVersionId sets the VersionId field's value.
17943func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
17944	s.VersionId = &v
17945	return s
17946}
17947
17948// The container element for Object Lock configuration parameters.
17949type ObjectLockConfiguration struct {
17950	_ struct{} `type:"structure"`
17951
17952	// Indicates whether this bucket has an Object Lock configuration enabled.
17953	ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"`
17954
17955	// The Object Lock rule in place for the specified object.
17956	Rule *ObjectLockRule `type:"structure"`
17957}
17958
17959// String returns the string representation
17960func (s ObjectLockConfiguration) String() string {
17961	return awsutil.Prettify(s)
17962}
17963
17964// GoString returns the string representation
17965func (s ObjectLockConfiguration) GoString() string {
17966	return s.String()
17967}
17968
17969// SetObjectLockEnabled sets the ObjectLockEnabled field's value.
17970func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration {
17971	s.ObjectLockEnabled = &v
17972	return s
17973}
17974
17975// SetRule sets the Rule field's value.
17976func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration {
17977	s.Rule = v
17978	return s
17979}
17980
17981// A Legal Hold configuration for an object.
17982type ObjectLockLegalHold struct {
17983	_ struct{} `type:"structure"`
17984
17985	// Indicates whether the specified object has a Legal Hold in place.
17986	Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"`
17987}
17988
17989// String returns the string representation
17990func (s ObjectLockLegalHold) String() string {
17991	return awsutil.Prettify(s)
17992}
17993
17994// GoString returns the string representation
17995func (s ObjectLockLegalHold) GoString() string {
17996	return s.String()
17997}
17998
17999// SetStatus sets the Status field's value.
18000func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold {
18001	s.Status = &v
18002	return s
18003}
18004
18005// A Retention configuration for an object.
18006type ObjectLockRetention struct {
18007	_ struct{} `type:"structure"`
18008
18009	// Indicates the Retention mode for the specified object.
18010	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
18011
18012	// The date on which this Object Lock Retention will expire.
18013	RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
18014}
18015
18016// String returns the string representation
18017func (s ObjectLockRetention) String() string {
18018	return awsutil.Prettify(s)
18019}
18020
18021// GoString returns the string representation
18022func (s ObjectLockRetention) GoString() string {
18023	return s.String()
18024}
18025
18026// SetMode sets the Mode field's value.
18027func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention {
18028	s.Mode = &v
18029	return s
18030}
18031
18032// SetRetainUntilDate sets the RetainUntilDate field's value.
18033func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention {
18034	s.RetainUntilDate = &v
18035	return s
18036}
18037
18038// The container element for an Object Lock rule.
18039type ObjectLockRule struct {
18040	_ struct{} `type:"structure"`
18041
18042	// The default retention period that you want to apply to new objects placed
18043	// in the specified bucket.
18044	DefaultRetention *DefaultRetention `type:"structure"`
18045}
18046
18047// String returns the string representation
18048func (s ObjectLockRule) String() string {
18049	return awsutil.Prettify(s)
18050}
18051
18052// GoString returns the string representation
18053func (s ObjectLockRule) GoString() string {
18054	return s.String()
18055}
18056
18057// SetDefaultRetention sets the DefaultRetention field's value.
18058func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule {
18059	s.DefaultRetention = v
18060	return s
18061}
18062
18063type ObjectVersion struct {
18064	_ struct{} `type:"structure"`
18065
18066	ETag *string `type:"string"`
18067
18068	// Specifies whether the object is (true) or is not (false) the latest version
18069	// of an object.
18070	IsLatest *bool `type:"boolean"`
18071
18072	// The object key.
18073	Key *string `min:"1" type:"string"`
18074
18075	// Date and time the object was last modified.
18076	LastModified *time.Time `type:"timestamp"`
18077
18078	Owner *Owner `type:"structure"`
18079
18080	// Size in bytes of the object.
18081	Size *int64 `type:"integer"`
18082
18083	// The class of storage used to store the object.
18084	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
18085
18086	// Version ID of an object.
18087	VersionId *string `type:"string"`
18088}
18089
18090// String returns the string representation
18091func (s ObjectVersion) String() string {
18092	return awsutil.Prettify(s)
18093}
18094
18095// GoString returns the string representation
18096func (s ObjectVersion) GoString() string {
18097	return s.String()
18098}
18099
18100// SetETag sets the ETag field's value.
18101func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
18102	s.ETag = &v
18103	return s
18104}
18105
18106// SetIsLatest sets the IsLatest field's value.
18107func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
18108	s.IsLatest = &v
18109	return s
18110}
18111
18112// SetKey sets the Key field's value.
18113func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
18114	s.Key = &v
18115	return s
18116}
18117
18118// SetLastModified sets the LastModified field's value.
18119func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
18120	s.LastModified = &v
18121	return s
18122}
18123
18124// SetOwner sets the Owner field's value.
18125func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
18126	s.Owner = v
18127	return s
18128}
18129
18130// SetSize sets the Size field's value.
18131func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
18132	s.Size = &v
18133	return s
18134}
18135
18136// SetStorageClass sets the StorageClass field's value.
18137func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
18138	s.StorageClass = &v
18139	return s
18140}
18141
18142// SetVersionId sets the VersionId field's value.
18143func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
18144	s.VersionId = &v
18145	return s
18146}
18147
18148// Describes the location where the restore job's output is stored.
18149type OutputLocation struct {
18150	_ struct{} `type:"structure"`
18151
18152	// Describes an S3 location that will receive the results of the restore request.
18153	S3 *Location `type:"structure"`
18154}
18155
18156// String returns the string representation
18157func (s OutputLocation) String() string {
18158	return awsutil.Prettify(s)
18159}
18160
18161// GoString returns the string representation
18162func (s OutputLocation) GoString() string {
18163	return s.String()
18164}
18165
18166// Validate inspects the fields of the type to determine if they are valid.
18167func (s *OutputLocation) Validate() error {
18168	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
18169	if s.S3 != nil {
18170		if err := s.S3.Validate(); err != nil {
18171			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
18172		}
18173	}
18174
18175	if invalidParams.Len() > 0 {
18176		return invalidParams
18177	}
18178	return nil
18179}
18180
18181// SetS3 sets the S3 field's value.
18182func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
18183	s.S3 = v
18184	return s
18185}
18186
18187// Describes how results of the Select job are serialized.
18188type OutputSerialization struct {
18189	_ struct{} `type:"structure"`
18190
18191	// Describes the serialization of CSV-encoded Select results.
18192	CSV *CSVOutput `type:"structure"`
18193
18194	// Specifies JSON as request's output serialization format.
18195	JSON *JSONOutput `type:"structure"`
18196}
18197
18198// String returns the string representation
18199func (s OutputSerialization) String() string {
18200	return awsutil.Prettify(s)
18201}
18202
18203// GoString returns the string representation
18204func (s OutputSerialization) GoString() string {
18205	return s.String()
18206}
18207
18208// SetCSV sets the CSV field's value.
18209func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
18210	s.CSV = v
18211	return s
18212}
18213
18214// SetJSON sets the JSON field's value.
18215func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
18216	s.JSON = v
18217	return s
18218}
18219
18220type Owner struct {
18221	_ struct{} `type:"structure"`
18222
18223	DisplayName *string `type:"string"`
18224
18225	ID *string `type:"string"`
18226}
18227
18228// String returns the string representation
18229func (s Owner) String() string {
18230	return awsutil.Prettify(s)
18231}
18232
18233// GoString returns the string representation
18234func (s Owner) GoString() string {
18235	return s.String()
18236}
18237
18238// SetDisplayName sets the DisplayName field's value.
18239func (s *Owner) SetDisplayName(v string) *Owner {
18240	s.DisplayName = &v
18241	return s
18242}
18243
18244// SetID sets the ID field's value.
18245func (s *Owner) SetID(v string) *Owner {
18246	s.ID = &v
18247	return s
18248}
18249
18250type ParquetInput struct {
18251	_ struct{} `type:"structure"`
18252}
18253
18254// String returns the string representation
18255func (s ParquetInput) String() string {
18256	return awsutil.Prettify(s)
18257}
18258
18259// GoString returns the string representation
18260func (s ParquetInput) GoString() string {
18261	return s.String()
18262}
18263
18264type Part struct {
18265	_ struct{} `type:"structure"`
18266
18267	// Entity tag returned when the part was uploaded.
18268	ETag *string `type:"string"`
18269
18270	// Date and time at which the part was uploaded.
18271	LastModified *time.Time `type:"timestamp"`
18272
18273	// Part number identifying the part. This is a positive integer between 1 and
18274	// 10,000.
18275	PartNumber *int64 `type:"integer"`
18276
18277	// Size in bytes of the uploaded part data.
18278	Size *int64 `type:"integer"`
18279}
18280
18281// String returns the string representation
18282func (s Part) String() string {
18283	return awsutil.Prettify(s)
18284}
18285
18286// GoString returns the string representation
18287func (s Part) GoString() string {
18288	return s.String()
18289}
18290
18291// SetETag sets the ETag field's value.
18292func (s *Part) SetETag(v string) *Part {
18293	s.ETag = &v
18294	return s
18295}
18296
18297// SetLastModified sets the LastModified field's value.
18298func (s *Part) SetLastModified(v time.Time) *Part {
18299	s.LastModified = &v
18300	return s
18301}
18302
18303// SetPartNumber sets the PartNumber field's value.
18304func (s *Part) SetPartNumber(v int64) *Part {
18305	s.PartNumber = &v
18306	return s
18307}
18308
18309// SetSize sets the Size field's value.
18310func (s *Part) SetSize(v int64) *Part {
18311	s.Size = &v
18312	return s
18313}
18314
18315// The container element for a bucket's policy status.
18316type PolicyStatus struct {
18317	_ struct{} `type:"structure"`
18318
18319	// The policy status for this bucket. TRUE indicates that this bucket is public.
18320	// FALSE indicates that the bucket is not public.
18321	IsPublic *bool `locationName:"IsPublic" type:"boolean"`
18322}
18323
18324// String returns the string representation
18325func (s PolicyStatus) String() string {
18326	return awsutil.Prettify(s)
18327}
18328
18329// GoString returns the string representation
18330func (s PolicyStatus) GoString() string {
18331	return s.String()
18332}
18333
18334// SetIsPublic sets the IsPublic field's value.
18335func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus {
18336	s.IsPublic = &v
18337	return s
18338}
18339
18340type Progress struct {
18341	_ struct{} `type:"structure"`
18342
18343	// The current number of uncompressed object bytes processed.
18344	BytesProcessed *int64 `type:"long"`
18345
18346	// The current number of bytes of records payload data returned.
18347	BytesReturned *int64 `type:"long"`
18348
18349	// The current number of object bytes scanned.
18350	BytesScanned *int64 `type:"long"`
18351}
18352
18353// String returns the string representation
18354func (s Progress) String() string {
18355	return awsutil.Prettify(s)
18356}
18357
18358// GoString returns the string representation
18359func (s Progress) GoString() string {
18360	return s.String()
18361}
18362
18363// SetBytesProcessed sets the BytesProcessed field's value.
18364func (s *Progress) SetBytesProcessed(v int64) *Progress {
18365	s.BytesProcessed = &v
18366	return s
18367}
18368
18369// SetBytesReturned sets the BytesReturned field's value.
18370func (s *Progress) SetBytesReturned(v int64) *Progress {
18371	s.BytesReturned = &v
18372	return s
18373}
18374
18375// SetBytesScanned sets the BytesScanned field's value.
18376func (s *Progress) SetBytesScanned(v int64) *Progress {
18377	s.BytesScanned = &v
18378	return s
18379}
18380
18381type ProgressEvent struct {
18382	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
18383
18384	// The Progress event details.
18385	Details *Progress `locationName:"Details" type:"structure"`
18386}
18387
18388// String returns the string representation
18389func (s ProgressEvent) String() string {
18390	return awsutil.Prettify(s)
18391}
18392
18393// GoString returns the string representation
18394func (s ProgressEvent) GoString() string {
18395	return s.String()
18396}
18397
18398// SetDetails sets the Details field's value.
18399func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
18400	s.Details = v
18401	return s
18402}
18403
18404// The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
18405func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
18406
18407// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
18408// This method is only used internally within the SDK's EventStream handling.
18409func (s *ProgressEvent) UnmarshalEvent(
18410	payloadUnmarshaler protocol.PayloadUnmarshaler,
18411	msg eventstream.Message,
18412) error {
18413	if err := payloadUnmarshaler.UnmarshalPayload(
18414		bytes.NewReader(msg.Payload), s,
18415	); err != nil {
18416		return err
18417	}
18418	return nil
18419}
18420
18421type PublicAccessBlockConfiguration struct {
18422	_ struct{} `type:"structure"`
18423
18424	// Specifies whether Amazon S3 should block public access control lists (ACLs)
18425	// for this bucket and objects in this bucket. Setting this element to TRUE
18426	// causes the following behavior:
18427	//
18428	//    * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is
18429	//    public.
18430	//
18431	//    * PUT Object calls fail if the request includes a public ACL.
18432	//
18433	// Enabling this setting doesn't affect existing policies or ACLs.
18434	BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"`
18435
18436	// Specifies whether Amazon S3 should block public bucket policies for this
18437	// bucket. Setting this element to TRUE causes Amazon S3 to reject calls to
18438	// PUT Bucket policy if the specified bucket policy allows public access.
18439	//
18440	// Enabling this setting doesn't affect existing bucket policies.
18441	BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"`
18442
18443	// Specifies whether Amazon S3 should ignore public ACLs for this bucket and
18444	// objects in this bucket. Setting this element to TRUE causes Amazon S3 to
18445	// ignore all public ACLs on this bucket and objects in this bucket.
18446	//
18447	// Enabling this setting doesn't affect the persistence of any existing ACLs
18448	// and doesn't prevent new public ACLs from being set.
18449	IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"`
18450
18451	// Specifies whether Amazon S3 should restrict public bucket policies for this
18452	// bucket. Setting this element to TRUE restricts access to this bucket to only
18453	// AWS services and authorized users within this account if the bucket has a
18454	// public policy.
18455	//
18456	// Enabling this setting doesn't affect previously stored bucket policies, except
18457	// that public and cross-account access within any public bucket policy, including
18458	// non-public delegation to specific accounts, is blocked.
18459	RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"`
18460}
18461
18462// String returns the string representation
18463func (s PublicAccessBlockConfiguration) String() string {
18464	return awsutil.Prettify(s)
18465}
18466
18467// GoString returns the string representation
18468func (s PublicAccessBlockConfiguration) GoString() string {
18469	return s.String()
18470}
18471
18472// SetBlockPublicAcls sets the BlockPublicAcls field's value.
18473func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration {
18474	s.BlockPublicAcls = &v
18475	return s
18476}
18477
18478// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
18479func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration {
18480	s.BlockPublicPolicy = &v
18481	return s
18482}
18483
18484// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
18485func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration {
18486	s.IgnorePublicAcls = &v
18487	return s
18488}
18489
18490// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
18491func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration {
18492	s.RestrictPublicBuckets = &v
18493	return s
18494}
18495
18496type PutBucketAccelerateConfigurationInput struct {
18497	_ struct{} `type:"structure" payload:"AccelerateConfiguration"`
18498
18499	// Specifies the Accelerate Configuration you want to set for the bucket.
18500	//
18501	// AccelerateConfiguration is a required field
18502	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18503
18504	// Name of the bucket for which the accelerate configuration is set.
18505	//
18506	// Bucket is a required field
18507	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18508}
18509
18510// String returns the string representation
18511func (s PutBucketAccelerateConfigurationInput) String() string {
18512	return awsutil.Prettify(s)
18513}
18514
18515// GoString returns the string representation
18516func (s PutBucketAccelerateConfigurationInput) GoString() string {
18517	return s.String()
18518}
18519
18520// Validate inspects the fields of the type to determine if they are valid.
18521func (s *PutBucketAccelerateConfigurationInput) Validate() error {
18522	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
18523	if s.AccelerateConfiguration == nil {
18524		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
18525	}
18526	if s.Bucket == nil {
18527		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18528	}
18529	if s.Bucket != nil && len(*s.Bucket) < 1 {
18530		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18531	}
18532
18533	if invalidParams.Len() > 0 {
18534		return invalidParams
18535	}
18536	return nil
18537}
18538
18539// SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
18540func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
18541	s.AccelerateConfiguration = v
18542	return s
18543}
18544
18545// SetBucket sets the Bucket field's value.
18546func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
18547	s.Bucket = &v
18548	return s
18549}
18550
18551func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
18552	if s.Bucket == nil {
18553		return v
18554	}
18555	return *s.Bucket
18556}
18557
18558type PutBucketAccelerateConfigurationOutput struct {
18559	_ struct{} `type:"structure"`
18560}
18561
18562// String returns the string representation
18563func (s PutBucketAccelerateConfigurationOutput) String() string {
18564	return awsutil.Prettify(s)
18565}
18566
18567// GoString returns the string representation
18568func (s PutBucketAccelerateConfigurationOutput) GoString() string {
18569	return s.String()
18570}
18571
18572type PutBucketAclInput struct {
18573	_ struct{} `type:"structure" payload:"AccessControlPolicy"`
18574
18575	// The canned ACL to apply to the bucket.
18576	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
18577
18578	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18579
18580	// Bucket is a required field
18581	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18582
18583	// Allows grantee the read, write, read ACP, and write ACP permissions on the
18584	// bucket.
18585	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
18586
18587	// Allows grantee to list the objects in the bucket.
18588	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
18589
18590	// Allows grantee to read the bucket ACL.
18591	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
18592
18593	// Allows grantee to create, overwrite, and delete any object in the bucket.
18594	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
18595
18596	// Allows grantee to write the ACL for the applicable bucket.
18597	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
18598}
18599
18600// String returns the string representation
18601func (s PutBucketAclInput) String() string {
18602	return awsutil.Prettify(s)
18603}
18604
18605// GoString returns the string representation
18606func (s PutBucketAclInput) GoString() string {
18607	return s.String()
18608}
18609
18610// Validate inspects the fields of the type to determine if they are valid.
18611func (s *PutBucketAclInput) Validate() error {
18612	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
18613	if s.Bucket == nil {
18614		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18615	}
18616	if s.Bucket != nil && len(*s.Bucket) < 1 {
18617		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18618	}
18619	if s.AccessControlPolicy != nil {
18620		if err := s.AccessControlPolicy.Validate(); err != nil {
18621			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
18622		}
18623	}
18624
18625	if invalidParams.Len() > 0 {
18626		return invalidParams
18627	}
18628	return nil
18629}
18630
18631// SetACL sets the ACL field's value.
18632func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
18633	s.ACL = &v
18634	return s
18635}
18636
18637// SetAccessControlPolicy sets the AccessControlPolicy field's value.
18638func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
18639	s.AccessControlPolicy = v
18640	return s
18641}
18642
18643// SetBucket sets the Bucket field's value.
18644func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
18645	s.Bucket = &v
18646	return s
18647}
18648
18649func (s *PutBucketAclInput) getBucket() (v string) {
18650	if s.Bucket == nil {
18651		return v
18652	}
18653	return *s.Bucket
18654}
18655
18656// SetGrantFullControl sets the GrantFullControl field's value.
18657func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
18658	s.GrantFullControl = &v
18659	return s
18660}
18661
18662// SetGrantRead sets the GrantRead field's value.
18663func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
18664	s.GrantRead = &v
18665	return s
18666}
18667
18668// SetGrantReadACP sets the GrantReadACP field's value.
18669func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
18670	s.GrantReadACP = &v
18671	return s
18672}
18673
18674// SetGrantWrite sets the GrantWrite field's value.
18675func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
18676	s.GrantWrite = &v
18677	return s
18678}
18679
18680// SetGrantWriteACP sets the GrantWriteACP field's value.
18681func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
18682	s.GrantWriteACP = &v
18683	return s
18684}
18685
18686type PutBucketAclOutput struct {
18687	_ struct{} `type:"structure"`
18688}
18689
18690// String returns the string representation
18691func (s PutBucketAclOutput) String() string {
18692	return awsutil.Prettify(s)
18693}
18694
18695// GoString returns the string representation
18696func (s PutBucketAclOutput) GoString() string {
18697	return s.String()
18698}
18699
18700type PutBucketAnalyticsConfigurationInput struct {
18701	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
18702
18703	// The configuration and any analyses for the analytics filter.
18704	//
18705	// AnalyticsConfiguration is a required field
18706	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18707
18708	// The name of the bucket to which an analytics configuration is stored.
18709	//
18710	// Bucket is a required field
18711	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18712
18713	// The identifier used to represent an analytics configuration.
18714	//
18715	// Id is a required field
18716	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18717}
18718
18719// String returns the string representation
18720func (s PutBucketAnalyticsConfigurationInput) String() string {
18721	return awsutil.Prettify(s)
18722}
18723
18724// GoString returns the string representation
18725func (s PutBucketAnalyticsConfigurationInput) GoString() string {
18726	return s.String()
18727}
18728
18729// Validate inspects the fields of the type to determine if they are valid.
18730func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
18731	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
18732	if s.AnalyticsConfiguration == nil {
18733		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
18734	}
18735	if s.Bucket == nil {
18736		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18737	}
18738	if s.Bucket != nil && len(*s.Bucket) < 1 {
18739		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18740	}
18741	if s.Id == nil {
18742		invalidParams.Add(request.NewErrParamRequired("Id"))
18743	}
18744	if s.AnalyticsConfiguration != nil {
18745		if err := s.AnalyticsConfiguration.Validate(); err != nil {
18746			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
18747		}
18748	}
18749
18750	if invalidParams.Len() > 0 {
18751		return invalidParams
18752	}
18753	return nil
18754}
18755
18756// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
18757func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
18758	s.AnalyticsConfiguration = v
18759	return s
18760}
18761
18762// SetBucket sets the Bucket field's value.
18763func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
18764	s.Bucket = &v
18765	return s
18766}
18767
18768func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
18769	if s.Bucket == nil {
18770		return v
18771	}
18772	return *s.Bucket
18773}
18774
18775// SetId sets the Id field's value.
18776func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
18777	s.Id = &v
18778	return s
18779}
18780
18781type PutBucketAnalyticsConfigurationOutput struct {
18782	_ struct{} `type:"structure"`
18783}
18784
18785// String returns the string representation
18786func (s PutBucketAnalyticsConfigurationOutput) String() string {
18787	return awsutil.Prettify(s)
18788}
18789
18790// GoString returns the string representation
18791func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
18792	return s.String()
18793}
18794
18795type PutBucketCorsInput struct {
18796	_ struct{} `type:"structure" payload:"CORSConfiguration"`
18797
18798	// Bucket is a required field
18799	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18800
18801	// CORSConfiguration is a required field
18802	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18803}
18804
18805// String returns the string representation
18806func (s PutBucketCorsInput) String() string {
18807	return awsutil.Prettify(s)
18808}
18809
18810// GoString returns the string representation
18811func (s PutBucketCorsInput) GoString() string {
18812	return s.String()
18813}
18814
18815// Validate inspects the fields of the type to determine if they are valid.
18816func (s *PutBucketCorsInput) Validate() error {
18817	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
18818	if s.Bucket == nil {
18819		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18820	}
18821	if s.Bucket != nil && len(*s.Bucket) < 1 {
18822		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18823	}
18824	if s.CORSConfiguration == nil {
18825		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
18826	}
18827	if s.CORSConfiguration != nil {
18828		if err := s.CORSConfiguration.Validate(); err != nil {
18829			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
18830		}
18831	}
18832
18833	if invalidParams.Len() > 0 {
18834		return invalidParams
18835	}
18836	return nil
18837}
18838
18839// SetBucket sets the Bucket field's value.
18840func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
18841	s.Bucket = &v
18842	return s
18843}
18844
18845func (s *PutBucketCorsInput) getBucket() (v string) {
18846	if s.Bucket == nil {
18847		return v
18848	}
18849	return *s.Bucket
18850}
18851
18852// SetCORSConfiguration sets the CORSConfiguration field's value.
18853func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
18854	s.CORSConfiguration = v
18855	return s
18856}
18857
18858type PutBucketCorsOutput struct {
18859	_ struct{} `type:"structure"`
18860}
18861
18862// String returns the string representation
18863func (s PutBucketCorsOutput) String() string {
18864	return awsutil.Prettify(s)
18865}
18866
18867// GoString returns the string representation
18868func (s PutBucketCorsOutput) GoString() string {
18869	return s.String()
18870}
18871
18872type PutBucketEncryptionInput struct {
18873	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
18874
18875	// The name of the bucket for which the server-side encryption configuration
18876	// is set.
18877	//
18878	// Bucket is a required field
18879	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18880
18881	// Container for server-side encryption configuration rules. Currently S3 supports
18882	// one rule only.
18883	//
18884	// ServerSideEncryptionConfiguration is a required field
18885	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18886}
18887
18888// String returns the string representation
18889func (s PutBucketEncryptionInput) String() string {
18890	return awsutil.Prettify(s)
18891}
18892
18893// GoString returns the string representation
18894func (s PutBucketEncryptionInput) GoString() string {
18895	return s.String()
18896}
18897
18898// Validate inspects the fields of the type to determine if they are valid.
18899func (s *PutBucketEncryptionInput) Validate() error {
18900	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
18901	if s.Bucket == nil {
18902		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18903	}
18904	if s.Bucket != nil && len(*s.Bucket) < 1 {
18905		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18906	}
18907	if s.ServerSideEncryptionConfiguration == nil {
18908		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
18909	}
18910	if s.ServerSideEncryptionConfiguration != nil {
18911		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
18912			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
18913		}
18914	}
18915
18916	if invalidParams.Len() > 0 {
18917		return invalidParams
18918	}
18919	return nil
18920}
18921
18922// SetBucket sets the Bucket field's value.
18923func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
18924	s.Bucket = &v
18925	return s
18926}
18927
18928func (s *PutBucketEncryptionInput) getBucket() (v string) {
18929	if s.Bucket == nil {
18930		return v
18931	}
18932	return *s.Bucket
18933}
18934
18935// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
18936func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
18937	s.ServerSideEncryptionConfiguration = v
18938	return s
18939}
18940
18941type PutBucketEncryptionOutput struct {
18942	_ struct{} `type:"structure"`
18943}
18944
18945// String returns the string representation
18946func (s PutBucketEncryptionOutput) String() string {
18947	return awsutil.Prettify(s)
18948}
18949
18950// GoString returns the string representation
18951func (s PutBucketEncryptionOutput) GoString() string {
18952	return s.String()
18953}
18954
18955type PutBucketInventoryConfigurationInput struct {
18956	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
18957
18958	// The name of the bucket where the inventory configuration will be stored.
18959	//
18960	// Bucket is a required field
18961	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18962
18963	// The ID used to identify the inventory configuration.
18964	//
18965	// Id is a required field
18966	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18967
18968	// Specifies the inventory configuration.
18969	//
18970	// InventoryConfiguration is a required field
18971	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18972}
18973
18974// String returns the string representation
18975func (s PutBucketInventoryConfigurationInput) String() string {
18976	return awsutil.Prettify(s)
18977}
18978
18979// GoString returns the string representation
18980func (s PutBucketInventoryConfigurationInput) GoString() string {
18981	return s.String()
18982}
18983
18984// Validate inspects the fields of the type to determine if they are valid.
18985func (s *PutBucketInventoryConfigurationInput) Validate() error {
18986	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
18987	if s.Bucket == nil {
18988		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18989	}
18990	if s.Bucket != nil && len(*s.Bucket) < 1 {
18991		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18992	}
18993	if s.Id == nil {
18994		invalidParams.Add(request.NewErrParamRequired("Id"))
18995	}
18996	if s.InventoryConfiguration == nil {
18997		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
18998	}
18999	if s.InventoryConfiguration != nil {
19000		if err := s.InventoryConfiguration.Validate(); err != nil {
19001			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
19002		}
19003	}
19004
19005	if invalidParams.Len() > 0 {
19006		return invalidParams
19007	}
19008	return nil
19009}
19010
19011// SetBucket sets the Bucket field's value.
19012func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
19013	s.Bucket = &v
19014	return s
19015}
19016
19017func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
19018	if s.Bucket == nil {
19019		return v
19020	}
19021	return *s.Bucket
19022}
19023
19024// SetId sets the Id field's value.
19025func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
19026	s.Id = &v
19027	return s
19028}
19029
19030// SetInventoryConfiguration sets the InventoryConfiguration field's value.
19031func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
19032	s.InventoryConfiguration = v
19033	return s
19034}
19035
19036type PutBucketInventoryConfigurationOutput struct {
19037	_ struct{} `type:"structure"`
19038}
19039
19040// String returns the string representation
19041func (s PutBucketInventoryConfigurationOutput) String() string {
19042	return awsutil.Prettify(s)
19043}
19044
19045// GoString returns the string representation
19046func (s PutBucketInventoryConfigurationOutput) GoString() string {
19047	return s.String()
19048}
19049
19050type PutBucketLifecycleConfigurationInput struct {
19051	_ struct{} `type:"structure" payload:"LifecycleConfiguration"`
19052
19053	// Bucket is a required field
19054	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19055
19056	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19057}
19058
19059// String returns the string representation
19060func (s PutBucketLifecycleConfigurationInput) String() string {
19061	return awsutil.Prettify(s)
19062}
19063
19064// GoString returns the string representation
19065func (s PutBucketLifecycleConfigurationInput) GoString() string {
19066	return s.String()
19067}
19068
19069// Validate inspects the fields of the type to determine if they are valid.
19070func (s *PutBucketLifecycleConfigurationInput) Validate() error {
19071	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
19072	if s.Bucket == nil {
19073		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19074	}
19075	if s.Bucket != nil && len(*s.Bucket) < 1 {
19076		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19077	}
19078	if s.LifecycleConfiguration != nil {
19079		if err := s.LifecycleConfiguration.Validate(); err != nil {
19080			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
19081		}
19082	}
19083
19084	if invalidParams.Len() > 0 {
19085		return invalidParams
19086	}
19087	return nil
19088}
19089
19090// SetBucket sets the Bucket field's value.
19091func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
19092	s.Bucket = &v
19093	return s
19094}
19095
19096func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
19097	if s.Bucket == nil {
19098		return v
19099	}
19100	return *s.Bucket
19101}
19102
19103// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
19104func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
19105	s.LifecycleConfiguration = v
19106	return s
19107}
19108
19109type PutBucketLifecycleConfigurationOutput struct {
19110	_ struct{} `type:"structure"`
19111}
19112
19113// String returns the string representation
19114func (s PutBucketLifecycleConfigurationOutput) String() string {
19115	return awsutil.Prettify(s)
19116}
19117
19118// GoString returns the string representation
19119func (s PutBucketLifecycleConfigurationOutput) GoString() string {
19120	return s.String()
19121}
19122
19123type PutBucketLifecycleInput struct {
19124	_ struct{} `type:"structure" payload:"LifecycleConfiguration"`
19125
19126	// Bucket is a required field
19127	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19128
19129	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19130}
19131
19132// String returns the string representation
19133func (s PutBucketLifecycleInput) String() string {
19134	return awsutil.Prettify(s)
19135}
19136
19137// GoString returns the string representation
19138func (s PutBucketLifecycleInput) GoString() string {
19139	return s.String()
19140}
19141
19142// Validate inspects the fields of the type to determine if they are valid.
19143func (s *PutBucketLifecycleInput) Validate() error {
19144	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
19145	if s.Bucket == nil {
19146		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19147	}
19148	if s.Bucket != nil && len(*s.Bucket) < 1 {
19149		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19150	}
19151	if s.LifecycleConfiguration != nil {
19152		if err := s.LifecycleConfiguration.Validate(); err != nil {
19153			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
19154		}
19155	}
19156
19157	if invalidParams.Len() > 0 {
19158		return invalidParams
19159	}
19160	return nil
19161}
19162
19163// SetBucket sets the Bucket field's value.
19164func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
19165	s.Bucket = &v
19166	return s
19167}
19168
19169func (s *PutBucketLifecycleInput) getBucket() (v string) {
19170	if s.Bucket == nil {
19171		return v
19172	}
19173	return *s.Bucket
19174}
19175
19176// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
19177func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
19178	s.LifecycleConfiguration = v
19179	return s
19180}
19181
19182type PutBucketLifecycleOutput struct {
19183	_ struct{} `type:"structure"`
19184}
19185
19186// String returns the string representation
19187func (s PutBucketLifecycleOutput) String() string {
19188	return awsutil.Prettify(s)
19189}
19190
19191// GoString returns the string representation
19192func (s PutBucketLifecycleOutput) GoString() string {
19193	return s.String()
19194}
19195
19196type PutBucketLoggingInput struct {
19197	_ struct{} `type:"structure" payload:"BucketLoggingStatus"`
19198
19199	// Bucket is a required field
19200	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19201
19202	// BucketLoggingStatus is a required field
19203	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19204}
19205
19206// String returns the string representation
19207func (s PutBucketLoggingInput) String() string {
19208	return awsutil.Prettify(s)
19209}
19210
19211// GoString returns the string representation
19212func (s PutBucketLoggingInput) GoString() string {
19213	return s.String()
19214}
19215
19216// Validate inspects the fields of the type to determine if they are valid.
19217func (s *PutBucketLoggingInput) Validate() error {
19218	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
19219	if s.Bucket == nil {
19220		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19221	}
19222	if s.Bucket != nil && len(*s.Bucket) < 1 {
19223		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19224	}
19225	if s.BucketLoggingStatus == nil {
19226		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
19227	}
19228	if s.BucketLoggingStatus != nil {
19229		if err := s.BucketLoggingStatus.Validate(); err != nil {
19230			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
19231		}
19232	}
19233
19234	if invalidParams.Len() > 0 {
19235		return invalidParams
19236	}
19237	return nil
19238}
19239
19240// SetBucket sets the Bucket field's value.
19241func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
19242	s.Bucket = &v
19243	return s
19244}
19245
19246func (s *PutBucketLoggingInput) getBucket() (v string) {
19247	if s.Bucket == nil {
19248		return v
19249	}
19250	return *s.Bucket
19251}
19252
19253// SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
19254func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
19255	s.BucketLoggingStatus = v
19256	return s
19257}
19258
19259type PutBucketLoggingOutput struct {
19260	_ struct{} `type:"structure"`
19261}
19262
19263// String returns the string representation
19264func (s PutBucketLoggingOutput) String() string {
19265	return awsutil.Prettify(s)
19266}
19267
19268// GoString returns the string representation
19269func (s PutBucketLoggingOutput) GoString() string {
19270	return s.String()
19271}
19272
19273type PutBucketMetricsConfigurationInput struct {
19274	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
19275
19276	// The name of the bucket for which the metrics configuration is set.
19277	//
19278	// Bucket is a required field
19279	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19280
19281	// The ID used to identify the metrics configuration.
19282	//
19283	// Id is a required field
19284	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
19285
19286	// Specifies the metrics configuration.
19287	//
19288	// MetricsConfiguration is a required field
19289	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19290}
19291
19292// String returns the string representation
19293func (s PutBucketMetricsConfigurationInput) String() string {
19294	return awsutil.Prettify(s)
19295}
19296
19297// GoString returns the string representation
19298func (s PutBucketMetricsConfigurationInput) GoString() string {
19299	return s.String()
19300}
19301
19302// Validate inspects the fields of the type to determine if they are valid.
19303func (s *PutBucketMetricsConfigurationInput) Validate() error {
19304	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
19305	if s.Bucket == nil {
19306		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19307	}
19308	if s.Bucket != nil && len(*s.Bucket) < 1 {
19309		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19310	}
19311	if s.Id == nil {
19312		invalidParams.Add(request.NewErrParamRequired("Id"))
19313	}
19314	if s.MetricsConfiguration == nil {
19315		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
19316	}
19317	if s.MetricsConfiguration != nil {
19318		if err := s.MetricsConfiguration.Validate(); err != nil {
19319			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
19320		}
19321	}
19322
19323	if invalidParams.Len() > 0 {
19324		return invalidParams
19325	}
19326	return nil
19327}
19328
19329// SetBucket sets the Bucket field's value.
19330func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
19331	s.Bucket = &v
19332	return s
19333}
19334
19335func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
19336	if s.Bucket == nil {
19337		return v
19338	}
19339	return *s.Bucket
19340}
19341
19342// SetId sets the Id field's value.
19343func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
19344	s.Id = &v
19345	return s
19346}
19347
19348// SetMetricsConfiguration sets the MetricsConfiguration field's value.
19349func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
19350	s.MetricsConfiguration = v
19351	return s
19352}
19353
19354type PutBucketMetricsConfigurationOutput struct {
19355	_ struct{} `type:"structure"`
19356}
19357
19358// String returns the string representation
19359func (s PutBucketMetricsConfigurationOutput) String() string {
19360	return awsutil.Prettify(s)
19361}
19362
19363// GoString returns the string representation
19364func (s PutBucketMetricsConfigurationOutput) GoString() string {
19365	return s.String()
19366}
19367
19368type PutBucketNotificationConfigurationInput struct {
19369	_ struct{} `type:"structure" payload:"NotificationConfiguration"`
19370
19371	// Bucket is a required field
19372	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19373
19374	// A container for specifying the notification configuration of the bucket.
19375	// If this element is empty, notifications are turned off for the bucket.
19376	//
19377	// NotificationConfiguration is a required field
19378	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19379}
19380
19381// String returns the string representation
19382func (s PutBucketNotificationConfigurationInput) String() string {
19383	return awsutil.Prettify(s)
19384}
19385
19386// GoString returns the string representation
19387func (s PutBucketNotificationConfigurationInput) GoString() string {
19388	return s.String()
19389}
19390
19391// Validate inspects the fields of the type to determine if they are valid.
19392func (s *PutBucketNotificationConfigurationInput) Validate() error {
19393	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
19394	if s.Bucket == nil {
19395		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19396	}
19397	if s.Bucket != nil && len(*s.Bucket) < 1 {
19398		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19399	}
19400	if s.NotificationConfiguration == nil {
19401		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
19402	}
19403	if s.NotificationConfiguration != nil {
19404		if err := s.NotificationConfiguration.Validate(); err != nil {
19405			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
19406		}
19407	}
19408
19409	if invalidParams.Len() > 0 {
19410		return invalidParams
19411	}
19412	return nil
19413}
19414
19415// SetBucket sets the Bucket field's value.
19416func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
19417	s.Bucket = &v
19418	return s
19419}
19420
19421func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
19422	if s.Bucket == nil {
19423		return v
19424	}
19425	return *s.Bucket
19426}
19427
19428// SetNotificationConfiguration sets the NotificationConfiguration field's value.
19429func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
19430	s.NotificationConfiguration = v
19431	return s
19432}
19433
19434type PutBucketNotificationConfigurationOutput struct {
19435	_ struct{} `type:"structure"`
19436}
19437
19438// String returns the string representation
19439func (s PutBucketNotificationConfigurationOutput) String() string {
19440	return awsutil.Prettify(s)
19441}
19442
19443// GoString returns the string representation
19444func (s PutBucketNotificationConfigurationOutput) GoString() string {
19445	return s.String()
19446}
19447
19448type PutBucketNotificationInput struct {
19449	_ struct{} `type:"structure" payload:"NotificationConfiguration"`
19450
19451	// Bucket is a required field
19452	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19453
19454	// NotificationConfiguration is a required field
19455	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19456}
19457
19458// String returns the string representation
19459func (s PutBucketNotificationInput) String() string {
19460	return awsutil.Prettify(s)
19461}
19462
19463// GoString returns the string representation
19464func (s PutBucketNotificationInput) GoString() string {
19465	return s.String()
19466}
19467
19468// Validate inspects the fields of the type to determine if they are valid.
19469func (s *PutBucketNotificationInput) Validate() error {
19470	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
19471	if s.Bucket == nil {
19472		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19473	}
19474	if s.Bucket != nil && len(*s.Bucket) < 1 {
19475		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19476	}
19477	if s.NotificationConfiguration == nil {
19478		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
19479	}
19480
19481	if invalidParams.Len() > 0 {
19482		return invalidParams
19483	}
19484	return nil
19485}
19486
19487// SetBucket sets the Bucket field's value.
19488func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
19489	s.Bucket = &v
19490	return s
19491}
19492
19493func (s *PutBucketNotificationInput) getBucket() (v string) {
19494	if s.Bucket == nil {
19495		return v
19496	}
19497	return *s.Bucket
19498}
19499
19500// SetNotificationConfiguration sets the NotificationConfiguration field's value.
19501func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
19502	s.NotificationConfiguration = v
19503	return s
19504}
19505
19506type PutBucketNotificationOutput struct {
19507	_ struct{} `type:"structure"`
19508}
19509
19510// String returns the string representation
19511func (s PutBucketNotificationOutput) String() string {
19512	return awsutil.Prettify(s)
19513}
19514
19515// GoString returns the string representation
19516func (s PutBucketNotificationOutput) GoString() string {
19517	return s.String()
19518}
19519
19520type PutBucketPolicyInput struct {
19521	_ struct{} `type:"structure" payload:"Policy"`
19522
19523	// Bucket is a required field
19524	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19525
19526	// Set this parameter to true to confirm that you want to remove your permissions
19527	// to change this bucket policy in the future.
19528	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
19529
19530	// The bucket policy as a JSON document.
19531	//
19532	// Policy is a required field
19533	Policy *string `type:"string" required:"true"`
19534}
19535
19536// String returns the string representation
19537func (s PutBucketPolicyInput) String() string {
19538	return awsutil.Prettify(s)
19539}
19540
19541// GoString returns the string representation
19542func (s PutBucketPolicyInput) GoString() string {
19543	return s.String()
19544}
19545
19546// Validate inspects the fields of the type to determine if they are valid.
19547func (s *PutBucketPolicyInput) Validate() error {
19548	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
19549	if s.Bucket == nil {
19550		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19551	}
19552	if s.Bucket != nil && len(*s.Bucket) < 1 {
19553		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19554	}
19555	if s.Policy == nil {
19556		invalidParams.Add(request.NewErrParamRequired("Policy"))
19557	}
19558
19559	if invalidParams.Len() > 0 {
19560		return invalidParams
19561	}
19562	return nil
19563}
19564
19565// SetBucket sets the Bucket field's value.
19566func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
19567	s.Bucket = &v
19568	return s
19569}
19570
19571func (s *PutBucketPolicyInput) getBucket() (v string) {
19572	if s.Bucket == nil {
19573		return v
19574	}
19575	return *s.Bucket
19576}
19577
19578// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
19579func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
19580	s.ConfirmRemoveSelfBucketAccess = &v
19581	return s
19582}
19583
19584// SetPolicy sets the Policy field's value.
19585func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
19586	s.Policy = &v
19587	return s
19588}
19589
19590type PutBucketPolicyOutput struct {
19591	_ struct{} `type:"structure"`
19592}
19593
19594// String returns the string representation
19595func (s PutBucketPolicyOutput) String() string {
19596	return awsutil.Prettify(s)
19597}
19598
19599// GoString returns the string representation
19600func (s PutBucketPolicyOutput) GoString() string {
19601	return s.String()
19602}
19603
19604type PutBucketReplicationInput struct {
19605	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
19606
19607	// Bucket is a required field
19608	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19609
19610	// A container for replication rules. You can add up to 1,000 rules. The maximum
19611	// size of a replication configuration is 2 MB.
19612	//
19613	// ReplicationConfiguration is a required field
19614	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19615
19616	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
19617}
19618
19619// String returns the string representation
19620func (s PutBucketReplicationInput) String() string {
19621	return awsutil.Prettify(s)
19622}
19623
19624// GoString returns the string representation
19625func (s PutBucketReplicationInput) GoString() string {
19626	return s.String()
19627}
19628
19629// Validate inspects the fields of the type to determine if they are valid.
19630func (s *PutBucketReplicationInput) Validate() error {
19631	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
19632	if s.Bucket == nil {
19633		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19634	}
19635	if s.Bucket != nil && len(*s.Bucket) < 1 {
19636		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19637	}
19638	if s.ReplicationConfiguration == nil {
19639		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
19640	}
19641	if s.ReplicationConfiguration != nil {
19642		if err := s.ReplicationConfiguration.Validate(); err != nil {
19643			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
19644		}
19645	}
19646
19647	if invalidParams.Len() > 0 {
19648		return invalidParams
19649	}
19650	return nil
19651}
19652
19653// SetBucket sets the Bucket field's value.
19654func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
19655	s.Bucket = &v
19656	return s
19657}
19658
19659func (s *PutBucketReplicationInput) getBucket() (v string) {
19660	if s.Bucket == nil {
19661		return v
19662	}
19663	return *s.Bucket
19664}
19665
19666// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
19667func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
19668	s.ReplicationConfiguration = v
19669	return s
19670}
19671
19672// SetToken sets the Token field's value.
19673func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput {
19674	s.Token = &v
19675	return s
19676}
19677
19678type PutBucketReplicationOutput struct {
19679	_ struct{} `type:"structure"`
19680}
19681
19682// String returns the string representation
19683func (s PutBucketReplicationOutput) String() string {
19684	return awsutil.Prettify(s)
19685}
19686
19687// GoString returns the string representation
19688func (s PutBucketReplicationOutput) GoString() string {
19689	return s.String()
19690}
19691
19692type PutBucketRequestPaymentInput struct {
19693	_ struct{} `type:"structure" payload:"RequestPaymentConfiguration"`
19694
19695	// Bucket is a required field
19696	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19697
19698	// RequestPaymentConfiguration is a required field
19699	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19700}
19701
19702// String returns the string representation
19703func (s PutBucketRequestPaymentInput) String() string {
19704	return awsutil.Prettify(s)
19705}
19706
19707// GoString returns the string representation
19708func (s PutBucketRequestPaymentInput) GoString() string {
19709	return s.String()
19710}
19711
19712// Validate inspects the fields of the type to determine if they are valid.
19713func (s *PutBucketRequestPaymentInput) Validate() error {
19714	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
19715	if s.Bucket == nil {
19716		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19717	}
19718	if s.Bucket != nil && len(*s.Bucket) < 1 {
19719		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19720	}
19721	if s.RequestPaymentConfiguration == nil {
19722		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
19723	}
19724	if s.RequestPaymentConfiguration != nil {
19725		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
19726			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
19727		}
19728	}
19729
19730	if invalidParams.Len() > 0 {
19731		return invalidParams
19732	}
19733	return nil
19734}
19735
19736// SetBucket sets the Bucket field's value.
19737func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
19738	s.Bucket = &v
19739	return s
19740}
19741
19742func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
19743	if s.Bucket == nil {
19744		return v
19745	}
19746	return *s.Bucket
19747}
19748
19749// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
19750func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
19751	s.RequestPaymentConfiguration = v
19752	return s
19753}
19754
19755type PutBucketRequestPaymentOutput struct {
19756	_ struct{} `type:"structure"`
19757}
19758
19759// String returns the string representation
19760func (s PutBucketRequestPaymentOutput) String() string {
19761	return awsutil.Prettify(s)
19762}
19763
19764// GoString returns the string representation
19765func (s PutBucketRequestPaymentOutput) GoString() string {
19766	return s.String()
19767}
19768
19769type PutBucketTaggingInput struct {
19770	_ struct{} `type:"structure" payload:"Tagging"`
19771
19772	// Bucket is a required field
19773	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19774
19775	// Tagging is a required field
19776	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19777}
19778
19779// String returns the string representation
19780func (s PutBucketTaggingInput) String() string {
19781	return awsutil.Prettify(s)
19782}
19783
19784// GoString returns the string representation
19785func (s PutBucketTaggingInput) GoString() string {
19786	return s.String()
19787}
19788
19789// Validate inspects the fields of the type to determine if they are valid.
19790func (s *PutBucketTaggingInput) Validate() error {
19791	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
19792	if s.Bucket == nil {
19793		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19794	}
19795	if s.Bucket != nil && len(*s.Bucket) < 1 {
19796		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19797	}
19798	if s.Tagging == nil {
19799		invalidParams.Add(request.NewErrParamRequired("Tagging"))
19800	}
19801	if s.Tagging != nil {
19802		if err := s.Tagging.Validate(); err != nil {
19803			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
19804		}
19805	}
19806
19807	if invalidParams.Len() > 0 {
19808		return invalidParams
19809	}
19810	return nil
19811}
19812
19813// SetBucket sets the Bucket field's value.
19814func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
19815	s.Bucket = &v
19816	return s
19817}
19818
19819func (s *PutBucketTaggingInput) getBucket() (v string) {
19820	if s.Bucket == nil {
19821		return v
19822	}
19823	return *s.Bucket
19824}
19825
19826// SetTagging sets the Tagging field's value.
19827func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
19828	s.Tagging = v
19829	return s
19830}
19831
19832type PutBucketTaggingOutput struct {
19833	_ struct{} `type:"structure"`
19834}
19835
19836// String returns the string representation
19837func (s PutBucketTaggingOutput) String() string {
19838	return awsutil.Prettify(s)
19839}
19840
19841// GoString returns the string representation
19842func (s PutBucketTaggingOutput) GoString() string {
19843	return s.String()
19844}
19845
19846type PutBucketVersioningInput struct {
19847	_ struct{} `type:"structure" payload:"VersioningConfiguration"`
19848
19849	// Bucket is a required field
19850	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19851
19852	// The concatenation of the authentication device's serial number, a space,
19853	// and the value that is displayed on your authentication device.
19854	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
19855
19856	// VersioningConfiguration is a required field
19857	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19858}
19859
19860// String returns the string representation
19861func (s PutBucketVersioningInput) String() string {
19862	return awsutil.Prettify(s)
19863}
19864
19865// GoString returns the string representation
19866func (s PutBucketVersioningInput) GoString() string {
19867	return s.String()
19868}
19869
19870// Validate inspects the fields of the type to determine if they are valid.
19871func (s *PutBucketVersioningInput) Validate() error {
19872	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
19873	if s.Bucket == nil {
19874		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19875	}
19876	if s.Bucket != nil && len(*s.Bucket) < 1 {
19877		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19878	}
19879	if s.VersioningConfiguration == nil {
19880		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
19881	}
19882
19883	if invalidParams.Len() > 0 {
19884		return invalidParams
19885	}
19886	return nil
19887}
19888
19889// SetBucket sets the Bucket field's value.
19890func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
19891	s.Bucket = &v
19892	return s
19893}
19894
19895func (s *PutBucketVersioningInput) getBucket() (v string) {
19896	if s.Bucket == nil {
19897		return v
19898	}
19899	return *s.Bucket
19900}
19901
19902// SetMFA sets the MFA field's value.
19903func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
19904	s.MFA = &v
19905	return s
19906}
19907
19908// SetVersioningConfiguration sets the VersioningConfiguration field's value.
19909func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
19910	s.VersioningConfiguration = v
19911	return s
19912}
19913
19914type PutBucketVersioningOutput struct {
19915	_ struct{} `type:"structure"`
19916}
19917
19918// String returns the string representation
19919func (s PutBucketVersioningOutput) String() string {
19920	return awsutil.Prettify(s)
19921}
19922
19923// GoString returns the string representation
19924func (s PutBucketVersioningOutput) GoString() string {
19925	return s.String()
19926}
19927
19928type PutBucketWebsiteInput struct {
19929	_ struct{} `type:"structure" payload:"WebsiteConfiguration"`
19930
19931	// Bucket is a required field
19932	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19933
19934	// WebsiteConfiguration is a required field
19935	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19936}
19937
19938// String returns the string representation
19939func (s PutBucketWebsiteInput) String() string {
19940	return awsutil.Prettify(s)
19941}
19942
19943// GoString returns the string representation
19944func (s PutBucketWebsiteInput) GoString() string {
19945	return s.String()
19946}
19947
19948// Validate inspects the fields of the type to determine if they are valid.
19949func (s *PutBucketWebsiteInput) Validate() error {
19950	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
19951	if s.Bucket == nil {
19952		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19953	}
19954	if s.Bucket != nil && len(*s.Bucket) < 1 {
19955		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19956	}
19957	if s.WebsiteConfiguration == nil {
19958		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
19959	}
19960	if s.WebsiteConfiguration != nil {
19961		if err := s.WebsiteConfiguration.Validate(); err != nil {
19962			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
19963		}
19964	}
19965
19966	if invalidParams.Len() > 0 {
19967		return invalidParams
19968	}
19969	return nil
19970}
19971
19972// SetBucket sets the Bucket field's value.
19973func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
19974	s.Bucket = &v
19975	return s
19976}
19977
19978func (s *PutBucketWebsiteInput) getBucket() (v string) {
19979	if s.Bucket == nil {
19980		return v
19981	}
19982	return *s.Bucket
19983}
19984
19985// SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
19986func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
19987	s.WebsiteConfiguration = v
19988	return s
19989}
19990
19991type PutBucketWebsiteOutput struct {
19992	_ struct{} `type:"structure"`
19993}
19994
19995// String returns the string representation
19996func (s PutBucketWebsiteOutput) String() string {
19997	return awsutil.Prettify(s)
19998}
19999
20000// GoString returns the string representation
20001func (s PutBucketWebsiteOutput) GoString() string {
20002	return s.String()
20003}
20004
20005type PutObjectAclInput struct {
20006	_ struct{} `type:"structure" payload:"AccessControlPolicy"`
20007
20008	// The canned ACL to apply to the object.
20009	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
20010
20011	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
20012
20013	// Bucket is a required field
20014	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20015
20016	// Allows grantee the read, write, read ACP, and write ACP permissions on the
20017	// bucket.
20018	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
20019
20020	// Allows grantee to list the objects in the bucket.
20021	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
20022
20023	// Allows grantee to read the bucket ACL.
20024	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
20025
20026	// Allows grantee to create, overwrite, and delete any object in the bucket.
20027	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
20028
20029	// Allows grantee to write the ACL for the applicable bucket.
20030	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
20031
20032	// Key is a required field
20033	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20034
20035	// Confirms that the requester knows that she or he will be charged for the
20036	// request. Bucket owners need not specify this parameter in their requests.
20037	// Documentation on downloading objects from requester pays buckets can be found
20038	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
20039	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20040
20041	// VersionId used to reference a specific version of the object.
20042	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20043}
20044
20045// String returns the string representation
20046func (s PutObjectAclInput) String() string {
20047	return awsutil.Prettify(s)
20048}
20049
20050// GoString returns the string representation
20051func (s PutObjectAclInput) GoString() string {
20052	return s.String()
20053}
20054
20055// Validate inspects the fields of the type to determine if they are valid.
20056func (s *PutObjectAclInput) Validate() error {
20057	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
20058	if s.Bucket == nil {
20059		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20060	}
20061	if s.Bucket != nil && len(*s.Bucket) < 1 {
20062		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20063	}
20064	if s.Key == nil {
20065		invalidParams.Add(request.NewErrParamRequired("Key"))
20066	}
20067	if s.Key != nil && len(*s.Key) < 1 {
20068		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20069	}
20070	if s.AccessControlPolicy != nil {
20071		if err := s.AccessControlPolicy.Validate(); err != nil {
20072			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
20073		}
20074	}
20075
20076	if invalidParams.Len() > 0 {
20077		return invalidParams
20078	}
20079	return nil
20080}
20081
20082// SetACL sets the ACL field's value.
20083func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
20084	s.ACL = &v
20085	return s
20086}
20087
20088// SetAccessControlPolicy sets the AccessControlPolicy field's value.
20089func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
20090	s.AccessControlPolicy = v
20091	return s
20092}
20093
20094// SetBucket sets the Bucket field's value.
20095func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
20096	s.Bucket = &v
20097	return s
20098}
20099
20100func (s *PutObjectAclInput) getBucket() (v string) {
20101	if s.Bucket == nil {
20102		return v
20103	}
20104	return *s.Bucket
20105}
20106
20107// SetGrantFullControl sets the GrantFullControl field's value.
20108func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
20109	s.GrantFullControl = &v
20110	return s
20111}
20112
20113// SetGrantRead sets the GrantRead field's value.
20114func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
20115	s.GrantRead = &v
20116	return s
20117}
20118
20119// SetGrantReadACP sets the GrantReadACP field's value.
20120func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
20121	s.GrantReadACP = &v
20122	return s
20123}
20124
20125// SetGrantWrite sets the GrantWrite field's value.
20126func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
20127	s.GrantWrite = &v
20128	return s
20129}
20130
20131// SetGrantWriteACP sets the GrantWriteACP field's value.
20132func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
20133	s.GrantWriteACP = &v
20134	return s
20135}
20136
20137// SetKey sets the Key field's value.
20138func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
20139	s.Key = &v
20140	return s
20141}
20142
20143// SetRequestPayer sets the RequestPayer field's value.
20144func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
20145	s.RequestPayer = &v
20146	return s
20147}
20148
20149// SetVersionId sets the VersionId field's value.
20150func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
20151	s.VersionId = &v
20152	return s
20153}
20154
20155type PutObjectAclOutput struct {
20156	_ struct{} `type:"structure"`
20157
20158	// If present, indicates that the requester was successfully charged for the
20159	// request.
20160	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20161}
20162
20163// String returns the string representation
20164func (s PutObjectAclOutput) String() string {
20165	return awsutil.Prettify(s)
20166}
20167
20168// GoString returns the string representation
20169func (s PutObjectAclOutput) GoString() string {
20170	return s.String()
20171}
20172
20173// SetRequestCharged sets the RequestCharged field's value.
20174func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
20175	s.RequestCharged = &v
20176	return s
20177}
20178
20179type PutObjectInput struct {
20180	_ struct{} `type:"structure" payload:"Body"`
20181
20182	// The canned ACL to apply to the object.
20183	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
20184
20185	// Object data.
20186	Body io.ReadSeeker `type:"blob"`
20187
20188	// Name of the bucket to which the PUT operation was initiated.
20189	//
20190	// Bucket is a required field
20191	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20192
20193	// Specifies caching behavior along the request/reply chain.
20194	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
20195
20196	// Specifies presentational information for the object.
20197	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
20198
20199	// Specifies what content encodings have been applied to the object and thus
20200	// what decoding mechanisms must be applied to obtain the media-type referenced
20201	// by the Content-Type header field.
20202	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
20203
20204	// The language the content is in.
20205	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
20206
20207	// Size of the body in bytes. This parameter is useful when the size of the
20208	// body cannot be determined automatically.
20209	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
20210
20211	// The base64-encoded 128-bit MD5 digest of the part data. This parameter is
20212	// auto-populated when using the command from the CLI
20213	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
20214
20215	// A standard MIME type describing the format of the object data.
20216	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
20217
20218	// The date and time at which the object is no longer cacheable.
20219	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
20220
20221	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
20222	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
20223
20224	// Allows grantee to read the object data and its metadata.
20225	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
20226
20227	// Allows grantee to read the object ACL.
20228	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
20229
20230	// Allows grantee to write the ACL for the applicable object.
20231	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
20232
20233	// Object key for which the PUT operation was initiated.
20234	//
20235	// Key is a required field
20236	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20237
20238	// A map of metadata to store with the object in S3.
20239	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
20240
20241	// The Legal Hold status that you want to apply to the specified object.
20242	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
20243
20244	// The Object Lock mode that you want to apply to this object.
20245	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
20246
20247	// The date and time when you want this object's Object Lock to expire.
20248	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
20249
20250	// Confirms that the requester knows that she or he will be charged for the
20251	// request. Bucket owners need not specify this parameter in their requests.
20252	// Documentation on downloading objects from requester pays buckets can be found
20253	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
20254	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20255
20256	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
20257	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
20258
20259	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
20260	// data. This value is used to store the object and then it is discarded; Amazon
20261	// does not store the encryption key. The key must be appropriate for use with
20262	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
20263	// header.
20264	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
20265
20266	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
20267	// Amazon S3 uses this header for a message integrity check to ensure the encryption
20268	// key was transmitted without error.
20269	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
20270
20271	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
20272	// requests for an object protected by AWS KMS will fail if not made via SSL
20273	// or using SigV4. Documentation on configuring any of the officially supported
20274	// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
20275	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
20276
20277	// The Server-side encryption algorithm used when storing this object in S3
20278	// (e.g., AES256, aws:kms).
20279	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
20280
20281	// The type of storage to use for the object. Defaults to 'STANDARD'.
20282	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
20283
20284	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
20285	// (For example, "Key1=Value1")
20286	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
20287
20288	// If the bucket is configured as a website, redirects requests for this object
20289	// to another object in the same bucket or to an external URL. Amazon S3 stores
20290	// the value of this header in the object metadata.
20291	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
20292}
20293
20294// String returns the string representation
20295func (s PutObjectInput) String() string {
20296	return awsutil.Prettify(s)
20297}
20298
20299// GoString returns the string representation
20300func (s PutObjectInput) GoString() string {
20301	return s.String()
20302}
20303
20304// Validate inspects the fields of the type to determine if they are valid.
20305func (s *PutObjectInput) Validate() error {
20306	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
20307	if s.Bucket == nil {
20308		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20309	}
20310	if s.Bucket != nil && len(*s.Bucket) < 1 {
20311		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20312	}
20313	if s.Key == nil {
20314		invalidParams.Add(request.NewErrParamRequired("Key"))
20315	}
20316	if s.Key != nil && len(*s.Key) < 1 {
20317		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20318	}
20319
20320	if invalidParams.Len() > 0 {
20321		return invalidParams
20322	}
20323	return nil
20324}
20325
20326// SetACL sets the ACL field's value.
20327func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
20328	s.ACL = &v
20329	return s
20330}
20331
20332// SetBody sets the Body field's value.
20333func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
20334	s.Body = v
20335	return s
20336}
20337
20338// SetBucket sets the Bucket field's value.
20339func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
20340	s.Bucket = &v
20341	return s
20342}
20343
20344func (s *PutObjectInput) getBucket() (v string) {
20345	if s.Bucket == nil {
20346		return v
20347	}
20348	return *s.Bucket
20349}
20350
20351// SetCacheControl sets the CacheControl field's value.
20352func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
20353	s.CacheControl = &v
20354	return s
20355}
20356
20357// SetContentDisposition sets the ContentDisposition field's value.
20358func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
20359	s.ContentDisposition = &v
20360	return s
20361}
20362
20363// SetContentEncoding sets the ContentEncoding field's value.
20364func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
20365	s.ContentEncoding = &v
20366	return s
20367}
20368
20369// SetContentLanguage sets the ContentLanguage field's value.
20370func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
20371	s.ContentLanguage = &v
20372	return s
20373}
20374
20375// SetContentLength sets the ContentLength field's value.
20376func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
20377	s.ContentLength = &v
20378	return s
20379}
20380
20381// SetContentMD5 sets the ContentMD5 field's value.
20382func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
20383	s.ContentMD5 = &v
20384	return s
20385}
20386
20387// SetContentType sets the ContentType field's value.
20388func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
20389	s.ContentType = &v
20390	return s
20391}
20392
20393// SetExpires sets the Expires field's value.
20394func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
20395	s.Expires = &v
20396	return s
20397}
20398
20399// SetGrantFullControl sets the GrantFullControl field's value.
20400func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
20401	s.GrantFullControl = &v
20402	return s
20403}
20404
20405// SetGrantRead sets the GrantRead field's value.
20406func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
20407	s.GrantRead = &v
20408	return s
20409}
20410
20411// SetGrantReadACP sets the GrantReadACP field's value.
20412func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
20413	s.GrantReadACP = &v
20414	return s
20415}
20416
20417// SetGrantWriteACP sets the GrantWriteACP field's value.
20418func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
20419	s.GrantWriteACP = &v
20420	return s
20421}
20422
20423// SetKey sets the Key field's value.
20424func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
20425	s.Key = &v
20426	return s
20427}
20428
20429// SetMetadata sets the Metadata field's value.
20430func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
20431	s.Metadata = v
20432	return s
20433}
20434
20435// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
20436func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput {
20437	s.ObjectLockLegalHoldStatus = &v
20438	return s
20439}
20440
20441// SetObjectLockMode sets the ObjectLockMode field's value.
20442func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput {
20443	s.ObjectLockMode = &v
20444	return s
20445}
20446
20447// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
20448func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput {
20449	s.ObjectLockRetainUntilDate = &v
20450	return s
20451}
20452
20453// SetRequestPayer sets the RequestPayer field's value.
20454func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
20455	s.RequestPayer = &v
20456	return s
20457}
20458
20459// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
20460func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
20461	s.SSECustomerAlgorithm = &v
20462	return s
20463}
20464
20465// SetSSECustomerKey sets the SSECustomerKey field's value.
20466func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
20467	s.SSECustomerKey = &v
20468	return s
20469}
20470
20471func (s *PutObjectInput) getSSECustomerKey() (v string) {
20472	if s.SSECustomerKey == nil {
20473		return v
20474	}
20475	return *s.SSECustomerKey
20476}
20477
20478// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
20479func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
20480	s.SSECustomerKeyMD5 = &v
20481	return s
20482}
20483
20484// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
20485func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
20486	s.SSEKMSKeyId = &v
20487	return s
20488}
20489
20490// SetServerSideEncryption sets the ServerSideEncryption field's value.
20491func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
20492	s.ServerSideEncryption = &v
20493	return s
20494}
20495
20496// SetStorageClass sets the StorageClass field's value.
20497func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
20498	s.StorageClass = &v
20499	return s
20500}
20501
20502// SetTagging sets the Tagging field's value.
20503func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
20504	s.Tagging = &v
20505	return s
20506}
20507
20508// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
20509func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
20510	s.WebsiteRedirectLocation = &v
20511	return s
20512}
20513
20514type PutObjectLegalHoldInput struct {
20515	_ struct{} `type:"structure" payload:"LegalHold"`
20516
20517	// The bucket containing the object that you want to place a Legal Hold on.
20518	//
20519	// Bucket is a required field
20520	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20521
20522	// The key name for the object that you want to place a Legal Hold on.
20523	//
20524	// Key is a required field
20525	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20526
20527	// Container element for the Legal Hold configuration you want to apply to the
20528	// specified object.
20529	LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
20530
20531	// Confirms that the requester knows that she or he will be charged for the
20532	// request. Bucket owners need not specify this parameter in their requests.
20533	// Documentation on downloading objects from requester pays buckets can be found
20534	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
20535	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20536
20537	// The version ID of the object that you want to place a Legal Hold on.
20538	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20539}
20540
20541// String returns the string representation
20542func (s PutObjectLegalHoldInput) String() string {
20543	return awsutil.Prettify(s)
20544}
20545
20546// GoString returns the string representation
20547func (s PutObjectLegalHoldInput) GoString() string {
20548	return s.String()
20549}
20550
20551// Validate inspects the fields of the type to determine if they are valid.
20552func (s *PutObjectLegalHoldInput) Validate() error {
20553	invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"}
20554	if s.Bucket == nil {
20555		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20556	}
20557	if s.Bucket != nil && len(*s.Bucket) < 1 {
20558		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20559	}
20560	if s.Key == nil {
20561		invalidParams.Add(request.NewErrParamRequired("Key"))
20562	}
20563	if s.Key != nil && len(*s.Key) < 1 {
20564		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20565	}
20566
20567	if invalidParams.Len() > 0 {
20568		return invalidParams
20569	}
20570	return nil
20571}
20572
20573// SetBucket sets the Bucket field's value.
20574func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput {
20575	s.Bucket = &v
20576	return s
20577}
20578
20579func (s *PutObjectLegalHoldInput) getBucket() (v string) {
20580	if s.Bucket == nil {
20581		return v
20582	}
20583	return *s.Bucket
20584}
20585
20586// SetKey sets the Key field's value.
20587func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput {
20588	s.Key = &v
20589	return s
20590}
20591
20592// SetLegalHold sets the LegalHold field's value.
20593func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput {
20594	s.LegalHold = v
20595	return s
20596}
20597
20598// SetRequestPayer sets the RequestPayer field's value.
20599func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput {
20600	s.RequestPayer = &v
20601	return s
20602}
20603
20604// SetVersionId sets the VersionId field's value.
20605func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput {
20606	s.VersionId = &v
20607	return s
20608}
20609
20610type PutObjectLegalHoldOutput struct {
20611	_ struct{} `type:"structure"`
20612
20613	// If present, indicates that the requester was successfully charged for the
20614	// request.
20615	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20616}
20617
20618// String returns the string representation
20619func (s PutObjectLegalHoldOutput) String() string {
20620	return awsutil.Prettify(s)
20621}
20622
20623// GoString returns the string representation
20624func (s PutObjectLegalHoldOutput) GoString() string {
20625	return s.String()
20626}
20627
20628// SetRequestCharged sets the RequestCharged field's value.
20629func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput {
20630	s.RequestCharged = &v
20631	return s
20632}
20633
20634type PutObjectLockConfigurationInput struct {
20635	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
20636
20637	// The bucket whose Object Lock configuration you want to create or replace.
20638	//
20639	// Bucket is a required field
20640	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20641
20642	// The Object Lock configuration that you want to apply to the specified bucket.
20643	ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
20644
20645	// Confirms that the requester knows that she or he will be charged for the
20646	// request. Bucket owners need not specify this parameter in their requests.
20647	// Documentation on downloading objects from requester pays buckets can be found
20648	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
20649	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20650
20651	// A token to allow Object Lock to be enabled for an existing bucket.
20652	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
20653}
20654
20655// String returns the string representation
20656func (s PutObjectLockConfigurationInput) String() string {
20657	return awsutil.Prettify(s)
20658}
20659
20660// GoString returns the string representation
20661func (s PutObjectLockConfigurationInput) GoString() string {
20662	return s.String()
20663}
20664
20665// Validate inspects the fields of the type to determine if they are valid.
20666func (s *PutObjectLockConfigurationInput) Validate() error {
20667	invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"}
20668	if s.Bucket == nil {
20669		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20670	}
20671	if s.Bucket != nil && len(*s.Bucket) < 1 {
20672		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20673	}
20674
20675	if invalidParams.Len() > 0 {
20676		return invalidParams
20677	}
20678	return nil
20679}
20680
20681// SetBucket sets the Bucket field's value.
20682func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput {
20683	s.Bucket = &v
20684	return s
20685}
20686
20687func (s *PutObjectLockConfigurationInput) getBucket() (v string) {
20688	if s.Bucket == nil {
20689		return v
20690	}
20691	return *s.Bucket
20692}
20693
20694// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
20695func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput {
20696	s.ObjectLockConfiguration = v
20697	return s
20698}
20699
20700// SetRequestPayer sets the RequestPayer field's value.
20701func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput {
20702	s.RequestPayer = &v
20703	return s
20704}
20705
20706// SetToken sets the Token field's value.
20707func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput {
20708	s.Token = &v
20709	return s
20710}
20711
20712type PutObjectLockConfigurationOutput struct {
20713	_ struct{} `type:"structure"`
20714
20715	// If present, indicates that the requester was successfully charged for the
20716	// request.
20717	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20718}
20719
20720// String returns the string representation
20721func (s PutObjectLockConfigurationOutput) String() string {
20722	return awsutil.Prettify(s)
20723}
20724
20725// GoString returns the string representation
20726func (s PutObjectLockConfigurationOutput) GoString() string {
20727	return s.String()
20728}
20729
20730// SetRequestCharged sets the RequestCharged field's value.
20731func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput {
20732	s.RequestCharged = &v
20733	return s
20734}
20735
20736type PutObjectOutput struct {
20737	_ struct{} `type:"structure"`
20738
20739	// Entity tag for the uploaded object.
20740	ETag *string `location:"header" locationName:"ETag" type:"string"`
20741
20742	// If the object expiration is configured, this will contain the expiration
20743	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
20744	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
20745
20746	// If present, indicates that the requester was successfully charged for the
20747	// request.
20748	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20749
20750	// If server-side encryption with a customer-provided encryption key was requested,
20751	// the response will include this header confirming the encryption algorithm
20752	// used.
20753	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
20754
20755	// If server-side encryption with a customer-provided encryption key was requested,
20756	// the response will include this header to provide round trip message integrity
20757	// verification of the customer-provided encryption key.
20758	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
20759
20760	// If present, specifies the ID of the AWS Key Management Service (KMS) master
20761	// encryption key that was used for the object.
20762	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
20763
20764	// The Server-side encryption algorithm used when storing this object in S3
20765	// (e.g., AES256, aws:kms).
20766	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
20767
20768	// Version of the object.
20769	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
20770}
20771
20772// String returns the string representation
20773func (s PutObjectOutput) String() string {
20774	return awsutil.Prettify(s)
20775}
20776
20777// GoString returns the string representation
20778func (s PutObjectOutput) GoString() string {
20779	return s.String()
20780}
20781
20782// SetETag sets the ETag field's value.
20783func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
20784	s.ETag = &v
20785	return s
20786}
20787
20788// SetExpiration sets the Expiration field's value.
20789func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
20790	s.Expiration = &v
20791	return s
20792}
20793
20794// SetRequestCharged sets the RequestCharged field's value.
20795func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
20796	s.RequestCharged = &v
20797	return s
20798}
20799
20800// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
20801func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
20802	s.SSECustomerAlgorithm = &v
20803	return s
20804}
20805
20806// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
20807func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
20808	s.SSECustomerKeyMD5 = &v
20809	return s
20810}
20811
20812// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
20813func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
20814	s.SSEKMSKeyId = &v
20815	return s
20816}
20817
20818// SetServerSideEncryption sets the ServerSideEncryption field's value.
20819func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
20820	s.ServerSideEncryption = &v
20821	return s
20822}
20823
20824// SetVersionId sets the VersionId field's value.
20825func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
20826	s.VersionId = &v
20827	return s
20828}
20829
20830type PutObjectRetentionInput struct {
20831	_ struct{} `type:"structure" payload:"Retention"`
20832
20833	// The bucket that contains the object you want to apply this Object Retention
20834	// configuration to.
20835	//
20836	// Bucket is a required field
20837	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20838
20839	// Indicates whether this operation should bypass Governance-mode restrictions.j
20840	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
20841
20842	// The key name for the object that you want to apply this Object Retention
20843	// configuration to.
20844	//
20845	// Key is a required field
20846	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20847
20848	// Confirms that the requester knows that she or he will be charged for the
20849	// request. Bucket owners need not specify this parameter in their requests.
20850	// Documentation on downloading objects from requester pays buckets can be found
20851	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
20852	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20853
20854	// The container element for the Object Retention configuration.
20855	Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
20856
20857	// The version ID for the object that you want to apply this Object Retention
20858	// configuration to.
20859	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20860}
20861
20862// String returns the string representation
20863func (s PutObjectRetentionInput) String() string {
20864	return awsutil.Prettify(s)
20865}
20866
20867// GoString returns the string representation
20868func (s PutObjectRetentionInput) GoString() string {
20869	return s.String()
20870}
20871
20872// Validate inspects the fields of the type to determine if they are valid.
20873func (s *PutObjectRetentionInput) Validate() error {
20874	invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"}
20875	if s.Bucket == nil {
20876		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20877	}
20878	if s.Bucket != nil && len(*s.Bucket) < 1 {
20879		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20880	}
20881	if s.Key == nil {
20882		invalidParams.Add(request.NewErrParamRequired("Key"))
20883	}
20884	if s.Key != nil && len(*s.Key) < 1 {
20885		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20886	}
20887
20888	if invalidParams.Len() > 0 {
20889		return invalidParams
20890	}
20891	return nil
20892}
20893
20894// SetBucket sets the Bucket field's value.
20895func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput {
20896	s.Bucket = &v
20897	return s
20898}
20899
20900func (s *PutObjectRetentionInput) getBucket() (v string) {
20901	if s.Bucket == nil {
20902		return v
20903	}
20904	return *s.Bucket
20905}
20906
20907// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
20908func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput {
20909	s.BypassGovernanceRetention = &v
20910	return s
20911}
20912
20913// SetKey sets the Key field's value.
20914func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput {
20915	s.Key = &v
20916	return s
20917}
20918
20919// SetRequestPayer sets the RequestPayer field's value.
20920func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput {
20921	s.RequestPayer = &v
20922	return s
20923}
20924
20925// SetRetention sets the Retention field's value.
20926func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput {
20927	s.Retention = v
20928	return s
20929}
20930
20931// SetVersionId sets the VersionId field's value.
20932func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput {
20933	s.VersionId = &v
20934	return s
20935}
20936
20937type PutObjectRetentionOutput struct {
20938	_ struct{} `type:"structure"`
20939
20940	// If present, indicates that the requester was successfully charged for the
20941	// request.
20942	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20943}
20944
20945// String returns the string representation
20946func (s PutObjectRetentionOutput) String() string {
20947	return awsutil.Prettify(s)
20948}
20949
20950// GoString returns the string representation
20951func (s PutObjectRetentionOutput) GoString() string {
20952	return s.String()
20953}
20954
20955// SetRequestCharged sets the RequestCharged field's value.
20956func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput {
20957	s.RequestCharged = &v
20958	return s
20959}
20960
20961type PutObjectTaggingInput struct {
20962	_ struct{} `type:"structure" payload:"Tagging"`
20963
20964	// Bucket is a required field
20965	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20966
20967	// Key is a required field
20968	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20969
20970	// Tagging is a required field
20971	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
20972
20973	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20974}
20975
20976// String returns the string representation
20977func (s PutObjectTaggingInput) String() string {
20978	return awsutil.Prettify(s)
20979}
20980
20981// GoString returns the string representation
20982func (s PutObjectTaggingInput) GoString() string {
20983	return s.String()
20984}
20985
20986// Validate inspects the fields of the type to determine if they are valid.
20987func (s *PutObjectTaggingInput) Validate() error {
20988	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
20989	if s.Bucket == nil {
20990		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20991	}
20992	if s.Bucket != nil && len(*s.Bucket) < 1 {
20993		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20994	}
20995	if s.Key == nil {
20996		invalidParams.Add(request.NewErrParamRequired("Key"))
20997	}
20998	if s.Key != nil && len(*s.Key) < 1 {
20999		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21000	}
21001	if s.Tagging == nil {
21002		invalidParams.Add(request.NewErrParamRequired("Tagging"))
21003	}
21004	if s.Tagging != nil {
21005		if err := s.Tagging.Validate(); err != nil {
21006			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
21007		}
21008	}
21009
21010	if invalidParams.Len() > 0 {
21011		return invalidParams
21012	}
21013	return nil
21014}
21015
21016// SetBucket sets the Bucket field's value.
21017func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
21018	s.Bucket = &v
21019	return s
21020}
21021
21022func (s *PutObjectTaggingInput) getBucket() (v string) {
21023	if s.Bucket == nil {
21024		return v
21025	}
21026	return *s.Bucket
21027}
21028
21029// SetKey sets the Key field's value.
21030func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
21031	s.Key = &v
21032	return s
21033}
21034
21035// SetTagging sets the Tagging field's value.
21036func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
21037	s.Tagging = v
21038	return s
21039}
21040
21041// SetVersionId sets the VersionId field's value.
21042func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
21043	s.VersionId = &v
21044	return s
21045}
21046
21047type PutObjectTaggingOutput struct {
21048	_ struct{} `type:"structure"`
21049
21050	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
21051}
21052
21053// String returns the string representation
21054func (s PutObjectTaggingOutput) String() string {
21055	return awsutil.Prettify(s)
21056}
21057
21058// GoString returns the string representation
21059func (s PutObjectTaggingOutput) GoString() string {
21060	return s.String()
21061}
21062
21063// SetVersionId sets the VersionId field's value.
21064func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
21065	s.VersionId = &v
21066	return s
21067}
21068
21069type PutPublicAccessBlockInput struct {
21070	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
21071
21072	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
21073	// want to set.
21074	//
21075	// Bucket is a required field
21076	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21077
21078	// The PublicAccessBlock configuration that you want to apply to this Amazon
21079	// S3 bucket. You can enable the configuration options in any combination. For
21080	// more information about when Amazon S3 considers a bucket or object public,
21081	// see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status)
21082	// in the Amazon Simple Storage Service Developer Guide.
21083	//
21084	// PublicAccessBlockConfiguration is a required field
21085	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
21086}
21087
21088// String returns the string representation
21089func (s PutPublicAccessBlockInput) String() string {
21090	return awsutil.Prettify(s)
21091}
21092
21093// GoString returns the string representation
21094func (s PutPublicAccessBlockInput) GoString() string {
21095	return s.String()
21096}
21097
21098// Validate inspects the fields of the type to determine if they are valid.
21099func (s *PutPublicAccessBlockInput) Validate() error {
21100	invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"}
21101	if s.Bucket == nil {
21102		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21103	}
21104	if s.Bucket != nil && len(*s.Bucket) < 1 {
21105		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21106	}
21107	if s.PublicAccessBlockConfiguration == nil {
21108		invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration"))
21109	}
21110
21111	if invalidParams.Len() > 0 {
21112		return invalidParams
21113	}
21114	return nil
21115}
21116
21117// SetBucket sets the Bucket field's value.
21118func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput {
21119	s.Bucket = &v
21120	return s
21121}
21122
21123func (s *PutPublicAccessBlockInput) getBucket() (v string) {
21124	if s.Bucket == nil {
21125		return v
21126	}
21127	return *s.Bucket
21128}
21129
21130// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
21131func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput {
21132	s.PublicAccessBlockConfiguration = v
21133	return s
21134}
21135
21136type PutPublicAccessBlockOutput struct {
21137	_ struct{} `type:"structure"`
21138}
21139
21140// String returns the string representation
21141func (s PutPublicAccessBlockOutput) String() string {
21142	return awsutil.Prettify(s)
21143}
21144
21145// GoString returns the string representation
21146func (s PutPublicAccessBlockOutput) GoString() string {
21147	return s.String()
21148}
21149
21150// A container for specifying the configuration for publication of messages
21151// to an Amazon Simple Queue Service (Amazon SQS) queue.when Amazon S3 detects
21152// specified events.
21153type QueueConfiguration struct {
21154	_ struct{} `type:"structure"`
21155
21156	// Events is a required field
21157	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
21158
21159	// A container for object key name filtering rules. For information about key
21160	// name filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
21161	// in the Amazon Simple Storage Service Developer Guide.
21162	Filter *NotificationConfigurationFilter `type:"structure"`
21163
21164	// An optional unique identifier for configurations in a notification configuration.
21165	// If you don't provide one, Amazon S3 will assign an ID.
21166	Id *string `type:"string"`
21167
21168	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
21169	// will publish a message when it detects events of the specified type.
21170	//
21171	// QueueArn is a required field
21172	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
21173}
21174
21175// String returns the string representation
21176func (s QueueConfiguration) String() string {
21177	return awsutil.Prettify(s)
21178}
21179
21180// GoString returns the string representation
21181func (s QueueConfiguration) GoString() string {
21182	return s.String()
21183}
21184
21185// Validate inspects the fields of the type to determine if they are valid.
21186func (s *QueueConfiguration) Validate() error {
21187	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
21188	if s.Events == nil {
21189		invalidParams.Add(request.NewErrParamRequired("Events"))
21190	}
21191	if s.QueueArn == nil {
21192		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
21193	}
21194
21195	if invalidParams.Len() > 0 {
21196		return invalidParams
21197	}
21198	return nil
21199}
21200
21201// SetEvents sets the Events field's value.
21202func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
21203	s.Events = v
21204	return s
21205}
21206
21207// SetFilter sets the Filter field's value.
21208func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
21209	s.Filter = v
21210	return s
21211}
21212
21213// SetId sets the Id field's value.
21214func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
21215	s.Id = &v
21216	return s
21217}
21218
21219// SetQueueArn sets the QueueArn field's value.
21220func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
21221	s.QueueArn = &v
21222	return s
21223}
21224
21225type QueueConfigurationDeprecated struct {
21226	_ struct{} `type:"structure"`
21227
21228	// The bucket event for which to send notifications.
21229	//
21230	// Deprecated: Event has been deprecated
21231	Event *string `deprecated:"true" type:"string" enum:"Event"`
21232
21233	Events []*string `locationName:"Event" type:"list" flattened:"true"`
21234
21235	// An optional unique identifier for configurations in a notification configuration.
21236	// If you don't provide one, Amazon S3 will assign an ID.
21237	Id *string `type:"string"`
21238
21239	Queue *string `type:"string"`
21240}
21241
21242// String returns the string representation
21243func (s QueueConfigurationDeprecated) String() string {
21244	return awsutil.Prettify(s)
21245}
21246
21247// GoString returns the string representation
21248func (s QueueConfigurationDeprecated) GoString() string {
21249	return s.String()
21250}
21251
21252// SetEvent sets the Event field's value.
21253func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
21254	s.Event = &v
21255	return s
21256}
21257
21258// SetEvents sets the Events field's value.
21259func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
21260	s.Events = v
21261	return s
21262}
21263
21264// SetId sets the Id field's value.
21265func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
21266	s.Id = &v
21267	return s
21268}
21269
21270// SetQueue sets the Queue field's value.
21271func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
21272	s.Queue = &v
21273	return s
21274}
21275
21276type RecordsEvent struct {
21277	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
21278
21279	// The byte array of partial, one or more result records.
21280	//
21281	// Payload is automatically base64 encoded/decoded by the SDK.
21282	Payload []byte `type:"blob"`
21283}
21284
21285// String returns the string representation
21286func (s RecordsEvent) String() string {
21287	return awsutil.Prettify(s)
21288}
21289
21290// GoString returns the string representation
21291func (s RecordsEvent) GoString() string {
21292	return s.String()
21293}
21294
21295// SetPayload sets the Payload field's value.
21296func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
21297	s.Payload = v
21298	return s
21299}
21300
21301// The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
21302func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
21303
21304// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
21305// This method is only used internally within the SDK's EventStream handling.
21306func (s *RecordsEvent) UnmarshalEvent(
21307	payloadUnmarshaler protocol.PayloadUnmarshaler,
21308	msg eventstream.Message,
21309) error {
21310	s.Payload = make([]byte, len(msg.Payload))
21311	copy(s.Payload, msg.Payload)
21312	return nil
21313}
21314
21315type Redirect struct {
21316	_ struct{} `type:"structure"`
21317
21318	// The host name to use in the redirect request.
21319	HostName *string `type:"string"`
21320
21321	// The HTTP redirect code to use on the response. Not required if one of the
21322	// siblings is present.
21323	HttpRedirectCode *string `type:"string"`
21324
21325	// Protocol to use (http, https) when redirecting requests. The default is the
21326	// protocol that is used in the original request.
21327	Protocol *string `type:"string" enum:"Protocol"`
21328
21329	// The object key prefix to use in the redirect request. For example, to redirect
21330	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
21331	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
21332	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
21333	// if one of the siblings is present. Can be present only if ReplaceKeyWith
21334	// is not provided.
21335	ReplaceKeyPrefixWith *string `type:"string"`
21336
21337	// The specific object key to use in the redirect request. For example, redirect
21338	// request to error.html. Not required if one of the sibling is present. Can
21339	// be present only if ReplaceKeyPrefixWith is not provided.
21340	ReplaceKeyWith *string `type:"string"`
21341}
21342
21343// String returns the string representation
21344func (s Redirect) String() string {
21345	return awsutil.Prettify(s)
21346}
21347
21348// GoString returns the string representation
21349func (s Redirect) GoString() string {
21350	return s.String()
21351}
21352
21353// SetHostName sets the HostName field's value.
21354func (s *Redirect) SetHostName(v string) *Redirect {
21355	s.HostName = &v
21356	return s
21357}
21358
21359// SetHttpRedirectCode sets the HttpRedirectCode field's value.
21360func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
21361	s.HttpRedirectCode = &v
21362	return s
21363}
21364
21365// SetProtocol sets the Protocol field's value.
21366func (s *Redirect) SetProtocol(v string) *Redirect {
21367	s.Protocol = &v
21368	return s
21369}
21370
21371// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
21372func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
21373	s.ReplaceKeyPrefixWith = &v
21374	return s
21375}
21376
21377// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
21378func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
21379	s.ReplaceKeyWith = &v
21380	return s
21381}
21382
21383type RedirectAllRequestsTo struct {
21384	_ struct{} `type:"structure"`
21385
21386	// Name of the host where requests will be redirected.
21387	//
21388	// HostName is a required field
21389	HostName *string `type:"string" required:"true"`
21390
21391	// Protocol to use (http, https) when redirecting requests. The default is the
21392	// protocol that is used in the original request.
21393	Protocol *string `type:"string" enum:"Protocol"`
21394}
21395
21396// String returns the string representation
21397func (s RedirectAllRequestsTo) String() string {
21398	return awsutil.Prettify(s)
21399}
21400
21401// GoString returns the string representation
21402func (s RedirectAllRequestsTo) GoString() string {
21403	return s.String()
21404}
21405
21406// Validate inspects the fields of the type to determine if they are valid.
21407func (s *RedirectAllRequestsTo) Validate() error {
21408	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
21409	if s.HostName == nil {
21410		invalidParams.Add(request.NewErrParamRequired("HostName"))
21411	}
21412
21413	if invalidParams.Len() > 0 {
21414		return invalidParams
21415	}
21416	return nil
21417}
21418
21419// SetHostName sets the HostName field's value.
21420func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
21421	s.HostName = &v
21422	return s
21423}
21424
21425// SetProtocol sets the Protocol field's value.
21426func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
21427	s.Protocol = &v
21428	return s
21429}
21430
21431// A container for replication rules. You can add up to 1,000 rules. The maximum
21432// size of a replication configuration is 2 MB.
21433type ReplicationConfiguration struct {
21434	_ struct{} `type:"structure"`
21435
21436	// The Amazon Resource Name (ARN) of the AWS Identity and Access Management
21437	// (IAM) role that Amazon S3 can assume when replicating the objects.
21438	//
21439	// Role is a required field
21440	Role *string `type:"string" required:"true"`
21441
21442	// A container for one or more replication rules. A replication configuration
21443	// must have at least one rule and can contain a maximum of 1,000 rules.
21444	//
21445	// Rules is a required field
21446	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
21447}
21448
21449// String returns the string representation
21450func (s ReplicationConfiguration) String() string {
21451	return awsutil.Prettify(s)
21452}
21453
21454// GoString returns the string representation
21455func (s ReplicationConfiguration) GoString() string {
21456	return s.String()
21457}
21458
21459// Validate inspects the fields of the type to determine if they are valid.
21460func (s *ReplicationConfiguration) Validate() error {
21461	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
21462	if s.Role == nil {
21463		invalidParams.Add(request.NewErrParamRequired("Role"))
21464	}
21465	if s.Rules == nil {
21466		invalidParams.Add(request.NewErrParamRequired("Rules"))
21467	}
21468	if s.Rules != nil {
21469		for i, v := range s.Rules {
21470			if v == nil {
21471				continue
21472			}
21473			if err := v.Validate(); err != nil {
21474				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
21475			}
21476		}
21477	}
21478
21479	if invalidParams.Len() > 0 {
21480		return invalidParams
21481	}
21482	return nil
21483}
21484
21485// SetRole sets the Role field's value.
21486func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
21487	s.Role = &v
21488	return s
21489}
21490
21491// SetRules sets the Rules field's value.
21492func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
21493	s.Rules = v
21494	return s
21495}
21496
21497// A container for information about a specific replication rule.
21498type ReplicationRule struct {
21499	_ struct{} `type:"structure"`
21500
21501	// Specifies whether Amazon S3 should replicate delete makers.
21502	DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
21503
21504	// A container for information about the replication destination.
21505	//
21506	// Destination is a required field
21507	Destination *Destination `type:"structure" required:"true"`
21508
21509	// A filter that identifies the subset of objects to which the replication rule
21510	// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
21511	Filter *ReplicationRuleFilter `type:"structure"`
21512
21513	// A unique identifier for the rule. The maximum value is 255 characters.
21514	ID *string `type:"string"`
21515
21516	// An object keyname prefix that identifies the object or objects to which the
21517	// rule applies. The maximum prefix length is 1,024 characters.
21518	//
21519	// Deprecated: Prefix has been deprecated
21520	Prefix *string `deprecated:"true" type:"string"`
21521
21522	// The priority associated with the rule. If you specify multiple rules in a
21523	// replication configuration, Amazon S3 prioritizes the rules to prevent conflicts
21524	// when filtering. If two or more rules identify the same object based on a
21525	// specified filter, the rule with higher priority takes precedence. For example:
21526	//
21527	//    * Same object quality prefix based filter criteria If prefixes you specified
21528	//    in multiple rules overlap
21529	//
21530	//    * Same object qualify tag based filter criteria specified in multiple
21531	//    rules
21532	//
21533	// For more information, see Cross-Region Replication (CRR) (https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html)
21534	// in the Amazon S3 Developer Guide.
21535	Priority *int64 `type:"integer"`
21536
21537	// A container that describes additional filters for identifying the source
21538	// objects that you want to replicate. You can choose to enable or disable the
21539	// replication of these objects. Currently, Amazon S3 supports only the filter
21540	// that you can specify for objects created with server-side encryption using
21541	// an AWS KMS-Managed Key (SSE-KMS).
21542	//
21543	// If you want Amazon S3 to replicate objects created with server-side encryption
21544	// using AWS KMS-Managed Keys.
21545	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
21546
21547	// If status isn't enabled, the rule is ignored.
21548	//
21549	// Status is a required field
21550	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
21551}
21552
21553// String returns the string representation
21554func (s ReplicationRule) String() string {
21555	return awsutil.Prettify(s)
21556}
21557
21558// GoString returns the string representation
21559func (s ReplicationRule) GoString() string {
21560	return s.String()
21561}
21562
21563// Validate inspects the fields of the type to determine if they are valid.
21564func (s *ReplicationRule) Validate() error {
21565	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
21566	if s.Destination == nil {
21567		invalidParams.Add(request.NewErrParamRequired("Destination"))
21568	}
21569	if s.Status == nil {
21570		invalidParams.Add(request.NewErrParamRequired("Status"))
21571	}
21572	if s.Destination != nil {
21573		if err := s.Destination.Validate(); err != nil {
21574			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
21575		}
21576	}
21577	if s.Filter != nil {
21578		if err := s.Filter.Validate(); err != nil {
21579			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
21580		}
21581	}
21582	if s.SourceSelectionCriteria != nil {
21583		if err := s.SourceSelectionCriteria.Validate(); err != nil {
21584			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
21585		}
21586	}
21587
21588	if invalidParams.Len() > 0 {
21589		return invalidParams
21590	}
21591	return nil
21592}
21593
21594// SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value.
21595func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule {
21596	s.DeleteMarkerReplication = v
21597	return s
21598}
21599
21600// SetDestination sets the Destination field's value.
21601func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
21602	s.Destination = v
21603	return s
21604}
21605
21606// SetFilter sets the Filter field's value.
21607func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule {
21608	s.Filter = v
21609	return s
21610}
21611
21612// SetID sets the ID field's value.
21613func (s *ReplicationRule) SetID(v string) *ReplicationRule {
21614	s.ID = &v
21615	return s
21616}
21617
21618// SetPrefix sets the Prefix field's value.
21619func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
21620	s.Prefix = &v
21621	return s
21622}
21623
21624// SetPriority sets the Priority field's value.
21625func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule {
21626	s.Priority = &v
21627	return s
21628}
21629
21630// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
21631func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
21632	s.SourceSelectionCriteria = v
21633	return s
21634}
21635
21636// SetStatus sets the Status field's value.
21637func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
21638	s.Status = &v
21639	return s
21640}
21641
21642type ReplicationRuleAndOperator struct {
21643	_ struct{} `type:"structure"`
21644
21645	Prefix *string `type:"string"`
21646
21647	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
21648}
21649
21650// String returns the string representation
21651func (s ReplicationRuleAndOperator) String() string {
21652	return awsutil.Prettify(s)
21653}
21654
21655// GoString returns the string representation
21656func (s ReplicationRuleAndOperator) GoString() string {
21657	return s.String()
21658}
21659
21660// Validate inspects the fields of the type to determine if they are valid.
21661func (s *ReplicationRuleAndOperator) Validate() error {
21662	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"}
21663	if s.Tags != nil {
21664		for i, v := range s.Tags {
21665			if v == nil {
21666				continue
21667			}
21668			if err := v.Validate(); err != nil {
21669				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
21670			}
21671		}
21672	}
21673
21674	if invalidParams.Len() > 0 {
21675		return invalidParams
21676	}
21677	return nil
21678}
21679
21680// SetPrefix sets the Prefix field's value.
21681func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator {
21682	s.Prefix = &v
21683	return s
21684}
21685
21686// SetTags sets the Tags field's value.
21687func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator {
21688	s.Tags = v
21689	return s
21690}
21691
21692// A filter that identifies the subset of objects to which the replication rule
21693// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
21694type ReplicationRuleFilter struct {
21695	_ struct{} `type:"structure"`
21696
21697	// A container for specifying rule filters. The filters determine the subset
21698	// of objects to which the rule applies. This element is required only if you
21699	// specify more than one filter. For example:
21700	//
21701	//    * If you specify both a Prefix and a Tag filter, wrap these filters in
21702	//    an And tag.
21703	//
21704	//    * If you specify a filter based on multiple tags, wrap the Tag elements
21705	//    in an And tag.
21706	And *ReplicationRuleAndOperator `type:"structure"`
21707
21708	// An object keyname prefix that identifies the subset of objects to which the
21709	// rule applies.
21710	Prefix *string `type:"string"`
21711
21712	// A container for specifying a tag key and value.
21713	//
21714	// The rule applies only to objects that have the tag in their tag set.
21715	Tag *Tag `type:"structure"`
21716}
21717
21718// String returns the string representation
21719func (s ReplicationRuleFilter) String() string {
21720	return awsutil.Prettify(s)
21721}
21722
21723// GoString returns the string representation
21724func (s ReplicationRuleFilter) GoString() string {
21725	return s.String()
21726}
21727
21728// Validate inspects the fields of the type to determine if they are valid.
21729func (s *ReplicationRuleFilter) Validate() error {
21730	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"}
21731	if s.And != nil {
21732		if err := s.And.Validate(); err != nil {
21733			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
21734		}
21735	}
21736	if s.Tag != nil {
21737		if err := s.Tag.Validate(); err != nil {
21738			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
21739		}
21740	}
21741
21742	if invalidParams.Len() > 0 {
21743		return invalidParams
21744	}
21745	return nil
21746}
21747
21748// SetAnd sets the And field's value.
21749func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter {
21750	s.And = v
21751	return s
21752}
21753
21754// SetPrefix sets the Prefix field's value.
21755func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter {
21756	s.Prefix = &v
21757	return s
21758}
21759
21760// SetTag sets the Tag field's value.
21761func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter {
21762	s.Tag = v
21763	return s
21764}
21765
21766type RequestPaymentConfiguration struct {
21767	_ struct{} `type:"structure"`
21768
21769	// Specifies who pays for the download and request fees.
21770	//
21771	// Payer is a required field
21772	Payer *string `type:"string" required:"true" enum:"Payer"`
21773}
21774
21775// String returns the string representation
21776func (s RequestPaymentConfiguration) String() string {
21777	return awsutil.Prettify(s)
21778}
21779
21780// GoString returns the string representation
21781func (s RequestPaymentConfiguration) GoString() string {
21782	return s.String()
21783}
21784
21785// Validate inspects the fields of the type to determine if they are valid.
21786func (s *RequestPaymentConfiguration) Validate() error {
21787	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
21788	if s.Payer == nil {
21789		invalidParams.Add(request.NewErrParamRequired("Payer"))
21790	}
21791
21792	if invalidParams.Len() > 0 {
21793		return invalidParams
21794	}
21795	return nil
21796}
21797
21798// SetPayer sets the Payer field's value.
21799func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
21800	s.Payer = &v
21801	return s
21802}
21803
21804type RequestProgress struct {
21805	_ struct{} `type:"structure"`
21806
21807	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
21808	// TRUE, FALSE. Default value: FALSE.
21809	Enabled *bool `type:"boolean"`
21810}
21811
21812// String returns the string representation
21813func (s RequestProgress) String() string {
21814	return awsutil.Prettify(s)
21815}
21816
21817// GoString returns the string representation
21818func (s RequestProgress) GoString() string {
21819	return s.String()
21820}
21821
21822// SetEnabled sets the Enabled field's value.
21823func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
21824	s.Enabled = &v
21825	return s
21826}
21827
21828type RestoreObjectInput struct {
21829	_ struct{} `type:"structure" payload:"RestoreRequest"`
21830
21831	// Bucket is a required field
21832	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21833
21834	// Key is a required field
21835	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21836
21837	// Confirms that the requester knows that she or he will be charged for the
21838	// request. Bucket owners need not specify this parameter in their requests.
21839	// Documentation on downloading objects from requester pays buckets can be found
21840	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
21841	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21842
21843	// Container for restore job parameters.
21844	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
21845
21846	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21847}
21848
21849// String returns the string representation
21850func (s RestoreObjectInput) String() string {
21851	return awsutil.Prettify(s)
21852}
21853
21854// GoString returns the string representation
21855func (s RestoreObjectInput) GoString() string {
21856	return s.String()
21857}
21858
21859// Validate inspects the fields of the type to determine if they are valid.
21860func (s *RestoreObjectInput) Validate() error {
21861	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
21862	if s.Bucket == nil {
21863		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21864	}
21865	if s.Bucket != nil && len(*s.Bucket) < 1 {
21866		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21867	}
21868	if s.Key == nil {
21869		invalidParams.Add(request.NewErrParamRequired("Key"))
21870	}
21871	if s.Key != nil && len(*s.Key) < 1 {
21872		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21873	}
21874	if s.RestoreRequest != nil {
21875		if err := s.RestoreRequest.Validate(); err != nil {
21876			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
21877		}
21878	}
21879
21880	if invalidParams.Len() > 0 {
21881		return invalidParams
21882	}
21883	return nil
21884}
21885
21886// SetBucket sets the Bucket field's value.
21887func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
21888	s.Bucket = &v
21889	return s
21890}
21891
21892func (s *RestoreObjectInput) getBucket() (v string) {
21893	if s.Bucket == nil {
21894		return v
21895	}
21896	return *s.Bucket
21897}
21898
21899// SetKey sets the Key field's value.
21900func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
21901	s.Key = &v
21902	return s
21903}
21904
21905// SetRequestPayer sets the RequestPayer field's value.
21906func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
21907	s.RequestPayer = &v
21908	return s
21909}
21910
21911// SetRestoreRequest sets the RestoreRequest field's value.
21912func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
21913	s.RestoreRequest = v
21914	return s
21915}
21916
21917// SetVersionId sets the VersionId field's value.
21918func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
21919	s.VersionId = &v
21920	return s
21921}
21922
21923type RestoreObjectOutput struct {
21924	_ struct{} `type:"structure"`
21925
21926	// If present, indicates that the requester was successfully charged for the
21927	// request.
21928	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
21929
21930	// Indicates the path in the provided S3 output location where Select results
21931	// will be restored to.
21932	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
21933}
21934
21935// String returns the string representation
21936func (s RestoreObjectOutput) String() string {
21937	return awsutil.Prettify(s)
21938}
21939
21940// GoString returns the string representation
21941func (s RestoreObjectOutput) GoString() string {
21942	return s.String()
21943}
21944
21945// SetRequestCharged sets the RequestCharged field's value.
21946func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
21947	s.RequestCharged = &v
21948	return s
21949}
21950
21951// SetRestoreOutputPath sets the RestoreOutputPath field's value.
21952func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
21953	s.RestoreOutputPath = &v
21954	return s
21955}
21956
21957// Container for restore job parameters.
21958type RestoreRequest struct {
21959	_ struct{} `type:"structure"`
21960
21961	// Lifetime of the active copy in days. Do not use with restores that specify
21962	// OutputLocation.
21963	Days *int64 `type:"integer"`
21964
21965	// The optional description for the job.
21966	Description *string `type:"string"`
21967
21968	// Glacier related parameters pertaining to this job. Do not use with restores
21969	// that specify OutputLocation.
21970	GlacierJobParameters *GlacierJobParameters `type:"structure"`
21971
21972	// Describes the location where the restore job's output is stored.
21973	OutputLocation *OutputLocation `type:"structure"`
21974
21975	// Describes the parameters for Select job types.
21976	SelectParameters *SelectParameters `type:"structure"`
21977
21978	// Glacier retrieval tier at which the restore will be processed.
21979	Tier *string `type:"string" enum:"Tier"`
21980
21981	// Type of restore request.
21982	Type *string `type:"string" enum:"RestoreRequestType"`
21983}
21984
21985// String returns the string representation
21986func (s RestoreRequest) String() string {
21987	return awsutil.Prettify(s)
21988}
21989
21990// GoString returns the string representation
21991func (s RestoreRequest) GoString() string {
21992	return s.String()
21993}
21994
21995// Validate inspects the fields of the type to determine if they are valid.
21996func (s *RestoreRequest) Validate() error {
21997	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
21998	if s.GlacierJobParameters != nil {
21999		if err := s.GlacierJobParameters.Validate(); err != nil {
22000			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
22001		}
22002	}
22003	if s.OutputLocation != nil {
22004		if err := s.OutputLocation.Validate(); err != nil {
22005			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
22006		}
22007	}
22008	if s.SelectParameters != nil {
22009		if err := s.SelectParameters.Validate(); err != nil {
22010			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
22011		}
22012	}
22013
22014	if invalidParams.Len() > 0 {
22015		return invalidParams
22016	}
22017	return nil
22018}
22019
22020// SetDays sets the Days field's value.
22021func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
22022	s.Days = &v
22023	return s
22024}
22025
22026// SetDescription sets the Description field's value.
22027func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
22028	s.Description = &v
22029	return s
22030}
22031
22032// SetGlacierJobParameters sets the GlacierJobParameters field's value.
22033func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
22034	s.GlacierJobParameters = v
22035	return s
22036}
22037
22038// SetOutputLocation sets the OutputLocation field's value.
22039func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
22040	s.OutputLocation = v
22041	return s
22042}
22043
22044// SetSelectParameters sets the SelectParameters field's value.
22045func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
22046	s.SelectParameters = v
22047	return s
22048}
22049
22050// SetTier sets the Tier field's value.
22051func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
22052	s.Tier = &v
22053	return s
22054}
22055
22056// SetType sets the Type field's value.
22057func (s *RestoreRequest) SetType(v string) *RestoreRequest {
22058	s.Type = &v
22059	return s
22060}
22061
22062type RoutingRule struct {
22063	_ struct{} `type:"structure"`
22064
22065	// A container for describing a condition that must be met for the specified
22066	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
22067	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
22068	// redirect request to another host where you might process the error.
22069	Condition *Condition `type:"structure"`
22070
22071	// Container for redirect information. You can redirect requests to another
22072	// host, to another page, or with another protocol. In the event of an error,
22073	// you can specify a different error code to return.
22074	//
22075	// Redirect is a required field
22076	Redirect *Redirect `type:"structure" required:"true"`
22077}
22078
22079// String returns the string representation
22080func (s RoutingRule) String() string {
22081	return awsutil.Prettify(s)
22082}
22083
22084// GoString returns the string representation
22085func (s RoutingRule) GoString() string {
22086	return s.String()
22087}
22088
22089// Validate inspects the fields of the type to determine if they are valid.
22090func (s *RoutingRule) Validate() error {
22091	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
22092	if s.Redirect == nil {
22093		invalidParams.Add(request.NewErrParamRequired("Redirect"))
22094	}
22095
22096	if invalidParams.Len() > 0 {
22097		return invalidParams
22098	}
22099	return nil
22100}
22101
22102// SetCondition sets the Condition field's value.
22103func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
22104	s.Condition = v
22105	return s
22106}
22107
22108// SetRedirect sets the Redirect field's value.
22109func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
22110	s.Redirect = v
22111	return s
22112}
22113
22114type Rule struct {
22115	_ struct{} `type:"structure"`
22116
22117	// Specifies the days since the initiation of an Incomplete Multipart Upload
22118	// that Lifecycle will wait before permanently removing all parts of the upload.
22119	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
22120
22121	Expiration *LifecycleExpiration `type:"structure"`
22122
22123	// Unique identifier for the rule. The value cannot be longer than 255 characters.
22124	ID *string `type:"string"`
22125
22126	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
22127	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
22128	// configuration action on a bucket that has versioning enabled (or suspended)
22129	// to request that Amazon S3 delete noncurrent object versions at a specific
22130	// period in the object's lifetime.
22131	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
22132
22133	// Container for the transition rule that describes when noncurrent objects
22134	// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER or
22135	// DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
22136	// is suspended), you can set this action to request that Amazon S3 transition
22137	// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
22138	// GLACIER or DEEP_ARCHIVE storage class at a specific period in the object's
22139	// lifetime.
22140	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
22141
22142	// Prefix identifying one or more objects to which the rule applies.
22143	//
22144	// Prefix is a required field
22145	Prefix *string `type:"string" required:"true"`
22146
22147	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
22148	// is not currently being applied.
22149	//
22150	// Status is a required field
22151	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
22152
22153	Transition *Transition `type:"structure"`
22154}
22155
22156// String returns the string representation
22157func (s Rule) String() string {
22158	return awsutil.Prettify(s)
22159}
22160
22161// GoString returns the string representation
22162func (s Rule) GoString() string {
22163	return s.String()
22164}
22165
22166// Validate inspects the fields of the type to determine if they are valid.
22167func (s *Rule) Validate() error {
22168	invalidParams := request.ErrInvalidParams{Context: "Rule"}
22169	if s.Prefix == nil {
22170		invalidParams.Add(request.NewErrParamRequired("Prefix"))
22171	}
22172	if s.Status == nil {
22173		invalidParams.Add(request.NewErrParamRequired("Status"))
22174	}
22175
22176	if invalidParams.Len() > 0 {
22177		return invalidParams
22178	}
22179	return nil
22180}
22181
22182// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
22183func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
22184	s.AbortIncompleteMultipartUpload = v
22185	return s
22186}
22187
22188// SetExpiration sets the Expiration field's value.
22189func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
22190	s.Expiration = v
22191	return s
22192}
22193
22194// SetID sets the ID field's value.
22195func (s *Rule) SetID(v string) *Rule {
22196	s.ID = &v
22197	return s
22198}
22199
22200// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
22201func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
22202	s.NoncurrentVersionExpiration = v
22203	return s
22204}
22205
22206// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
22207func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
22208	s.NoncurrentVersionTransition = v
22209	return s
22210}
22211
22212// SetPrefix sets the Prefix field's value.
22213func (s *Rule) SetPrefix(v string) *Rule {
22214	s.Prefix = &v
22215	return s
22216}
22217
22218// SetStatus sets the Status field's value.
22219func (s *Rule) SetStatus(v string) *Rule {
22220	s.Status = &v
22221	return s
22222}
22223
22224// SetTransition sets the Transition field's value.
22225func (s *Rule) SetTransition(v *Transition) *Rule {
22226	s.Transition = v
22227	return s
22228}
22229
22230// Specifies the use of SSE-KMS to encrypt delivered Inventory reports.
22231type SSEKMS struct {
22232	_ struct{} `locationName:"SSE-KMS" type:"structure"`
22233
22234	// Specifies the ID of the AWS Key Management Service (KMS) master encryption
22235	// key to use for encrypting Inventory reports.
22236	//
22237	// KeyId is a required field
22238	KeyId *string `type:"string" required:"true" sensitive:"true"`
22239}
22240
22241// String returns the string representation
22242func (s SSEKMS) String() string {
22243	return awsutil.Prettify(s)
22244}
22245
22246// GoString returns the string representation
22247func (s SSEKMS) GoString() string {
22248	return s.String()
22249}
22250
22251// Validate inspects the fields of the type to determine if they are valid.
22252func (s *SSEKMS) Validate() error {
22253	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
22254	if s.KeyId == nil {
22255		invalidParams.Add(request.NewErrParamRequired("KeyId"))
22256	}
22257
22258	if invalidParams.Len() > 0 {
22259		return invalidParams
22260	}
22261	return nil
22262}
22263
22264// SetKeyId sets the KeyId field's value.
22265func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
22266	s.KeyId = &v
22267	return s
22268}
22269
22270// Specifies the use of SSE-S3 to encrypt delivered Inventory reports.
22271type SSES3 struct {
22272	_ struct{} `locationName:"SSE-S3" type:"structure"`
22273}
22274
22275// String returns the string representation
22276func (s SSES3) String() string {
22277	return awsutil.Prettify(s)
22278}
22279
22280// GoString returns the string representation
22281func (s SSES3) GoString() string {
22282	return s.String()
22283}
22284
22285// SelectObjectContentEventStream provides handling of EventStreams for
22286// the SelectObjectContent API.
22287//
22288// Use this type to receive SelectObjectContentEventStream events. The events
22289// can be read from the Events channel member.
22290//
22291// The events that can be received are:
22292//
22293//     * ContinuationEvent
22294//     * EndEvent
22295//     * ProgressEvent
22296//     * RecordsEvent
22297//     * StatsEvent
22298type SelectObjectContentEventStream struct {
22299	// Reader is the EventStream reader for the SelectObjectContentEventStream
22300	// events. This value is automatically set by the SDK when the API call is made
22301	// Use this member when unit testing your code with the SDK to mock out the
22302	// EventStream Reader.
22303	//
22304	// Must not be nil.
22305	Reader SelectObjectContentEventStreamReader
22306
22307	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
22308	// EventStream this is the response Body. The stream will be closed when
22309	// the Close method of the EventStream is called.
22310	StreamCloser io.Closer
22311}
22312
22313// Close closes the EventStream. This will also cause the Events channel to be
22314// closed. You can use the closing of the Events channel to terminate your
22315// application's read from the API's EventStream.
22316//
22317// Will close the underlying EventStream reader. For EventStream over HTTP
22318// connection this will also close the HTTP connection.
22319//
22320// Close must be called when done using the EventStream API. Not calling Close
22321// may result in resource leaks.
22322func (es *SelectObjectContentEventStream) Close() (err error) {
22323	es.Reader.Close()
22324	return es.Err()
22325}
22326
22327// Err returns any error that occurred while reading EventStream Events from
22328// the service API's response. Returns nil if there were no errors.
22329func (es *SelectObjectContentEventStream) Err() error {
22330	if err := es.Reader.Err(); err != nil {
22331		return err
22332	}
22333	es.StreamCloser.Close()
22334
22335	return nil
22336}
22337
22338// Events returns a channel to read EventStream Events from the
22339// SelectObjectContent API.
22340//
22341// These events are:
22342//
22343//     * ContinuationEvent
22344//     * EndEvent
22345//     * ProgressEvent
22346//     * RecordsEvent
22347//     * StatsEvent
22348func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
22349	return es.Reader.Events()
22350}
22351
22352// SelectObjectContentEventStreamEvent groups together all EventStream
22353// events read from the SelectObjectContent API.
22354//
22355// These events are:
22356//
22357//     * ContinuationEvent
22358//     * EndEvent
22359//     * ProgressEvent
22360//     * RecordsEvent
22361//     * StatsEvent
22362type SelectObjectContentEventStreamEvent interface {
22363	eventSelectObjectContentEventStream()
22364}
22365
22366// SelectObjectContentEventStreamReader provides the interface for reading EventStream
22367// Events from the SelectObjectContent API. The
22368// default implementation for this interface will be SelectObjectContentEventStream.
22369//
22370// The reader's Close method must allow multiple concurrent calls.
22371//
22372// These events are:
22373//
22374//     * ContinuationEvent
22375//     * EndEvent
22376//     * ProgressEvent
22377//     * RecordsEvent
22378//     * StatsEvent
22379type SelectObjectContentEventStreamReader interface {
22380	// Returns a channel of events as they are read from the event stream.
22381	Events() <-chan SelectObjectContentEventStreamEvent
22382
22383	// Close will close the underlying event stream reader. For event stream over
22384	// HTTP this will also close the HTTP connection.
22385	Close() error
22386
22387	// Returns any error that has occurred while reading from the event stream.
22388	Err() error
22389}
22390
22391type readSelectObjectContentEventStream struct {
22392	eventReader *eventstreamapi.EventReader
22393	stream      chan SelectObjectContentEventStreamEvent
22394	errVal      atomic.Value
22395
22396	done      chan struct{}
22397	closeOnce sync.Once
22398}
22399
22400func newReadSelectObjectContentEventStream(
22401	reader io.ReadCloser,
22402	unmarshalers request.HandlerList,
22403	logger aws.Logger,
22404	logLevel aws.LogLevelType,
22405) *readSelectObjectContentEventStream {
22406	r := &readSelectObjectContentEventStream{
22407		stream: make(chan SelectObjectContentEventStreamEvent),
22408		done:   make(chan struct{}),
22409	}
22410
22411	r.eventReader = eventstreamapi.NewEventReader(
22412		reader,
22413		protocol.HandlerPayloadUnmarshal{
22414			Unmarshalers: unmarshalers,
22415		},
22416		r.unmarshalerForEventType,
22417	)
22418	r.eventReader.UseLogger(logger, logLevel)
22419
22420	return r
22421}
22422
22423// Close will close the underlying event stream reader. For EventStream over
22424// HTTP this will also close the HTTP connection.
22425func (r *readSelectObjectContentEventStream) Close() error {
22426	r.closeOnce.Do(r.safeClose)
22427
22428	return r.Err()
22429}
22430
22431func (r *readSelectObjectContentEventStream) safeClose() {
22432	close(r.done)
22433	err := r.eventReader.Close()
22434	if err != nil {
22435		r.errVal.Store(err)
22436	}
22437}
22438
22439func (r *readSelectObjectContentEventStream) Err() error {
22440	if v := r.errVal.Load(); v != nil {
22441		return v.(error)
22442	}
22443
22444	return nil
22445}
22446
22447func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
22448	return r.stream
22449}
22450
22451func (r *readSelectObjectContentEventStream) readEventStream() {
22452	defer close(r.stream)
22453
22454	for {
22455		event, err := r.eventReader.ReadEvent()
22456		if err != nil {
22457			if err == io.EOF {
22458				return
22459			}
22460			select {
22461			case <-r.done:
22462				// If closed already ignore the error
22463				return
22464			default:
22465			}
22466			r.errVal.Store(err)
22467			return
22468		}
22469
22470		select {
22471		case r.stream <- event.(SelectObjectContentEventStreamEvent):
22472		case <-r.done:
22473			return
22474		}
22475	}
22476}
22477
22478func (r *readSelectObjectContentEventStream) unmarshalerForEventType(
22479	eventType string,
22480) (eventstreamapi.Unmarshaler, error) {
22481	switch eventType {
22482	case "Cont":
22483		return &ContinuationEvent{}, nil
22484
22485	case "End":
22486		return &EndEvent{}, nil
22487
22488	case "Progress":
22489		return &ProgressEvent{}, nil
22490
22491	case "Records":
22492		return &RecordsEvent{}, nil
22493
22494	case "Stats":
22495		return &StatsEvent{}, nil
22496	default:
22497		return nil, awserr.New(
22498			request.ErrCodeSerialization,
22499			fmt.Sprintf("unknown event type name, %s, for SelectObjectContentEventStream", eventType),
22500			nil,
22501		)
22502	}
22503}
22504
22505// Request to filter the contents of an Amazon S3 object based on a simple Structured
22506// Query Language (SQL) statement. In the request, along with the SQL expression,
22507// you must specify a data serialization format (JSON or CSV) of the object.
22508// Amazon S3 uses this to parse object data into records. It returns only records
22509// that match the specified SQL expression. You must also specify the data serialization
22510// format for the response. For more information, see S3Select API Documentation
22511// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
22512type SelectObjectContentInput struct {
22513	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
22514
22515	// The S3 bucket.
22516	//
22517	// Bucket is a required field
22518	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22519
22520	// The expression that is used to query the object.
22521	//
22522	// Expression is a required field
22523	Expression *string `type:"string" required:"true"`
22524
22525	// The type of the provided expression (for example., SQL).
22526	//
22527	// ExpressionType is a required field
22528	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
22529
22530	// Describes the format of the data in the object that is being queried.
22531	//
22532	// InputSerialization is a required field
22533	InputSerialization *InputSerialization `type:"structure" required:"true"`
22534
22535	// The object key.
22536	//
22537	// Key is a required field
22538	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
22539
22540	// Describes the format of the data that you want Amazon S3 to return in response.
22541	//
22542	// OutputSerialization is a required field
22543	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
22544
22545	// Specifies if periodic request progress information should be enabled.
22546	RequestProgress *RequestProgress `type:"structure"`
22547
22548	// The SSE Algorithm used to encrypt the object. For more information, see Server-Side
22549	// Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
22550	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
22551
22552	// The SSE Customer Key. For more information, see Server-Side Encryption (Using
22553	// Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
22554	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
22555
22556	// The SSE Customer Key MD5. For more information, see Server-Side Encryption
22557	// (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
22558	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
22559}
22560
22561// String returns the string representation
22562func (s SelectObjectContentInput) String() string {
22563	return awsutil.Prettify(s)
22564}
22565
22566// GoString returns the string representation
22567func (s SelectObjectContentInput) GoString() string {
22568	return s.String()
22569}
22570
22571// Validate inspects the fields of the type to determine if they are valid.
22572func (s *SelectObjectContentInput) Validate() error {
22573	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
22574	if s.Bucket == nil {
22575		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22576	}
22577	if s.Bucket != nil && len(*s.Bucket) < 1 {
22578		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22579	}
22580	if s.Expression == nil {
22581		invalidParams.Add(request.NewErrParamRequired("Expression"))
22582	}
22583	if s.ExpressionType == nil {
22584		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
22585	}
22586	if s.InputSerialization == nil {
22587		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
22588	}
22589	if s.Key == nil {
22590		invalidParams.Add(request.NewErrParamRequired("Key"))
22591	}
22592	if s.Key != nil && len(*s.Key) < 1 {
22593		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22594	}
22595	if s.OutputSerialization == nil {
22596		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
22597	}
22598
22599	if invalidParams.Len() > 0 {
22600		return invalidParams
22601	}
22602	return nil
22603}
22604
22605// SetBucket sets the Bucket field's value.
22606func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
22607	s.Bucket = &v
22608	return s
22609}
22610
22611func (s *SelectObjectContentInput) getBucket() (v string) {
22612	if s.Bucket == nil {
22613		return v
22614	}
22615	return *s.Bucket
22616}
22617
22618// SetExpression sets the Expression field's value.
22619func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
22620	s.Expression = &v
22621	return s
22622}
22623
22624// SetExpressionType sets the ExpressionType field's value.
22625func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
22626	s.ExpressionType = &v
22627	return s
22628}
22629
22630// SetInputSerialization sets the InputSerialization field's value.
22631func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
22632	s.InputSerialization = v
22633	return s
22634}
22635
22636// SetKey sets the Key field's value.
22637func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
22638	s.Key = &v
22639	return s
22640}
22641
22642// SetOutputSerialization sets the OutputSerialization field's value.
22643func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
22644	s.OutputSerialization = v
22645	return s
22646}
22647
22648// SetRequestProgress sets the RequestProgress field's value.
22649func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
22650	s.RequestProgress = v
22651	return s
22652}
22653
22654// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
22655func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
22656	s.SSECustomerAlgorithm = &v
22657	return s
22658}
22659
22660// SetSSECustomerKey sets the SSECustomerKey field's value.
22661func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
22662	s.SSECustomerKey = &v
22663	return s
22664}
22665
22666func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
22667	if s.SSECustomerKey == nil {
22668		return v
22669	}
22670	return *s.SSECustomerKey
22671}
22672
22673// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
22674func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
22675	s.SSECustomerKeyMD5 = &v
22676	return s
22677}
22678
22679type SelectObjectContentOutput struct {
22680	_ struct{} `type:"structure" payload:"Payload"`
22681
22682	// Use EventStream to use the API's stream.
22683	EventStream *SelectObjectContentEventStream `type:"structure"`
22684}
22685
22686// String returns the string representation
22687func (s SelectObjectContentOutput) String() string {
22688	return awsutil.Prettify(s)
22689}
22690
22691// GoString returns the string representation
22692func (s SelectObjectContentOutput) GoString() string {
22693	return s.String()
22694}
22695
22696// SetEventStream sets the EventStream field's value.
22697func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
22698	s.EventStream = v
22699	return s
22700}
22701
22702func (s *SelectObjectContentOutput) runEventStreamLoop(r *request.Request) {
22703	if r.Error != nil {
22704		return
22705	}
22706	reader := newReadSelectObjectContentEventStream(
22707		r.HTTPResponse.Body,
22708		r.Handlers.UnmarshalStream,
22709		r.Config.Logger,
22710		r.Config.LogLevel.Value(),
22711	)
22712	go reader.readEventStream()
22713
22714	eventStream := &SelectObjectContentEventStream{
22715		StreamCloser: r.HTTPResponse.Body,
22716		Reader:       reader,
22717	}
22718	s.EventStream = eventStream
22719}
22720
22721// Describes the parameters for Select job types.
22722type SelectParameters struct {
22723	_ struct{} `type:"structure"`
22724
22725	// The expression that is used to query the object.
22726	//
22727	// Expression is a required field
22728	Expression *string `type:"string" required:"true"`
22729
22730	// The type of the provided expression (e.g., SQL).
22731	//
22732	// ExpressionType is a required field
22733	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
22734
22735	// Describes the serialization format of the object.
22736	//
22737	// InputSerialization is a required field
22738	InputSerialization *InputSerialization `type:"structure" required:"true"`
22739
22740	// Describes how the results of the Select job are serialized.
22741	//
22742	// OutputSerialization is a required field
22743	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
22744}
22745
22746// String returns the string representation
22747func (s SelectParameters) String() string {
22748	return awsutil.Prettify(s)
22749}
22750
22751// GoString returns the string representation
22752func (s SelectParameters) GoString() string {
22753	return s.String()
22754}
22755
22756// Validate inspects the fields of the type to determine if they are valid.
22757func (s *SelectParameters) Validate() error {
22758	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
22759	if s.Expression == nil {
22760		invalidParams.Add(request.NewErrParamRequired("Expression"))
22761	}
22762	if s.ExpressionType == nil {
22763		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
22764	}
22765	if s.InputSerialization == nil {
22766		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
22767	}
22768	if s.OutputSerialization == nil {
22769		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
22770	}
22771
22772	if invalidParams.Len() > 0 {
22773		return invalidParams
22774	}
22775	return nil
22776}
22777
22778// SetExpression sets the Expression field's value.
22779func (s *SelectParameters) SetExpression(v string) *SelectParameters {
22780	s.Expression = &v
22781	return s
22782}
22783
22784// SetExpressionType sets the ExpressionType field's value.
22785func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
22786	s.ExpressionType = &v
22787	return s
22788}
22789
22790// SetInputSerialization sets the InputSerialization field's value.
22791func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
22792	s.InputSerialization = v
22793	return s
22794}
22795
22796// SetOutputSerialization sets the OutputSerialization field's value.
22797func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
22798	s.OutputSerialization = v
22799	return s
22800}
22801
22802// Describes the default server-side encryption to apply to new objects in the
22803// bucket. If Put Object request does not specify any server-side encryption,
22804// this default encryption will be applied.
22805type ServerSideEncryptionByDefault struct {
22806	_ struct{} `type:"structure"`
22807
22808	// KMS master key ID to use for the default encryption. This parameter is allowed
22809	// if SSEAlgorithm is aws:kms.
22810	KMSMasterKeyID *string `type:"string" sensitive:"true"`
22811
22812	// Server-side encryption algorithm to use for the default encryption.
22813	//
22814	// SSEAlgorithm is a required field
22815	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
22816}
22817
22818// String returns the string representation
22819func (s ServerSideEncryptionByDefault) String() string {
22820	return awsutil.Prettify(s)
22821}
22822
22823// GoString returns the string representation
22824func (s ServerSideEncryptionByDefault) GoString() string {
22825	return s.String()
22826}
22827
22828// Validate inspects the fields of the type to determine if they are valid.
22829func (s *ServerSideEncryptionByDefault) Validate() error {
22830	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
22831	if s.SSEAlgorithm == nil {
22832		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
22833	}
22834
22835	if invalidParams.Len() > 0 {
22836		return invalidParams
22837	}
22838	return nil
22839}
22840
22841// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
22842func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
22843	s.KMSMasterKeyID = &v
22844	return s
22845}
22846
22847// SetSSEAlgorithm sets the SSEAlgorithm field's value.
22848func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
22849	s.SSEAlgorithm = &v
22850	return s
22851}
22852
22853// Container for server-side encryption configuration rules. Currently S3 supports
22854// one rule only.
22855type ServerSideEncryptionConfiguration struct {
22856	_ struct{} `type:"structure"`
22857
22858	// Container for information about a particular server-side encryption configuration
22859	// rule.
22860	//
22861	// Rules is a required field
22862	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
22863}
22864
22865// String returns the string representation
22866func (s ServerSideEncryptionConfiguration) String() string {
22867	return awsutil.Prettify(s)
22868}
22869
22870// GoString returns the string representation
22871func (s ServerSideEncryptionConfiguration) GoString() string {
22872	return s.String()
22873}
22874
22875// Validate inspects the fields of the type to determine if they are valid.
22876func (s *ServerSideEncryptionConfiguration) Validate() error {
22877	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
22878	if s.Rules == nil {
22879		invalidParams.Add(request.NewErrParamRequired("Rules"))
22880	}
22881	if s.Rules != nil {
22882		for i, v := range s.Rules {
22883			if v == nil {
22884				continue
22885			}
22886			if err := v.Validate(); err != nil {
22887				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
22888			}
22889		}
22890	}
22891
22892	if invalidParams.Len() > 0 {
22893		return invalidParams
22894	}
22895	return nil
22896}
22897
22898// SetRules sets the Rules field's value.
22899func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
22900	s.Rules = v
22901	return s
22902}
22903
22904// Container for information about a particular server-side encryption configuration
22905// rule.
22906type ServerSideEncryptionRule struct {
22907	_ struct{} `type:"structure"`
22908
22909	// Describes the default server-side encryption to apply to new objects in the
22910	// bucket. If Put Object request does not specify any server-side encryption,
22911	// this default encryption will be applied.
22912	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
22913}
22914
22915// String returns the string representation
22916func (s ServerSideEncryptionRule) String() string {
22917	return awsutil.Prettify(s)
22918}
22919
22920// GoString returns the string representation
22921func (s ServerSideEncryptionRule) GoString() string {
22922	return s.String()
22923}
22924
22925// Validate inspects the fields of the type to determine if they are valid.
22926func (s *ServerSideEncryptionRule) Validate() error {
22927	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
22928	if s.ApplyServerSideEncryptionByDefault != nil {
22929		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
22930			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
22931		}
22932	}
22933
22934	if invalidParams.Len() > 0 {
22935		return invalidParams
22936	}
22937	return nil
22938}
22939
22940// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
22941func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
22942	s.ApplyServerSideEncryptionByDefault = v
22943	return s
22944}
22945
22946// A container for filters that define which source objects should be replicated.
22947type SourceSelectionCriteria struct {
22948	_ struct{} `type:"structure"`
22949
22950	// A container for filter information for the selection of S3 objects encrypted
22951	// with AWS KMS. If you include SourceSelectionCriteria in the replication configuration,
22952	// this element is required.
22953	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
22954}
22955
22956// String returns the string representation
22957func (s SourceSelectionCriteria) String() string {
22958	return awsutil.Prettify(s)
22959}
22960
22961// GoString returns the string representation
22962func (s SourceSelectionCriteria) GoString() string {
22963	return s.String()
22964}
22965
22966// Validate inspects the fields of the type to determine if they are valid.
22967func (s *SourceSelectionCriteria) Validate() error {
22968	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
22969	if s.SseKmsEncryptedObjects != nil {
22970		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
22971			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
22972		}
22973	}
22974
22975	if invalidParams.Len() > 0 {
22976		return invalidParams
22977	}
22978	return nil
22979}
22980
22981// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
22982func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
22983	s.SseKmsEncryptedObjects = v
22984	return s
22985}
22986
22987// A container for filter information for the selection of S3 objects encrypted
22988// with AWS KMS.
22989type SseKmsEncryptedObjects struct {
22990	_ struct{} `type:"structure"`
22991
22992	// If the status is not Enabled, replication for S3 objects encrypted with AWS
22993	// KMS is disabled.
22994	//
22995	// Status is a required field
22996	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
22997}
22998
22999// String returns the string representation
23000func (s SseKmsEncryptedObjects) String() string {
23001	return awsutil.Prettify(s)
23002}
23003
23004// GoString returns the string representation
23005func (s SseKmsEncryptedObjects) GoString() string {
23006	return s.String()
23007}
23008
23009// Validate inspects the fields of the type to determine if they are valid.
23010func (s *SseKmsEncryptedObjects) Validate() error {
23011	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
23012	if s.Status == nil {
23013		invalidParams.Add(request.NewErrParamRequired("Status"))
23014	}
23015
23016	if invalidParams.Len() > 0 {
23017		return invalidParams
23018	}
23019	return nil
23020}
23021
23022// SetStatus sets the Status field's value.
23023func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
23024	s.Status = &v
23025	return s
23026}
23027
23028type Stats struct {
23029	_ struct{} `type:"structure"`
23030
23031	// The total number of uncompressed object bytes processed.
23032	BytesProcessed *int64 `type:"long"`
23033
23034	// The total number of bytes of records payload data returned.
23035	BytesReturned *int64 `type:"long"`
23036
23037	// The total number of object bytes scanned.
23038	BytesScanned *int64 `type:"long"`
23039}
23040
23041// String returns the string representation
23042func (s Stats) String() string {
23043	return awsutil.Prettify(s)
23044}
23045
23046// GoString returns the string representation
23047func (s Stats) GoString() string {
23048	return s.String()
23049}
23050
23051// SetBytesProcessed sets the BytesProcessed field's value.
23052func (s *Stats) SetBytesProcessed(v int64) *Stats {
23053	s.BytesProcessed = &v
23054	return s
23055}
23056
23057// SetBytesReturned sets the BytesReturned field's value.
23058func (s *Stats) SetBytesReturned(v int64) *Stats {
23059	s.BytesReturned = &v
23060	return s
23061}
23062
23063// SetBytesScanned sets the BytesScanned field's value.
23064func (s *Stats) SetBytesScanned(v int64) *Stats {
23065	s.BytesScanned = &v
23066	return s
23067}
23068
23069type StatsEvent struct {
23070	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
23071
23072	// The Stats event details.
23073	Details *Stats `locationName:"Details" type:"structure"`
23074}
23075
23076// String returns the string representation
23077func (s StatsEvent) String() string {
23078	return awsutil.Prettify(s)
23079}
23080
23081// GoString returns the string representation
23082func (s StatsEvent) GoString() string {
23083	return s.String()
23084}
23085
23086// SetDetails sets the Details field's value.
23087func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
23088	s.Details = v
23089	return s
23090}
23091
23092// The StatsEvent is and event in the SelectObjectContentEventStream group of events.
23093func (s *StatsEvent) eventSelectObjectContentEventStream() {}
23094
23095// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
23096// This method is only used internally within the SDK's EventStream handling.
23097func (s *StatsEvent) UnmarshalEvent(
23098	payloadUnmarshaler protocol.PayloadUnmarshaler,
23099	msg eventstream.Message,
23100) error {
23101	if err := payloadUnmarshaler.UnmarshalPayload(
23102		bytes.NewReader(msg.Payload), s,
23103	); err != nil {
23104		return err
23105	}
23106	return nil
23107}
23108
23109type StorageClassAnalysis struct {
23110	_ struct{} `type:"structure"`
23111
23112	// A container used to describe how data related to the storage class analysis
23113	// should be exported.
23114	DataExport *StorageClassAnalysisDataExport `type:"structure"`
23115}
23116
23117// String returns the string representation
23118func (s StorageClassAnalysis) String() string {
23119	return awsutil.Prettify(s)
23120}
23121
23122// GoString returns the string representation
23123func (s StorageClassAnalysis) GoString() string {
23124	return s.String()
23125}
23126
23127// Validate inspects the fields of the type to determine if they are valid.
23128func (s *StorageClassAnalysis) Validate() error {
23129	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
23130	if s.DataExport != nil {
23131		if err := s.DataExport.Validate(); err != nil {
23132			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
23133		}
23134	}
23135
23136	if invalidParams.Len() > 0 {
23137		return invalidParams
23138	}
23139	return nil
23140}
23141
23142// SetDataExport sets the DataExport field's value.
23143func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
23144	s.DataExport = v
23145	return s
23146}
23147
23148type StorageClassAnalysisDataExport struct {
23149	_ struct{} `type:"structure"`
23150
23151	// The place to store the data for an analysis.
23152	//
23153	// Destination is a required field
23154	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
23155
23156	// The version of the output schema to use when exporting data. Must be V_1.
23157	//
23158	// OutputSchemaVersion is a required field
23159	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
23160}
23161
23162// String returns the string representation
23163func (s StorageClassAnalysisDataExport) String() string {
23164	return awsutil.Prettify(s)
23165}
23166
23167// GoString returns the string representation
23168func (s StorageClassAnalysisDataExport) GoString() string {
23169	return s.String()
23170}
23171
23172// Validate inspects the fields of the type to determine if they are valid.
23173func (s *StorageClassAnalysisDataExport) Validate() error {
23174	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
23175	if s.Destination == nil {
23176		invalidParams.Add(request.NewErrParamRequired("Destination"))
23177	}
23178	if s.OutputSchemaVersion == nil {
23179		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
23180	}
23181	if s.Destination != nil {
23182		if err := s.Destination.Validate(); err != nil {
23183			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
23184		}
23185	}
23186
23187	if invalidParams.Len() > 0 {
23188		return invalidParams
23189	}
23190	return nil
23191}
23192
23193// SetDestination sets the Destination field's value.
23194func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
23195	s.Destination = v
23196	return s
23197}
23198
23199// SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
23200func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
23201	s.OutputSchemaVersion = &v
23202	return s
23203}
23204
23205type Tag struct {
23206	_ struct{} `type:"structure"`
23207
23208	// Name of the tag.
23209	//
23210	// Key is a required field
23211	Key *string `min:"1" type:"string" required:"true"`
23212
23213	// Value of the tag.
23214	//
23215	// Value is a required field
23216	Value *string `type:"string" required:"true"`
23217}
23218
23219// String returns the string representation
23220func (s Tag) String() string {
23221	return awsutil.Prettify(s)
23222}
23223
23224// GoString returns the string representation
23225func (s Tag) GoString() string {
23226	return s.String()
23227}
23228
23229// Validate inspects the fields of the type to determine if they are valid.
23230func (s *Tag) Validate() error {
23231	invalidParams := request.ErrInvalidParams{Context: "Tag"}
23232	if s.Key == nil {
23233		invalidParams.Add(request.NewErrParamRequired("Key"))
23234	}
23235	if s.Key != nil && len(*s.Key) < 1 {
23236		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
23237	}
23238	if s.Value == nil {
23239		invalidParams.Add(request.NewErrParamRequired("Value"))
23240	}
23241
23242	if invalidParams.Len() > 0 {
23243		return invalidParams
23244	}
23245	return nil
23246}
23247
23248// SetKey sets the Key field's value.
23249func (s *Tag) SetKey(v string) *Tag {
23250	s.Key = &v
23251	return s
23252}
23253
23254// SetValue sets the Value field's value.
23255func (s *Tag) SetValue(v string) *Tag {
23256	s.Value = &v
23257	return s
23258}
23259
23260type Tagging struct {
23261	_ struct{} `type:"structure"`
23262
23263	// TagSet is a required field
23264	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
23265}
23266
23267// String returns the string representation
23268func (s Tagging) String() string {
23269	return awsutil.Prettify(s)
23270}
23271
23272// GoString returns the string representation
23273func (s Tagging) GoString() string {
23274	return s.String()
23275}
23276
23277// Validate inspects the fields of the type to determine if they are valid.
23278func (s *Tagging) Validate() error {
23279	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
23280	if s.TagSet == nil {
23281		invalidParams.Add(request.NewErrParamRequired("TagSet"))
23282	}
23283	if s.TagSet != nil {
23284		for i, v := range s.TagSet {
23285			if v == nil {
23286				continue
23287			}
23288			if err := v.Validate(); err != nil {
23289				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
23290			}
23291		}
23292	}
23293
23294	if invalidParams.Len() > 0 {
23295		return invalidParams
23296	}
23297	return nil
23298}
23299
23300// SetTagSet sets the TagSet field's value.
23301func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
23302	s.TagSet = v
23303	return s
23304}
23305
23306type TargetGrant struct {
23307	_ struct{} `type:"structure"`
23308
23309	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
23310
23311	// Logging permissions assigned to the Grantee for the bucket.
23312	Permission *string `type:"string" enum:"BucketLogsPermission"`
23313}
23314
23315// String returns the string representation
23316func (s TargetGrant) String() string {
23317	return awsutil.Prettify(s)
23318}
23319
23320// GoString returns the string representation
23321func (s TargetGrant) GoString() string {
23322	return s.String()
23323}
23324
23325// Validate inspects the fields of the type to determine if they are valid.
23326func (s *TargetGrant) Validate() error {
23327	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
23328	if s.Grantee != nil {
23329		if err := s.Grantee.Validate(); err != nil {
23330			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
23331		}
23332	}
23333
23334	if invalidParams.Len() > 0 {
23335		return invalidParams
23336	}
23337	return nil
23338}
23339
23340// SetGrantee sets the Grantee field's value.
23341func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
23342	s.Grantee = v
23343	return s
23344}
23345
23346// SetPermission sets the Permission field's value.
23347func (s *TargetGrant) SetPermission(v string) *TargetGrant {
23348	s.Permission = &v
23349	return s
23350}
23351
23352// A container for specifying the configuration for publication of messages
23353// to an Amazon Simple Notification Service (Amazon SNS) topic.when Amazon S3
23354// detects specified events.
23355type TopicConfiguration struct {
23356	_ struct{} `type:"structure"`
23357
23358	// Events is a required field
23359	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
23360
23361	// A container for object key name filtering rules. For information about key
23362	// name filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
23363	// in the Amazon Simple Storage Service Developer Guide.
23364	Filter *NotificationConfigurationFilter `type:"structure"`
23365
23366	// An optional unique identifier for configurations in a notification configuration.
23367	// If you don't provide one, Amazon S3 will assign an ID.
23368	Id *string `type:"string"`
23369
23370	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
23371	// will publish a message when it detects events of the specified type.
23372	//
23373	// TopicArn is a required field
23374	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
23375}
23376
23377// String returns the string representation
23378func (s TopicConfiguration) String() string {
23379	return awsutil.Prettify(s)
23380}
23381
23382// GoString returns the string representation
23383func (s TopicConfiguration) GoString() string {
23384	return s.String()
23385}
23386
23387// Validate inspects the fields of the type to determine if they are valid.
23388func (s *TopicConfiguration) Validate() error {
23389	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
23390	if s.Events == nil {
23391		invalidParams.Add(request.NewErrParamRequired("Events"))
23392	}
23393	if s.TopicArn == nil {
23394		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
23395	}
23396
23397	if invalidParams.Len() > 0 {
23398		return invalidParams
23399	}
23400	return nil
23401}
23402
23403// SetEvents sets the Events field's value.
23404func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
23405	s.Events = v
23406	return s
23407}
23408
23409// SetFilter sets the Filter field's value.
23410func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
23411	s.Filter = v
23412	return s
23413}
23414
23415// SetId sets the Id field's value.
23416func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
23417	s.Id = &v
23418	return s
23419}
23420
23421// SetTopicArn sets the TopicArn field's value.
23422func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
23423	s.TopicArn = &v
23424	return s
23425}
23426
23427type TopicConfigurationDeprecated struct {
23428	_ struct{} `type:"structure"`
23429
23430	// Bucket event for which to send notifications.
23431	//
23432	// Deprecated: Event has been deprecated
23433	Event *string `deprecated:"true" type:"string" enum:"Event"`
23434
23435	Events []*string `locationName:"Event" type:"list" flattened:"true"`
23436
23437	// An optional unique identifier for configurations in a notification configuration.
23438	// If you don't provide one, Amazon S3 will assign an ID.
23439	Id *string `type:"string"`
23440
23441	// Amazon SNS topic to which Amazon S3 will publish a message to report the
23442	// specified events for the bucket.
23443	Topic *string `type:"string"`
23444}
23445
23446// String returns the string representation
23447func (s TopicConfigurationDeprecated) String() string {
23448	return awsutil.Prettify(s)
23449}
23450
23451// GoString returns the string representation
23452func (s TopicConfigurationDeprecated) GoString() string {
23453	return s.String()
23454}
23455
23456// SetEvent sets the Event field's value.
23457func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
23458	s.Event = &v
23459	return s
23460}
23461
23462// SetEvents sets the Events field's value.
23463func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
23464	s.Events = v
23465	return s
23466}
23467
23468// SetId sets the Id field's value.
23469func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
23470	s.Id = &v
23471	return s
23472}
23473
23474// SetTopic sets the Topic field's value.
23475func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
23476	s.Topic = &v
23477	return s
23478}
23479
23480type Transition struct {
23481	_ struct{} `type:"structure"`
23482
23483	// Indicates at what date the object is to be moved or deleted. Should be in
23484	// GMT ISO 8601 Format.
23485	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
23486
23487	// Indicates the lifetime, in days, of the objects that are subject to the rule.
23488	// The value must be a non-zero positive integer.
23489	Days *int64 `type:"integer"`
23490
23491	// The class of storage used to store the object.
23492	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
23493}
23494
23495// String returns the string representation
23496func (s Transition) String() string {
23497	return awsutil.Prettify(s)
23498}
23499
23500// GoString returns the string representation
23501func (s Transition) GoString() string {
23502	return s.String()
23503}
23504
23505// SetDate sets the Date field's value.
23506func (s *Transition) SetDate(v time.Time) *Transition {
23507	s.Date = &v
23508	return s
23509}
23510
23511// SetDays sets the Days field's value.
23512func (s *Transition) SetDays(v int64) *Transition {
23513	s.Days = &v
23514	return s
23515}
23516
23517// SetStorageClass sets the StorageClass field's value.
23518func (s *Transition) SetStorageClass(v string) *Transition {
23519	s.StorageClass = &v
23520	return s
23521}
23522
23523type UploadPartCopyInput struct {
23524	_ struct{} `type:"structure"`
23525
23526	// Bucket is a required field
23527	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23528
23529	// The name of the source bucket and key name of the source object, separated
23530	// by a slash (/). Must be URL-encoded.
23531	//
23532	// CopySource is a required field
23533	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
23534
23535	// Copies the object if its entity tag (ETag) matches the specified tag.
23536	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
23537
23538	// Copies the object if it has been modified since the specified time.
23539	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
23540
23541	// Copies the object if its entity tag (ETag) is different than the specified
23542	// ETag.
23543	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
23544
23545	// Copies the object if it hasn't been modified since the specified time.
23546	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
23547
23548	// The range of bytes to copy from the source object. The range value must use
23549	// the form bytes=first-last, where the first and last are the zero-based byte
23550	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
23551	// first ten bytes of the source. You can copy a range only if the source object
23552	// is greater than 5 MB.
23553	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
23554
23555	// Specifies the algorithm to use when decrypting the source object (e.g., AES256).
23556	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
23557
23558	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
23559	// the source object. The encryption key provided in this header must be one
23560	// that was used when the source object was created.
23561	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
23562
23563	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
23564	// Amazon S3 uses this header for a message integrity check to ensure the encryption
23565	// key was transmitted without error.
23566	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
23567
23568	// Key is a required field
23569	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
23570
23571	// Part number of part being copied. This is a positive integer between 1 and
23572	// 10,000.
23573	//
23574	// PartNumber is a required field
23575	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
23576
23577	// Confirms that the requester knows that she or he will be charged for the
23578	// request. Bucket owners need not specify this parameter in their requests.
23579	// Documentation on downloading objects from requester pays buckets can be found
23580	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
23581	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
23582
23583	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
23584	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
23585
23586	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
23587	// data. This value is used to store the object and then it is discarded; Amazon
23588	// does not store the encryption key. The key must be appropriate for use with
23589	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
23590	// header. This must be the same encryption key specified in the initiate multipart
23591	// upload request.
23592	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
23593
23594	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
23595	// Amazon S3 uses this header for a message integrity check to ensure the encryption
23596	// key was transmitted without error.
23597	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
23598
23599	// Upload ID identifying the multipart upload whose part is being copied.
23600	//
23601	// UploadId is a required field
23602	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
23603}
23604
23605// String returns the string representation
23606func (s UploadPartCopyInput) String() string {
23607	return awsutil.Prettify(s)
23608}
23609
23610// GoString returns the string representation
23611func (s UploadPartCopyInput) GoString() string {
23612	return s.String()
23613}
23614
23615// Validate inspects the fields of the type to determine if they are valid.
23616func (s *UploadPartCopyInput) Validate() error {
23617	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
23618	if s.Bucket == nil {
23619		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23620	}
23621	if s.Bucket != nil && len(*s.Bucket) < 1 {
23622		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23623	}
23624	if s.CopySource == nil {
23625		invalidParams.Add(request.NewErrParamRequired("CopySource"))
23626	}
23627	if s.Key == nil {
23628		invalidParams.Add(request.NewErrParamRequired("Key"))
23629	}
23630	if s.Key != nil && len(*s.Key) < 1 {
23631		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
23632	}
23633	if s.PartNumber == nil {
23634		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
23635	}
23636	if s.UploadId == nil {
23637		invalidParams.Add(request.NewErrParamRequired("UploadId"))
23638	}
23639
23640	if invalidParams.Len() > 0 {
23641		return invalidParams
23642	}
23643	return nil
23644}
23645
23646// SetBucket sets the Bucket field's value.
23647func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
23648	s.Bucket = &v
23649	return s
23650}
23651
23652func (s *UploadPartCopyInput) getBucket() (v string) {
23653	if s.Bucket == nil {
23654		return v
23655	}
23656	return *s.Bucket
23657}
23658
23659// SetCopySource sets the CopySource field's value.
23660func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
23661	s.CopySource = &v
23662	return s
23663}
23664
23665// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
23666func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
23667	s.CopySourceIfMatch = &v
23668	return s
23669}
23670
23671// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
23672func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
23673	s.CopySourceIfModifiedSince = &v
23674	return s
23675}
23676
23677// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
23678func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
23679	s.CopySourceIfNoneMatch = &v
23680	return s
23681}
23682
23683// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
23684func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
23685	s.CopySourceIfUnmodifiedSince = &v
23686	return s
23687}
23688
23689// SetCopySourceRange sets the CopySourceRange field's value.
23690func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
23691	s.CopySourceRange = &v
23692	return s
23693}
23694
23695// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
23696func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
23697	s.CopySourceSSECustomerAlgorithm = &v
23698	return s
23699}
23700
23701// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
23702func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
23703	s.CopySourceSSECustomerKey = &v
23704	return s
23705}
23706
23707func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
23708	if s.CopySourceSSECustomerKey == nil {
23709		return v
23710	}
23711	return *s.CopySourceSSECustomerKey
23712}
23713
23714// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
23715func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
23716	s.CopySourceSSECustomerKeyMD5 = &v
23717	return s
23718}
23719
23720// SetKey sets the Key field's value.
23721func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
23722	s.Key = &v
23723	return s
23724}
23725
23726// SetPartNumber sets the PartNumber field's value.
23727func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
23728	s.PartNumber = &v
23729	return s
23730}
23731
23732// SetRequestPayer sets the RequestPayer field's value.
23733func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
23734	s.RequestPayer = &v
23735	return s
23736}
23737
23738// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
23739func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
23740	s.SSECustomerAlgorithm = &v
23741	return s
23742}
23743
23744// SetSSECustomerKey sets the SSECustomerKey field's value.
23745func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
23746	s.SSECustomerKey = &v
23747	return s
23748}
23749
23750func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
23751	if s.SSECustomerKey == nil {
23752		return v
23753	}
23754	return *s.SSECustomerKey
23755}
23756
23757// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
23758func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
23759	s.SSECustomerKeyMD5 = &v
23760	return s
23761}
23762
23763// SetUploadId sets the UploadId field's value.
23764func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
23765	s.UploadId = &v
23766	return s
23767}
23768
23769type UploadPartCopyOutput struct {
23770	_ struct{} `type:"structure" payload:"CopyPartResult"`
23771
23772	CopyPartResult *CopyPartResult `type:"structure"`
23773
23774	// The version of the source object that was copied, if you have enabled versioning
23775	// on the source bucket.
23776	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
23777
23778	// If present, indicates that the requester was successfully charged for the
23779	// request.
23780	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
23781
23782	// If server-side encryption with a customer-provided encryption key was requested,
23783	// the response will include this header confirming the encryption algorithm
23784	// used.
23785	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
23786
23787	// If server-side encryption with a customer-provided encryption key was requested,
23788	// the response will include this header to provide round trip message integrity
23789	// verification of the customer-provided encryption key.
23790	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
23791
23792	// If present, specifies the ID of the AWS Key Management Service (KMS) master
23793	// encryption key that was used for the object.
23794	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
23795
23796	// The Server-side encryption algorithm used when storing this object in S3
23797	// (e.g., AES256, aws:kms).
23798	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
23799}
23800
23801// String returns the string representation
23802func (s UploadPartCopyOutput) String() string {
23803	return awsutil.Prettify(s)
23804}
23805
23806// GoString returns the string representation
23807func (s UploadPartCopyOutput) GoString() string {
23808	return s.String()
23809}
23810
23811// SetCopyPartResult sets the CopyPartResult field's value.
23812func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
23813	s.CopyPartResult = v
23814	return s
23815}
23816
23817// SetCopySourceVersionId sets the CopySourceVersionId field's value.
23818func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
23819	s.CopySourceVersionId = &v
23820	return s
23821}
23822
23823// SetRequestCharged sets the RequestCharged field's value.
23824func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
23825	s.RequestCharged = &v
23826	return s
23827}
23828
23829// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
23830func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
23831	s.SSECustomerAlgorithm = &v
23832	return s
23833}
23834
23835// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
23836func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
23837	s.SSECustomerKeyMD5 = &v
23838	return s
23839}
23840
23841// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
23842func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
23843	s.SSEKMSKeyId = &v
23844	return s
23845}
23846
23847// SetServerSideEncryption sets the ServerSideEncryption field's value.
23848func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
23849	s.ServerSideEncryption = &v
23850	return s
23851}
23852
23853type UploadPartInput struct {
23854	_ struct{} `type:"structure" payload:"Body"`
23855
23856	// Object data.
23857	Body io.ReadSeeker `type:"blob"`
23858
23859	// Name of the bucket to which the multipart upload was initiated.
23860	//
23861	// Bucket is a required field
23862	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23863
23864	// Size of the body in bytes. This parameter is useful when the size of the
23865	// body cannot be determined automatically.
23866	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
23867
23868	// The base64-encoded 128-bit MD5 digest of the part data.
23869	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
23870
23871	// Object key for which the multipart upload was initiated.
23872	//
23873	// Key is a required field
23874	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
23875
23876	// Part number of part being uploaded. This is a positive integer between 1
23877	// and 10,000.
23878	//
23879	// PartNumber is a required field
23880	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
23881
23882	// Confirms that the requester knows that she or he will be charged for the
23883	// request. Bucket owners need not specify this parameter in their requests.
23884	// Documentation on downloading objects from requester pays buckets can be found
23885	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
23886	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
23887
23888	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
23889	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
23890
23891	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
23892	// data. This value is used to store the object and then it is discarded; Amazon
23893	// does not store the encryption key. The key must be appropriate for use with
23894	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
23895	// header. This must be the same encryption key specified in the initiate multipart
23896	// upload request.
23897	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
23898
23899	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
23900	// Amazon S3 uses this header for a message integrity check to ensure the encryption
23901	// key was transmitted without error.
23902	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
23903
23904	// Upload ID identifying the multipart upload whose part is being uploaded.
23905	//
23906	// UploadId is a required field
23907	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
23908}
23909
23910// String returns the string representation
23911func (s UploadPartInput) String() string {
23912	return awsutil.Prettify(s)
23913}
23914
23915// GoString returns the string representation
23916func (s UploadPartInput) GoString() string {
23917	return s.String()
23918}
23919
23920// Validate inspects the fields of the type to determine if they are valid.
23921func (s *UploadPartInput) Validate() error {
23922	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
23923	if s.Bucket == nil {
23924		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23925	}
23926	if s.Bucket != nil && len(*s.Bucket) < 1 {
23927		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23928	}
23929	if s.Key == nil {
23930		invalidParams.Add(request.NewErrParamRequired("Key"))
23931	}
23932	if s.Key != nil && len(*s.Key) < 1 {
23933		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
23934	}
23935	if s.PartNumber == nil {
23936		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
23937	}
23938	if s.UploadId == nil {
23939		invalidParams.Add(request.NewErrParamRequired("UploadId"))
23940	}
23941
23942	if invalidParams.Len() > 0 {
23943		return invalidParams
23944	}
23945	return nil
23946}
23947
23948// SetBody sets the Body field's value.
23949func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
23950	s.Body = v
23951	return s
23952}
23953
23954// SetBucket sets the Bucket field's value.
23955func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
23956	s.Bucket = &v
23957	return s
23958}
23959
23960func (s *UploadPartInput) getBucket() (v string) {
23961	if s.Bucket == nil {
23962		return v
23963	}
23964	return *s.Bucket
23965}
23966
23967// SetContentLength sets the ContentLength field's value.
23968func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
23969	s.ContentLength = &v
23970	return s
23971}
23972
23973// SetContentMD5 sets the ContentMD5 field's value.
23974func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
23975	s.ContentMD5 = &v
23976	return s
23977}
23978
23979// SetKey sets the Key field's value.
23980func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
23981	s.Key = &v
23982	return s
23983}
23984
23985// SetPartNumber sets the PartNumber field's value.
23986func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
23987	s.PartNumber = &v
23988	return s
23989}
23990
23991// SetRequestPayer sets the RequestPayer field's value.
23992func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
23993	s.RequestPayer = &v
23994	return s
23995}
23996
23997// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
23998func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
23999	s.SSECustomerAlgorithm = &v
24000	return s
24001}
24002
24003// SetSSECustomerKey sets the SSECustomerKey field's value.
24004func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
24005	s.SSECustomerKey = &v
24006	return s
24007}
24008
24009func (s *UploadPartInput) getSSECustomerKey() (v string) {
24010	if s.SSECustomerKey == nil {
24011		return v
24012	}
24013	return *s.SSECustomerKey
24014}
24015
24016// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
24017func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
24018	s.SSECustomerKeyMD5 = &v
24019	return s
24020}
24021
24022// SetUploadId sets the UploadId field's value.
24023func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
24024	s.UploadId = &v
24025	return s
24026}
24027
24028type UploadPartOutput struct {
24029	_ struct{} `type:"structure"`
24030
24031	// Entity tag for the uploaded object.
24032	ETag *string `location:"header" locationName:"ETag" type:"string"`
24033
24034	// If present, indicates that the requester was successfully charged for the
24035	// request.
24036	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
24037
24038	// If server-side encryption with a customer-provided encryption key was requested,
24039	// the response will include this header confirming the encryption algorithm
24040	// used.
24041	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
24042
24043	// If server-side encryption with a customer-provided encryption key was requested,
24044	// the response will include this header to provide round trip message integrity
24045	// verification of the customer-provided encryption key.
24046	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
24047
24048	// If present, specifies the ID of the AWS Key Management Service (KMS) master
24049	// encryption key that was used for the object.
24050	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
24051
24052	// The Server-side encryption algorithm used when storing this object in S3
24053	// (e.g., AES256, aws:kms).
24054	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
24055}
24056
24057// String returns the string representation
24058func (s UploadPartOutput) String() string {
24059	return awsutil.Prettify(s)
24060}
24061
24062// GoString returns the string representation
24063func (s UploadPartOutput) GoString() string {
24064	return s.String()
24065}
24066
24067// SetETag sets the ETag field's value.
24068func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
24069	s.ETag = &v
24070	return s
24071}
24072
24073// SetRequestCharged sets the RequestCharged field's value.
24074func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
24075	s.RequestCharged = &v
24076	return s
24077}
24078
24079// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
24080func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
24081	s.SSECustomerAlgorithm = &v
24082	return s
24083}
24084
24085// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
24086func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
24087	s.SSECustomerKeyMD5 = &v
24088	return s
24089}
24090
24091// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
24092func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
24093	s.SSEKMSKeyId = &v
24094	return s
24095}
24096
24097// SetServerSideEncryption sets the ServerSideEncryption field's value.
24098func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
24099	s.ServerSideEncryption = &v
24100	return s
24101}
24102
24103type VersioningConfiguration struct {
24104	_ struct{} `type:"structure"`
24105
24106	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
24107	// This element is only returned if the bucket has been configured with MFA
24108	// delete. If the bucket has never been so configured, this element is not returned.
24109	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
24110
24111	// The versioning state of the bucket.
24112	Status *string `type:"string" enum:"BucketVersioningStatus"`
24113}
24114
24115// String returns the string representation
24116func (s VersioningConfiguration) String() string {
24117	return awsutil.Prettify(s)
24118}
24119
24120// GoString returns the string representation
24121func (s VersioningConfiguration) GoString() string {
24122	return s.String()
24123}
24124
24125// SetMFADelete sets the MFADelete field's value.
24126func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
24127	s.MFADelete = &v
24128	return s
24129}
24130
24131// SetStatus sets the Status field's value.
24132func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
24133	s.Status = &v
24134	return s
24135}
24136
24137type WebsiteConfiguration struct {
24138	_ struct{} `type:"structure"`
24139
24140	ErrorDocument *ErrorDocument `type:"structure"`
24141
24142	IndexDocument *IndexDocument `type:"structure"`
24143
24144	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
24145
24146	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
24147}
24148
24149// String returns the string representation
24150func (s WebsiteConfiguration) String() string {
24151	return awsutil.Prettify(s)
24152}
24153
24154// GoString returns the string representation
24155func (s WebsiteConfiguration) GoString() string {
24156	return s.String()
24157}
24158
24159// Validate inspects the fields of the type to determine if they are valid.
24160func (s *WebsiteConfiguration) Validate() error {
24161	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
24162	if s.ErrorDocument != nil {
24163		if err := s.ErrorDocument.Validate(); err != nil {
24164			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
24165		}
24166	}
24167	if s.IndexDocument != nil {
24168		if err := s.IndexDocument.Validate(); err != nil {
24169			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
24170		}
24171	}
24172	if s.RedirectAllRequestsTo != nil {
24173		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
24174			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
24175		}
24176	}
24177	if s.RoutingRules != nil {
24178		for i, v := range s.RoutingRules {
24179			if v == nil {
24180				continue
24181			}
24182			if err := v.Validate(); err != nil {
24183				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
24184			}
24185		}
24186	}
24187
24188	if invalidParams.Len() > 0 {
24189		return invalidParams
24190	}
24191	return nil
24192}
24193
24194// SetErrorDocument sets the ErrorDocument field's value.
24195func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
24196	s.ErrorDocument = v
24197	return s
24198}
24199
24200// SetIndexDocument sets the IndexDocument field's value.
24201func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
24202	s.IndexDocument = v
24203	return s
24204}
24205
24206// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
24207func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
24208	s.RedirectAllRequestsTo = v
24209	return s
24210}
24211
24212// SetRoutingRules sets the RoutingRules field's value.
24213func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
24214	s.RoutingRules = v
24215	return s
24216}
24217
24218const (
24219	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
24220	AnalyticsS3ExportFileFormatCsv = "CSV"
24221)
24222
24223const (
24224	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
24225	BucketAccelerateStatusEnabled = "Enabled"
24226
24227	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
24228	BucketAccelerateStatusSuspended = "Suspended"
24229)
24230
24231const (
24232	// BucketCannedACLPrivate is a BucketCannedACL enum value
24233	BucketCannedACLPrivate = "private"
24234
24235	// BucketCannedACLPublicRead is a BucketCannedACL enum value
24236	BucketCannedACLPublicRead = "public-read"
24237
24238	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
24239	BucketCannedACLPublicReadWrite = "public-read-write"
24240
24241	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
24242	BucketCannedACLAuthenticatedRead = "authenticated-read"
24243)
24244
24245const (
24246	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
24247	BucketLocationConstraintEu = "EU"
24248
24249	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
24250	BucketLocationConstraintEuWest1 = "eu-west-1"
24251
24252	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
24253	BucketLocationConstraintUsWest1 = "us-west-1"
24254
24255	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
24256	BucketLocationConstraintUsWest2 = "us-west-2"
24257
24258	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
24259	BucketLocationConstraintApSouth1 = "ap-south-1"
24260
24261	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
24262	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
24263
24264	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
24265	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
24266
24267	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
24268	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
24269
24270	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
24271	BucketLocationConstraintSaEast1 = "sa-east-1"
24272
24273	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
24274	BucketLocationConstraintCnNorth1 = "cn-north-1"
24275
24276	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
24277	BucketLocationConstraintEuCentral1 = "eu-central-1"
24278)
24279
24280const (
24281	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
24282	BucketLogsPermissionFullControl = "FULL_CONTROL"
24283
24284	// BucketLogsPermissionRead is a BucketLogsPermission enum value
24285	BucketLogsPermissionRead = "READ"
24286
24287	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
24288	BucketLogsPermissionWrite = "WRITE"
24289)
24290
24291const (
24292	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
24293	BucketVersioningStatusEnabled = "Enabled"
24294
24295	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
24296	BucketVersioningStatusSuspended = "Suspended"
24297)
24298
24299const (
24300	// CompressionTypeNone is a CompressionType enum value
24301	CompressionTypeNone = "NONE"
24302
24303	// CompressionTypeGzip is a CompressionType enum value
24304	CompressionTypeGzip = "GZIP"
24305
24306	// CompressionTypeBzip2 is a CompressionType enum value
24307	CompressionTypeBzip2 = "BZIP2"
24308)
24309
24310const (
24311	// DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value
24312	DeleteMarkerReplicationStatusEnabled = "Enabled"
24313
24314	// DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value
24315	DeleteMarkerReplicationStatusDisabled = "Disabled"
24316)
24317
24318// Requests Amazon S3 to encode the object keys in the response and specifies
24319// the encoding method to use. An object key may contain any Unicode character;
24320// however, XML 1.0 parser cannot parse some characters, such as characters
24321// with an ASCII value from 0 to 10. For characters that are not supported in
24322// XML 1.0, you can add this parameter to request that Amazon S3 encode the
24323// keys in the response.
24324const (
24325	// EncodingTypeUrl is a EncodingType enum value
24326	EncodingTypeUrl = "url"
24327)
24328
24329// The bucket event for which to send notifications.
24330const (
24331	// EventS3ReducedRedundancyLostObject is a Event enum value
24332	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
24333
24334	// EventS3ObjectCreated is a Event enum value
24335	EventS3ObjectCreated = "s3:ObjectCreated:*"
24336
24337	// EventS3ObjectCreatedPut is a Event enum value
24338	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
24339
24340	// EventS3ObjectCreatedPost is a Event enum value
24341	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
24342
24343	// EventS3ObjectCreatedCopy is a Event enum value
24344	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
24345
24346	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
24347	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
24348
24349	// EventS3ObjectRemoved is a Event enum value
24350	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
24351
24352	// EventS3ObjectRemovedDelete is a Event enum value
24353	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
24354
24355	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
24356	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
24357
24358	// EventS3ObjectRestorePost is a Event enum value
24359	EventS3ObjectRestorePost = "s3:ObjectRestore:Post"
24360
24361	// EventS3ObjectRestoreCompleted is a Event enum value
24362	EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed"
24363)
24364
24365const (
24366	// ExpirationStatusEnabled is a ExpirationStatus enum value
24367	ExpirationStatusEnabled = "Enabled"
24368
24369	// ExpirationStatusDisabled is a ExpirationStatus enum value
24370	ExpirationStatusDisabled = "Disabled"
24371)
24372
24373const (
24374	// ExpressionTypeSql is a ExpressionType enum value
24375	ExpressionTypeSql = "SQL"
24376)
24377
24378const (
24379	// FileHeaderInfoUse is a FileHeaderInfo enum value
24380	FileHeaderInfoUse = "USE"
24381
24382	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
24383	FileHeaderInfoIgnore = "IGNORE"
24384
24385	// FileHeaderInfoNone is a FileHeaderInfo enum value
24386	FileHeaderInfoNone = "NONE"
24387)
24388
24389const (
24390	// FilterRuleNamePrefix is a FilterRuleName enum value
24391	FilterRuleNamePrefix = "prefix"
24392
24393	// FilterRuleNameSuffix is a FilterRuleName enum value
24394	FilterRuleNameSuffix = "suffix"
24395)
24396
24397const (
24398	// InventoryFormatCsv is a InventoryFormat enum value
24399	InventoryFormatCsv = "CSV"
24400
24401	// InventoryFormatOrc is a InventoryFormat enum value
24402	InventoryFormatOrc = "ORC"
24403
24404	// InventoryFormatParquet is a InventoryFormat enum value
24405	InventoryFormatParquet = "Parquet"
24406)
24407
24408const (
24409	// InventoryFrequencyDaily is a InventoryFrequency enum value
24410	InventoryFrequencyDaily = "Daily"
24411
24412	// InventoryFrequencyWeekly is a InventoryFrequency enum value
24413	InventoryFrequencyWeekly = "Weekly"
24414)
24415
24416const (
24417	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
24418	InventoryIncludedObjectVersionsAll = "All"
24419
24420	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
24421	InventoryIncludedObjectVersionsCurrent = "Current"
24422)
24423
24424const (
24425	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
24426	InventoryOptionalFieldSize = "Size"
24427
24428	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
24429	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
24430
24431	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
24432	InventoryOptionalFieldStorageClass = "StorageClass"
24433
24434	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
24435	InventoryOptionalFieldEtag = "ETag"
24436
24437	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
24438	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
24439
24440	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
24441	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
24442
24443	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
24444	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
24445
24446	// InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value
24447	InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate"
24448
24449	// InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value
24450	InventoryOptionalFieldObjectLockMode = "ObjectLockMode"
24451
24452	// InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value
24453	InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus"
24454)
24455
24456const (
24457	// JSONTypeDocument is a JSONType enum value
24458	JSONTypeDocument = "DOCUMENT"
24459
24460	// JSONTypeLines is a JSONType enum value
24461	JSONTypeLines = "LINES"
24462)
24463
24464const (
24465	// MFADeleteEnabled is a MFADelete enum value
24466	MFADeleteEnabled = "Enabled"
24467
24468	// MFADeleteDisabled is a MFADelete enum value
24469	MFADeleteDisabled = "Disabled"
24470)
24471
24472const (
24473	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
24474	MFADeleteStatusEnabled = "Enabled"
24475
24476	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
24477	MFADeleteStatusDisabled = "Disabled"
24478)
24479
24480const (
24481	// MetadataDirectiveCopy is a MetadataDirective enum value
24482	MetadataDirectiveCopy = "COPY"
24483
24484	// MetadataDirectiveReplace is a MetadataDirective enum value
24485	MetadataDirectiveReplace = "REPLACE"
24486)
24487
24488const (
24489	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
24490	ObjectCannedACLPrivate = "private"
24491
24492	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
24493	ObjectCannedACLPublicRead = "public-read"
24494
24495	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
24496	ObjectCannedACLPublicReadWrite = "public-read-write"
24497
24498	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
24499	ObjectCannedACLAuthenticatedRead = "authenticated-read"
24500
24501	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
24502	ObjectCannedACLAwsExecRead = "aws-exec-read"
24503
24504	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
24505	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
24506
24507	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
24508	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
24509)
24510
24511const (
24512	// ObjectLockEnabledEnabled is a ObjectLockEnabled enum value
24513	ObjectLockEnabledEnabled = "Enabled"
24514)
24515
24516const (
24517	// ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value
24518	ObjectLockLegalHoldStatusOn = "ON"
24519
24520	// ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value
24521	ObjectLockLegalHoldStatusOff = "OFF"
24522)
24523
24524const (
24525	// ObjectLockModeGovernance is a ObjectLockMode enum value
24526	ObjectLockModeGovernance = "GOVERNANCE"
24527
24528	// ObjectLockModeCompliance is a ObjectLockMode enum value
24529	ObjectLockModeCompliance = "COMPLIANCE"
24530)
24531
24532const (
24533	// ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value
24534	ObjectLockRetentionModeGovernance = "GOVERNANCE"
24535
24536	// ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value
24537	ObjectLockRetentionModeCompliance = "COMPLIANCE"
24538)
24539
24540const (
24541	// ObjectStorageClassStandard is a ObjectStorageClass enum value
24542	ObjectStorageClassStandard = "STANDARD"
24543
24544	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
24545	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
24546
24547	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
24548	ObjectStorageClassGlacier = "GLACIER"
24549
24550	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
24551	ObjectStorageClassStandardIa = "STANDARD_IA"
24552
24553	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
24554	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
24555
24556	// ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value
24557	ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
24558
24559	// ObjectStorageClassDeepArchive is a ObjectStorageClass enum value
24560	ObjectStorageClassDeepArchive = "DEEP_ARCHIVE"
24561)
24562
24563const (
24564	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
24565	ObjectVersionStorageClassStandard = "STANDARD"
24566)
24567
24568const (
24569	// OwnerOverrideDestination is a OwnerOverride enum value
24570	OwnerOverrideDestination = "Destination"
24571)
24572
24573const (
24574	// PayerRequester is a Payer enum value
24575	PayerRequester = "Requester"
24576
24577	// PayerBucketOwner is a Payer enum value
24578	PayerBucketOwner = "BucketOwner"
24579)
24580
24581const (
24582	// PermissionFullControl is a Permission enum value
24583	PermissionFullControl = "FULL_CONTROL"
24584
24585	// PermissionWrite is a Permission enum value
24586	PermissionWrite = "WRITE"
24587
24588	// PermissionWriteAcp is a Permission enum value
24589	PermissionWriteAcp = "WRITE_ACP"
24590
24591	// PermissionRead is a Permission enum value
24592	PermissionRead = "READ"
24593
24594	// PermissionReadAcp is a Permission enum value
24595	PermissionReadAcp = "READ_ACP"
24596)
24597
24598const (
24599	// ProtocolHttp is a Protocol enum value
24600	ProtocolHttp = "http"
24601
24602	// ProtocolHttps is a Protocol enum value
24603	ProtocolHttps = "https"
24604)
24605
24606const (
24607	// QuoteFieldsAlways is a QuoteFields enum value
24608	QuoteFieldsAlways = "ALWAYS"
24609
24610	// QuoteFieldsAsneeded is a QuoteFields enum value
24611	QuoteFieldsAsneeded = "ASNEEDED"
24612)
24613
24614const (
24615	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
24616	ReplicationRuleStatusEnabled = "Enabled"
24617
24618	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
24619	ReplicationRuleStatusDisabled = "Disabled"
24620)
24621
24622const (
24623	// ReplicationStatusComplete is a ReplicationStatus enum value
24624	ReplicationStatusComplete = "COMPLETE"
24625
24626	// ReplicationStatusPending is a ReplicationStatus enum value
24627	ReplicationStatusPending = "PENDING"
24628
24629	// ReplicationStatusFailed is a ReplicationStatus enum value
24630	ReplicationStatusFailed = "FAILED"
24631
24632	// ReplicationStatusReplica is a ReplicationStatus enum value
24633	ReplicationStatusReplica = "REPLICA"
24634)
24635
24636// If present, indicates that the requester was successfully charged for the
24637// request.
24638const (
24639	// RequestChargedRequester is a RequestCharged enum value
24640	RequestChargedRequester = "requester"
24641)
24642
24643// Confirms that the requester knows that she or he will be charged for the
24644// request. Bucket owners need not specify this parameter in their requests.
24645// Documentation on downloading objects from requester pays buckets can be found
24646// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
24647const (
24648	// RequestPayerRequester is a RequestPayer enum value
24649	RequestPayerRequester = "requester"
24650)
24651
24652const (
24653	// RestoreRequestTypeSelect is a RestoreRequestType enum value
24654	RestoreRequestTypeSelect = "SELECT"
24655)
24656
24657const (
24658	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
24659	ServerSideEncryptionAes256 = "AES256"
24660
24661	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
24662	ServerSideEncryptionAwsKms = "aws:kms"
24663)
24664
24665const (
24666	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
24667	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
24668
24669	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
24670	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
24671)
24672
24673const (
24674	// StorageClassStandard is a StorageClass enum value
24675	StorageClassStandard = "STANDARD"
24676
24677	// StorageClassReducedRedundancy is a StorageClass enum value
24678	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
24679
24680	// StorageClassStandardIa is a StorageClass enum value
24681	StorageClassStandardIa = "STANDARD_IA"
24682
24683	// StorageClassOnezoneIa is a StorageClass enum value
24684	StorageClassOnezoneIa = "ONEZONE_IA"
24685
24686	// StorageClassIntelligentTiering is a StorageClass enum value
24687	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"
24688
24689	// StorageClassGlacier is a StorageClass enum value
24690	StorageClassGlacier = "GLACIER"
24691
24692	// StorageClassDeepArchive is a StorageClass enum value
24693	StorageClassDeepArchive = "DEEP_ARCHIVE"
24694)
24695
24696const (
24697	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
24698	StorageClassAnalysisSchemaVersionV1 = "V_1"
24699)
24700
24701const (
24702	// TaggingDirectiveCopy is a TaggingDirective enum value
24703	TaggingDirectiveCopy = "COPY"
24704
24705	// TaggingDirectiveReplace is a TaggingDirective enum value
24706	TaggingDirectiveReplace = "REPLACE"
24707)
24708
24709const (
24710	// TierStandard is a Tier enum value
24711	TierStandard = "Standard"
24712
24713	// TierBulk is a Tier enum value
24714	TierBulk = "Bulk"
24715
24716	// TierExpedited is a Tier enum value
24717	TierExpedited = "Expedited"
24718)
24719
24720const (
24721	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
24722	TransitionStorageClassGlacier = "GLACIER"
24723
24724	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
24725	TransitionStorageClassStandardIa = "STANDARD_IA"
24726
24727	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
24728	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
24729
24730	// TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value
24731	TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
24732
24733	// TransitionStorageClassDeepArchive is a TransitionStorageClass enum value
24734	TransitionStorageClassDeepArchive = "DEEP_ARCHIVE"
24735)
24736
24737const (
24738	// TypeCanonicalUser is a Type enum value
24739	TypeCanonicalUser = "CanonicalUser"
24740
24741	// TypeAmazonCustomerByEmail is a Type enum value
24742	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
24743
24744	// TypeGroup is a Type enum value
24745	TypeGroup = "Group"
24746)
24747