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// successfuly.
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// successfuly.
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// successfuly.
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// successfuly.
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// successfuly.
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// successfuly.
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.Remove(restxml.UnmarshalHandler)
464	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
465	return
466}
467
468// DeleteBucket API operation for Amazon Simple Storage Service.
469//
470// Deletes the bucket. All objects (including all object versions and Delete
471// Markers) in the bucket must be deleted before the bucket itself can be deleted.
472//
473// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
474// with awserr.Error's Code and Message methods to get detailed information about
475// the error.
476//
477// See the AWS API reference guide for Amazon Simple Storage Service's
478// API operation DeleteBucket for usage and error information.
479// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
480func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
481	req, out := c.DeleteBucketRequest(input)
482	return out, req.Send()
483}
484
485// DeleteBucketWithContext is the same as DeleteBucket with the addition of
486// the ability to pass a context and additional request options.
487//
488// See DeleteBucket for details on how to use this API operation.
489//
490// The context must be non-nil and will be used for request cancellation. If
491// the context is nil a panic will occur. In the future the SDK may create
492// sub-contexts for http.Requests. See https://golang.org/pkg/context/
493// for more information on using Contexts.
494func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
495	req, out := c.DeleteBucketRequest(input)
496	req.SetContext(ctx)
497	req.ApplyOptions(opts...)
498	return out, req.Send()
499}
500
501const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
502
503// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
504// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
505// value will be populated with the request's response once the request completes
506// successfuly.
507//
508// Use "Send" method on the returned Request to send the API call to the service.
509// the "output" return value is not valid until after Send returns without error.
510//
511// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
512// API call, and error handling.
513//
514// This method is useful when you want to inject custom logic or configuration
515// into the SDK's request lifecycle. Such as custom headers, or retry logic.
516//
517//
518//    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
519//    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
520//
521//    err := req.Send()
522//    if err == nil { // resp is now filled
523//        fmt.Println(resp)
524//    }
525//
526// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
527func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
528	op := &request.Operation{
529		Name:       opDeleteBucketAnalyticsConfiguration,
530		HTTPMethod: "DELETE",
531		HTTPPath:   "/{Bucket}?analytics",
532	}
533
534	if input == nil {
535		input = &DeleteBucketAnalyticsConfigurationInput{}
536	}
537
538	output = &DeleteBucketAnalyticsConfigurationOutput{}
539	req = c.newRequest(op, input, output)
540	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
541	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
542	return
543}
544
545// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
546//
547// Deletes an analytics configuration for the bucket (specified by the analytics
548// configuration ID).
549//
550// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
551// with awserr.Error's Code and Message methods to get detailed information about
552// the error.
553//
554// See the AWS API reference guide for Amazon Simple Storage Service's
555// API operation DeleteBucketAnalyticsConfiguration for usage and error information.
556// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
557func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
558	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
559	return out, req.Send()
560}
561
562// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
563// the ability to pass a context and additional request options.
564//
565// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
566//
567// The context must be non-nil and will be used for request cancellation. If
568// the context is nil a panic will occur. In the future the SDK may create
569// sub-contexts for http.Requests. See https://golang.org/pkg/context/
570// for more information on using Contexts.
571func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
572	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
573	req.SetContext(ctx)
574	req.ApplyOptions(opts...)
575	return out, req.Send()
576}
577
578const opDeleteBucketCors = "DeleteBucketCors"
579
580// DeleteBucketCorsRequest generates a "aws/request.Request" representing the
581// client's request for the DeleteBucketCors operation. The "output" return
582// value will be populated with the request's response once the request completes
583// successfuly.
584//
585// Use "Send" method on the returned Request to send the API call to the service.
586// the "output" return value is not valid until after Send returns without error.
587//
588// See DeleteBucketCors for more information on using the DeleteBucketCors
589// API call, and error handling.
590//
591// This method is useful when you want to inject custom logic or configuration
592// into the SDK's request lifecycle. Such as custom headers, or retry logic.
593//
594//
595//    // Example sending a request using the DeleteBucketCorsRequest method.
596//    req, resp := client.DeleteBucketCorsRequest(params)
597//
598//    err := req.Send()
599//    if err == nil { // resp is now filled
600//        fmt.Println(resp)
601//    }
602//
603// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
604func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
605	op := &request.Operation{
606		Name:       opDeleteBucketCors,
607		HTTPMethod: "DELETE",
608		HTTPPath:   "/{Bucket}?cors",
609	}
610
611	if input == nil {
612		input = &DeleteBucketCorsInput{}
613	}
614
615	output = &DeleteBucketCorsOutput{}
616	req = c.newRequest(op, input, output)
617	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
618	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
619	return
620}
621
622// DeleteBucketCors API operation for Amazon Simple Storage Service.
623//
624// Deletes the cors configuration information set for the bucket.
625//
626// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
627// with awserr.Error's Code and Message methods to get detailed information about
628// the error.
629//
630// See the AWS API reference guide for Amazon Simple Storage Service's
631// API operation DeleteBucketCors for usage and error information.
632// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
633func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
634	req, out := c.DeleteBucketCorsRequest(input)
635	return out, req.Send()
636}
637
638// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
639// the ability to pass a context and additional request options.
640//
641// See DeleteBucketCors for details on how to use this API operation.
642//
643// The context must be non-nil and will be used for request cancellation. If
644// the context is nil a panic will occur. In the future the SDK may create
645// sub-contexts for http.Requests. See https://golang.org/pkg/context/
646// for more information on using Contexts.
647func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
648	req, out := c.DeleteBucketCorsRequest(input)
649	req.SetContext(ctx)
650	req.ApplyOptions(opts...)
651	return out, req.Send()
652}
653
654const opDeleteBucketEncryption = "DeleteBucketEncryption"
655
656// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
657// client's request for the DeleteBucketEncryption operation. The "output" return
658// value will be populated with the request's response once the request completes
659// successfuly.
660//
661// Use "Send" method on the returned Request to send the API call to the service.
662// the "output" return value is not valid until after Send returns without error.
663//
664// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
665// API call, and error handling.
666//
667// This method is useful when you want to inject custom logic or configuration
668// into the SDK's request lifecycle. Such as custom headers, or retry logic.
669//
670//
671//    // Example sending a request using the DeleteBucketEncryptionRequest method.
672//    req, resp := client.DeleteBucketEncryptionRequest(params)
673//
674//    err := req.Send()
675//    if err == nil { // resp is now filled
676//        fmt.Println(resp)
677//    }
678//
679// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
680func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
681	op := &request.Operation{
682		Name:       opDeleteBucketEncryption,
683		HTTPMethod: "DELETE",
684		HTTPPath:   "/{Bucket}?encryption",
685	}
686
687	if input == nil {
688		input = &DeleteBucketEncryptionInput{}
689	}
690
691	output = &DeleteBucketEncryptionOutput{}
692	req = c.newRequest(op, input, output)
693	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
694	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
695	return
696}
697
698// DeleteBucketEncryption API operation for Amazon Simple Storage Service.
699//
700// Deletes the server-side encryption configuration from the bucket.
701//
702// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
703// with awserr.Error's Code and Message methods to get detailed information about
704// the error.
705//
706// See the AWS API reference guide for Amazon Simple Storage Service's
707// API operation DeleteBucketEncryption for usage and error information.
708// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
709func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
710	req, out := c.DeleteBucketEncryptionRequest(input)
711	return out, req.Send()
712}
713
714// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
715// the ability to pass a context and additional request options.
716//
717// See DeleteBucketEncryption for details on how to use this API operation.
718//
719// The context must be non-nil and will be used for request cancellation. If
720// the context is nil a panic will occur. In the future the SDK may create
721// sub-contexts for http.Requests. See https://golang.org/pkg/context/
722// for more information on using Contexts.
723func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
724	req, out := c.DeleteBucketEncryptionRequest(input)
725	req.SetContext(ctx)
726	req.ApplyOptions(opts...)
727	return out, req.Send()
728}
729
730const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
731
732// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
733// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
734// value will be populated with the request's response once the request completes
735// successfuly.
736//
737// Use "Send" method on the returned Request to send the API call to the service.
738// the "output" return value is not valid until after Send returns without error.
739//
740// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
741// API call, and error handling.
742//
743// This method is useful when you want to inject custom logic or configuration
744// into the SDK's request lifecycle. Such as custom headers, or retry logic.
745//
746//
747//    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
748//    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
749//
750//    err := req.Send()
751//    if err == nil { // resp is now filled
752//        fmt.Println(resp)
753//    }
754//
755// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
756func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
757	op := &request.Operation{
758		Name:       opDeleteBucketInventoryConfiguration,
759		HTTPMethod: "DELETE",
760		HTTPPath:   "/{Bucket}?inventory",
761	}
762
763	if input == nil {
764		input = &DeleteBucketInventoryConfigurationInput{}
765	}
766
767	output = &DeleteBucketInventoryConfigurationOutput{}
768	req = c.newRequest(op, input, output)
769	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
770	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
771	return
772}
773
774// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
775//
776// Deletes an inventory configuration (identified by the inventory ID) from
777// the bucket.
778//
779// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
780// with awserr.Error's Code and Message methods to get detailed information about
781// the error.
782//
783// See the AWS API reference guide for Amazon Simple Storage Service's
784// API operation DeleteBucketInventoryConfiguration for usage and error information.
785// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
786func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
787	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
788	return out, req.Send()
789}
790
791// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
792// the ability to pass a context and additional request options.
793//
794// See DeleteBucketInventoryConfiguration for details on how to use this API operation.
795//
796// The context must be non-nil and will be used for request cancellation. If
797// the context is nil a panic will occur. In the future the SDK may create
798// sub-contexts for http.Requests. See https://golang.org/pkg/context/
799// for more information on using Contexts.
800func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
801	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
802	req.SetContext(ctx)
803	req.ApplyOptions(opts...)
804	return out, req.Send()
805}
806
807const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
808
809// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
810// client's request for the DeleteBucketLifecycle operation. The "output" return
811// value will be populated with the request's response once the request completes
812// successfuly.
813//
814// Use "Send" method on the returned Request to send the API call to the service.
815// the "output" return value is not valid until after Send returns without error.
816//
817// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
818// API call, and error handling.
819//
820// This method is useful when you want to inject custom logic or configuration
821// into the SDK's request lifecycle. Such as custom headers, or retry logic.
822//
823//
824//    // Example sending a request using the DeleteBucketLifecycleRequest method.
825//    req, resp := client.DeleteBucketLifecycleRequest(params)
826//
827//    err := req.Send()
828//    if err == nil { // resp is now filled
829//        fmt.Println(resp)
830//    }
831//
832// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
833func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
834	op := &request.Operation{
835		Name:       opDeleteBucketLifecycle,
836		HTTPMethod: "DELETE",
837		HTTPPath:   "/{Bucket}?lifecycle",
838	}
839
840	if input == nil {
841		input = &DeleteBucketLifecycleInput{}
842	}
843
844	output = &DeleteBucketLifecycleOutput{}
845	req = c.newRequest(op, input, output)
846	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
847	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
848	return
849}
850
851// DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
852//
853// Deletes the lifecycle configuration from the bucket.
854//
855// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
856// with awserr.Error's Code and Message methods to get detailed information about
857// the error.
858//
859// See the AWS API reference guide for Amazon Simple Storage Service's
860// API operation DeleteBucketLifecycle for usage and error information.
861// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
862func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
863	req, out := c.DeleteBucketLifecycleRequest(input)
864	return out, req.Send()
865}
866
867// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
868// the ability to pass a context and additional request options.
869//
870// See DeleteBucketLifecycle for details on how to use this API operation.
871//
872// The context must be non-nil and will be used for request cancellation. If
873// the context is nil a panic will occur. In the future the SDK may create
874// sub-contexts for http.Requests. See https://golang.org/pkg/context/
875// for more information on using Contexts.
876func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
877	req, out := c.DeleteBucketLifecycleRequest(input)
878	req.SetContext(ctx)
879	req.ApplyOptions(opts...)
880	return out, req.Send()
881}
882
883const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
884
885// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
886// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
887// value will be populated with the request's response once the request completes
888// successfuly.
889//
890// Use "Send" method on the returned Request to send the API call to the service.
891// the "output" return value is not valid until after Send returns without error.
892//
893// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
894// API call, and error handling.
895//
896// This method is useful when you want to inject custom logic or configuration
897// into the SDK's request lifecycle. Such as custom headers, or retry logic.
898//
899//
900//    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
901//    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
902//
903//    err := req.Send()
904//    if err == nil { // resp is now filled
905//        fmt.Println(resp)
906//    }
907//
908// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
909func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
910	op := &request.Operation{
911		Name:       opDeleteBucketMetricsConfiguration,
912		HTTPMethod: "DELETE",
913		HTTPPath:   "/{Bucket}?metrics",
914	}
915
916	if input == nil {
917		input = &DeleteBucketMetricsConfigurationInput{}
918	}
919
920	output = &DeleteBucketMetricsConfigurationOutput{}
921	req = c.newRequest(op, input, output)
922	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
923	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
924	return
925}
926
927// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
928//
929// Deletes a metrics configuration (specified by the metrics configuration ID)
930// from the bucket.
931//
932// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
933// with awserr.Error's Code and Message methods to get detailed information about
934// the error.
935//
936// See the AWS API reference guide for Amazon Simple Storage Service's
937// API operation DeleteBucketMetricsConfiguration for usage and error information.
938// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
939func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
940	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
941	return out, req.Send()
942}
943
944// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
945// the ability to pass a context and additional request options.
946//
947// See DeleteBucketMetricsConfiguration for details on how to use this API operation.
948//
949// The context must be non-nil and will be used for request cancellation. If
950// the context is nil a panic will occur. In the future the SDK may create
951// sub-contexts for http.Requests. See https://golang.org/pkg/context/
952// for more information on using Contexts.
953func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
954	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
955	req.SetContext(ctx)
956	req.ApplyOptions(opts...)
957	return out, req.Send()
958}
959
960const opDeleteBucketPolicy = "DeleteBucketPolicy"
961
962// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
963// client's request for the DeleteBucketPolicy operation. The "output" return
964// value will be populated with the request's response once the request completes
965// successfuly.
966//
967// Use "Send" method on the returned Request to send the API call to the service.
968// the "output" return value is not valid until after Send returns without error.
969//
970// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
971// API call, and error handling.
972//
973// This method is useful when you want to inject custom logic or configuration
974// into the SDK's request lifecycle. Such as custom headers, or retry logic.
975//
976//
977//    // Example sending a request using the DeleteBucketPolicyRequest method.
978//    req, resp := client.DeleteBucketPolicyRequest(params)
979//
980//    err := req.Send()
981//    if err == nil { // resp is now filled
982//        fmt.Println(resp)
983//    }
984//
985// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
986func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
987	op := &request.Operation{
988		Name:       opDeleteBucketPolicy,
989		HTTPMethod: "DELETE",
990		HTTPPath:   "/{Bucket}?policy",
991	}
992
993	if input == nil {
994		input = &DeleteBucketPolicyInput{}
995	}
996
997	output = &DeleteBucketPolicyOutput{}
998	req = c.newRequest(op, input, output)
999	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
1000	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
1001	return
1002}
1003
1004// DeleteBucketPolicy API operation for Amazon Simple Storage Service.
1005//
1006// Deletes the policy from the bucket.
1007//
1008// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1009// with awserr.Error's Code and Message methods to get detailed information about
1010// the error.
1011//
1012// See the AWS API reference guide for Amazon Simple Storage Service's
1013// API operation DeleteBucketPolicy for usage and error information.
1014// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1015func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
1016	req, out := c.DeleteBucketPolicyRequest(input)
1017	return out, req.Send()
1018}
1019
1020// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
1021// the ability to pass a context and additional request options.
1022//
1023// See DeleteBucketPolicy for details on how to use this API operation.
1024//
1025// The context must be non-nil and will be used for request cancellation. If
1026// the context is nil a panic will occur. In the future the SDK may create
1027// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1028// for more information on using Contexts.
1029func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
1030	req, out := c.DeleteBucketPolicyRequest(input)
1031	req.SetContext(ctx)
1032	req.ApplyOptions(opts...)
1033	return out, req.Send()
1034}
1035
1036const opDeleteBucketReplication = "DeleteBucketReplication"
1037
1038// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
1039// client's request for the DeleteBucketReplication operation. The "output" return
1040// value will be populated with the request's response once the request completes
1041// successfuly.
1042//
1043// Use "Send" method on the returned Request to send the API call to the service.
1044// the "output" return value is not valid until after Send returns without error.
1045//
1046// See DeleteBucketReplication for more information on using the DeleteBucketReplication
1047// API call, and error handling.
1048//
1049// This method is useful when you want to inject custom logic or configuration
1050// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1051//
1052//
1053//    // Example sending a request using the DeleteBucketReplicationRequest method.
1054//    req, resp := client.DeleteBucketReplicationRequest(params)
1055//
1056//    err := req.Send()
1057//    if err == nil { // resp is now filled
1058//        fmt.Println(resp)
1059//    }
1060//
1061// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1062func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
1063	op := &request.Operation{
1064		Name:       opDeleteBucketReplication,
1065		HTTPMethod: "DELETE",
1066		HTTPPath:   "/{Bucket}?replication",
1067	}
1068
1069	if input == nil {
1070		input = &DeleteBucketReplicationInput{}
1071	}
1072
1073	output = &DeleteBucketReplicationOutput{}
1074	req = c.newRequest(op, input, output)
1075	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
1076	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
1077	return
1078}
1079
1080// DeleteBucketReplication API operation for Amazon Simple Storage Service.
1081//
1082// Deletes the replication configuration from the bucket.
1083//
1084// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1085// with awserr.Error's Code and Message methods to get detailed information about
1086// the error.
1087//
1088// See the AWS API reference guide for Amazon Simple Storage Service's
1089// API operation DeleteBucketReplication for usage and error information.
1090// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1091func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
1092	req, out := c.DeleteBucketReplicationRequest(input)
1093	return out, req.Send()
1094}
1095
1096// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
1097// the ability to pass a context and additional request options.
1098//
1099// See DeleteBucketReplication for details on how to use this API operation.
1100//
1101// The context must be non-nil and will be used for request cancellation. If
1102// the context is nil a panic will occur. In the future the SDK may create
1103// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1104// for more information on using Contexts.
1105func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
1106	req, out := c.DeleteBucketReplicationRequest(input)
1107	req.SetContext(ctx)
1108	req.ApplyOptions(opts...)
1109	return out, req.Send()
1110}
1111
1112const opDeleteBucketTagging = "DeleteBucketTagging"
1113
1114// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
1115// client's request for the DeleteBucketTagging operation. The "output" return
1116// value will be populated with the request's response once the request completes
1117// successfuly.
1118//
1119// Use "Send" method on the returned Request to send the API call to the service.
1120// the "output" return value is not valid until after Send returns without error.
1121//
1122// See DeleteBucketTagging for more information on using the DeleteBucketTagging
1123// API call, and error handling.
1124//
1125// This method is useful when you want to inject custom logic or configuration
1126// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1127//
1128//
1129//    // Example sending a request using the DeleteBucketTaggingRequest method.
1130//    req, resp := client.DeleteBucketTaggingRequest(params)
1131//
1132//    err := req.Send()
1133//    if err == nil { // resp is now filled
1134//        fmt.Println(resp)
1135//    }
1136//
1137// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1138func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
1139	op := &request.Operation{
1140		Name:       opDeleteBucketTagging,
1141		HTTPMethod: "DELETE",
1142		HTTPPath:   "/{Bucket}?tagging",
1143	}
1144
1145	if input == nil {
1146		input = &DeleteBucketTaggingInput{}
1147	}
1148
1149	output = &DeleteBucketTaggingOutput{}
1150	req = c.newRequest(op, input, output)
1151	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
1152	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
1153	return
1154}
1155
1156// DeleteBucketTagging API operation for Amazon Simple Storage Service.
1157//
1158// Deletes the tags from the bucket.
1159//
1160// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1161// with awserr.Error's Code and Message methods to get detailed information about
1162// the error.
1163//
1164// See the AWS API reference guide for Amazon Simple Storage Service's
1165// API operation DeleteBucketTagging for usage and error information.
1166// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1167func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
1168	req, out := c.DeleteBucketTaggingRequest(input)
1169	return out, req.Send()
1170}
1171
1172// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
1173// the ability to pass a context and additional request options.
1174//
1175// See DeleteBucketTagging for details on how to use this API operation.
1176//
1177// The context must be non-nil and will be used for request cancellation. If
1178// the context is nil a panic will occur. In the future the SDK may create
1179// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1180// for more information on using Contexts.
1181func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
1182	req, out := c.DeleteBucketTaggingRequest(input)
1183	req.SetContext(ctx)
1184	req.ApplyOptions(opts...)
1185	return out, req.Send()
1186}
1187
1188const opDeleteBucketWebsite = "DeleteBucketWebsite"
1189
1190// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
1191// client's request for the DeleteBucketWebsite operation. The "output" return
1192// value will be populated with the request's response once the request completes
1193// successfuly.
1194//
1195// Use "Send" method on the returned Request to send the API call to the service.
1196// the "output" return value is not valid until after Send returns without error.
1197//
1198// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
1199// API call, and error handling.
1200//
1201// This method is useful when you want to inject custom logic or configuration
1202// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1203//
1204//
1205//    // Example sending a request using the DeleteBucketWebsiteRequest method.
1206//    req, resp := client.DeleteBucketWebsiteRequest(params)
1207//
1208//    err := req.Send()
1209//    if err == nil { // resp is now filled
1210//        fmt.Println(resp)
1211//    }
1212//
1213// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1214func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
1215	op := &request.Operation{
1216		Name:       opDeleteBucketWebsite,
1217		HTTPMethod: "DELETE",
1218		HTTPPath:   "/{Bucket}?website",
1219	}
1220
1221	if input == nil {
1222		input = &DeleteBucketWebsiteInput{}
1223	}
1224
1225	output = &DeleteBucketWebsiteOutput{}
1226	req = c.newRequest(op, input, output)
1227	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
1228	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
1229	return
1230}
1231
1232// DeleteBucketWebsite API operation for Amazon Simple Storage Service.
1233//
1234// This operation removes the website configuration from the bucket.
1235//
1236// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1237// with awserr.Error's Code and Message methods to get detailed information about
1238// the error.
1239//
1240// See the AWS API reference guide for Amazon Simple Storage Service's
1241// API operation DeleteBucketWebsite for usage and error information.
1242// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1243func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
1244	req, out := c.DeleteBucketWebsiteRequest(input)
1245	return out, req.Send()
1246}
1247
1248// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
1249// the ability to pass a context and additional request options.
1250//
1251// See DeleteBucketWebsite for details on how to use this API operation.
1252//
1253// The context must be non-nil and will be used for request cancellation. If
1254// the context is nil a panic will occur. In the future the SDK may create
1255// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1256// for more information on using Contexts.
1257func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
1258	req, out := c.DeleteBucketWebsiteRequest(input)
1259	req.SetContext(ctx)
1260	req.ApplyOptions(opts...)
1261	return out, req.Send()
1262}
1263
1264const opDeleteObject = "DeleteObject"
1265
1266// DeleteObjectRequest generates a "aws/request.Request" representing the
1267// client's request for the DeleteObject operation. The "output" return
1268// value will be populated with the request's response once the request completes
1269// successfuly.
1270//
1271// Use "Send" method on the returned Request to send the API call to the service.
1272// the "output" return value is not valid until after Send returns without error.
1273//
1274// See DeleteObject for more information on using the DeleteObject
1275// API call, and error handling.
1276//
1277// This method is useful when you want to inject custom logic or configuration
1278// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1279//
1280//
1281//    // Example sending a request using the DeleteObjectRequest method.
1282//    req, resp := client.DeleteObjectRequest(params)
1283//
1284//    err := req.Send()
1285//    if err == nil { // resp is now filled
1286//        fmt.Println(resp)
1287//    }
1288//
1289// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1290func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
1291	op := &request.Operation{
1292		Name:       opDeleteObject,
1293		HTTPMethod: "DELETE",
1294		HTTPPath:   "/{Bucket}/{Key+}",
1295	}
1296
1297	if input == nil {
1298		input = &DeleteObjectInput{}
1299	}
1300
1301	output = &DeleteObjectOutput{}
1302	req = c.newRequest(op, input, output)
1303	return
1304}
1305
1306// DeleteObject API operation for Amazon Simple Storage Service.
1307//
1308// Removes the null version (if there is one) of an object and inserts a delete
1309// marker, which becomes the latest version of the object. If there isn't a
1310// null version, Amazon S3 does not remove any objects.
1311//
1312// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1313// with awserr.Error's Code and Message methods to get detailed information about
1314// the error.
1315//
1316// See the AWS API reference guide for Amazon Simple Storage Service's
1317// API operation DeleteObject for usage and error information.
1318// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1319func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
1320	req, out := c.DeleteObjectRequest(input)
1321	return out, req.Send()
1322}
1323
1324// DeleteObjectWithContext is the same as DeleteObject with the addition of
1325// the ability to pass a context and additional request options.
1326//
1327// See DeleteObject for details on how to use this API operation.
1328//
1329// The context must be non-nil and will be used for request cancellation. If
1330// the context is nil a panic will occur. In the future the SDK may create
1331// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1332// for more information on using Contexts.
1333func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
1334	req, out := c.DeleteObjectRequest(input)
1335	req.SetContext(ctx)
1336	req.ApplyOptions(opts...)
1337	return out, req.Send()
1338}
1339
1340const opDeleteObjectTagging = "DeleteObjectTagging"
1341
1342// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
1343// client's request for the DeleteObjectTagging operation. The "output" return
1344// value will be populated with the request's response once the request completes
1345// successfuly.
1346//
1347// Use "Send" method on the returned Request to send the API call to the service.
1348// the "output" return value is not valid until after Send returns without error.
1349//
1350// See DeleteObjectTagging for more information on using the DeleteObjectTagging
1351// API call, and error handling.
1352//
1353// This method is useful when you want to inject custom logic or configuration
1354// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1355//
1356//
1357//    // Example sending a request using the DeleteObjectTaggingRequest method.
1358//    req, resp := client.DeleteObjectTaggingRequest(params)
1359//
1360//    err := req.Send()
1361//    if err == nil { // resp is now filled
1362//        fmt.Println(resp)
1363//    }
1364//
1365// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
1366func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
1367	op := &request.Operation{
1368		Name:       opDeleteObjectTagging,
1369		HTTPMethod: "DELETE",
1370		HTTPPath:   "/{Bucket}/{Key+}?tagging",
1371	}
1372
1373	if input == nil {
1374		input = &DeleteObjectTaggingInput{}
1375	}
1376
1377	output = &DeleteObjectTaggingOutput{}
1378	req = c.newRequest(op, input, output)
1379	return
1380}
1381
1382// DeleteObjectTagging API operation for Amazon Simple Storage Service.
1383//
1384// Removes the tag-set from an existing object.
1385//
1386// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1387// with awserr.Error's Code and Message methods to get detailed information about
1388// the error.
1389//
1390// See the AWS API reference guide for Amazon Simple Storage Service's
1391// API operation DeleteObjectTagging for usage and error information.
1392// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
1393func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
1394	req, out := c.DeleteObjectTaggingRequest(input)
1395	return out, req.Send()
1396}
1397
1398// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
1399// the ability to pass a context and additional request options.
1400//
1401// See DeleteObjectTagging for details on how to use this API operation.
1402//
1403// The context must be non-nil and will be used for request cancellation. If
1404// the context is nil a panic will occur. In the future the SDK may create
1405// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1406// for more information on using Contexts.
1407func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
1408	req, out := c.DeleteObjectTaggingRequest(input)
1409	req.SetContext(ctx)
1410	req.ApplyOptions(opts...)
1411	return out, req.Send()
1412}
1413
1414const opDeleteObjects = "DeleteObjects"
1415
1416// DeleteObjectsRequest generates a "aws/request.Request" representing the
1417// client's request for the DeleteObjects operation. The "output" return
1418// value will be populated with the request's response once the request completes
1419// successfuly.
1420//
1421// Use "Send" method on the returned Request to send the API call to the service.
1422// the "output" return value is not valid until after Send returns without error.
1423//
1424// See DeleteObjects for more information on using the DeleteObjects
1425// API call, and error handling.
1426//
1427// This method is useful when you want to inject custom logic or configuration
1428// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1429//
1430//
1431//    // Example sending a request using the DeleteObjectsRequest method.
1432//    req, resp := client.DeleteObjectsRequest(params)
1433//
1434//    err := req.Send()
1435//    if err == nil { // resp is now filled
1436//        fmt.Println(resp)
1437//    }
1438//
1439// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
1440func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
1441	op := &request.Operation{
1442		Name:       opDeleteObjects,
1443		HTTPMethod: "POST",
1444		HTTPPath:   "/{Bucket}?delete",
1445	}
1446
1447	if input == nil {
1448		input = &DeleteObjectsInput{}
1449	}
1450
1451	output = &DeleteObjectsOutput{}
1452	req = c.newRequest(op, input, output)
1453	return
1454}
1455
1456// DeleteObjects API operation for Amazon Simple Storage Service.
1457//
1458// This operation enables you to delete multiple objects from a bucket using
1459// a single HTTP request. You may specify up to 1000 keys.
1460//
1461// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1462// with awserr.Error's Code and Message methods to get detailed information about
1463// the error.
1464//
1465// See the AWS API reference guide for Amazon Simple Storage Service's
1466// API operation DeleteObjects for usage and error information.
1467// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
1468func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
1469	req, out := c.DeleteObjectsRequest(input)
1470	return out, req.Send()
1471}
1472
1473// DeleteObjectsWithContext is the same as DeleteObjects with the addition of
1474// the ability to pass a context and additional request options.
1475//
1476// See DeleteObjects for details on how to use this API operation.
1477//
1478// The context must be non-nil and will be used for request cancellation. If
1479// the context is nil a panic will occur. In the future the SDK may create
1480// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1481// for more information on using Contexts.
1482func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
1483	req, out := c.DeleteObjectsRequest(input)
1484	req.SetContext(ctx)
1485	req.ApplyOptions(opts...)
1486	return out, req.Send()
1487}
1488
1489const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
1490
1491// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
1492// client's request for the GetBucketAccelerateConfiguration operation. The "output" return
1493// value will be populated with the request's response once the request completes
1494// successfuly.
1495//
1496// Use "Send" method on the returned Request to send the API call to the service.
1497// the "output" return value is not valid until after Send returns without error.
1498//
1499// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
1500// API call, and error handling.
1501//
1502// This method is useful when you want to inject custom logic or configuration
1503// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1504//
1505//
1506//    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
1507//    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
1508//
1509//    err := req.Send()
1510//    if err == nil { // resp is now filled
1511//        fmt.Println(resp)
1512//    }
1513//
1514// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
1515func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
1516	op := &request.Operation{
1517		Name:       opGetBucketAccelerateConfiguration,
1518		HTTPMethod: "GET",
1519		HTTPPath:   "/{Bucket}?accelerate",
1520	}
1521
1522	if input == nil {
1523		input = &GetBucketAccelerateConfigurationInput{}
1524	}
1525
1526	output = &GetBucketAccelerateConfigurationOutput{}
1527	req = c.newRequest(op, input, output)
1528	return
1529}
1530
1531// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
1532//
1533// Returns the accelerate configuration of a bucket.
1534//
1535// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1536// with awserr.Error's Code and Message methods to get detailed information about
1537// the error.
1538//
1539// See the AWS API reference guide for Amazon Simple Storage Service's
1540// API operation GetBucketAccelerateConfiguration for usage and error information.
1541// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
1542func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
1543	req, out := c.GetBucketAccelerateConfigurationRequest(input)
1544	return out, req.Send()
1545}
1546
1547// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
1548// the ability to pass a context and additional request options.
1549//
1550// See GetBucketAccelerateConfiguration for details on how to use this API operation.
1551//
1552// The context must be non-nil and will be used for request cancellation. If
1553// the context is nil a panic will occur. In the future the SDK may create
1554// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1555// for more information on using Contexts.
1556func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
1557	req, out := c.GetBucketAccelerateConfigurationRequest(input)
1558	req.SetContext(ctx)
1559	req.ApplyOptions(opts...)
1560	return out, req.Send()
1561}
1562
1563const opGetBucketAcl = "GetBucketAcl"
1564
1565// GetBucketAclRequest generates a "aws/request.Request" representing the
1566// client's request for the GetBucketAcl operation. The "output" return
1567// value will be populated with the request's response once the request completes
1568// successfuly.
1569//
1570// Use "Send" method on the returned Request to send the API call to the service.
1571// the "output" return value is not valid until after Send returns without error.
1572//
1573// See GetBucketAcl for more information on using the GetBucketAcl
1574// API call, and error handling.
1575//
1576// This method is useful when you want to inject custom logic or configuration
1577// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1578//
1579//
1580//    // Example sending a request using the GetBucketAclRequest method.
1581//    req, resp := client.GetBucketAclRequest(params)
1582//
1583//    err := req.Send()
1584//    if err == nil { // resp is now filled
1585//        fmt.Println(resp)
1586//    }
1587//
1588// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
1589func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
1590	op := &request.Operation{
1591		Name:       opGetBucketAcl,
1592		HTTPMethod: "GET",
1593		HTTPPath:   "/{Bucket}?acl",
1594	}
1595
1596	if input == nil {
1597		input = &GetBucketAclInput{}
1598	}
1599
1600	output = &GetBucketAclOutput{}
1601	req = c.newRequest(op, input, output)
1602	return
1603}
1604
1605// GetBucketAcl API operation for Amazon Simple Storage Service.
1606//
1607// Gets the access control policy for the bucket.
1608//
1609// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1610// with awserr.Error's Code and Message methods to get detailed information about
1611// the error.
1612//
1613// See the AWS API reference guide for Amazon Simple Storage Service's
1614// API operation GetBucketAcl for usage and error information.
1615// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
1616func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
1617	req, out := c.GetBucketAclRequest(input)
1618	return out, req.Send()
1619}
1620
1621// GetBucketAclWithContext is the same as GetBucketAcl with the addition of
1622// the ability to pass a context and additional request options.
1623//
1624// See GetBucketAcl for details on how to use this API operation.
1625//
1626// The context must be non-nil and will be used for request cancellation. If
1627// the context is nil a panic will occur. In the future the SDK may create
1628// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1629// for more information on using Contexts.
1630func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
1631	req, out := c.GetBucketAclRequest(input)
1632	req.SetContext(ctx)
1633	req.ApplyOptions(opts...)
1634	return out, req.Send()
1635}
1636
1637const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
1638
1639// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
1640// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
1641// value will be populated with the request's response once the request completes
1642// successfuly.
1643//
1644// Use "Send" method on the returned Request to send the API call to the service.
1645// the "output" return value is not valid until after Send returns without error.
1646//
1647// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
1648// API call, and error handling.
1649//
1650// This method is useful when you want to inject custom logic or configuration
1651// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1652//
1653//
1654//    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
1655//    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
1656//
1657//    err := req.Send()
1658//    if err == nil { // resp is now filled
1659//        fmt.Println(resp)
1660//    }
1661//
1662// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
1663func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
1664	op := &request.Operation{
1665		Name:       opGetBucketAnalyticsConfiguration,
1666		HTTPMethod: "GET",
1667		HTTPPath:   "/{Bucket}?analytics",
1668	}
1669
1670	if input == nil {
1671		input = &GetBucketAnalyticsConfigurationInput{}
1672	}
1673
1674	output = &GetBucketAnalyticsConfigurationOutput{}
1675	req = c.newRequest(op, input, output)
1676	return
1677}
1678
1679// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
1680//
1681// Gets an analytics configuration for the bucket (specified by the analytics
1682// configuration ID).
1683//
1684// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1685// with awserr.Error's Code and Message methods to get detailed information about
1686// the error.
1687//
1688// See the AWS API reference guide for Amazon Simple Storage Service's
1689// API operation GetBucketAnalyticsConfiguration for usage and error information.
1690// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
1691func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
1692	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
1693	return out, req.Send()
1694}
1695
1696// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
1697// the ability to pass a context and additional request options.
1698//
1699// See GetBucketAnalyticsConfiguration for details on how to use this API operation.
1700//
1701// The context must be non-nil and will be used for request cancellation. If
1702// the context is nil a panic will occur. In the future the SDK may create
1703// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1704// for more information on using Contexts.
1705func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
1706	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
1707	req.SetContext(ctx)
1708	req.ApplyOptions(opts...)
1709	return out, req.Send()
1710}
1711
1712const opGetBucketCors = "GetBucketCors"
1713
1714// GetBucketCorsRequest generates a "aws/request.Request" representing the
1715// client's request for the GetBucketCors operation. The "output" return
1716// value will be populated with the request's response once the request completes
1717// successfuly.
1718//
1719// Use "Send" method on the returned Request to send the API call to the service.
1720// the "output" return value is not valid until after Send returns without error.
1721//
1722// See GetBucketCors for more information on using the GetBucketCors
1723// API call, and error handling.
1724//
1725// This method is useful when you want to inject custom logic or configuration
1726// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1727//
1728//
1729//    // Example sending a request using the GetBucketCorsRequest method.
1730//    req, resp := client.GetBucketCorsRequest(params)
1731//
1732//    err := req.Send()
1733//    if err == nil { // resp is now filled
1734//        fmt.Println(resp)
1735//    }
1736//
1737// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
1738func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
1739	op := &request.Operation{
1740		Name:       opGetBucketCors,
1741		HTTPMethod: "GET",
1742		HTTPPath:   "/{Bucket}?cors",
1743	}
1744
1745	if input == nil {
1746		input = &GetBucketCorsInput{}
1747	}
1748
1749	output = &GetBucketCorsOutput{}
1750	req = c.newRequest(op, input, output)
1751	return
1752}
1753
1754// GetBucketCors API operation for Amazon Simple Storage Service.
1755//
1756// Returns the cors configuration for the bucket.
1757//
1758// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1759// with awserr.Error's Code and Message methods to get detailed information about
1760// the error.
1761//
1762// See the AWS API reference guide for Amazon Simple Storage Service's
1763// API operation GetBucketCors for usage and error information.
1764// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
1765func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
1766	req, out := c.GetBucketCorsRequest(input)
1767	return out, req.Send()
1768}
1769
1770// GetBucketCorsWithContext is the same as GetBucketCors with the addition of
1771// the ability to pass a context and additional request options.
1772//
1773// See GetBucketCors for details on how to use this API operation.
1774//
1775// The context must be non-nil and will be used for request cancellation. If
1776// the context is nil a panic will occur. In the future the SDK may create
1777// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1778// for more information on using Contexts.
1779func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
1780	req, out := c.GetBucketCorsRequest(input)
1781	req.SetContext(ctx)
1782	req.ApplyOptions(opts...)
1783	return out, req.Send()
1784}
1785
1786const opGetBucketEncryption = "GetBucketEncryption"
1787
1788// GetBucketEncryptionRequest generates a "aws/request.Request" representing the
1789// client's request for the GetBucketEncryption operation. The "output" return
1790// value will be populated with the request's response once the request completes
1791// successfuly.
1792//
1793// Use "Send" method on the returned Request to send the API call to the service.
1794// the "output" return value is not valid until after Send returns without error.
1795//
1796// See GetBucketEncryption for more information on using the GetBucketEncryption
1797// API call, and error handling.
1798//
1799// This method is useful when you want to inject custom logic or configuration
1800// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1801//
1802//
1803//    // Example sending a request using the GetBucketEncryptionRequest method.
1804//    req, resp := client.GetBucketEncryptionRequest(params)
1805//
1806//    err := req.Send()
1807//    if err == nil { // resp is now filled
1808//        fmt.Println(resp)
1809//    }
1810//
1811// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
1812func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
1813	op := &request.Operation{
1814		Name:       opGetBucketEncryption,
1815		HTTPMethod: "GET",
1816		HTTPPath:   "/{Bucket}?encryption",
1817	}
1818
1819	if input == nil {
1820		input = &GetBucketEncryptionInput{}
1821	}
1822
1823	output = &GetBucketEncryptionOutput{}
1824	req = c.newRequest(op, input, output)
1825	return
1826}
1827
1828// GetBucketEncryption API operation for Amazon Simple Storage Service.
1829//
1830// Returns the server-side encryption configuration of a bucket.
1831//
1832// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1833// with awserr.Error's Code and Message methods to get detailed information about
1834// the error.
1835//
1836// See the AWS API reference guide for Amazon Simple Storage Service's
1837// API operation GetBucketEncryption for usage and error information.
1838// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
1839func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
1840	req, out := c.GetBucketEncryptionRequest(input)
1841	return out, req.Send()
1842}
1843
1844// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
1845// the ability to pass a context and additional request options.
1846//
1847// See GetBucketEncryption for details on how to use this API operation.
1848//
1849// The context must be non-nil and will be used for request cancellation. If
1850// the context is nil a panic will occur. In the future the SDK may create
1851// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1852// for more information on using Contexts.
1853func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
1854	req, out := c.GetBucketEncryptionRequest(input)
1855	req.SetContext(ctx)
1856	req.ApplyOptions(opts...)
1857	return out, req.Send()
1858}
1859
1860const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
1861
1862// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
1863// client's request for the GetBucketInventoryConfiguration operation. The "output" return
1864// value will be populated with the request's response once the request completes
1865// successfuly.
1866//
1867// Use "Send" method on the returned Request to send the API call to the service.
1868// the "output" return value is not valid until after Send returns without error.
1869//
1870// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
1871// API call, and error handling.
1872//
1873// This method is useful when you want to inject custom logic or configuration
1874// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1875//
1876//
1877//    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
1878//    req, resp := client.GetBucketInventoryConfigurationRequest(params)
1879//
1880//    err := req.Send()
1881//    if err == nil { // resp is now filled
1882//        fmt.Println(resp)
1883//    }
1884//
1885// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
1886func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
1887	op := &request.Operation{
1888		Name:       opGetBucketInventoryConfiguration,
1889		HTTPMethod: "GET",
1890		HTTPPath:   "/{Bucket}?inventory",
1891	}
1892
1893	if input == nil {
1894		input = &GetBucketInventoryConfigurationInput{}
1895	}
1896
1897	output = &GetBucketInventoryConfigurationOutput{}
1898	req = c.newRequest(op, input, output)
1899	return
1900}
1901
1902// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
1903//
1904// Returns an inventory configuration (identified by the inventory ID) from
1905// the bucket.
1906//
1907// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1908// with awserr.Error's Code and Message methods to get detailed information about
1909// the error.
1910//
1911// See the AWS API reference guide for Amazon Simple Storage Service's
1912// API operation GetBucketInventoryConfiguration for usage and error information.
1913// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
1914func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
1915	req, out := c.GetBucketInventoryConfigurationRequest(input)
1916	return out, req.Send()
1917}
1918
1919// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
1920// the ability to pass a context and additional request options.
1921//
1922// See GetBucketInventoryConfiguration for details on how to use this API operation.
1923//
1924// The context must be non-nil and will be used for request cancellation. If
1925// the context is nil a panic will occur. In the future the SDK may create
1926// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1927// for more information on using Contexts.
1928func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
1929	req, out := c.GetBucketInventoryConfigurationRequest(input)
1930	req.SetContext(ctx)
1931	req.ApplyOptions(opts...)
1932	return out, req.Send()
1933}
1934
1935const opGetBucketLifecycle = "GetBucketLifecycle"
1936
1937// GetBucketLifecycleRequest generates a "aws/request.Request" representing the
1938// client's request for the GetBucketLifecycle operation. The "output" return
1939// value will be populated with the request's response once the request completes
1940// successfuly.
1941//
1942// Use "Send" method on the returned Request to send the API call to the service.
1943// the "output" return value is not valid until after Send returns without error.
1944//
1945// See GetBucketLifecycle for more information on using the GetBucketLifecycle
1946// API call, and error handling.
1947//
1948// This method is useful when you want to inject custom logic or configuration
1949// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1950//
1951//
1952//    // Example sending a request using the GetBucketLifecycleRequest method.
1953//    req, resp := client.GetBucketLifecycleRequest(params)
1954//
1955//    err := req.Send()
1956//    if err == nil { // resp is now filled
1957//        fmt.Println(resp)
1958//    }
1959//
1960// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
1961func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
1962	if c.Client.Config.Logger != nil {
1963		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
1964	}
1965	op := &request.Operation{
1966		Name:       opGetBucketLifecycle,
1967		HTTPMethod: "GET",
1968		HTTPPath:   "/{Bucket}?lifecycle",
1969	}
1970
1971	if input == nil {
1972		input = &GetBucketLifecycleInput{}
1973	}
1974
1975	output = &GetBucketLifecycleOutput{}
1976	req = c.newRequest(op, input, output)
1977	return
1978}
1979
1980// GetBucketLifecycle API operation for Amazon Simple Storage Service.
1981//
1982// Deprecated, see the GetBucketLifecycleConfiguration operation.
1983//
1984// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1985// with awserr.Error's Code and Message methods to get detailed information about
1986// the error.
1987//
1988// See the AWS API reference guide for Amazon Simple Storage Service's
1989// API operation GetBucketLifecycle for usage and error information.
1990// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
1991func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
1992	req, out := c.GetBucketLifecycleRequest(input)
1993	return out, req.Send()
1994}
1995
1996// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
1997// the ability to pass a context and additional request options.
1998//
1999// See GetBucketLifecycle for details on how to use this API operation.
2000//
2001// The context must be non-nil and will be used for request cancellation. If
2002// the context is nil a panic will occur. In the future the SDK may create
2003// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2004// for more information on using Contexts.
2005func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
2006	req, out := c.GetBucketLifecycleRequest(input)
2007	req.SetContext(ctx)
2008	req.ApplyOptions(opts...)
2009	return out, req.Send()
2010}
2011
2012const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
2013
2014// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
2015// client's request for the GetBucketLifecycleConfiguration operation. The "output" return
2016// value will be populated with the request's response once the request completes
2017// successfuly.
2018//
2019// Use "Send" method on the returned Request to send the API call to the service.
2020// the "output" return value is not valid until after Send returns without error.
2021//
2022// See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
2023// API call, and error handling.
2024//
2025// This method is useful when you want to inject custom logic or configuration
2026// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2027//
2028//
2029//    // Example sending a request using the GetBucketLifecycleConfigurationRequest method.
2030//    req, resp := client.GetBucketLifecycleConfigurationRequest(params)
2031//
2032//    err := req.Send()
2033//    if err == nil { // resp is now filled
2034//        fmt.Println(resp)
2035//    }
2036//
2037// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
2038func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
2039	op := &request.Operation{
2040		Name:       opGetBucketLifecycleConfiguration,
2041		HTTPMethod: "GET",
2042		HTTPPath:   "/{Bucket}?lifecycle",
2043	}
2044
2045	if input == nil {
2046		input = &GetBucketLifecycleConfigurationInput{}
2047	}
2048
2049	output = &GetBucketLifecycleConfigurationOutput{}
2050	req = c.newRequest(op, input, output)
2051	return
2052}
2053
2054// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
2055//
2056// Returns the lifecycle configuration information set on the bucket.
2057//
2058// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2059// with awserr.Error's Code and Message methods to get detailed information about
2060// the error.
2061//
2062// See the AWS API reference guide for Amazon Simple Storage Service's
2063// API operation GetBucketLifecycleConfiguration for usage and error information.
2064// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
2065func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
2066	req, out := c.GetBucketLifecycleConfigurationRequest(input)
2067	return out, req.Send()
2068}
2069
2070// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
2071// the ability to pass a context and additional request options.
2072//
2073// See GetBucketLifecycleConfiguration for details on how to use this API operation.
2074//
2075// The context must be non-nil and will be used for request cancellation. If
2076// the context is nil a panic will occur. In the future the SDK may create
2077// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2078// for more information on using Contexts.
2079func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
2080	req, out := c.GetBucketLifecycleConfigurationRequest(input)
2081	req.SetContext(ctx)
2082	req.ApplyOptions(opts...)
2083	return out, req.Send()
2084}
2085
2086const opGetBucketLocation = "GetBucketLocation"
2087
2088// GetBucketLocationRequest generates a "aws/request.Request" representing the
2089// client's request for the GetBucketLocation operation. The "output" return
2090// value will be populated with the request's response once the request completes
2091// successfuly.
2092//
2093// Use "Send" method on the returned Request to send the API call to the service.
2094// the "output" return value is not valid until after Send returns without error.
2095//
2096// See GetBucketLocation for more information on using the GetBucketLocation
2097// API call, and error handling.
2098//
2099// This method is useful when you want to inject custom logic or configuration
2100// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2101//
2102//
2103//    // Example sending a request using the GetBucketLocationRequest method.
2104//    req, resp := client.GetBucketLocationRequest(params)
2105//
2106//    err := req.Send()
2107//    if err == nil { // resp is now filled
2108//        fmt.Println(resp)
2109//    }
2110//
2111// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
2112func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
2113	op := &request.Operation{
2114		Name:       opGetBucketLocation,
2115		HTTPMethod: "GET",
2116		HTTPPath:   "/{Bucket}?location",
2117	}
2118
2119	if input == nil {
2120		input = &GetBucketLocationInput{}
2121	}
2122
2123	output = &GetBucketLocationOutput{}
2124	req = c.newRequest(op, input, output)
2125	return
2126}
2127
2128// GetBucketLocation API operation for Amazon Simple Storage Service.
2129//
2130// Returns the region the bucket resides in.
2131//
2132// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2133// with awserr.Error's Code and Message methods to get detailed information about
2134// the error.
2135//
2136// See the AWS API reference guide for Amazon Simple Storage Service's
2137// API operation GetBucketLocation for usage and error information.
2138// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
2139func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
2140	req, out := c.GetBucketLocationRequest(input)
2141	return out, req.Send()
2142}
2143
2144// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
2145// the ability to pass a context and additional request options.
2146//
2147// See GetBucketLocation for details on how to use this API operation.
2148//
2149// The context must be non-nil and will be used for request cancellation. If
2150// the context is nil a panic will occur. In the future the SDK may create
2151// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2152// for more information on using Contexts.
2153func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
2154	req, out := c.GetBucketLocationRequest(input)
2155	req.SetContext(ctx)
2156	req.ApplyOptions(opts...)
2157	return out, req.Send()
2158}
2159
2160const opGetBucketLogging = "GetBucketLogging"
2161
2162// GetBucketLoggingRequest generates a "aws/request.Request" representing the
2163// client's request for the GetBucketLogging operation. The "output" return
2164// value will be populated with the request's response once the request completes
2165// successfuly.
2166//
2167// Use "Send" method on the returned Request to send the API call to the service.
2168// the "output" return value is not valid until after Send returns without error.
2169//
2170// See GetBucketLogging for more information on using the GetBucketLogging
2171// API call, and error handling.
2172//
2173// This method is useful when you want to inject custom logic or configuration
2174// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2175//
2176//
2177//    // Example sending a request using the GetBucketLoggingRequest method.
2178//    req, resp := client.GetBucketLoggingRequest(params)
2179//
2180//    err := req.Send()
2181//    if err == nil { // resp is now filled
2182//        fmt.Println(resp)
2183//    }
2184//
2185// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
2186func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
2187	op := &request.Operation{
2188		Name:       opGetBucketLogging,
2189		HTTPMethod: "GET",
2190		HTTPPath:   "/{Bucket}?logging",
2191	}
2192
2193	if input == nil {
2194		input = &GetBucketLoggingInput{}
2195	}
2196
2197	output = &GetBucketLoggingOutput{}
2198	req = c.newRequest(op, input, output)
2199	return
2200}
2201
2202// GetBucketLogging API operation for Amazon Simple Storage Service.
2203//
2204// Returns the logging status of a bucket and the permissions users have to
2205// view and modify that status. To use GET, you must be the bucket owner.
2206//
2207// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2208// with awserr.Error's Code and Message methods to get detailed information about
2209// the error.
2210//
2211// See the AWS API reference guide for Amazon Simple Storage Service's
2212// API operation GetBucketLogging for usage and error information.
2213// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
2214func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
2215	req, out := c.GetBucketLoggingRequest(input)
2216	return out, req.Send()
2217}
2218
2219// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
2220// the ability to pass a context and additional request options.
2221//
2222// See GetBucketLogging for details on how to use this API operation.
2223//
2224// The context must be non-nil and will be used for request cancellation. If
2225// the context is nil a panic will occur. In the future the SDK may create
2226// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2227// for more information on using Contexts.
2228func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
2229	req, out := c.GetBucketLoggingRequest(input)
2230	req.SetContext(ctx)
2231	req.ApplyOptions(opts...)
2232	return out, req.Send()
2233}
2234
2235const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
2236
2237// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
2238// client's request for the GetBucketMetricsConfiguration operation. The "output" return
2239// value will be populated with the request's response once the request completes
2240// successfuly.
2241//
2242// Use "Send" method on the returned Request to send the API call to the service.
2243// the "output" return value is not valid until after Send returns without error.
2244//
2245// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
2246// API call, and error handling.
2247//
2248// This method is useful when you want to inject custom logic or configuration
2249// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2250//
2251//
2252//    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
2253//    req, resp := client.GetBucketMetricsConfigurationRequest(params)
2254//
2255//    err := req.Send()
2256//    if err == nil { // resp is now filled
2257//        fmt.Println(resp)
2258//    }
2259//
2260// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
2261func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
2262	op := &request.Operation{
2263		Name:       opGetBucketMetricsConfiguration,
2264		HTTPMethod: "GET",
2265		HTTPPath:   "/{Bucket}?metrics",
2266	}
2267
2268	if input == nil {
2269		input = &GetBucketMetricsConfigurationInput{}
2270	}
2271
2272	output = &GetBucketMetricsConfigurationOutput{}
2273	req = c.newRequest(op, input, output)
2274	return
2275}
2276
2277// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
2278//
2279// Gets a metrics configuration (specified by the metrics configuration ID)
2280// from the bucket.
2281//
2282// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2283// with awserr.Error's Code and Message methods to get detailed information about
2284// the error.
2285//
2286// See the AWS API reference guide for Amazon Simple Storage Service's
2287// API operation GetBucketMetricsConfiguration for usage and error information.
2288// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
2289func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
2290	req, out := c.GetBucketMetricsConfigurationRequest(input)
2291	return out, req.Send()
2292}
2293
2294// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
2295// the ability to pass a context and additional request options.
2296//
2297// See GetBucketMetricsConfiguration for details on how to use this API operation.
2298//
2299// The context must be non-nil and will be used for request cancellation. If
2300// the context is nil a panic will occur. In the future the SDK may create
2301// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2302// for more information on using Contexts.
2303func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
2304	req, out := c.GetBucketMetricsConfigurationRequest(input)
2305	req.SetContext(ctx)
2306	req.ApplyOptions(opts...)
2307	return out, req.Send()
2308}
2309
2310const opGetBucketNotification = "GetBucketNotification"
2311
2312// GetBucketNotificationRequest generates a "aws/request.Request" representing the
2313// client's request for the GetBucketNotification operation. The "output" return
2314// value will be populated with the request's response once the request completes
2315// successfuly.
2316//
2317// Use "Send" method on the returned Request to send the API call to the service.
2318// the "output" return value is not valid until after Send returns without error.
2319//
2320// See GetBucketNotification for more information on using the GetBucketNotification
2321// API call, and error handling.
2322//
2323// This method is useful when you want to inject custom logic or configuration
2324// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2325//
2326//
2327//    // Example sending a request using the GetBucketNotificationRequest method.
2328//    req, resp := client.GetBucketNotificationRequest(params)
2329//
2330//    err := req.Send()
2331//    if err == nil { // resp is now filled
2332//        fmt.Println(resp)
2333//    }
2334//
2335// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
2336func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
2337	if c.Client.Config.Logger != nil {
2338		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
2339	}
2340	op := &request.Operation{
2341		Name:       opGetBucketNotification,
2342		HTTPMethod: "GET",
2343		HTTPPath:   "/{Bucket}?notification",
2344	}
2345
2346	if input == nil {
2347		input = &GetBucketNotificationConfigurationRequest{}
2348	}
2349
2350	output = &NotificationConfigurationDeprecated{}
2351	req = c.newRequest(op, input, output)
2352	return
2353}
2354
2355// GetBucketNotification API operation for Amazon Simple Storage Service.
2356//
2357// Deprecated, see the GetBucketNotificationConfiguration operation.
2358//
2359// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2360// with awserr.Error's Code and Message methods to get detailed information about
2361// the error.
2362//
2363// See the AWS API reference guide for Amazon Simple Storage Service's
2364// API operation GetBucketNotification for usage and error information.
2365// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
2366func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
2367	req, out := c.GetBucketNotificationRequest(input)
2368	return out, req.Send()
2369}
2370
2371// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
2372// the ability to pass a context and additional request options.
2373//
2374// See GetBucketNotification for details on how to use this API operation.
2375//
2376// The context must be non-nil and will be used for request cancellation. If
2377// the context is nil a panic will occur. In the future the SDK may create
2378// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2379// for more information on using Contexts.
2380func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
2381	req, out := c.GetBucketNotificationRequest(input)
2382	req.SetContext(ctx)
2383	req.ApplyOptions(opts...)
2384	return out, req.Send()
2385}
2386
2387const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
2388
2389// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
2390// client's request for the GetBucketNotificationConfiguration operation. The "output" return
2391// value will be populated with the request's response once the request completes
2392// successfuly.
2393//
2394// Use "Send" method on the returned Request to send the API call to the service.
2395// the "output" return value is not valid until after Send returns without error.
2396//
2397// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
2398// API call, and error handling.
2399//
2400// This method is useful when you want to inject custom logic or configuration
2401// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2402//
2403//
2404//    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
2405//    req, resp := client.GetBucketNotificationConfigurationRequest(params)
2406//
2407//    err := req.Send()
2408//    if err == nil { // resp is now filled
2409//        fmt.Println(resp)
2410//    }
2411//
2412// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
2413func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
2414	op := &request.Operation{
2415		Name:       opGetBucketNotificationConfiguration,
2416		HTTPMethod: "GET",
2417		HTTPPath:   "/{Bucket}?notification",
2418	}
2419
2420	if input == nil {
2421		input = &GetBucketNotificationConfigurationRequest{}
2422	}
2423
2424	output = &NotificationConfiguration{}
2425	req = c.newRequest(op, input, output)
2426	return
2427}
2428
2429// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
2430//
2431// Returns the notification configuration of a bucket.
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 GetBucketNotificationConfiguration for usage and error information.
2439// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
2440func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
2441	req, out := c.GetBucketNotificationConfigurationRequest(input)
2442	return out, req.Send()
2443}
2444
2445// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
2446// the ability to pass a context and additional request options.
2447//
2448// See GetBucketNotificationConfiguration for details on how to use this API operation.
2449//
2450// The context must be non-nil and will be used for request cancellation. If
2451// the context is nil a panic will occur. In the future the SDK may create
2452// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2453// for more information on using Contexts.
2454func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
2455	req, out := c.GetBucketNotificationConfigurationRequest(input)
2456	req.SetContext(ctx)
2457	req.ApplyOptions(opts...)
2458	return out, req.Send()
2459}
2460
2461const opGetBucketPolicy = "GetBucketPolicy"
2462
2463// GetBucketPolicyRequest generates a "aws/request.Request" representing the
2464// client's request for the GetBucketPolicy operation. The "output" return
2465// value will be populated with the request's response once the request completes
2466// successfuly.
2467//
2468// Use "Send" method on the returned Request to send the API call to the service.
2469// the "output" return value is not valid until after Send returns without error.
2470//
2471// See GetBucketPolicy for more information on using the GetBucketPolicy
2472// API call, and error handling.
2473//
2474// This method is useful when you want to inject custom logic or configuration
2475// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2476//
2477//
2478//    // Example sending a request using the GetBucketPolicyRequest method.
2479//    req, resp := client.GetBucketPolicyRequest(params)
2480//
2481//    err := req.Send()
2482//    if err == nil { // resp is now filled
2483//        fmt.Println(resp)
2484//    }
2485//
2486// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
2487func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
2488	op := &request.Operation{
2489		Name:       opGetBucketPolicy,
2490		HTTPMethod: "GET",
2491		HTTPPath:   "/{Bucket}?policy",
2492	}
2493
2494	if input == nil {
2495		input = &GetBucketPolicyInput{}
2496	}
2497
2498	output = &GetBucketPolicyOutput{}
2499	req = c.newRequest(op, input, output)
2500	return
2501}
2502
2503// GetBucketPolicy API operation for Amazon Simple Storage Service.
2504//
2505// Returns the policy of a specified bucket.
2506//
2507// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2508// with awserr.Error's Code and Message methods to get detailed information about
2509// the error.
2510//
2511// See the AWS API reference guide for Amazon Simple Storage Service's
2512// API operation GetBucketPolicy for usage and error information.
2513// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
2514func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
2515	req, out := c.GetBucketPolicyRequest(input)
2516	return out, req.Send()
2517}
2518
2519// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
2520// the ability to pass a context and additional request options.
2521//
2522// See GetBucketPolicy for details on how to use this API operation.
2523//
2524// The context must be non-nil and will be used for request cancellation. If
2525// the context is nil a panic will occur. In the future the SDK may create
2526// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2527// for more information on using Contexts.
2528func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
2529	req, out := c.GetBucketPolicyRequest(input)
2530	req.SetContext(ctx)
2531	req.ApplyOptions(opts...)
2532	return out, req.Send()
2533}
2534
2535const opGetBucketReplication = "GetBucketReplication"
2536
2537// GetBucketReplicationRequest generates a "aws/request.Request" representing the
2538// client's request for the GetBucketReplication operation. The "output" return
2539// value will be populated with the request's response once the request completes
2540// successfuly.
2541//
2542// Use "Send" method on the returned Request to send the API call to the service.
2543// the "output" return value is not valid until after Send returns without error.
2544//
2545// See GetBucketReplication for more information on using the GetBucketReplication
2546// API call, and error handling.
2547//
2548// This method is useful when you want to inject custom logic or configuration
2549// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2550//
2551//
2552//    // Example sending a request using the GetBucketReplicationRequest method.
2553//    req, resp := client.GetBucketReplicationRequest(params)
2554//
2555//    err := req.Send()
2556//    if err == nil { // resp is now filled
2557//        fmt.Println(resp)
2558//    }
2559//
2560// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
2561func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
2562	op := &request.Operation{
2563		Name:       opGetBucketReplication,
2564		HTTPMethod: "GET",
2565		HTTPPath:   "/{Bucket}?replication",
2566	}
2567
2568	if input == nil {
2569		input = &GetBucketReplicationInput{}
2570	}
2571
2572	output = &GetBucketReplicationOutput{}
2573	req = c.newRequest(op, input, output)
2574	return
2575}
2576
2577// GetBucketReplication API operation for Amazon Simple Storage Service.
2578//
2579// Returns the replication configuration of a bucket.
2580//
2581// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2582// with awserr.Error's Code and Message methods to get detailed information about
2583// the error.
2584//
2585// See the AWS API reference guide for Amazon Simple Storage Service's
2586// API operation GetBucketReplication for usage and error information.
2587// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
2588func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
2589	req, out := c.GetBucketReplicationRequest(input)
2590	return out, req.Send()
2591}
2592
2593// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
2594// the ability to pass a context and additional request options.
2595//
2596// See GetBucketReplication for details on how to use this API operation.
2597//
2598// The context must be non-nil and will be used for request cancellation. If
2599// the context is nil a panic will occur. In the future the SDK may create
2600// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2601// for more information on using Contexts.
2602func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
2603	req, out := c.GetBucketReplicationRequest(input)
2604	req.SetContext(ctx)
2605	req.ApplyOptions(opts...)
2606	return out, req.Send()
2607}
2608
2609const opGetBucketRequestPayment = "GetBucketRequestPayment"
2610
2611// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
2612// client's request for the GetBucketRequestPayment operation. The "output" return
2613// value will be populated with the request's response once the request completes
2614// successfuly.
2615//
2616// Use "Send" method on the returned Request to send the API call to the service.
2617// the "output" return value is not valid until after Send returns without error.
2618//
2619// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
2620// API call, and error handling.
2621//
2622// This method is useful when you want to inject custom logic or configuration
2623// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2624//
2625//
2626//    // Example sending a request using the GetBucketRequestPaymentRequest method.
2627//    req, resp := client.GetBucketRequestPaymentRequest(params)
2628//
2629//    err := req.Send()
2630//    if err == nil { // resp is now filled
2631//        fmt.Println(resp)
2632//    }
2633//
2634// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
2635func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
2636	op := &request.Operation{
2637		Name:       opGetBucketRequestPayment,
2638		HTTPMethod: "GET",
2639		HTTPPath:   "/{Bucket}?requestPayment",
2640	}
2641
2642	if input == nil {
2643		input = &GetBucketRequestPaymentInput{}
2644	}
2645
2646	output = &GetBucketRequestPaymentOutput{}
2647	req = c.newRequest(op, input, output)
2648	return
2649}
2650
2651// GetBucketRequestPayment API operation for Amazon Simple Storage Service.
2652//
2653// Returns the request payment configuration of a bucket.
2654//
2655// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2656// with awserr.Error's Code and Message methods to get detailed information about
2657// the error.
2658//
2659// See the AWS API reference guide for Amazon Simple Storage Service's
2660// API operation GetBucketRequestPayment for usage and error information.
2661// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
2662func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
2663	req, out := c.GetBucketRequestPaymentRequest(input)
2664	return out, req.Send()
2665}
2666
2667// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
2668// the ability to pass a context and additional request options.
2669//
2670// See GetBucketRequestPayment for details on how to use this API operation.
2671//
2672// The context must be non-nil and will be used for request cancellation. If
2673// the context is nil a panic will occur. In the future the SDK may create
2674// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2675// for more information on using Contexts.
2676func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
2677	req, out := c.GetBucketRequestPaymentRequest(input)
2678	req.SetContext(ctx)
2679	req.ApplyOptions(opts...)
2680	return out, req.Send()
2681}
2682
2683const opGetBucketTagging = "GetBucketTagging"
2684
2685// GetBucketTaggingRequest generates a "aws/request.Request" representing the
2686// client's request for the GetBucketTagging operation. The "output" return
2687// value will be populated with the request's response once the request completes
2688// successfuly.
2689//
2690// Use "Send" method on the returned Request to send the API call to the service.
2691// the "output" return value is not valid until after Send returns without error.
2692//
2693// See GetBucketTagging for more information on using the GetBucketTagging
2694// API call, and error handling.
2695//
2696// This method is useful when you want to inject custom logic or configuration
2697// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2698//
2699//
2700//    // Example sending a request using the GetBucketTaggingRequest method.
2701//    req, resp := client.GetBucketTaggingRequest(params)
2702//
2703//    err := req.Send()
2704//    if err == nil { // resp is now filled
2705//        fmt.Println(resp)
2706//    }
2707//
2708// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
2709func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
2710	op := &request.Operation{
2711		Name:       opGetBucketTagging,
2712		HTTPMethod: "GET",
2713		HTTPPath:   "/{Bucket}?tagging",
2714	}
2715
2716	if input == nil {
2717		input = &GetBucketTaggingInput{}
2718	}
2719
2720	output = &GetBucketTaggingOutput{}
2721	req = c.newRequest(op, input, output)
2722	return
2723}
2724
2725// GetBucketTagging API operation for Amazon Simple Storage Service.
2726//
2727// Returns the tag set associated with the bucket.
2728//
2729// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2730// with awserr.Error's Code and Message methods to get detailed information about
2731// the error.
2732//
2733// See the AWS API reference guide for Amazon Simple Storage Service's
2734// API operation GetBucketTagging for usage and error information.
2735// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
2736func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
2737	req, out := c.GetBucketTaggingRequest(input)
2738	return out, req.Send()
2739}
2740
2741// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
2742// the ability to pass a context and additional request options.
2743//
2744// See GetBucketTagging for details on how to use this API operation.
2745//
2746// The context must be non-nil and will be used for request cancellation. If
2747// the context is nil a panic will occur. In the future the SDK may create
2748// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2749// for more information on using Contexts.
2750func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
2751	req, out := c.GetBucketTaggingRequest(input)
2752	req.SetContext(ctx)
2753	req.ApplyOptions(opts...)
2754	return out, req.Send()
2755}
2756
2757const opGetBucketVersioning = "GetBucketVersioning"
2758
2759// GetBucketVersioningRequest generates a "aws/request.Request" representing the
2760// client's request for the GetBucketVersioning operation. The "output" return
2761// value will be populated with the request's response once the request completes
2762// successfuly.
2763//
2764// Use "Send" method on the returned Request to send the API call to the service.
2765// the "output" return value is not valid until after Send returns without error.
2766//
2767// See GetBucketVersioning for more information on using the GetBucketVersioning
2768// API call, and error handling.
2769//
2770// This method is useful when you want to inject custom logic or configuration
2771// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2772//
2773//
2774//    // Example sending a request using the GetBucketVersioningRequest method.
2775//    req, resp := client.GetBucketVersioningRequest(params)
2776//
2777//    err := req.Send()
2778//    if err == nil { // resp is now filled
2779//        fmt.Println(resp)
2780//    }
2781//
2782// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
2783func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
2784	op := &request.Operation{
2785		Name:       opGetBucketVersioning,
2786		HTTPMethod: "GET",
2787		HTTPPath:   "/{Bucket}?versioning",
2788	}
2789
2790	if input == nil {
2791		input = &GetBucketVersioningInput{}
2792	}
2793
2794	output = &GetBucketVersioningOutput{}
2795	req = c.newRequest(op, input, output)
2796	return
2797}
2798
2799// GetBucketVersioning API operation for Amazon Simple Storage Service.
2800//
2801// Returns the versioning state of a bucket.
2802//
2803// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2804// with awserr.Error's Code and Message methods to get detailed information about
2805// the error.
2806//
2807// See the AWS API reference guide for Amazon Simple Storage Service's
2808// API operation GetBucketVersioning for usage and error information.
2809// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
2810func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
2811	req, out := c.GetBucketVersioningRequest(input)
2812	return out, req.Send()
2813}
2814
2815// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
2816// the ability to pass a context and additional request options.
2817//
2818// See GetBucketVersioning for details on how to use this API operation.
2819//
2820// The context must be non-nil and will be used for request cancellation. If
2821// the context is nil a panic will occur. In the future the SDK may create
2822// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2823// for more information on using Contexts.
2824func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
2825	req, out := c.GetBucketVersioningRequest(input)
2826	req.SetContext(ctx)
2827	req.ApplyOptions(opts...)
2828	return out, req.Send()
2829}
2830
2831const opGetBucketWebsite = "GetBucketWebsite"
2832
2833// GetBucketWebsiteRequest generates a "aws/request.Request" representing the
2834// client's request for the GetBucketWebsite operation. The "output" return
2835// value will be populated with the request's response once the request completes
2836// successfuly.
2837//
2838// Use "Send" method on the returned Request to send the API call to the service.
2839// the "output" return value is not valid until after Send returns without error.
2840//
2841// See GetBucketWebsite for more information on using the GetBucketWebsite
2842// API call, and error handling.
2843//
2844// This method is useful when you want to inject custom logic or configuration
2845// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2846//
2847//
2848//    // Example sending a request using the GetBucketWebsiteRequest method.
2849//    req, resp := client.GetBucketWebsiteRequest(params)
2850//
2851//    err := req.Send()
2852//    if err == nil { // resp is now filled
2853//        fmt.Println(resp)
2854//    }
2855//
2856// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
2857func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
2858	op := &request.Operation{
2859		Name:       opGetBucketWebsite,
2860		HTTPMethod: "GET",
2861		HTTPPath:   "/{Bucket}?website",
2862	}
2863
2864	if input == nil {
2865		input = &GetBucketWebsiteInput{}
2866	}
2867
2868	output = &GetBucketWebsiteOutput{}
2869	req = c.newRequest(op, input, output)
2870	return
2871}
2872
2873// GetBucketWebsite API operation for Amazon Simple Storage Service.
2874//
2875// Returns the website configuration for a bucket.
2876//
2877// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2878// with awserr.Error's Code and Message methods to get detailed information about
2879// the error.
2880//
2881// See the AWS API reference guide for Amazon Simple Storage Service's
2882// API operation GetBucketWebsite for usage and error information.
2883// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
2884func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
2885	req, out := c.GetBucketWebsiteRequest(input)
2886	return out, req.Send()
2887}
2888
2889// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
2890// the ability to pass a context and additional request options.
2891//
2892// See GetBucketWebsite for details on how to use this API operation.
2893//
2894// The context must be non-nil and will be used for request cancellation. If
2895// the context is nil a panic will occur. In the future the SDK may create
2896// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2897// for more information on using Contexts.
2898func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
2899	req, out := c.GetBucketWebsiteRequest(input)
2900	req.SetContext(ctx)
2901	req.ApplyOptions(opts...)
2902	return out, req.Send()
2903}
2904
2905const opGetObject = "GetObject"
2906
2907// GetObjectRequest generates a "aws/request.Request" representing the
2908// client's request for the GetObject operation. The "output" return
2909// value will be populated with the request's response once the request completes
2910// successfuly.
2911//
2912// Use "Send" method on the returned Request to send the API call to the service.
2913// the "output" return value is not valid until after Send returns without error.
2914//
2915// See GetObject for more information on using the GetObject
2916// API call, and error handling.
2917//
2918// This method is useful when you want to inject custom logic or configuration
2919// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2920//
2921//
2922//    // Example sending a request using the GetObjectRequest method.
2923//    req, resp := client.GetObjectRequest(params)
2924//
2925//    err := req.Send()
2926//    if err == nil { // resp is now filled
2927//        fmt.Println(resp)
2928//    }
2929//
2930// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
2931func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
2932	op := &request.Operation{
2933		Name:       opGetObject,
2934		HTTPMethod: "GET",
2935		HTTPPath:   "/{Bucket}/{Key+}",
2936	}
2937
2938	if input == nil {
2939		input = &GetObjectInput{}
2940	}
2941
2942	output = &GetObjectOutput{}
2943	req = c.newRequest(op, input, output)
2944	return
2945}
2946
2947// GetObject API operation for Amazon Simple Storage Service.
2948//
2949// Retrieves objects from Amazon S3.
2950//
2951// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2952// with awserr.Error's Code and Message methods to get detailed information about
2953// the error.
2954//
2955// See the AWS API reference guide for Amazon Simple Storage Service's
2956// API operation GetObject for usage and error information.
2957//
2958// Returned Error Codes:
2959//   * ErrCodeNoSuchKey "NoSuchKey"
2960//   The specified key does not exist.
2961//
2962// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
2963func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
2964	req, out := c.GetObjectRequest(input)
2965	return out, req.Send()
2966}
2967
2968// GetObjectWithContext is the same as GetObject with the addition of
2969// the ability to pass a context and additional request options.
2970//
2971// See GetObject for details on how to use this API operation.
2972//
2973// The context must be non-nil and will be used for request cancellation. If
2974// the context is nil a panic will occur. In the future the SDK may create
2975// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2976// for more information on using Contexts.
2977func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
2978	req, out := c.GetObjectRequest(input)
2979	req.SetContext(ctx)
2980	req.ApplyOptions(opts...)
2981	return out, req.Send()
2982}
2983
2984const opGetObjectAcl = "GetObjectAcl"
2985
2986// GetObjectAclRequest generates a "aws/request.Request" representing the
2987// client's request for the GetObjectAcl operation. The "output" return
2988// value will be populated with the request's response once the request completes
2989// successfuly.
2990//
2991// Use "Send" method on the returned Request to send the API call to the service.
2992// the "output" return value is not valid until after Send returns without error.
2993//
2994// See GetObjectAcl for more information on using the GetObjectAcl
2995// API call, and error handling.
2996//
2997// This method is useful when you want to inject custom logic or configuration
2998// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2999//
3000//
3001//    // Example sending a request using the GetObjectAclRequest method.
3002//    req, resp := client.GetObjectAclRequest(params)
3003//
3004//    err := req.Send()
3005//    if err == nil { // resp is now filled
3006//        fmt.Println(resp)
3007//    }
3008//
3009// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
3010func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
3011	op := &request.Operation{
3012		Name:       opGetObjectAcl,
3013		HTTPMethod: "GET",
3014		HTTPPath:   "/{Bucket}/{Key+}?acl",
3015	}
3016
3017	if input == nil {
3018		input = &GetObjectAclInput{}
3019	}
3020
3021	output = &GetObjectAclOutput{}
3022	req = c.newRequest(op, input, output)
3023	return
3024}
3025
3026// GetObjectAcl API operation for Amazon Simple Storage Service.
3027//
3028// Returns the access control list (ACL) of an object.
3029//
3030// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3031// with awserr.Error's Code and Message methods to get detailed information about
3032// the error.
3033//
3034// See the AWS API reference guide for Amazon Simple Storage Service's
3035// API operation GetObjectAcl for usage and error information.
3036//
3037// Returned Error Codes:
3038//   * ErrCodeNoSuchKey "NoSuchKey"
3039//   The specified key does not exist.
3040//
3041// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
3042func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
3043	req, out := c.GetObjectAclRequest(input)
3044	return out, req.Send()
3045}
3046
3047// GetObjectAclWithContext is the same as GetObjectAcl with the addition of
3048// the ability to pass a context and additional request options.
3049//
3050// See GetObjectAcl for details on how to use this API operation.
3051//
3052// The context must be non-nil and will be used for request cancellation. If
3053// the context is nil a panic will occur. In the future the SDK may create
3054// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3055// for more information on using Contexts.
3056func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
3057	req, out := c.GetObjectAclRequest(input)
3058	req.SetContext(ctx)
3059	req.ApplyOptions(opts...)
3060	return out, req.Send()
3061}
3062
3063const opGetObjectTagging = "GetObjectTagging"
3064
3065// GetObjectTaggingRequest generates a "aws/request.Request" representing the
3066// client's request for the GetObjectTagging operation. The "output" return
3067// value will be populated with the request's response once the request completes
3068// successfuly.
3069//
3070// Use "Send" method on the returned Request to send the API call to the service.
3071// the "output" return value is not valid until after Send returns without error.
3072//
3073// See GetObjectTagging for more information on using the GetObjectTagging
3074// API call, and error handling.
3075//
3076// This method is useful when you want to inject custom logic or configuration
3077// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3078//
3079//
3080//    // Example sending a request using the GetObjectTaggingRequest method.
3081//    req, resp := client.GetObjectTaggingRequest(params)
3082//
3083//    err := req.Send()
3084//    if err == nil { // resp is now filled
3085//        fmt.Println(resp)
3086//    }
3087//
3088// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
3089func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
3090	op := &request.Operation{
3091		Name:       opGetObjectTagging,
3092		HTTPMethod: "GET",
3093		HTTPPath:   "/{Bucket}/{Key+}?tagging",
3094	}
3095
3096	if input == nil {
3097		input = &GetObjectTaggingInput{}
3098	}
3099
3100	output = &GetObjectTaggingOutput{}
3101	req = c.newRequest(op, input, output)
3102	return
3103}
3104
3105// GetObjectTagging API operation for Amazon Simple Storage Service.
3106//
3107// Returns the tag-set of an object.
3108//
3109// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3110// with awserr.Error's Code and Message methods to get detailed information about
3111// the error.
3112//
3113// See the AWS API reference guide for Amazon Simple Storage Service's
3114// API operation GetObjectTagging for usage and error information.
3115// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
3116func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
3117	req, out := c.GetObjectTaggingRequest(input)
3118	return out, req.Send()
3119}
3120
3121// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
3122// the ability to pass a context and additional request options.
3123//
3124// See GetObjectTagging for details on how to use this API operation.
3125//
3126// The context must be non-nil and will be used for request cancellation. If
3127// the context is nil a panic will occur. In the future the SDK may create
3128// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3129// for more information on using Contexts.
3130func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
3131	req, out := c.GetObjectTaggingRequest(input)
3132	req.SetContext(ctx)
3133	req.ApplyOptions(opts...)
3134	return out, req.Send()
3135}
3136
3137const opGetObjectTorrent = "GetObjectTorrent"
3138
3139// GetObjectTorrentRequest generates a "aws/request.Request" representing the
3140// client's request for the GetObjectTorrent operation. The "output" return
3141// value will be populated with the request's response once the request completes
3142// successfuly.
3143//
3144// Use "Send" method on the returned Request to send the API call to the service.
3145// the "output" return value is not valid until after Send returns without error.
3146//
3147// See GetObjectTorrent for more information on using the GetObjectTorrent
3148// API call, and error handling.
3149//
3150// This method is useful when you want to inject custom logic or configuration
3151// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3152//
3153//
3154//    // Example sending a request using the GetObjectTorrentRequest method.
3155//    req, resp := client.GetObjectTorrentRequest(params)
3156//
3157//    err := req.Send()
3158//    if err == nil { // resp is now filled
3159//        fmt.Println(resp)
3160//    }
3161//
3162// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
3163func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
3164	op := &request.Operation{
3165		Name:       opGetObjectTorrent,
3166		HTTPMethod: "GET",
3167		HTTPPath:   "/{Bucket}/{Key+}?torrent",
3168	}
3169
3170	if input == nil {
3171		input = &GetObjectTorrentInput{}
3172	}
3173
3174	output = &GetObjectTorrentOutput{}
3175	req = c.newRequest(op, input, output)
3176	return
3177}
3178
3179// GetObjectTorrent API operation for Amazon Simple Storage Service.
3180//
3181// Return torrent files from a bucket.
3182//
3183// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3184// with awserr.Error's Code and Message methods to get detailed information about
3185// the error.
3186//
3187// See the AWS API reference guide for Amazon Simple Storage Service's
3188// API operation GetObjectTorrent for usage and error information.
3189// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
3190func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
3191	req, out := c.GetObjectTorrentRequest(input)
3192	return out, req.Send()
3193}
3194
3195// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
3196// the ability to pass a context and additional request options.
3197//
3198// See GetObjectTorrent for details on how to use this API operation.
3199//
3200// The context must be non-nil and will be used for request cancellation. If
3201// the context is nil a panic will occur. In the future the SDK may create
3202// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3203// for more information on using Contexts.
3204func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
3205	req, out := c.GetObjectTorrentRequest(input)
3206	req.SetContext(ctx)
3207	req.ApplyOptions(opts...)
3208	return out, req.Send()
3209}
3210
3211const opHeadBucket = "HeadBucket"
3212
3213// HeadBucketRequest generates a "aws/request.Request" representing the
3214// client's request for the HeadBucket operation. The "output" return
3215// value will be populated with the request's response once the request completes
3216// successfuly.
3217//
3218// Use "Send" method on the returned Request to send the API call to the service.
3219// the "output" return value is not valid until after Send returns without error.
3220//
3221// See HeadBucket for more information on using the HeadBucket
3222// API call, and error handling.
3223//
3224// This method is useful when you want to inject custom logic or configuration
3225// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3226//
3227//
3228//    // Example sending a request using the HeadBucketRequest method.
3229//    req, resp := client.HeadBucketRequest(params)
3230//
3231//    err := req.Send()
3232//    if err == nil { // resp is now filled
3233//        fmt.Println(resp)
3234//    }
3235//
3236// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
3237func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
3238	op := &request.Operation{
3239		Name:       opHeadBucket,
3240		HTTPMethod: "HEAD",
3241		HTTPPath:   "/{Bucket}",
3242	}
3243
3244	if input == nil {
3245		input = &HeadBucketInput{}
3246	}
3247
3248	output = &HeadBucketOutput{}
3249	req = c.newRequest(op, input, output)
3250	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
3251	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
3252	return
3253}
3254
3255// HeadBucket API operation for Amazon Simple Storage Service.
3256//
3257// This operation is useful to determine if a bucket exists and you have permission
3258// to access it.
3259//
3260// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3261// with awserr.Error's Code and Message methods to get detailed information about
3262// the error.
3263//
3264// See the AWS API reference guide for Amazon Simple Storage Service's
3265// API operation HeadBucket for usage and error information.
3266//
3267// Returned Error Codes:
3268//   * ErrCodeNoSuchBucket "NoSuchBucket"
3269//   The specified bucket does not exist.
3270//
3271// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
3272func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
3273	req, out := c.HeadBucketRequest(input)
3274	return out, req.Send()
3275}
3276
3277// HeadBucketWithContext is the same as HeadBucket with the addition of
3278// the ability to pass a context and additional request options.
3279//
3280// See HeadBucket for details on how to use this API operation.
3281//
3282// The context must be non-nil and will be used for request cancellation. If
3283// the context is nil a panic will occur. In the future the SDK may create
3284// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3285// for more information on using Contexts.
3286func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
3287	req, out := c.HeadBucketRequest(input)
3288	req.SetContext(ctx)
3289	req.ApplyOptions(opts...)
3290	return out, req.Send()
3291}
3292
3293const opHeadObject = "HeadObject"
3294
3295// HeadObjectRequest generates a "aws/request.Request" representing the
3296// client's request for the HeadObject operation. The "output" return
3297// value will be populated with the request's response once the request completes
3298// successfuly.
3299//
3300// Use "Send" method on the returned Request to send the API call to the service.
3301// the "output" return value is not valid until after Send returns without error.
3302//
3303// See HeadObject for more information on using the HeadObject
3304// API call, and error handling.
3305//
3306// This method is useful when you want to inject custom logic or configuration
3307// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3308//
3309//
3310//    // Example sending a request using the HeadObjectRequest method.
3311//    req, resp := client.HeadObjectRequest(params)
3312//
3313//    err := req.Send()
3314//    if err == nil { // resp is now filled
3315//        fmt.Println(resp)
3316//    }
3317//
3318// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
3319func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
3320	op := &request.Operation{
3321		Name:       opHeadObject,
3322		HTTPMethod: "HEAD",
3323		HTTPPath:   "/{Bucket}/{Key+}",
3324	}
3325
3326	if input == nil {
3327		input = &HeadObjectInput{}
3328	}
3329
3330	output = &HeadObjectOutput{}
3331	req = c.newRequest(op, input, output)
3332	return
3333}
3334
3335// HeadObject API operation for Amazon Simple Storage Service.
3336//
3337// The HEAD operation retrieves metadata from an object without returning the
3338// object itself. This operation is useful if you're only interested in an object's
3339// metadata. To use HEAD, you must have READ access to the object.
3340//
3341// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
3342// for more information on returned errors.
3343//
3344// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3345// with awserr.Error's Code and Message methods to get detailed information about
3346// the error.
3347//
3348// See the AWS API reference guide for Amazon Simple Storage Service's
3349// API operation HeadObject for usage and error information.
3350// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
3351func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
3352	req, out := c.HeadObjectRequest(input)
3353	return out, req.Send()
3354}
3355
3356// HeadObjectWithContext is the same as HeadObject with the addition of
3357// the ability to pass a context and additional request options.
3358//
3359// See HeadObject for details on how to use this API operation.
3360//
3361// The context must be non-nil and will be used for request cancellation. If
3362// the context is nil a panic will occur. In the future the SDK may create
3363// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3364// for more information on using Contexts.
3365func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
3366	req, out := c.HeadObjectRequest(input)
3367	req.SetContext(ctx)
3368	req.ApplyOptions(opts...)
3369	return out, req.Send()
3370}
3371
3372const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
3373
3374// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
3375// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
3376// value will be populated with the request's response once the request completes
3377// successfuly.
3378//
3379// Use "Send" method on the returned Request to send the API call to the service.
3380// the "output" return value is not valid until after Send returns without error.
3381//
3382// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
3383// API call, and error handling.
3384//
3385// This method is useful when you want to inject custom logic or configuration
3386// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3387//
3388//
3389//    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
3390//    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
3391//
3392//    err := req.Send()
3393//    if err == nil { // resp is now filled
3394//        fmt.Println(resp)
3395//    }
3396//
3397// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
3398func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
3399	op := &request.Operation{
3400		Name:       opListBucketAnalyticsConfigurations,
3401		HTTPMethod: "GET",
3402		HTTPPath:   "/{Bucket}?analytics",
3403	}
3404
3405	if input == nil {
3406		input = &ListBucketAnalyticsConfigurationsInput{}
3407	}
3408
3409	output = &ListBucketAnalyticsConfigurationsOutput{}
3410	req = c.newRequest(op, input, output)
3411	return
3412}
3413
3414// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
3415//
3416// Lists the analytics configurations for the bucket.
3417//
3418// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3419// with awserr.Error's Code and Message methods to get detailed information about
3420// the error.
3421//
3422// See the AWS API reference guide for Amazon Simple Storage Service's
3423// API operation ListBucketAnalyticsConfigurations for usage and error information.
3424// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
3425func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
3426	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
3427	return out, req.Send()
3428}
3429
3430// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
3431// the ability to pass a context and additional request options.
3432//
3433// See ListBucketAnalyticsConfigurations for details on how to use this API operation.
3434//
3435// The context must be non-nil and will be used for request cancellation. If
3436// the context is nil a panic will occur. In the future the SDK may create
3437// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3438// for more information on using Contexts.
3439func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
3440	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
3441	req.SetContext(ctx)
3442	req.ApplyOptions(opts...)
3443	return out, req.Send()
3444}
3445
3446const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
3447
3448// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
3449// client's request for the ListBucketInventoryConfigurations operation. The "output" return
3450// value will be populated with the request's response once the request completes
3451// successfuly.
3452//
3453// Use "Send" method on the returned Request to send the API call to the service.
3454// the "output" return value is not valid until after Send returns without error.
3455//
3456// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
3457// API call, and error handling.
3458//
3459// This method is useful when you want to inject custom logic or configuration
3460// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3461//
3462//
3463//    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
3464//    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
3465//
3466//    err := req.Send()
3467//    if err == nil { // resp is now filled
3468//        fmt.Println(resp)
3469//    }
3470//
3471// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
3472func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
3473	op := &request.Operation{
3474		Name:       opListBucketInventoryConfigurations,
3475		HTTPMethod: "GET",
3476		HTTPPath:   "/{Bucket}?inventory",
3477	}
3478
3479	if input == nil {
3480		input = &ListBucketInventoryConfigurationsInput{}
3481	}
3482
3483	output = &ListBucketInventoryConfigurationsOutput{}
3484	req = c.newRequest(op, input, output)
3485	return
3486}
3487
3488// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
3489//
3490// Returns a list of inventory configurations for the bucket.
3491//
3492// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3493// with awserr.Error's Code and Message methods to get detailed information about
3494// the error.
3495//
3496// See the AWS API reference guide for Amazon Simple Storage Service's
3497// API operation ListBucketInventoryConfigurations for usage and error information.
3498// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
3499func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
3500	req, out := c.ListBucketInventoryConfigurationsRequest(input)
3501	return out, req.Send()
3502}
3503
3504// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
3505// the ability to pass a context and additional request options.
3506//
3507// See ListBucketInventoryConfigurations for details on how to use this API operation.
3508//
3509// The context must be non-nil and will be used for request cancellation. If
3510// the context is nil a panic will occur. In the future the SDK may create
3511// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3512// for more information on using Contexts.
3513func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
3514	req, out := c.ListBucketInventoryConfigurationsRequest(input)
3515	req.SetContext(ctx)
3516	req.ApplyOptions(opts...)
3517	return out, req.Send()
3518}
3519
3520const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
3521
3522// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
3523// client's request for the ListBucketMetricsConfigurations operation. The "output" return
3524// value will be populated with the request's response once the request completes
3525// successfuly.
3526//
3527// Use "Send" method on the returned Request to send the API call to the service.
3528// the "output" return value is not valid until after Send returns without error.
3529//
3530// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
3531// API call, and error handling.
3532//
3533// This method is useful when you want to inject custom logic or configuration
3534// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3535//
3536//
3537//    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
3538//    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
3539//
3540//    err := req.Send()
3541//    if err == nil { // resp is now filled
3542//        fmt.Println(resp)
3543//    }
3544//
3545// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
3546func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
3547	op := &request.Operation{
3548		Name:       opListBucketMetricsConfigurations,
3549		HTTPMethod: "GET",
3550		HTTPPath:   "/{Bucket}?metrics",
3551	}
3552
3553	if input == nil {
3554		input = &ListBucketMetricsConfigurationsInput{}
3555	}
3556
3557	output = &ListBucketMetricsConfigurationsOutput{}
3558	req = c.newRequest(op, input, output)
3559	return
3560}
3561
3562// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
3563//
3564// Lists the metrics configurations for the bucket.
3565//
3566// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3567// with awserr.Error's Code and Message methods to get detailed information about
3568// the error.
3569//
3570// See the AWS API reference guide for Amazon Simple Storage Service's
3571// API operation ListBucketMetricsConfigurations for usage and error information.
3572// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
3573func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
3574	req, out := c.ListBucketMetricsConfigurationsRequest(input)
3575	return out, req.Send()
3576}
3577
3578// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
3579// the ability to pass a context and additional request options.
3580//
3581// See ListBucketMetricsConfigurations for details on how to use this API operation.
3582//
3583// The context must be non-nil and will be used for request cancellation. If
3584// the context is nil a panic will occur. In the future the SDK may create
3585// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3586// for more information on using Contexts.
3587func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
3588	req, out := c.ListBucketMetricsConfigurationsRequest(input)
3589	req.SetContext(ctx)
3590	req.ApplyOptions(opts...)
3591	return out, req.Send()
3592}
3593
3594const opListBuckets = "ListBuckets"
3595
3596// ListBucketsRequest generates a "aws/request.Request" representing the
3597// client's request for the ListBuckets operation. The "output" return
3598// value will be populated with the request's response once the request completes
3599// successfuly.
3600//
3601// Use "Send" method on the returned Request to send the API call to the service.
3602// the "output" return value is not valid until after Send returns without error.
3603//
3604// See ListBuckets for more information on using the ListBuckets
3605// API call, and error handling.
3606//
3607// This method is useful when you want to inject custom logic or configuration
3608// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3609//
3610//
3611//    // Example sending a request using the ListBucketsRequest method.
3612//    req, resp := client.ListBucketsRequest(params)
3613//
3614//    err := req.Send()
3615//    if err == nil { // resp is now filled
3616//        fmt.Println(resp)
3617//    }
3618//
3619// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
3620func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
3621	op := &request.Operation{
3622		Name:       opListBuckets,
3623		HTTPMethod: "GET",
3624		HTTPPath:   "/",
3625	}
3626
3627	if input == nil {
3628		input = &ListBucketsInput{}
3629	}
3630
3631	output = &ListBucketsOutput{}
3632	req = c.newRequest(op, input, output)
3633	return
3634}
3635
3636// ListBuckets API operation for Amazon Simple Storage Service.
3637//
3638// Returns a list of all buckets owned by the authenticated sender of the request.
3639//
3640// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3641// with awserr.Error's Code and Message methods to get detailed information about
3642// the error.
3643//
3644// See the AWS API reference guide for Amazon Simple Storage Service's
3645// API operation ListBuckets for usage and error information.
3646// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
3647func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
3648	req, out := c.ListBucketsRequest(input)
3649	return out, req.Send()
3650}
3651
3652// ListBucketsWithContext is the same as ListBuckets with the addition of
3653// the ability to pass a context and additional request options.
3654//
3655// See ListBuckets for details on how to use this API operation.
3656//
3657// The context must be non-nil and will be used for request cancellation. If
3658// the context is nil a panic will occur. In the future the SDK may create
3659// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3660// for more information on using Contexts.
3661func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
3662	req, out := c.ListBucketsRequest(input)
3663	req.SetContext(ctx)
3664	req.ApplyOptions(opts...)
3665	return out, req.Send()
3666}
3667
3668const opListMultipartUploads = "ListMultipartUploads"
3669
3670// ListMultipartUploadsRequest generates a "aws/request.Request" representing the
3671// client's request for the ListMultipartUploads operation. The "output" return
3672// value will be populated with the request's response once the request completes
3673// successfuly.
3674//
3675// Use "Send" method on the returned Request to send the API call to the service.
3676// the "output" return value is not valid until after Send returns without error.
3677//
3678// See ListMultipartUploads for more information on using the ListMultipartUploads
3679// API call, and error handling.
3680//
3681// This method is useful when you want to inject custom logic or configuration
3682// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3683//
3684//
3685//    // Example sending a request using the ListMultipartUploadsRequest method.
3686//    req, resp := client.ListMultipartUploadsRequest(params)
3687//
3688//    err := req.Send()
3689//    if err == nil { // resp is now filled
3690//        fmt.Println(resp)
3691//    }
3692//
3693// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
3694func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
3695	op := &request.Operation{
3696		Name:       opListMultipartUploads,
3697		HTTPMethod: "GET",
3698		HTTPPath:   "/{Bucket}?uploads",
3699		Paginator: &request.Paginator{
3700			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
3701			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
3702			LimitToken:      "MaxUploads",
3703			TruncationToken: "IsTruncated",
3704		},
3705	}
3706
3707	if input == nil {
3708		input = &ListMultipartUploadsInput{}
3709	}
3710
3711	output = &ListMultipartUploadsOutput{}
3712	req = c.newRequest(op, input, output)
3713	return
3714}
3715
3716// ListMultipartUploads API operation for Amazon Simple Storage Service.
3717//
3718// This operation lists in-progress multipart uploads.
3719//
3720// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3721// with awserr.Error's Code and Message methods to get detailed information about
3722// the error.
3723//
3724// See the AWS API reference guide for Amazon Simple Storage Service's
3725// API operation ListMultipartUploads for usage and error information.
3726// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
3727func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
3728	req, out := c.ListMultipartUploadsRequest(input)
3729	return out, req.Send()
3730}
3731
3732// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
3733// the ability to pass a context and additional request options.
3734//
3735// See ListMultipartUploads for details on how to use this API operation.
3736//
3737// The context must be non-nil and will be used for request cancellation. If
3738// the context is nil a panic will occur. In the future the SDK may create
3739// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3740// for more information on using Contexts.
3741func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
3742	req, out := c.ListMultipartUploadsRequest(input)
3743	req.SetContext(ctx)
3744	req.ApplyOptions(opts...)
3745	return out, req.Send()
3746}
3747
3748// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
3749// calling the "fn" function with the response data for each page. To stop
3750// iterating, return false from the fn function.
3751//
3752// See ListMultipartUploads method for more information on how to use this operation.
3753//
3754// Note: This operation can generate multiple requests to a service.
3755//
3756//    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
3757//    pageNum := 0
3758//    err := client.ListMultipartUploadsPages(params,
3759//        func(page *ListMultipartUploadsOutput, lastPage bool) bool {
3760//            pageNum++
3761//            fmt.Println(page)
3762//            return pageNum <= 3
3763//        })
3764//
3765func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
3766	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
3767}
3768
3769// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
3770// it takes a Context and allows setting request options on the pages.
3771//
3772// The context must be non-nil and will be used for request cancellation. If
3773// the context is nil a panic will occur. In the future the SDK may create
3774// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3775// for more information on using Contexts.
3776func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
3777	p := request.Pagination{
3778		NewRequest: func() (*request.Request, error) {
3779			var inCpy *ListMultipartUploadsInput
3780			if input != nil {
3781				tmp := *input
3782				inCpy = &tmp
3783			}
3784			req, _ := c.ListMultipartUploadsRequest(inCpy)
3785			req.SetContext(ctx)
3786			req.ApplyOptions(opts...)
3787			return req, nil
3788		},
3789	}
3790
3791	cont := true
3792	for p.Next() && cont {
3793		cont = fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage())
3794	}
3795	return p.Err()
3796}
3797
3798const opListObjectVersions = "ListObjectVersions"
3799
3800// ListObjectVersionsRequest generates a "aws/request.Request" representing the
3801// client's request for the ListObjectVersions operation. The "output" return
3802// value will be populated with the request's response once the request completes
3803// successfuly.
3804//
3805// Use "Send" method on the returned Request to send the API call to the service.
3806// the "output" return value is not valid until after Send returns without error.
3807//
3808// See ListObjectVersions for more information on using the ListObjectVersions
3809// API call, and error handling.
3810//
3811// This method is useful when you want to inject custom logic or configuration
3812// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3813//
3814//
3815//    // Example sending a request using the ListObjectVersionsRequest method.
3816//    req, resp := client.ListObjectVersionsRequest(params)
3817//
3818//    err := req.Send()
3819//    if err == nil { // resp is now filled
3820//        fmt.Println(resp)
3821//    }
3822//
3823// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
3824func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
3825	op := &request.Operation{
3826		Name:       opListObjectVersions,
3827		HTTPMethod: "GET",
3828		HTTPPath:   "/{Bucket}?versions",
3829		Paginator: &request.Paginator{
3830			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
3831			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
3832			LimitToken:      "MaxKeys",
3833			TruncationToken: "IsTruncated",
3834		},
3835	}
3836
3837	if input == nil {
3838		input = &ListObjectVersionsInput{}
3839	}
3840
3841	output = &ListObjectVersionsOutput{}
3842	req = c.newRequest(op, input, output)
3843	return
3844}
3845
3846// ListObjectVersions API operation for Amazon Simple Storage Service.
3847//
3848// Returns metadata about all of the versions of objects in a bucket.
3849//
3850// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3851// with awserr.Error's Code and Message methods to get detailed information about
3852// the error.
3853//
3854// See the AWS API reference guide for Amazon Simple Storage Service's
3855// API operation ListObjectVersions for usage and error information.
3856// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
3857func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
3858	req, out := c.ListObjectVersionsRequest(input)
3859	return out, req.Send()
3860}
3861
3862// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
3863// the ability to pass a context and additional request options.
3864//
3865// See ListObjectVersions for details on how to use this API operation.
3866//
3867// The context must be non-nil and will be used for request cancellation. If
3868// the context is nil a panic will occur. In the future the SDK may create
3869// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3870// for more information on using Contexts.
3871func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
3872	req, out := c.ListObjectVersionsRequest(input)
3873	req.SetContext(ctx)
3874	req.ApplyOptions(opts...)
3875	return out, req.Send()
3876}
3877
3878// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
3879// calling the "fn" function with the response data for each page. To stop
3880// iterating, return false from the fn function.
3881//
3882// See ListObjectVersions method for more information on how to use this operation.
3883//
3884// Note: This operation can generate multiple requests to a service.
3885//
3886//    // Example iterating over at most 3 pages of a ListObjectVersions operation.
3887//    pageNum := 0
3888//    err := client.ListObjectVersionsPages(params,
3889//        func(page *ListObjectVersionsOutput, lastPage bool) bool {
3890//            pageNum++
3891//            fmt.Println(page)
3892//            return pageNum <= 3
3893//        })
3894//
3895func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
3896	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
3897}
3898
3899// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
3900// it takes a Context and allows setting request options on the pages.
3901//
3902// The context must be non-nil and will be used for request cancellation. If
3903// the context is nil a panic will occur. In the future the SDK may create
3904// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3905// for more information on using Contexts.
3906func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
3907	p := request.Pagination{
3908		NewRequest: func() (*request.Request, error) {
3909			var inCpy *ListObjectVersionsInput
3910			if input != nil {
3911				tmp := *input
3912				inCpy = &tmp
3913			}
3914			req, _ := c.ListObjectVersionsRequest(inCpy)
3915			req.SetContext(ctx)
3916			req.ApplyOptions(opts...)
3917			return req, nil
3918		},
3919	}
3920
3921	cont := true
3922	for p.Next() && cont {
3923		cont = fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage())
3924	}
3925	return p.Err()
3926}
3927
3928const opListObjects = "ListObjects"
3929
3930// ListObjectsRequest generates a "aws/request.Request" representing the
3931// client's request for the ListObjects operation. The "output" return
3932// value will be populated with the request's response once the request completes
3933// successfuly.
3934//
3935// Use "Send" method on the returned Request to send the API call to the service.
3936// the "output" return value is not valid until after Send returns without error.
3937//
3938// See ListObjects for more information on using the ListObjects
3939// API call, and error handling.
3940//
3941// This method is useful when you want to inject custom logic or configuration
3942// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3943//
3944//
3945//    // Example sending a request using the ListObjectsRequest method.
3946//    req, resp := client.ListObjectsRequest(params)
3947//
3948//    err := req.Send()
3949//    if err == nil { // resp is now filled
3950//        fmt.Println(resp)
3951//    }
3952//
3953// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
3954func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
3955	op := &request.Operation{
3956		Name:       opListObjects,
3957		HTTPMethod: "GET",
3958		HTTPPath:   "/{Bucket}",
3959		Paginator: &request.Paginator{
3960			InputTokens:     []string{"Marker"},
3961			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
3962			LimitToken:      "MaxKeys",
3963			TruncationToken: "IsTruncated",
3964		},
3965	}
3966
3967	if input == nil {
3968		input = &ListObjectsInput{}
3969	}
3970
3971	output = &ListObjectsOutput{}
3972	req = c.newRequest(op, input, output)
3973	return
3974}
3975
3976// ListObjects API operation for Amazon Simple Storage Service.
3977//
3978// Returns some or all (up to 1000) of the objects in a bucket. You can use
3979// the request parameters as selection criteria to return a subset of the objects
3980// in a bucket.
3981//
3982// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3983// with awserr.Error's Code and Message methods to get detailed information about
3984// the error.
3985//
3986// See the AWS API reference guide for Amazon Simple Storage Service's
3987// API operation ListObjects for usage and error information.
3988//
3989// Returned Error Codes:
3990//   * ErrCodeNoSuchBucket "NoSuchBucket"
3991//   The specified bucket does not exist.
3992//
3993// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
3994func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
3995	req, out := c.ListObjectsRequest(input)
3996	return out, req.Send()
3997}
3998
3999// ListObjectsWithContext is the same as ListObjects with the addition of
4000// the ability to pass a context and additional request options.
4001//
4002// See ListObjects for details on how to use this API operation.
4003//
4004// The context must be non-nil and will be used for request cancellation. If
4005// the context is nil a panic will occur. In the future the SDK may create
4006// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4007// for more information on using Contexts.
4008func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
4009	req, out := c.ListObjectsRequest(input)
4010	req.SetContext(ctx)
4011	req.ApplyOptions(opts...)
4012	return out, req.Send()
4013}
4014
4015// ListObjectsPages iterates over the pages of a ListObjects operation,
4016// calling the "fn" function with the response data for each page. To stop
4017// iterating, return false from the fn function.
4018//
4019// See ListObjects method for more information on how to use this operation.
4020//
4021// Note: This operation can generate multiple requests to a service.
4022//
4023//    // Example iterating over at most 3 pages of a ListObjects operation.
4024//    pageNum := 0
4025//    err := client.ListObjectsPages(params,
4026//        func(page *ListObjectsOutput, lastPage bool) bool {
4027//            pageNum++
4028//            fmt.Println(page)
4029//            return pageNum <= 3
4030//        })
4031//
4032func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
4033	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
4034}
4035
4036// ListObjectsPagesWithContext same as ListObjectsPages except
4037// it takes a Context and allows setting request options on the pages.
4038//
4039// The context must be non-nil and will be used for request cancellation. If
4040// the context is nil a panic will occur. In the future the SDK may create
4041// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4042// for more information on using Contexts.
4043func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
4044	p := request.Pagination{
4045		NewRequest: func() (*request.Request, error) {
4046			var inCpy *ListObjectsInput
4047			if input != nil {
4048				tmp := *input
4049				inCpy = &tmp
4050			}
4051			req, _ := c.ListObjectsRequest(inCpy)
4052			req.SetContext(ctx)
4053			req.ApplyOptions(opts...)
4054			return req, nil
4055		},
4056	}
4057
4058	cont := true
4059	for p.Next() && cont {
4060		cont = fn(p.Page().(*ListObjectsOutput), !p.HasNextPage())
4061	}
4062	return p.Err()
4063}
4064
4065const opListObjectsV2 = "ListObjectsV2"
4066
4067// ListObjectsV2Request generates a "aws/request.Request" representing the
4068// client's request for the ListObjectsV2 operation. The "output" return
4069// value will be populated with the request's response once the request completes
4070// successfuly.
4071//
4072// Use "Send" method on the returned Request to send the API call to the service.
4073// the "output" return value is not valid until after Send returns without error.
4074//
4075// See ListObjectsV2 for more information on using the ListObjectsV2
4076// API call, and error handling.
4077//
4078// This method is useful when you want to inject custom logic or configuration
4079// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4080//
4081//
4082//    // Example sending a request using the ListObjectsV2Request method.
4083//    req, resp := client.ListObjectsV2Request(params)
4084//
4085//    err := req.Send()
4086//    if err == nil { // resp is now filled
4087//        fmt.Println(resp)
4088//    }
4089//
4090// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
4091func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
4092	op := &request.Operation{
4093		Name:       opListObjectsV2,
4094		HTTPMethod: "GET",
4095		HTTPPath:   "/{Bucket}?list-type=2",
4096		Paginator: &request.Paginator{
4097			InputTokens:     []string{"ContinuationToken"},
4098			OutputTokens:    []string{"NextContinuationToken"},
4099			LimitToken:      "MaxKeys",
4100			TruncationToken: "",
4101		},
4102	}
4103
4104	if input == nil {
4105		input = &ListObjectsV2Input{}
4106	}
4107
4108	output = &ListObjectsV2Output{}
4109	req = c.newRequest(op, input, output)
4110	return
4111}
4112
4113// ListObjectsV2 API operation for Amazon Simple Storage Service.
4114//
4115// Returns some or all (up to 1000) of the objects in a bucket. You can use
4116// the request parameters as selection criteria to return a subset of the objects
4117// in a bucket. Note: ListObjectsV2 is the revised List Objects API and we recommend
4118// you use this revised API for new application development.
4119//
4120// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4121// with awserr.Error's Code and Message methods to get detailed information about
4122// the error.
4123//
4124// See the AWS API reference guide for Amazon Simple Storage Service's
4125// API operation ListObjectsV2 for usage and error information.
4126//
4127// Returned Error Codes:
4128//   * ErrCodeNoSuchBucket "NoSuchBucket"
4129//   The specified bucket does not exist.
4130//
4131// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
4132func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
4133	req, out := c.ListObjectsV2Request(input)
4134	return out, req.Send()
4135}
4136
4137// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
4138// the ability to pass a context and additional request options.
4139//
4140// See ListObjectsV2 for details on how to use this API operation.
4141//
4142// The context must be non-nil and will be used for request cancellation. If
4143// the context is nil a panic will occur. In the future the SDK may create
4144// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4145// for more information on using Contexts.
4146func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
4147	req, out := c.ListObjectsV2Request(input)
4148	req.SetContext(ctx)
4149	req.ApplyOptions(opts...)
4150	return out, req.Send()
4151}
4152
4153// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
4154// calling the "fn" function with the response data for each page. To stop
4155// iterating, return false from the fn function.
4156//
4157// See ListObjectsV2 method for more information on how to use this operation.
4158//
4159// Note: This operation can generate multiple requests to a service.
4160//
4161//    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
4162//    pageNum := 0
4163//    err := client.ListObjectsV2Pages(params,
4164//        func(page *ListObjectsV2Output, lastPage bool) bool {
4165//            pageNum++
4166//            fmt.Println(page)
4167//            return pageNum <= 3
4168//        })
4169//
4170func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
4171	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
4172}
4173
4174// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
4175// it takes a Context and allows setting request options on the pages.
4176//
4177// The context must be non-nil and will be used for request cancellation. If
4178// the context is nil a panic will occur. In the future the SDK may create
4179// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4180// for more information on using Contexts.
4181func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
4182	p := request.Pagination{
4183		NewRequest: func() (*request.Request, error) {
4184			var inCpy *ListObjectsV2Input
4185			if input != nil {
4186				tmp := *input
4187				inCpy = &tmp
4188			}
4189			req, _ := c.ListObjectsV2Request(inCpy)
4190			req.SetContext(ctx)
4191			req.ApplyOptions(opts...)
4192			return req, nil
4193		},
4194	}
4195
4196	cont := true
4197	for p.Next() && cont {
4198		cont = fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage())
4199	}
4200	return p.Err()
4201}
4202
4203const opListParts = "ListParts"
4204
4205// ListPartsRequest generates a "aws/request.Request" representing the
4206// client's request for the ListParts operation. The "output" return
4207// value will be populated with the request's response once the request completes
4208// successfuly.
4209//
4210// Use "Send" method on the returned Request to send the API call to the service.
4211// the "output" return value is not valid until after Send returns without error.
4212//
4213// See ListParts for more information on using the ListParts
4214// API call, and error handling.
4215//
4216// This method is useful when you want to inject custom logic or configuration
4217// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4218//
4219//
4220//    // Example sending a request using the ListPartsRequest method.
4221//    req, resp := client.ListPartsRequest(params)
4222//
4223//    err := req.Send()
4224//    if err == nil { // resp is now filled
4225//        fmt.Println(resp)
4226//    }
4227//
4228// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
4229func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
4230	op := &request.Operation{
4231		Name:       opListParts,
4232		HTTPMethod: "GET",
4233		HTTPPath:   "/{Bucket}/{Key+}",
4234		Paginator: &request.Paginator{
4235			InputTokens:     []string{"PartNumberMarker"},
4236			OutputTokens:    []string{"NextPartNumberMarker"},
4237			LimitToken:      "MaxParts",
4238			TruncationToken: "IsTruncated",
4239		},
4240	}
4241
4242	if input == nil {
4243		input = &ListPartsInput{}
4244	}
4245
4246	output = &ListPartsOutput{}
4247	req = c.newRequest(op, input, output)
4248	return
4249}
4250
4251// ListParts API operation for Amazon Simple Storage Service.
4252//
4253// Lists the parts that have been uploaded for a specific multipart upload.
4254//
4255// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4256// with awserr.Error's Code and Message methods to get detailed information about
4257// the error.
4258//
4259// See the AWS API reference guide for Amazon Simple Storage Service's
4260// API operation ListParts for usage and error information.
4261// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
4262func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
4263	req, out := c.ListPartsRequest(input)
4264	return out, req.Send()
4265}
4266
4267// ListPartsWithContext is the same as ListParts with the addition of
4268// the ability to pass a context and additional request options.
4269//
4270// See ListParts for details on how to use this API operation.
4271//
4272// The context must be non-nil and will be used for request cancellation. If
4273// the context is nil a panic will occur. In the future the SDK may create
4274// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4275// for more information on using Contexts.
4276func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
4277	req, out := c.ListPartsRequest(input)
4278	req.SetContext(ctx)
4279	req.ApplyOptions(opts...)
4280	return out, req.Send()
4281}
4282
4283// ListPartsPages iterates over the pages of a ListParts operation,
4284// calling the "fn" function with the response data for each page. To stop
4285// iterating, return false from the fn function.
4286//
4287// See ListParts method for more information on how to use this operation.
4288//
4289// Note: This operation can generate multiple requests to a service.
4290//
4291//    // Example iterating over at most 3 pages of a ListParts operation.
4292//    pageNum := 0
4293//    err := client.ListPartsPages(params,
4294//        func(page *ListPartsOutput, lastPage bool) bool {
4295//            pageNum++
4296//            fmt.Println(page)
4297//            return pageNum <= 3
4298//        })
4299//
4300func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
4301	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
4302}
4303
4304// ListPartsPagesWithContext same as ListPartsPages except
4305// it takes a Context and allows setting request options on the pages.
4306//
4307// The context must be non-nil and will be used for request cancellation. If
4308// the context is nil a panic will occur. In the future the SDK may create
4309// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4310// for more information on using Contexts.
4311func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
4312	p := request.Pagination{
4313		NewRequest: func() (*request.Request, error) {
4314			var inCpy *ListPartsInput
4315			if input != nil {
4316				tmp := *input
4317				inCpy = &tmp
4318			}
4319			req, _ := c.ListPartsRequest(inCpy)
4320			req.SetContext(ctx)
4321			req.ApplyOptions(opts...)
4322			return req, nil
4323		},
4324	}
4325
4326	cont := true
4327	for p.Next() && cont {
4328		cont = fn(p.Page().(*ListPartsOutput), !p.HasNextPage())
4329	}
4330	return p.Err()
4331}
4332
4333const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
4334
4335// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
4336// client's request for the PutBucketAccelerateConfiguration operation. The "output" return
4337// value will be populated with the request's response once the request completes
4338// successfuly.
4339//
4340// Use "Send" method on the returned Request to send the API call to the service.
4341// the "output" return value is not valid until after Send returns without error.
4342//
4343// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
4344// API call, and error handling.
4345//
4346// This method is useful when you want to inject custom logic or configuration
4347// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4348//
4349//
4350//    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
4351//    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
4352//
4353//    err := req.Send()
4354//    if err == nil { // resp is now filled
4355//        fmt.Println(resp)
4356//    }
4357//
4358// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
4359func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
4360	op := &request.Operation{
4361		Name:       opPutBucketAccelerateConfiguration,
4362		HTTPMethod: "PUT",
4363		HTTPPath:   "/{Bucket}?accelerate",
4364	}
4365
4366	if input == nil {
4367		input = &PutBucketAccelerateConfigurationInput{}
4368	}
4369
4370	output = &PutBucketAccelerateConfigurationOutput{}
4371	req = c.newRequest(op, input, output)
4372	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4373	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4374	return
4375}
4376
4377// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
4378//
4379// Sets the accelerate configuration of an existing bucket.
4380//
4381// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4382// with awserr.Error's Code and Message methods to get detailed information about
4383// the error.
4384//
4385// See the AWS API reference guide for Amazon Simple Storage Service's
4386// API operation PutBucketAccelerateConfiguration for usage and error information.
4387// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
4388func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
4389	req, out := c.PutBucketAccelerateConfigurationRequest(input)
4390	return out, req.Send()
4391}
4392
4393// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
4394// the ability to pass a context and additional request options.
4395//
4396// See PutBucketAccelerateConfiguration for details on how to use this API operation.
4397//
4398// The context must be non-nil and will be used for request cancellation. If
4399// the context is nil a panic will occur. In the future the SDK may create
4400// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4401// for more information on using Contexts.
4402func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
4403	req, out := c.PutBucketAccelerateConfigurationRequest(input)
4404	req.SetContext(ctx)
4405	req.ApplyOptions(opts...)
4406	return out, req.Send()
4407}
4408
4409const opPutBucketAcl = "PutBucketAcl"
4410
4411// PutBucketAclRequest generates a "aws/request.Request" representing the
4412// client's request for the PutBucketAcl operation. The "output" return
4413// value will be populated with the request's response once the request completes
4414// successfuly.
4415//
4416// Use "Send" method on the returned Request to send the API call to the service.
4417// the "output" return value is not valid until after Send returns without error.
4418//
4419// See PutBucketAcl for more information on using the PutBucketAcl
4420// API call, and error handling.
4421//
4422// This method is useful when you want to inject custom logic or configuration
4423// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4424//
4425//
4426//    // Example sending a request using the PutBucketAclRequest method.
4427//    req, resp := client.PutBucketAclRequest(params)
4428//
4429//    err := req.Send()
4430//    if err == nil { // resp is now filled
4431//        fmt.Println(resp)
4432//    }
4433//
4434// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
4435func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
4436	op := &request.Operation{
4437		Name:       opPutBucketAcl,
4438		HTTPMethod: "PUT",
4439		HTTPPath:   "/{Bucket}?acl",
4440	}
4441
4442	if input == nil {
4443		input = &PutBucketAclInput{}
4444	}
4445
4446	output = &PutBucketAclOutput{}
4447	req = c.newRequest(op, input, output)
4448	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4449	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4450	return
4451}
4452
4453// PutBucketAcl API operation for Amazon Simple Storage Service.
4454//
4455// Sets the permissions on a bucket using access control lists (ACL).
4456//
4457// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4458// with awserr.Error's Code and Message methods to get detailed information about
4459// the error.
4460//
4461// See the AWS API reference guide for Amazon Simple Storage Service's
4462// API operation PutBucketAcl for usage and error information.
4463// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
4464func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
4465	req, out := c.PutBucketAclRequest(input)
4466	return out, req.Send()
4467}
4468
4469// PutBucketAclWithContext is the same as PutBucketAcl with the addition of
4470// the ability to pass a context and additional request options.
4471//
4472// See PutBucketAcl for details on how to use this API operation.
4473//
4474// The context must be non-nil and will be used for request cancellation. If
4475// the context is nil a panic will occur. In the future the SDK may create
4476// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4477// for more information on using Contexts.
4478func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
4479	req, out := c.PutBucketAclRequest(input)
4480	req.SetContext(ctx)
4481	req.ApplyOptions(opts...)
4482	return out, req.Send()
4483}
4484
4485const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
4486
4487// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
4488// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
4489// value will be populated with the request's response once the request completes
4490// successfuly.
4491//
4492// Use "Send" method on the returned Request to send the API call to the service.
4493// the "output" return value is not valid until after Send returns without error.
4494//
4495// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
4496// API call, and error handling.
4497//
4498// This method is useful when you want to inject custom logic or configuration
4499// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4500//
4501//
4502//    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
4503//    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
4504//
4505//    err := req.Send()
4506//    if err == nil { // resp is now filled
4507//        fmt.Println(resp)
4508//    }
4509//
4510// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
4511func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
4512	op := &request.Operation{
4513		Name:       opPutBucketAnalyticsConfiguration,
4514		HTTPMethod: "PUT",
4515		HTTPPath:   "/{Bucket}?analytics",
4516	}
4517
4518	if input == nil {
4519		input = &PutBucketAnalyticsConfigurationInput{}
4520	}
4521
4522	output = &PutBucketAnalyticsConfigurationOutput{}
4523	req = c.newRequest(op, input, output)
4524	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4525	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4526	return
4527}
4528
4529// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
4530//
4531// Sets an analytics configuration for the bucket (specified by the analytics
4532// configuration ID).
4533//
4534// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4535// with awserr.Error's Code and Message methods to get detailed information about
4536// the error.
4537//
4538// See the AWS API reference guide for Amazon Simple Storage Service's
4539// API operation PutBucketAnalyticsConfiguration for usage and error information.
4540// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
4541func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
4542	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
4543	return out, req.Send()
4544}
4545
4546// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
4547// the ability to pass a context and additional request options.
4548//
4549// See PutBucketAnalyticsConfiguration for details on how to use this API operation.
4550//
4551// The context must be non-nil and will be used for request cancellation. If
4552// the context is nil a panic will occur. In the future the SDK may create
4553// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4554// for more information on using Contexts.
4555func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
4556	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
4557	req.SetContext(ctx)
4558	req.ApplyOptions(opts...)
4559	return out, req.Send()
4560}
4561
4562const opPutBucketCors = "PutBucketCors"
4563
4564// PutBucketCorsRequest generates a "aws/request.Request" representing the
4565// client's request for the PutBucketCors operation. The "output" return
4566// value will be populated with the request's response once the request completes
4567// successfuly.
4568//
4569// Use "Send" method on the returned Request to send the API call to the service.
4570// the "output" return value is not valid until after Send returns without error.
4571//
4572// See PutBucketCors for more information on using the PutBucketCors
4573// API call, and error handling.
4574//
4575// This method is useful when you want to inject custom logic or configuration
4576// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4577//
4578//
4579//    // Example sending a request using the PutBucketCorsRequest method.
4580//    req, resp := client.PutBucketCorsRequest(params)
4581//
4582//    err := req.Send()
4583//    if err == nil { // resp is now filled
4584//        fmt.Println(resp)
4585//    }
4586//
4587// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
4588func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
4589	op := &request.Operation{
4590		Name:       opPutBucketCors,
4591		HTTPMethod: "PUT",
4592		HTTPPath:   "/{Bucket}?cors",
4593	}
4594
4595	if input == nil {
4596		input = &PutBucketCorsInput{}
4597	}
4598
4599	output = &PutBucketCorsOutput{}
4600	req = c.newRequest(op, input, output)
4601	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4602	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4603	return
4604}
4605
4606// PutBucketCors API operation for Amazon Simple Storage Service.
4607//
4608// Sets the cors configuration for a bucket.
4609//
4610// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4611// with awserr.Error's Code and Message methods to get detailed information about
4612// the error.
4613//
4614// See the AWS API reference guide for Amazon Simple Storage Service's
4615// API operation PutBucketCors for usage and error information.
4616// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
4617func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
4618	req, out := c.PutBucketCorsRequest(input)
4619	return out, req.Send()
4620}
4621
4622// PutBucketCorsWithContext is the same as PutBucketCors with the addition of
4623// the ability to pass a context and additional request options.
4624//
4625// See PutBucketCors for details on how to use this API operation.
4626//
4627// The context must be non-nil and will be used for request cancellation. If
4628// the context is nil a panic will occur. In the future the SDK may create
4629// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4630// for more information on using Contexts.
4631func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
4632	req, out := c.PutBucketCorsRequest(input)
4633	req.SetContext(ctx)
4634	req.ApplyOptions(opts...)
4635	return out, req.Send()
4636}
4637
4638const opPutBucketEncryption = "PutBucketEncryption"
4639
4640// PutBucketEncryptionRequest generates a "aws/request.Request" representing the
4641// client's request for the PutBucketEncryption operation. The "output" return
4642// value will be populated with the request's response once the request completes
4643// successfuly.
4644//
4645// Use "Send" method on the returned Request to send the API call to the service.
4646// the "output" return value is not valid until after Send returns without error.
4647//
4648// See PutBucketEncryption for more information on using the PutBucketEncryption
4649// API call, and error handling.
4650//
4651// This method is useful when you want to inject custom logic or configuration
4652// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4653//
4654//
4655//    // Example sending a request using the PutBucketEncryptionRequest method.
4656//    req, resp := client.PutBucketEncryptionRequest(params)
4657//
4658//    err := req.Send()
4659//    if err == nil { // resp is now filled
4660//        fmt.Println(resp)
4661//    }
4662//
4663// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
4664func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
4665	op := &request.Operation{
4666		Name:       opPutBucketEncryption,
4667		HTTPMethod: "PUT",
4668		HTTPPath:   "/{Bucket}?encryption",
4669	}
4670
4671	if input == nil {
4672		input = &PutBucketEncryptionInput{}
4673	}
4674
4675	output = &PutBucketEncryptionOutput{}
4676	req = c.newRequest(op, input, output)
4677	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4678	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4679	return
4680}
4681
4682// PutBucketEncryption API operation for Amazon Simple Storage Service.
4683//
4684// Creates a new server-side encryption configuration (or replaces an existing
4685// one, if present).
4686//
4687// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4688// with awserr.Error's Code and Message methods to get detailed information about
4689// the error.
4690//
4691// See the AWS API reference guide for Amazon Simple Storage Service's
4692// API operation PutBucketEncryption for usage and error information.
4693// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
4694func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
4695	req, out := c.PutBucketEncryptionRequest(input)
4696	return out, req.Send()
4697}
4698
4699// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
4700// the ability to pass a context and additional request options.
4701//
4702// See PutBucketEncryption for details on how to use this API operation.
4703//
4704// The context must be non-nil and will be used for request cancellation. If
4705// the context is nil a panic will occur. In the future the SDK may create
4706// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4707// for more information on using Contexts.
4708func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
4709	req, out := c.PutBucketEncryptionRequest(input)
4710	req.SetContext(ctx)
4711	req.ApplyOptions(opts...)
4712	return out, req.Send()
4713}
4714
4715const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
4716
4717// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
4718// client's request for the PutBucketInventoryConfiguration operation. The "output" return
4719// value will be populated with the request's response once the request completes
4720// successfuly.
4721//
4722// Use "Send" method on the returned Request to send the API call to the service.
4723// the "output" return value is not valid until after Send returns without error.
4724//
4725// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
4726// API call, and error handling.
4727//
4728// This method is useful when you want to inject custom logic or configuration
4729// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4730//
4731//
4732//    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
4733//    req, resp := client.PutBucketInventoryConfigurationRequest(params)
4734//
4735//    err := req.Send()
4736//    if err == nil { // resp is now filled
4737//        fmt.Println(resp)
4738//    }
4739//
4740// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
4741func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
4742	op := &request.Operation{
4743		Name:       opPutBucketInventoryConfiguration,
4744		HTTPMethod: "PUT",
4745		HTTPPath:   "/{Bucket}?inventory",
4746	}
4747
4748	if input == nil {
4749		input = &PutBucketInventoryConfigurationInput{}
4750	}
4751
4752	output = &PutBucketInventoryConfigurationOutput{}
4753	req = c.newRequest(op, input, output)
4754	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4755	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4756	return
4757}
4758
4759// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
4760//
4761// Adds an inventory configuration (identified by the inventory ID) from the
4762// bucket.
4763//
4764// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4765// with awserr.Error's Code and Message methods to get detailed information about
4766// the error.
4767//
4768// See the AWS API reference guide for Amazon Simple Storage Service's
4769// API operation PutBucketInventoryConfiguration for usage and error information.
4770// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
4771func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
4772	req, out := c.PutBucketInventoryConfigurationRequest(input)
4773	return out, req.Send()
4774}
4775
4776// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
4777// the ability to pass a context and additional request options.
4778//
4779// See PutBucketInventoryConfiguration for details on how to use this API operation.
4780//
4781// The context must be non-nil and will be used for request cancellation. If
4782// the context is nil a panic will occur. In the future the SDK may create
4783// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4784// for more information on using Contexts.
4785func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
4786	req, out := c.PutBucketInventoryConfigurationRequest(input)
4787	req.SetContext(ctx)
4788	req.ApplyOptions(opts...)
4789	return out, req.Send()
4790}
4791
4792const opPutBucketLifecycle = "PutBucketLifecycle"
4793
4794// PutBucketLifecycleRequest generates a "aws/request.Request" representing the
4795// client's request for the PutBucketLifecycle operation. The "output" return
4796// value will be populated with the request's response once the request completes
4797// successfuly.
4798//
4799// Use "Send" method on the returned Request to send the API call to the service.
4800// the "output" return value is not valid until after Send returns without error.
4801//
4802// See PutBucketLifecycle for more information on using the PutBucketLifecycle
4803// API call, and error handling.
4804//
4805// This method is useful when you want to inject custom logic or configuration
4806// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4807//
4808//
4809//    // Example sending a request using the PutBucketLifecycleRequest method.
4810//    req, resp := client.PutBucketLifecycleRequest(params)
4811//
4812//    err := req.Send()
4813//    if err == nil { // resp is now filled
4814//        fmt.Println(resp)
4815//    }
4816//
4817// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
4818func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
4819	if c.Client.Config.Logger != nil {
4820		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
4821	}
4822	op := &request.Operation{
4823		Name:       opPutBucketLifecycle,
4824		HTTPMethod: "PUT",
4825		HTTPPath:   "/{Bucket}?lifecycle",
4826	}
4827
4828	if input == nil {
4829		input = &PutBucketLifecycleInput{}
4830	}
4831
4832	output = &PutBucketLifecycleOutput{}
4833	req = c.newRequest(op, input, output)
4834	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4835	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4836	return
4837}
4838
4839// PutBucketLifecycle API operation for Amazon Simple Storage Service.
4840//
4841// Deprecated, see the PutBucketLifecycleConfiguration operation.
4842//
4843// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4844// with awserr.Error's Code and Message methods to get detailed information about
4845// the error.
4846//
4847// See the AWS API reference guide for Amazon Simple Storage Service's
4848// API operation PutBucketLifecycle for usage and error information.
4849// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
4850func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
4851	req, out := c.PutBucketLifecycleRequest(input)
4852	return out, req.Send()
4853}
4854
4855// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
4856// the ability to pass a context and additional request options.
4857//
4858// See PutBucketLifecycle for details on how to use this API operation.
4859//
4860// The context must be non-nil and will be used for request cancellation. If
4861// the context is nil a panic will occur. In the future the SDK may create
4862// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4863// for more information on using Contexts.
4864func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
4865	req, out := c.PutBucketLifecycleRequest(input)
4866	req.SetContext(ctx)
4867	req.ApplyOptions(opts...)
4868	return out, req.Send()
4869}
4870
4871const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
4872
4873// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
4874// client's request for the PutBucketLifecycleConfiguration operation. The "output" return
4875// value will be populated with the request's response once the request completes
4876// successfuly.
4877//
4878// Use "Send" method on the returned Request to send the API call to the service.
4879// the "output" return value is not valid until after Send returns without error.
4880//
4881// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
4882// API call, and error handling.
4883//
4884// This method is useful when you want to inject custom logic or configuration
4885// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4886//
4887//
4888//    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
4889//    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
4890//
4891//    err := req.Send()
4892//    if err == nil { // resp is now filled
4893//        fmt.Println(resp)
4894//    }
4895//
4896// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
4897func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
4898	op := &request.Operation{
4899		Name:       opPutBucketLifecycleConfiguration,
4900		HTTPMethod: "PUT",
4901		HTTPPath:   "/{Bucket}?lifecycle",
4902	}
4903
4904	if input == nil {
4905		input = &PutBucketLifecycleConfigurationInput{}
4906	}
4907
4908	output = &PutBucketLifecycleConfigurationOutput{}
4909	req = c.newRequest(op, input, output)
4910	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4911	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4912	return
4913}
4914
4915// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
4916//
4917// Sets lifecycle configuration for your bucket. If a lifecycle configuration
4918// exists, it replaces it.
4919//
4920// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4921// with awserr.Error's Code and Message methods to get detailed information about
4922// the error.
4923//
4924// See the AWS API reference guide for Amazon Simple Storage Service's
4925// API operation PutBucketLifecycleConfiguration for usage and error information.
4926// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
4927func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
4928	req, out := c.PutBucketLifecycleConfigurationRequest(input)
4929	return out, req.Send()
4930}
4931
4932// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
4933// the ability to pass a context and additional request options.
4934//
4935// See PutBucketLifecycleConfiguration for details on how to use this API operation.
4936//
4937// The context must be non-nil and will be used for request cancellation. If
4938// the context is nil a panic will occur. In the future the SDK may create
4939// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4940// for more information on using Contexts.
4941func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
4942	req, out := c.PutBucketLifecycleConfigurationRequest(input)
4943	req.SetContext(ctx)
4944	req.ApplyOptions(opts...)
4945	return out, req.Send()
4946}
4947
4948const opPutBucketLogging = "PutBucketLogging"
4949
4950// PutBucketLoggingRequest generates a "aws/request.Request" representing the
4951// client's request for the PutBucketLogging operation. The "output" return
4952// value will be populated with the request's response once the request completes
4953// successfuly.
4954//
4955// Use "Send" method on the returned Request to send the API call to the service.
4956// the "output" return value is not valid until after Send returns without error.
4957//
4958// See PutBucketLogging for more information on using the PutBucketLogging
4959// API call, and error handling.
4960//
4961// This method is useful when you want to inject custom logic or configuration
4962// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4963//
4964//
4965//    // Example sending a request using the PutBucketLoggingRequest method.
4966//    req, resp := client.PutBucketLoggingRequest(params)
4967//
4968//    err := req.Send()
4969//    if err == nil { // resp is now filled
4970//        fmt.Println(resp)
4971//    }
4972//
4973// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
4974func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
4975	op := &request.Operation{
4976		Name:       opPutBucketLogging,
4977		HTTPMethod: "PUT",
4978		HTTPPath:   "/{Bucket}?logging",
4979	}
4980
4981	if input == nil {
4982		input = &PutBucketLoggingInput{}
4983	}
4984
4985	output = &PutBucketLoggingOutput{}
4986	req = c.newRequest(op, input, output)
4987	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
4988	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
4989	return
4990}
4991
4992// PutBucketLogging API operation for Amazon Simple Storage Service.
4993//
4994// Set the logging parameters for a bucket and to specify permissions for who
4995// can view and modify the logging parameters. To set the logging status of
4996// a bucket, you must be the bucket owner.
4997//
4998// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4999// with awserr.Error's Code and Message methods to get detailed information about
5000// the error.
5001//
5002// See the AWS API reference guide for Amazon Simple Storage Service's
5003// API operation PutBucketLogging for usage and error information.
5004// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
5005func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
5006	req, out := c.PutBucketLoggingRequest(input)
5007	return out, req.Send()
5008}
5009
5010// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
5011// the ability to pass a context and additional request options.
5012//
5013// See PutBucketLogging for details on how to use this API operation.
5014//
5015// The context must be non-nil and will be used for request cancellation. If
5016// the context is nil a panic will occur. In the future the SDK may create
5017// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5018// for more information on using Contexts.
5019func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
5020	req, out := c.PutBucketLoggingRequest(input)
5021	req.SetContext(ctx)
5022	req.ApplyOptions(opts...)
5023	return out, req.Send()
5024}
5025
5026const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
5027
5028// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
5029// client's request for the PutBucketMetricsConfiguration operation. The "output" return
5030// value will be populated with the request's response once the request completes
5031// successfuly.
5032//
5033// Use "Send" method on the returned Request to send the API call to the service.
5034// the "output" return value is not valid until after Send returns without error.
5035//
5036// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
5037// API call, and error handling.
5038//
5039// This method is useful when you want to inject custom logic or configuration
5040// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5041//
5042//
5043//    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
5044//    req, resp := client.PutBucketMetricsConfigurationRequest(params)
5045//
5046//    err := req.Send()
5047//    if err == nil { // resp is now filled
5048//        fmt.Println(resp)
5049//    }
5050//
5051// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
5052func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
5053	op := &request.Operation{
5054		Name:       opPutBucketMetricsConfiguration,
5055		HTTPMethod: "PUT",
5056		HTTPPath:   "/{Bucket}?metrics",
5057	}
5058
5059	if input == nil {
5060		input = &PutBucketMetricsConfigurationInput{}
5061	}
5062
5063	output = &PutBucketMetricsConfigurationOutput{}
5064	req = c.newRequest(op, input, output)
5065	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5066	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5067	return
5068}
5069
5070// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
5071//
5072// Sets a metrics configuration (specified by the metrics configuration ID)
5073// for the bucket.
5074//
5075// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5076// with awserr.Error's Code and Message methods to get detailed information about
5077// the error.
5078//
5079// See the AWS API reference guide for Amazon Simple Storage Service's
5080// API operation PutBucketMetricsConfiguration for usage and error information.
5081// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
5082func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
5083	req, out := c.PutBucketMetricsConfigurationRequest(input)
5084	return out, req.Send()
5085}
5086
5087// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
5088// the ability to pass a context and additional request options.
5089//
5090// See PutBucketMetricsConfiguration for details on how to use this API operation.
5091//
5092// The context must be non-nil and will be used for request cancellation. If
5093// the context is nil a panic will occur. In the future the SDK may create
5094// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5095// for more information on using Contexts.
5096func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
5097	req, out := c.PutBucketMetricsConfigurationRequest(input)
5098	req.SetContext(ctx)
5099	req.ApplyOptions(opts...)
5100	return out, req.Send()
5101}
5102
5103const opPutBucketNotification = "PutBucketNotification"
5104
5105// PutBucketNotificationRequest generates a "aws/request.Request" representing the
5106// client's request for the PutBucketNotification operation. The "output" return
5107// value will be populated with the request's response once the request completes
5108// successfuly.
5109//
5110// Use "Send" method on the returned Request to send the API call to the service.
5111// the "output" return value is not valid until after Send returns without error.
5112//
5113// See PutBucketNotification for more information on using the PutBucketNotification
5114// API call, and error handling.
5115//
5116// This method is useful when you want to inject custom logic or configuration
5117// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5118//
5119//
5120//    // Example sending a request using the PutBucketNotificationRequest method.
5121//    req, resp := client.PutBucketNotificationRequest(params)
5122//
5123//    err := req.Send()
5124//    if err == nil { // resp is now filled
5125//        fmt.Println(resp)
5126//    }
5127//
5128// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
5129func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
5130	if c.Client.Config.Logger != nil {
5131		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
5132	}
5133	op := &request.Operation{
5134		Name:       opPutBucketNotification,
5135		HTTPMethod: "PUT",
5136		HTTPPath:   "/{Bucket}?notification",
5137	}
5138
5139	if input == nil {
5140		input = &PutBucketNotificationInput{}
5141	}
5142
5143	output = &PutBucketNotificationOutput{}
5144	req = c.newRequest(op, input, output)
5145	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5146	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5147	return
5148}
5149
5150// PutBucketNotification API operation for Amazon Simple Storage Service.
5151//
5152// Deprecated, see the PutBucketNotificationConfiguraiton operation.
5153//
5154// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5155// with awserr.Error's Code and Message methods to get detailed information about
5156// the error.
5157//
5158// See the AWS API reference guide for Amazon Simple Storage Service's
5159// API operation PutBucketNotification for usage and error information.
5160// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
5161func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
5162	req, out := c.PutBucketNotificationRequest(input)
5163	return out, req.Send()
5164}
5165
5166// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
5167// the ability to pass a context and additional request options.
5168//
5169// See PutBucketNotification for details on how to use this API operation.
5170//
5171// The context must be non-nil and will be used for request cancellation. If
5172// the context is nil a panic will occur. In the future the SDK may create
5173// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5174// for more information on using Contexts.
5175func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
5176	req, out := c.PutBucketNotificationRequest(input)
5177	req.SetContext(ctx)
5178	req.ApplyOptions(opts...)
5179	return out, req.Send()
5180}
5181
5182const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
5183
5184// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
5185// client's request for the PutBucketNotificationConfiguration operation. The "output" return
5186// value will be populated with the request's response once the request completes
5187// successfuly.
5188//
5189// Use "Send" method on the returned Request to send the API call to the service.
5190// the "output" return value is not valid until after Send returns without error.
5191//
5192// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
5193// API call, and error handling.
5194//
5195// This method is useful when you want to inject custom logic or configuration
5196// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5197//
5198//
5199//    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
5200//    req, resp := client.PutBucketNotificationConfigurationRequest(params)
5201//
5202//    err := req.Send()
5203//    if err == nil { // resp is now filled
5204//        fmt.Println(resp)
5205//    }
5206//
5207// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
5208func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
5209	op := &request.Operation{
5210		Name:       opPutBucketNotificationConfiguration,
5211		HTTPMethod: "PUT",
5212		HTTPPath:   "/{Bucket}?notification",
5213	}
5214
5215	if input == nil {
5216		input = &PutBucketNotificationConfigurationInput{}
5217	}
5218
5219	output = &PutBucketNotificationConfigurationOutput{}
5220	req = c.newRequest(op, input, output)
5221	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5222	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5223	return
5224}
5225
5226// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
5227//
5228// Enables notifications of specified events for a bucket.
5229//
5230// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5231// with awserr.Error's Code and Message methods to get detailed information about
5232// the error.
5233//
5234// See the AWS API reference guide for Amazon Simple Storage Service's
5235// API operation PutBucketNotificationConfiguration for usage and error information.
5236// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
5237func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
5238	req, out := c.PutBucketNotificationConfigurationRequest(input)
5239	return out, req.Send()
5240}
5241
5242// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
5243// the ability to pass a context and additional request options.
5244//
5245// See PutBucketNotificationConfiguration for details on how to use this API operation.
5246//
5247// The context must be non-nil and will be used for request cancellation. If
5248// the context is nil a panic will occur. In the future the SDK may create
5249// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5250// for more information on using Contexts.
5251func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
5252	req, out := c.PutBucketNotificationConfigurationRequest(input)
5253	req.SetContext(ctx)
5254	req.ApplyOptions(opts...)
5255	return out, req.Send()
5256}
5257
5258const opPutBucketPolicy = "PutBucketPolicy"
5259
5260// PutBucketPolicyRequest generates a "aws/request.Request" representing the
5261// client's request for the PutBucketPolicy operation. The "output" return
5262// value will be populated with the request's response once the request completes
5263// successfuly.
5264//
5265// Use "Send" method on the returned Request to send the API call to the service.
5266// the "output" return value is not valid until after Send returns without error.
5267//
5268// See PutBucketPolicy for more information on using the PutBucketPolicy
5269// API call, and error handling.
5270//
5271// This method is useful when you want to inject custom logic or configuration
5272// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5273//
5274//
5275//    // Example sending a request using the PutBucketPolicyRequest method.
5276//    req, resp := client.PutBucketPolicyRequest(params)
5277//
5278//    err := req.Send()
5279//    if err == nil { // resp is now filled
5280//        fmt.Println(resp)
5281//    }
5282//
5283// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
5284func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
5285	op := &request.Operation{
5286		Name:       opPutBucketPolicy,
5287		HTTPMethod: "PUT",
5288		HTTPPath:   "/{Bucket}?policy",
5289	}
5290
5291	if input == nil {
5292		input = &PutBucketPolicyInput{}
5293	}
5294
5295	output = &PutBucketPolicyOutput{}
5296	req = c.newRequest(op, input, output)
5297	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5298	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5299	return
5300}
5301
5302// PutBucketPolicy API operation for Amazon Simple Storage Service.
5303//
5304// Replaces a policy on a bucket. If the bucket already has a policy, the one
5305// in this request completely replaces it.
5306//
5307// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5308// with awserr.Error's Code and Message methods to get detailed information about
5309// the error.
5310//
5311// See the AWS API reference guide for Amazon Simple Storage Service's
5312// API operation PutBucketPolicy for usage and error information.
5313// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
5314func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
5315	req, out := c.PutBucketPolicyRequest(input)
5316	return out, req.Send()
5317}
5318
5319// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
5320// the ability to pass a context and additional request options.
5321//
5322// See PutBucketPolicy for details on how to use this API operation.
5323//
5324// The context must be non-nil and will be used for request cancellation. If
5325// the context is nil a panic will occur. In the future the SDK may create
5326// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5327// for more information on using Contexts.
5328func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
5329	req, out := c.PutBucketPolicyRequest(input)
5330	req.SetContext(ctx)
5331	req.ApplyOptions(opts...)
5332	return out, req.Send()
5333}
5334
5335const opPutBucketReplication = "PutBucketReplication"
5336
5337// PutBucketReplicationRequest generates a "aws/request.Request" representing the
5338// client's request for the PutBucketReplication operation. The "output" return
5339// value will be populated with the request's response once the request completes
5340// successfuly.
5341//
5342// Use "Send" method on the returned Request to send the API call to the service.
5343// the "output" return value is not valid until after Send returns without error.
5344//
5345// See PutBucketReplication for more information on using the PutBucketReplication
5346// API call, and error handling.
5347//
5348// This method is useful when you want to inject custom logic or configuration
5349// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5350//
5351//
5352//    // Example sending a request using the PutBucketReplicationRequest method.
5353//    req, resp := client.PutBucketReplicationRequest(params)
5354//
5355//    err := req.Send()
5356//    if err == nil { // resp is now filled
5357//        fmt.Println(resp)
5358//    }
5359//
5360// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
5361func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
5362	op := &request.Operation{
5363		Name:       opPutBucketReplication,
5364		HTTPMethod: "PUT",
5365		HTTPPath:   "/{Bucket}?replication",
5366	}
5367
5368	if input == nil {
5369		input = &PutBucketReplicationInput{}
5370	}
5371
5372	output = &PutBucketReplicationOutput{}
5373	req = c.newRequest(op, input, output)
5374	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5375	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5376	return
5377}
5378
5379// PutBucketReplication API operation for Amazon Simple Storage Service.
5380//
5381// Creates a new replication configuration (or replaces an existing one, if
5382// present).
5383//
5384// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5385// with awserr.Error's Code and Message methods to get detailed information about
5386// the error.
5387//
5388// See the AWS API reference guide for Amazon Simple Storage Service's
5389// API operation PutBucketReplication for usage and error information.
5390// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
5391func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
5392	req, out := c.PutBucketReplicationRequest(input)
5393	return out, req.Send()
5394}
5395
5396// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
5397// the ability to pass a context and additional request options.
5398//
5399// See PutBucketReplication for details on how to use this API operation.
5400//
5401// The context must be non-nil and will be used for request cancellation. If
5402// the context is nil a panic will occur. In the future the SDK may create
5403// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5404// for more information on using Contexts.
5405func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
5406	req, out := c.PutBucketReplicationRequest(input)
5407	req.SetContext(ctx)
5408	req.ApplyOptions(opts...)
5409	return out, req.Send()
5410}
5411
5412const opPutBucketRequestPayment = "PutBucketRequestPayment"
5413
5414// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
5415// client's request for the PutBucketRequestPayment operation. The "output" return
5416// value will be populated with the request's response once the request completes
5417// successfuly.
5418//
5419// Use "Send" method on the returned Request to send the API call to the service.
5420// the "output" return value is not valid until after Send returns without error.
5421//
5422// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
5423// API call, and error handling.
5424//
5425// This method is useful when you want to inject custom logic or configuration
5426// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5427//
5428//
5429//    // Example sending a request using the PutBucketRequestPaymentRequest method.
5430//    req, resp := client.PutBucketRequestPaymentRequest(params)
5431//
5432//    err := req.Send()
5433//    if err == nil { // resp is now filled
5434//        fmt.Println(resp)
5435//    }
5436//
5437// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
5438func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
5439	op := &request.Operation{
5440		Name:       opPutBucketRequestPayment,
5441		HTTPMethod: "PUT",
5442		HTTPPath:   "/{Bucket}?requestPayment",
5443	}
5444
5445	if input == nil {
5446		input = &PutBucketRequestPaymentInput{}
5447	}
5448
5449	output = &PutBucketRequestPaymentOutput{}
5450	req = c.newRequest(op, input, output)
5451	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5452	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5453	return
5454}
5455
5456// PutBucketRequestPayment API operation for Amazon Simple Storage Service.
5457//
5458// Sets the request payment configuration for a bucket. By default, the bucket
5459// owner pays for downloads from the bucket. This configuration parameter enables
5460// the bucket owner (only) to specify that the person requesting the download
5461// will be charged for the download. Documentation on requester pays buckets
5462// can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html
5463//
5464// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5465// with awserr.Error's Code and Message methods to get detailed information about
5466// the error.
5467//
5468// See the AWS API reference guide for Amazon Simple Storage Service's
5469// API operation PutBucketRequestPayment for usage and error information.
5470// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
5471func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
5472	req, out := c.PutBucketRequestPaymentRequest(input)
5473	return out, req.Send()
5474}
5475
5476// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
5477// the ability to pass a context and additional request options.
5478//
5479// See PutBucketRequestPayment for details on how to use this API operation.
5480//
5481// The context must be non-nil and will be used for request cancellation. If
5482// the context is nil a panic will occur. In the future the SDK may create
5483// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5484// for more information on using Contexts.
5485func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
5486	req, out := c.PutBucketRequestPaymentRequest(input)
5487	req.SetContext(ctx)
5488	req.ApplyOptions(opts...)
5489	return out, req.Send()
5490}
5491
5492const opPutBucketTagging = "PutBucketTagging"
5493
5494// PutBucketTaggingRequest generates a "aws/request.Request" representing the
5495// client's request for the PutBucketTagging operation. The "output" return
5496// value will be populated with the request's response once the request completes
5497// successfuly.
5498//
5499// Use "Send" method on the returned Request to send the API call to the service.
5500// the "output" return value is not valid until after Send returns without error.
5501//
5502// See PutBucketTagging for more information on using the PutBucketTagging
5503// API call, and error handling.
5504//
5505// This method is useful when you want to inject custom logic or configuration
5506// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5507//
5508//
5509//    // Example sending a request using the PutBucketTaggingRequest method.
5510//    req, resp := client.PutBucketTaggingRequest(params)
5511//
5512//    err := req.Send()
5513//    if err == nil { // resp is now filled
5514//        fmt.Println(resp)
5515//    }
5516//
5517// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
5518func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
5519	op := &request.Operation{
5520		Name:       opPutBucketTagging,
5521		HTTPMethod: "PUT",
5522		HTTPPath:   "/{Bucket}?tagging",
5523	}
5524
5525	if input == nil {
5526		input = &PutBucketTaggingInput{}
5527	}
5528
5529	output = &PutBucketTaggingOutput{}
5530	req = c.newRequest(op, input, output)
5531	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5532	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5533	return
5534}
5535
5536// PutBucketTagging API operation for Amazon Simple Storage Service.
5537//
5538// Sets the tags for a bucket.
5539//
5540// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5541// with awserr.Error's Code and Message methods to get detailed information about
5542// the error.
5543//
5544// See the AWS API reference guide for Amazon Simple Storage Service's
5545// API operation PutBucketTagging for usage and error information.
5546// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
5547func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
5548	req, out := c.PutBucketTaggingRequest(input)
5549	return out, req.Send()
5550}
5551
5552// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
5553// the ability to pass a context and additional request options.
5554//
5555// See PutBucketTagging for details on how to use this API operation.
5556//
5557// The context must be non-nil and will be used for request cancellation. If
5558// the context is nil a panic will occur. In the future the SDK may create
5559// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5560// for more information on using Contexts.
5561func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
5562	req, out := c.PutBucketTaggingRequest(input)
5563	req.SetContext(ctx)
5564	req.ApplyOptions(opts...)
5565	return out, req.Send()
5566}
5567
5568const opPutBucketVersioning = "PutBucketVersioning"
5569
5570// PutBucketVersioningRequest generates a "aws/request.Request" representing the
5571// client's request for the PutBucketVersioning operation. The "output" return
5572// value will be populated with the request's response once the request completes
5573// successfuly.
5574//
5575// Use "Send" method on the returned Request to send the API call to the service.
5576// the "output" return value is not valid until after Send returns without error.
5577//
5578// See PutBucketVersioning for more information on using the PutBucketVersioning
5579// API call, and error handling.
5580//
5581// This method is useful when you want to inject custom logic or configuration
5582// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5583//
5584//
5585//    // Example sending a request using the PutBucketVersioningRequest method.
5586//    req, resp := client.PutBucketVersioningRequest(params)
5587//
5588//    err := req.Send()
5589//    if err == nil { // resp is now filled
5590//        fmt.Println(resp)
5591//    }
5592//
5593// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
5594func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
5595	op := &request.Operation{
5596		Name:       opPutBucketVersioning,
5597		HTTPMethod: "PUT",
5598		HTTPPath:   "/{Bucket}?versioning",
5599	}
5600
5601	if input == nil {
5602		input = &PutBucketVersioningInput{}
5603	}
5604
5605	output = &PutBucketVersioningOutput{}
5606	req = c.newRequest(op, input, output)
5607	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5608	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5609	return
5610}
5611
5612// PutBucketVersioning API operation for Amazon Simple Storage Service.
5613//
5614// Sets the versioning state of an existing bucket. To set the versioning state,
5615// you must be the bucket owner.
5616//
5617// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5618// with awserr.Error's Code and Message methods to get detailed information about
5619// the error.
5620//
5621// See the AWS API reference guide for Amazon Simple Storage Service's
5622// API operation PutBucketVersioning for usage and error information.
5623// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
5624func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
5625	req, out := c.PutBucketVersioningRequest(input)
5626	return out, req.Send()
5627}
5628
5629// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
5630// the ability to pass a context and additional request options.
5631//
5632// See PutBucketVersioning for details on how to use this API operation.
5633//
5634// The context must be non-nil and will be used for request cancellation. If
5635// the context is nil a panic will occur. In the future the SDK may create
5636// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5637// for more information on using Contexts.
5638func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
5639	req, out := c.PutBucketVersioningRequest(input)
5640	req.SetContext(ctx)
5641	req.ApplyOptions(opts...)
5642	return out, req.Send()
5643}
5644
5645const opPutBucketWebsite = "PutBucketWebsite"
5646
5647// PutBucketWebsiteRequest generates a "aws/request.Request" representing the
5648// client's request for the PutBucketWebsite operation. The "output" return
5649// value will be populated with the request's response once the request completes
5650// successfuly.
5651//
5652// Use "Send" method on the returned Request to send the API call to the service.
5653// the "output" return value is not valid until after Send returns without error.
5654//
5655// See PutBucketWebsite for more information on using the PutBucketWebsite
5656// API call, and error handling.
5657//
5658// This method is useful when you want to inject custom logic or configuration
5659// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5660//
5661//
5662//    // Example sending a request using the PutBucketWebsiteRequest method.
5663//    req, resp := client.PutBucketWebsiteRequest(params)
5664//
5665//    err := req.Send()
5666//    if err == nil { // resp is now filled
5667//        fmt.Println(resp)
5668//    }
5669//
5670// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
5671func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
5672	op := &request.Operation{
5673		Name:       opPutBucketWebsite,
5674		HTTPMethod: "PUT",
5675		HTTPPath:   "/{Bucket}?website",
5676	}
5677
5678	if input == nil {
5679		input = &PutBucketWebsiteInput{}
5680	}
5681
5682	output = &PutBucketWebsiteOutput{}
5683	req = c.newRequest(op, input, output)
5684	req.Handlers.Unmarshal.Remove(restxml.UnmarshalHandler)
5685	req.Handlers.Unmarshal.PushBackNamed(protocol.UnmarshalDiscardBodyHandler)
5686	return
5687}
5688
5689// PutBucketWebsite API operation for Amazon Simple Storage Service.
5690//
5691// Set the website configuration for a bucket.
5692//
5693// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5694// with awserr.Error's Code and Message methods to get detailed information about
5695// the error.
5696//
5697// See the AWS API reference guide for Amazon Simple Storage Service's
5698// API operation PutBucketWebsite for usage and error information.
5699// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
5700func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
5701	req, out := c.PutBucketWebsiteRequest(input)
5702	return out, req.Send()
5703}
5704
5705// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
5706// the ability to pass a context and additional request options.
5707//
5708// See PutBucketWebsite for details on how to use this API operation.
5709//
5710// The context must be non-nil and will be used for request cancellation. If
5711// the context is nil a panic will occur. In the future the SDK may create
5712// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5713// for more information on using Contexts.
5714func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
5715	req, out := c.PutBucketWebsiteRequest(input)
5716	req.SetContext(ctx)
5717	req.ApplyOptions(opts...)
5718	return out, req.Send()
5719}
5720
5721const opPutObject = "PutObject"
5722
5723// PutObjectRequest generates a "aws/request.Request" representing the
5724// client's request for the PutObject operation. The "output" return
5725// value will be populated with the request's response once the request completes
5726// successfuly.
5727//
5728// Use "Send" method on the returned Request to send the API call to the service.
5729// the "output" return value is not valid until after Send returns without error.
5730//
5731// See PutObject for more information on using the PutObject
5732// API call, and error handling.
5733//
5734// This method is useful when you want to inject custom logic or configuration
5735// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5736//
5737//
5738//    // Example sending a request using the PutObjectRequest method.
5739//    req, resp := client.PutObjectRequest(params)
5740//
5741//    err := req.Send()
5742//    if err == nil { // resp is now filled
5743//        fmt.Println(resp)
5744//    }
5745//
5746// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
5747func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
5748	op := &request.Operation{
5749		Name:       opPutObject,
5750		HTTPMethod: "PUT",
5751		HTTPPath:   "/{Bucket}/{Key+}",
5752	}
5753
5754	if input == nil {
5755		input = &PutObjectInput{}
5756	}
5757
5758	output = &PutObjectOutput{}
5759	req = c.newRequest(op, input, output)
5760	return
5761}
5762
5763// PutObject API operation for Amazon Simple Storage Service.
5764//
5765// Adds an object to a bucket.
5766//
5767// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5768// with awserr.Error's Code and Message methods to get detailed information about
5769// the error.
5770//
5771// See the AWS API reference guide for Amazon Simple Storage Service's
5772// API operation PutObject for usage and error information.
5773// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
5774func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
5775	req, out := c.PutObjectRequest(input)
5776	return out, req.Send()
5777}
5778
5779// PutObjectWithContext is the same as PutObject with the addition of
5780// the ability to pass a context and additional request options.
5781//
5782// See PutObject for details on how to use this API operation.
5783//
5784// The context must be non-nil and will be used for request cancellation. If
5785// the context is nil a panic will occur. In the future the SDK may create
5786// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5787// for more information on using Contexts.
5788func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
5789	req, out := c.PutObjectRequest(input)
5790	req.SetContext(ctx)
5791	req.ApplyOptions(opts...)
5792	return out, req.Send()
5793}
5794
5795const opPutObjectAcl = "PutObjectAcl"
5796
5797// PutObjectAclRequest generates a "aws/request.Request" representing the
5798// client's request for the PutObjectAcl operation. The "output" return
5799// value will be populated with the request's response once the request completes
5800// successfuly.
5801//
5802// Use "Send" method on the returned Request to send the API call to the service.
5803// the "output" return value is not valid until after Send returns without error.
5804//
5805// See PutObjectAcl for more information on using the PutObjectAcl
5806// API call, and error handling.
5807//
5808// This method is useful when you want to inject custom logic or configuration
5809// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5810//
5811//
5812//    // Example sending a request using the PutObjectAclRequest method.
5813//    req, resp := client.PutObjectAclRequest(params)
5814//
5815//    err := req.Send()
5816//    if err == nil { // resp is now filled
5817//        fmt.Println(resp)
5818//    }
5819//
5820// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
5821func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
5822	op := &request.Operation{
5823		Name:       opPutObjectAcl,
5824		HTTPMethod: "PUT",
5825		HTTPPath:   "/{Bucket}/{Key+}?acl",
5826	}
5827
5828	if input == nil {
5829		input = &PutObjectAclInput{}
5830	}
5831
5832	output = &PutObjectAclOutput{}
5833	req = c.newRequest(op, input, output)
5834	return
5835}
5836
5837// PutObjectAcl API operation for Amazon Simple Storage Service.
5838//
5839// uses the acl subresource to set the access control list (ACL) permissions
5840// for an object that already exists in a bucket
5841//
5842// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5843// with awserr.Error's Code and Message methods to get detailed information about
5844// the error.
5845//
5846// See the AWS API reference guide for Amazon Simple Storage Service's
5847// API operation PutObjectAcl for usage and error information.
5848//
5849// Returned Error Codes:
5850//   * ErrCodeNoSuchKey "NoSuchKey"
5851//   The specified key does not exist.
5852//
5853// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
5854func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
5855	req, out := c.PutObjectAclRequest(input)
5856	return out, req.Send()
5857}
5858
5859// PutObjectAclWithContext is the same as PutObjectAcl with the addition of
5860// the ability to pass a context and additional request options.
5861//
5862// See PutObjectAcl for details on how to use this API operation.
5863//
5864// The context must be non-nil and will be used for request cancellation. If
5865// the context is nil a panic will occur. In the future the SDK may create
5866// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5867// for more information on using Contexts.
5868func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
5869	req, out := c.PutObjectAclRequest(input)
5870	req.SetContext(ctx)
5871	req.ApplyOptions(opts...)
5872	return out, req.Send()
5873}
5874
5875const opPutObjectTagging = "PutObjectTagging"
5876
5877// PutObjectTaggingRequest generates a "aws/request.Request" representing the
5878// client's request for the PutObjectTagging operation. The "output" return
5879// value will be populated with the request's response once the request completes
5880// successfuly.
5881//
5882// Use "Send" method on the returned Request to send the API call to the service.
5883// the "output" return value is not valid until after Send returns without error.
5884//
5885// See PutObjectTagging for more information on using the PutObjectTagging
5886// API call, and error handling.
5887//
5888// This method is useful when you want to inject custom logic or configuration
5889// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5890//
5891//
5892//    // Example sending a request using the PutObjectTaggingRequest method.
5893//    req, resp := client.PutObjectTaggingRequest(params)
5894//
5895//    err := req.Send()
5896//    if err == nil { // resp is now filled
5897//        fmt.Println(resp)
5898//    }
5899//
5900// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
5901func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
5902	op := &request.Operation{
5903		Name:       opPutObjectTagging,
5904		HTTPMethod: "PUT",
5905		HTTPPath:   "/{Bucket}/{Key+}?tagging",
5906	}
5907
5908	if input == nil {
5909		input = &PutObjectTaggingInput{}
5910	}
5911
5912	output = &PutObjectTaggingOutput{}
5913	req = c.newRequest(op, input, output)
5914	return
5915}
5916
5917// PutObjectTagging API operation for Amazon Simple Storage Service.
5918//
5919// Sets the supplied tag-set to an object that already exists in a bucket
5920//
5921// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5922// with awserr.Error's Code and Message methods to get detailed information about
5923// the error.
5924//
5925// See the AWS API reference guide for Amazon Simple Storage Service's
5926// API operation PutObjectTagging for usage and error information.
5927// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
5928func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
5929	req, out := c.PutObjectTaggingRequest(input)
5930	return out, req.Send()
5931}
5932
5933// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
5934// the ability to pass a context and additional request options.
5935//
5936// See PutObjectTagging for details on how to use this API operation.
5937//
5938// The context must be non-nil and will be used for request cancellation. If
5939// the context is nil a panic will occur. In the future the SDK may create
5940// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5941// for more information on using Contexts.
5942func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
5943	req, out := c.PutObjectTaggingRequest(input)
5944	req.SetContext(ctx)
5945	req.ApplyOptions(opts...)
5946	return out, req.Send()
5947}
5948
5949const opRestoreObject = "RestoreObject"
5950
5951// RestoreObjectRequest generates a "aws/request.Request" representing the
5952// client's request for the RestoreObject operation. The "output" return
5953// value will be populated with the request's response once the request completes
5954// successfuly.
5955//
5956// Use "Send" method on the returned Request to send the API call to the service.
5957// the "output" return value is not valid until after Send returns without error.
5958//
5959// See RestoreObject for more information on using the RestoreObject
5960// API call, and error handling.
5961//
5962// This method is useful when you want to inject custom logic or configuration
5963// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5964//
5965//
5966//    // Example sending a request using the RestoreObjectRequest method.
5967//    req, resp := client.RestoreObjectRequest(params)
5968//
5969//    err := req.Send()
5970//    if err == nil { // resp is now filled
5971//        fmt.Println(resp)
5972//    }
5973//
5974// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
5975func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
5976	op := &request.Operation{
5977		Name:       opRestoreObject,
5978		HTTPMethod: "POST",
5979		HTTPPath:   "/{Bucket}/{Key+}?restore",
5980	}
5981
5982	if input == nil {
5983		input = &RestoreObjectInput{}
5984	}
5985
5986	output = &RestoreObjectOutput{}
5987	req = c.newRequest(op, input, output)
5988	return
5989}
5990
5991// RestoreObject API operation for Amazon Simple Storage Service.
5992//
5993// Restores an archived copy of an object back into Amazon S3
5994//
5995// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5996// with awserr.Error's Code and Message methods to get detailed information about
5997// the error.
5998//
5999// See the AWS API reference guide for Amazon Simple Storage Service's
6000// API operation RestoreObject for usage and error information.
6001//
6002// Returned Error Codes:
6003//   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
6004//   This operation is not allowed against this storage tier
6005//
6006// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
6007func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
6008	req, out := c.RestoreObjectRequest(input)
6009	return out, req.Send()
6010}
6011
6012// RestoreObjectWithContext is the same as RestoreObject with the addition of
6013// the ability to pass a context and additional request options.
6014//
6015// See RestoreObject for details on how to use this API operation.
6016//
6017// The context must be non-nil and will be used for request cancellation. If
6018// the context is nil a panic will occur. In the future the SDK may create
6019// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6020// for more information on using Contexts.
6021func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
6022	req, out := c.RestoreObjectRequest(input)
6023	req.SetContext(ctx)
6024	req.ApplyOptions(opts...)
6025	return out, req.Send()
6026}
6027
6028const opSelectObjectContent = "SelectObjectContent"
6029
6030// SelectObjectContentRequest generates a "aws/request.Request" representing the
6031// client's request for the SelectObjectContent operation. The "output" return
6032// value will be populated with the request's response once the request completes
6033// successfuly.
6034//
6035// Use "Send" method on the returned Request to send the API call to the service.
6036// the "output" return value is not valid until after Send returns without error.
6037//
6038// See SelectObjectContent for more information on using the SelectObjectContent
6039// API call, and error handling.
6040//
6041// This method is useful when you want to inject custom logic or configuration
6042// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6043//
6044//
6045//    // Example sending a request using the SelectObjectContentRequest method.
6046//    req, resp := client.SelectObjectContentRequest(params)
6047//
6048//    err := req.Send()
6049//    if err == nil { // resp is now filled
6050//        fmt.Println(resp)
6051//    }
6052//
6053// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
6054func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
6055	op := &request.Operation{
6056		Name:       opSelectObjectContent,
6057		HTTPMethod: "POST",
6058		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
6059	}
6060
6061	if input == nil {
6062		input = &SelectObjectContentInput{}
6063	}
6064
6065	output = &SelectObjectContentOutput{}
6066	req = c.newRequest(op, input, output)
6067	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
6068	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
6069	req.Handlers.Unmarshal.PushBack(output.runEventStreamLoop)
6070	return
6071}
6072
6073// SelectObjectContent API operation for Amazon Simple Storage Service.
6074//
6075// This operation filters the contents of an Amazon S3 object based on a simple
6076// Structured Query Language (SQL) statement. In the request, along with the
6077// SQL expression, you must also specify a data serialization format (JSON or
6078// CSV) of the object. Amazon S3 uses this to parse object data into records,
6079// and returns only records that match the specified SQL expression. You must
6080// also specify the data serialization format for the response.
6081//
6082// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6083// with awserr.Error's Code and Message methods to get detailed information about
6084// the error.
6085//
6086// See the AWS API reference guide for Amazon Simple Storage Service's
6087// API operation SelectObjectContent for usage and error information.
6088// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
6089func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
6090	req, out := c.SelectObjectContentRequest(input)
6091	return out, req.Send()
6092}
6093
6094// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
6095// the ability to pass a context and additional request options.
6096//
6097// See SelectObjectContent for details on how to use this API operation.
6098//
6099// The context must be non-nil and will be used for request cancellation. If
6100// the context is nil a panic will occur. In the future the SDK may create
6101// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6102// for more information on using Contexts.
6103func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
6104	req, out := c.SelectObjectContentRequest(input)
6105	req.SetContext(ctx)
6106	req.ApplyOptions(opts...)
6107	return out, req.Send()
6108}
6109
6110const opUploadPart = "UploadPart"
6111
6112// UploadPartRequest generates a "aws/request.Request" representing the
6113// client's request for the UploadPart operation. The "output" return
6114// value will be populated with the request's response once the request completes
6115// successfuly.
6116//
6117// Use "Send" method on the returned Request to send the API call to the service.
6118// the "output" return value is not valid until after Send returns without error.
6119//
6120// See UploadPart for more information on using the UploadPart
6121// API call, and error handling.
6122//
6123// This method is useful when you want to inject custom logic or configuration
6124// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6125//
6126//
6127//    // Example sending a request using the UploadPartRequest method.
6128//    req, resp := client.UploadPartRequest(params)
6129//
6130//    err := req.Send()
6131//    if err == nil { // resp is now filled
6132//        fmt.Println(resp)
6133//    }
6134//
6135// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
6136func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
6137	op := &request.Operation{
6138		Name:       opUploadPart,
6139		HTTPMethod: "PUT",
6140		HTTPPath:   "/{Bucket}/{Key+}",
6141	}
6142
6143	if input == nil {
6144		input = &UploadPartInput{}
6145	}
6146
6147	output = &UploadPartOutput{}
6148	req = c.newRequest(op, input, output)
6149	return
6150}
6151
6152// UploadPart API operation for Amazon Simple Storage Service.
6153//
6154// Uploads a part in a multipart upload.
6155//
6156// Note: After you initiate multipart upload and upload one or more parts, you
6157// must either complete or abort multipart upload in order to stop getting charged
6158// for storage of the uploaded parts. Only after you either complete or abort
6159// multipart upload, Amazon S3 frees up the parts storage and stops charging
6160// you for the parts storage.
6161//
6162// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6163// with awserr.Error's Code and Message methods to get detailed information about
6164// the error.
6165//
6166// See the AWS API reference guide for Amazon Simple Storage Service's
6167// API operation UploadPart for usage and error information.
6168// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
6169func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
6170	req, out := c.UploadPartRequest(input)
6171	return out, req.Send()
6172}
6173
6174// UploadPartWithContext is the same as UploadPart with the addition of
6175// the ability to pass a context and additional request options.
6176//
6177// See UploadPart for details on how to use this API operation.
6178//
6179// The context must be non-nil and will be used for request cancellation. If
6180// the context is nil a panic will occur. In the future the SDK may create
6181// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6182// for more information on using Contexts.
6183func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
6184	req, out := c.UploadPartRequest(input)
6185	req.SetContext(ctx)
6186	req.ApplyOptions(opts...)
6187	return out, req.Send()
6188}
6189
6190const opUploadPartCopy = "UploadPartCopy"
6191
6192// UploadPartCopyRequest generates a "aws/request.Request" representing the
6193// client's request for the UploadPartCopy operation. The "output" return
6194// value will be populated with the request's response once the request completes
6195// successfuly.
6196//
6197// Use "Send" method on the returned Request to send the API call to the service.
6198// the "output" return value is not valid until after Send returns without error.
6199//
6200// See UploadPartCopy for more information on using the UploadPartCopy
6201// API call, and error handling.
6202//
6203// This method is useful when you want to inject custom logic or configuration
6204// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6205//
6206//
6207//    // Example sending a request using the UploadPartCopyRequest method.
6208//    req, resp := client.UploadPartCopyRequest(params)
6209//
6210//    err := req.Send()
6211//    if err == nil { // resp is now filled
6212//        fmt.Println(resp)
6213//    }
6214//
6215// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
6216func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
6217	op := &request.Operation{
6218		Name:       opUploadPartCopy,
6219		HTTPMethod: "PUT",
6220		HTTPPath:   "/{Bucket}/{Key+}",
6221	}
6222
6223	if input == nil {
6224		input = &UploadPartCopyInput{}
6225	}
6226
6227	output = &UploadPartCopyOutput{}
6228	req = c.newRequest(op, input, output)
6229	return
6230}
6231
6232// UploadPartCopy API operation for Amazon Simple Storage Service.
6233//
6234// Uploads a part by copying data from an existing object as data source.
6235//
6236// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6237// with awserr.Error's Code and Message methods to get detailed information about
6238// the error.
6239//
6240// See the AWS API reference guide for Amazon Simple Storage Service's
6241// API operation UploadPartCopy for usage and error information.
6242// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
6243func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
6244	req, out := c.UploadPartCopyRequest(input)
6245	return out, req.Send()
6246}
6247
6248// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
6249// the ability to pass a context and additional request options.
6250//
6251// See UploadPartCopy for details on how to use this API operation.
6252//
6253// The context must be non-nil and will be used for request cancellation. If
6254// the context is nil a panic will occur. In the future the SDK may create
6255// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6256// for more information on using Contexts.
6257func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
6258	req, out := c.UploadPartCopyRequest(input)
6259	req.SetContext(ctx)
6260	req.ApplyOptions(opts...)
6261	return out, req.Send()
6262}
6263
6264// Specifies the days since the initiation of an Incomplete Multipart Upload
6265// that Lifecycle will wait before permanently removing all parts of the upload.
6266type AbortIncompleteMultipartUpload struct {
6267	_ struct{} `type:"structure"`
6268
6269	// Indicates the number of days that must pass since initiation for Lifecycle
6270	// to abort an Incomplete Multipart Upload.
6271	DaysAfterInitiation *int64 `type:"integer"`
6272}
6273
6274// String returns the string representation
6275func (s AbortIncompleteMultipartUpload) String() string {
6276	return awsutil.Prettify(s)
6277}
6278
6279// GoString returns the string representation
6280func (s AbortIncompleteMultipartUpload) GoString() string {
6281	return s.String()
6282}
6283
6284// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
6285func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
6286	s.DaysAfterInitiation = &v
6287	return s
6288}
6289
6290type AbortMultipartUploadInput struct {
6291	_ struct{} `type:"structure"`
6292
6293	// Bucket is a required field
6294	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
6295
6296	// Key is a required field
6297	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
6298
6299	// Confirms that the requester knows that she or he will be charged for the
6300	// request. Bucket owners need not specify this parameter in their requests.
6301	// Documentation on downloading objects from requester pays buckets can be found
6302	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
6303	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
6304
6305	// UploadId is a required field
6306	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
6307}
6308
6309// String returns the string representation
6310func (s AbortMultipartUploadInput) String() string {
6311	return awsutil.Prettify(s)
6312}
6313
6314// GoString returns the string representation
6315func (s AbortMultipartUploadInput) GoString() string {
6316	return s.String()
6317}
6318
6319// Validate inspects the fields of the type to determine if they are valid.
6320func (s *AbortMultipartUploadInput) Validate() error {
6321	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
6322	if s.Bucket == nil {
6323		invalidParams.Add(request.NewErrParamRequired("Bucket"))
6324	}
6325	if s.Key == nil {
6326		invalidParams.Add(request.NewErrParamRequired("Key"))
6327	}
6328	if s.Key != nil && len(*s.Key) < 1 {
6329		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
6330	}
6331	if s.UploadId == nil {
6332		invalidParams.Add(request.NewErrParamRequired("UploadId"))
6333	}
6334
6335	if invalidParams.Len() > 0 {
6336		return invalidParams
6337	}
6338	return nil
6339}
6340
6341// SetBucket sets the Bucket field's value.
6342func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
6343	s.Bucket = &v
6344	return s
6345}
6346
6347func (s *AbortMultipartUploadInput) getBucket() (v string) {
6348	if s.Bucket == nil {
6349		return v
6350	}
6351	return *s.Bucket
6352}
6353
6354// SetKey sets the Key field's value.
6355func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
6356	s.Key = &v
6357	return s
6358}
6359
6360// SetRequestPayer sets the RequestPayer field's value.
6361func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
6362	s.RequestPayer = &v
6363	return s
6364}
6365
6366// SetUploadId sets the UploadId field's value.
6367func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
6368	s.UploadId = &v
6369	return s
6370}
6371
6372type AbortMultipartUploadOutput struct {
6373	_ struct{} `type:"structure"`
6374
6375	// If present, indicates that the requester was successfully charged for the
6376	// request.
6377	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
6378}
6379
6380// String returns the string representation
6381func (s AbortMultipartUploadOutput) String() string {
6382	return awsutil.Prettify(s)
6383}
6384
6385// GoString returns the string representation
6386func (s AbortMultipartUploadOutput) GoString() string {
6387	return s.String()
6388}
6389
6390// SetRequestCharged sets the RequestCharged field's value.
6391func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
6392	s.RequestCharged = &v
6393	return s
6394}
6395
6396type AccelerateConfiguration struct {
6397	_ struct{} `type:"structure"`
6398
6399	// The accelerate configuration of the bucket.
6400	Status *string `type:"string" enum:"BucketAccelerateStatus"`
6401}
6402
6403// String returns the string representation
6404func (s AccelerateConfiguration) String() string {
6405	return awsutil.Prettify(s)
6406}
6407
6408// GoString returns the string representation
6409func (s AccelerateConfiguration) GoString() string {
6410	return s.String()
6411}
6412
6413// SetStatus sets the Status field's value.
6414func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
6415	s.Status = &v
6416	return s
6417}
6418
6419type AccessControlPolicy struct {
6420	_ struct{} `type:"structure"`
6421
6422	// A list of grants.
6423	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
6424
6425	Owner *Owner `type:"structure"`
6426}
6427
6428// String returns the string representation
6429func (s AccessControlPolicy) String() string {
6430	return awsutil.Prettify(s)
6431}
6432
6433// GoString returns the string representation
6434func (s AccessControlPolicy) GoString() string {
6435	return s.String()
6436}
6437
6438// Validate inspects the fields of the type to determine if they are valid.
6439func (s *AccessControlPolicy) Validate() error {
6440	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
6441	if s.Grants != nil {
6442		for i, v := range s.Grants {
6443			if v == nil {
6444				continue
6445			}
6446			if err := v.Validate(); err != nil {
6447				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
6448			}
6449		}
6450	}
6451
6452	if invalidParams.Len() > 0 {
6453		return invalidParams
6454	}
6455	return nil
6456}
6457
6458// SetGrants sets the Grants field's value.
6459func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
6460	s.Grants = v
6461	return s
6462}
6463
6464// SetOwner sets the Owner field's value.
6465func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
6466	s.Owner = v
6467	return s
6468}
6469
6470// Container for information regarding the access control for replicas.
6471type AccessControlTranslation struct {
6472	_ struct{} `type:"structure"`
6473
6474	// The override value for the owner of the replica object.
6475	//
6476	// Owner is a required field
6477	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
6478}
6479
6480// String returns the string representation
6481func (s AccessControlTranslation) String() string {
6482	return awsutil.Prettify(s)
6483}
6484
6485// GoString returns the string representation
6486func (s AccessControlTranslation) GoString() string {
6487	return s.String()
6488}
6489
6490// Validate inspects the fields of the type to determine if they are valid.
6491func (s *AccessControlTranslation) Validate() error {
6492	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
6493	if s.Owner == nil {
6494		invalidParams.Add(request.NewErrParamRequired("Owner"))
6495	}
6496
6497	if invalidParams.Len() > 0 {
6498		return invalidParams
6499	}
6500	return nil
6501}
6502
6503// SetOwner sets the Owner field's value.
6504func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
6505	s.Owner = &v
6506	return s
6507}
6508
6509type AnalyticsAndOperator struct {
6510	_ struct{} `type:"structure"`
6511
6512	// The prefix to use when evaluating an AND predicate.
6513	Prefix *string `type:"string"`
6514
6515	// The list of tags to use when evaluating an AND predicate.
6516	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
6517}
6518
6519// String returns the string representation
6520func (s AnalyticsAndOperator) String() string {
6521	return awsutil.Prettify(s)
6522}
6523
6524// GoString returns the string representation
6525func (s AnalyticsAndOperator) GoString() string {
6526	return s.String()
6527}
6528
6529// Validate inspects the fields of the type to determine if they are valid.
6530func (s *AnalyticsAndOperator) Validate() error {
6531	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
6532	if s.Tags != nil {
6533		for i, v := range s.Tags {
6534			if v == nil {
6535				continue
6536			}
6537			if err := v.Validate(); err != nil {
6538				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
6539			}
6540		}
6541	}
6542
6543	if invalidParams.Len() > 0 {
6544		return invalidParams
6545	}
6546	return nil
6547}
6548
6549// SetPrefix sets the Prefix field's value.
6550func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
6551	s.Prefix = &v
6552	return s
6553}
6554
6555// SetTags sets the Tags field's value.
6556func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
6557	s.Tags = v
6558	return s
6559}
6560
6561type AnalyticsConfiguration struct {
6562	_ struct{} `type:"structure"`
6563
6564	// The filter used to describe a set of objects for analyses. A filter must
6565	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
6566	// If no filter is provided, all objects will be considered in any analysis.
6567	Filter *AnalyticsFilter `type:"structure"`
6568
6569	// The identifier used to represent an analytics configuration.
6570	//
6571	// Id is a required field
6572	Id *string `type:"string" required:"true"`
6573
6574	// If present, it indicates that data related to access patterns will be collected
6575	// and made available to analyze the tradeoffs between different storage classes.
6576	//
6577	// StorageClassAnalysis is a required field
6578	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
6579}
6580
6581// String returns the string representation
6582func (s AnalyticsConfiguration) String() string {
6583	return awsutil.Prettify(s)
6584}
6585
6586// GoString returns the string representation
6587func (s AnalyticsConfiguration) GoString() string {
6588	return s.String()
6589}
6590
6591// Validate inspects the fields of the type to determine if they are valid.
6592func (s *AnalyticsConfiguration) Validate() error {
6593	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
6594	if s.Id == nil {
6595		invalidParams.Add(request.NewErrParamRequired("Id"))
6596	}
6597	if s.StorageClassAnalysis == nil {
6598		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
6599	}
6600	if s.Filter != nil {
6601		if err := s.Filter.Validate(); err != nil {
6602			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
6603		}
6604	}
6605	if s.StorageClassAnalysis != nil {
6606		if err := s.StorageClassAnalysis.Validate(); err != nil {
6607			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
6608		}
6609	}
6610
6611	if invalidParams.Len() > 0 {
6612		return invalidParams
6613	}
6614	return nil
6615}
6616
6617// SetFilter sets the Filter field's value.
6618func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
6619	s.Filter = v
6620	return s
6621}
6622
6623// SetId sets the Id field's value.
6624func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
6625	s.Id = &v
6626	return s
6627}
6628
6629// SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
6630func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
6631	s.StorageClassAnalysis = v
6632	return s
6633}
6634
6635type AnalyticsExportDestination struct {
6636	_ struct{} `type:"structure"`
6637
6638	// A destination signifying output to an S3 bucket.
6639	//
6640	// S3BucketDestination is a required field
6641	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
6642}
6643
6644// String returns the string representation
6645func (s AnalyticsExportDestination) String() string {
6646	return awsutil.Prettify(s)
6647}
6648
6649// GoString returns the string representation
6650func (s AnalyticsExportDestination) GoString() string {
6651	return s.String()
6652}
6653
6654// Validate inspects the fields of the type to determine if they are valid.
6655func (s *AnalyticsExportDestination) Validate() error {
6656	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
6657	if s.S3BucketDestination == nil {
6658		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
6659	}
6660	if s.S3BucketDestination != nil {
6661		if err := s.S3BucketDestination.Validate(); err != nil {
6662			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
6663		}
6664	}
6665
6666	if invalidParams.Len() > 0 {
6667		return invalidParams
6668	}
6669	return nil
6670}
6671
6672// SetS3BucketDestination sets the S3BucketDestination field's value.
6673func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
6674	s.S3BucketDestination = v
6675	return s
6676}
6677
6678type AnalyticsFilter struct {
6679	_ struct{} `type:"structure"`
6680
6681	// A conjunction (logical AND) of predicates, which is used in evaluating an
6682	// analytics filter. The operator must have at least two predicates.
6683	And *AnalyticsAndOperator `type:"structure"`
6684
6685	// The prefix to use when evaluating an analytics filter.
6686	Prefix *string `type:"string"`
6687
6688	// The tag to use when evaluating an analytics filter.
6689	Tag *Tag `type:"structure"`
6690}
6691
6692// String returns the string representation
6693func (s AnalyticsFilter) String() string {
6694	return awsutil.Prettify(s)
6695}
6696
6697// GoString returns the string representation
6698func (s AnalyticsFilter) GoString() string {
6699	return s.String()
6700}
6701
6702// Validate inspects the fields of the type to determine if they are valid.
6703func (s *AnalyticsFilter) Validate() error {
6704	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
6705	if s.And != nil {
6706		if err := s.And.Validate(); err != nil {
6707			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
6708		}
6709	}
6710	if s.Tag != nil {
6711		if err := s.Tag.Validate(); err != nil {
6712			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
6713		}
6714	}
6715
6716	if invalidParams.Len() > 0 {
6717		return invalidParams
6718	}
6719	return nil
6720}
6721
6722// SetAnd sets the And field's value.
6723func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
6724	s.And = v
6725	return s
6726}
6727
6728// SetPrefix sets the Prefix field's value.
6729func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
6730	s.Prefix = &v
6731	return s
6732}
6733
6734// SetTag sets the Tag field's value.
6735func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
6736	s.Tag = v
6737	return s
6738}
6739
6740type AnalyticsS3BucketDestination struct {
6741	_ struct{} `type:"structure"`
6742
6743	// The Amazon resource name (ARN) of the bucket to which data is exported.
6744	//
6745	// Bucket is a required field
6746	Bucket *string `type:"string" required:"true"`
6747
6748	// The account ID that owns the destination bucket. If no account ID is provided,
6749	// the owner will not be validated prior to exporting data.
6750	BucketAccountId *string `type:"string"`
6751
6752	// The file format used when exporting data to Amazon S3.
6753	//
6754	// Format is a required field
6755	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
6756
6757	// The prefix to use when exporting data. The exported data begins with this
6758	// prefix.
6759	Prefix *string `type:"string"`
6760}
6761
6762// String returns the string representation
6763func (s AnalyticsS3BucketDestination) String() string {
6764	return awsutil.Prettify(s)
6765}
6766
6767// GoString returns the string representation
6768func (s AnalyticsS3BucketDestination) GoString() string {
6769	return s.String()
6770}
6771
6772// Validate inspects the fields of the type to determine if they are valid.
6773func (s *AnalyticsS3BucketDestination) Validate() error {
6774	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
6775	if s.Bucket == nil {
6776		invalidParams.Add(request.NewErrParamRequired("Bucket"))
6777	}
6778	if s.Format == nil {
6779		invalidParams.Add(request.NewErrParamRequired("Format"))
6780	}
6781
6782	if invalidParams.Len() > 0 {
6783		return invalidParams
6784	}
6785	return nil
6786}
6787
6788// SetBucket sets the Bucket field's value.
6789func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
6790	s.Bucket = &v
6791	return s
6792}
6793
6794func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
6795	if s.Bucket == nil {
6796		return v
6797	}
6798	return *s.Bucket
6799}
6800
6801// SetBucketAccountId sets the BucketAccountId field's value.
6802func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
6803	s.BucketAccountId = &v
6804	return s
6805}
6806
6807// SetFormat sets the Format field's value.
6808func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
6809	s.Format = &v
6810	return s
6811}
6812
6813// SetPrefix sets the Prefix field's value.
6814func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
6815	s.Prefix = &v
6816	return s
6817}
6818
6819type Bucket struct {
6820	_ struct{} `type:"structure"`
6821
6822	// Date the bucket was created.
6823	CreationDate *time.Time `type:"timestamp"`
6824
6825	// The name of the bucket.
6826	Name *string `type:"string"`
6827}
6828
6829// String returns the string representation
6830func (s Bucket) String() string {
6831	return awsutil.Prettify(s)
6832}
6833
6834// GoString returns the string representation
6835func (s Bucket) GoString() string {
6836	return s.String()
6837}
6838
6839// SetCreationDate sets the CreationDate field's value.
6840func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
6841	s.CreationDate = &v
6842	return s
6843}
6844
6845// SetName sets the Name field's value.
6846func (s *Bucket) SetName(v string) *Bucket {
6847	s.Name = &v
6848	return s
6849}
6850
6851type BucketLifecycleConfiguration struct {
6852	_ struct{} `type:"structure"`
6853
6854	// Rules is a required field
6855	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
6856}
6857
6858// String returns the string representation
6859func (s BucketLifecycleConfiguration) String() string {
6860	return awsutil.Prettify(s)
6861}
6862
6863// GoString returns the string representation
6864func (s BucketLifecycleConfiguration) GoString() string {
6865	return s.String()
6866}
6867
6868// Validate inspects the fields of the type to determine if they are valid.
6869func (s *BucketLifecycleConfiguration) Validate() error {
6870	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
6871	if s.Rules == nil {
6872		invalidParams.Add(request.NewErrParamRequired("Rules"))
6873	}
6874	if s.Rules != nil {
6875		for i, v := range s.Rules {
6876			if v == nil {
6877				continue
6878			}
6879			if err := v.Validate(); err != nil {
6880				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
6881			}
6882		}
6883	}
6884
6885	if invalidParams.Len() > 0 {
6886		return invalidParams
6887	}
6888	return nil
6889}
6890
6891// SetRules sets the Rules field's value.
6892func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
6893	s.Rules = v
6894	return s
6895}
6896
6897type BucketLoggingStatus struct {
6898	_ struct{} `type:"structure"`
6899
6900	// Container for logging information. Presence of this element indicates that
6901	// logging is enabled. Parameters TargetBucket and TargetPrefix are required
6902	// in this case.
6903	LoggingEnabled *LoggingEnabled `type:"structure"`
6904}
6905
6906// String returns the string representation
6907func (s BucketLoggingStatus) String() string {
6908	return awsutil.Prettify(s)
6909}
6910
6911// GoString returns the string representation
6912func (s BucketLoggingStatus) GoString() string {
6913	return s.String()
6914}
6915
6916// Validate inspects the fields of the type to determine if they are valid.
6917func (s *BucketLoggingStatus) Validate() error {
6918	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
6919	if s.LoggingEnabled != nil {
6920		if err := s.LoggingEnabled.Validate(); err != nil {
6921			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
6922		}
6923	}
6924
6925	if invalidParams.Len() > 0 {
6926		return invalidParams
6927	}
6928	return nil
6929}
6930
6931// SetLoggingEnabled sets the LoggingEnabled field's value.
6932func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
6933	s.LoggingEnabled = v
6934	return s
6935}
6936
6937type CORSConfiguration struct {
6938	_ struct{} `type:"structure"`
6939
6940	// CORSRules is a required field
6941	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
6942}
6943
6944// String returns the string representation
6945func (s CORSConfiguration) String() string {
6946	return awsutil.Prettify(s)
6947}
6948
6949// GoString returns the string representation
6950func (s CORSConfiguration) GoString() string {
6951	return s.String()
6952}
6953
6954// Validate inspects the fields of the type to determine if they are valid.
6955func (s *CORSConfiguration) Validate() error {
6956	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
6957	if s.CORSRules == nil {
6958		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
6959	}
6960	if s.CORSRules != nil {
6961		for i, v := range s.CORSRules {
6962			if v == nil {
6963				continue
6964			}
6965			if err := v.Validate(); err != nil {
6966				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
6967			}
6968		}
6969	}
6970
6971	if invalidParams.Len() > 0 {
6972		return invalidParams
6973	}
6974	return nil
6975}
6976
6977// SetCORSRules sets the CORSRules field's value.
6978func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
6979	s.CORSRules = v
6980	return s
6981}
6982
6983type CORSRule struct {
6984	_ struct{} `type:"structure"`
6985
6986	// Specifies which headers are allowed in a pre-flight OPTIONS request.
6987	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
6988
6989	// Identifies HTTP methods that the domain/origin specified in the rule is allowed
6990	// to execute.
6991	//
6992	// AllowedMethods is a required field
6993	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
6994
6995	// One or more origins you want customers to be able to access the bucket from.
6996	//
6997	// AllowedOrigins is a required field
6998	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
6999
7000	// One or more headers in the response that you want customers to be able to
7001	// access from their applications (for example, from a JavaScript XMLHttpRequest
7002	// object).
7003	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
7004
7005	// The time in seconds that your browser is to cache the preflight response
7006	// for the specified resource.
7007	MaxAgeSeconds *int64 `type:"integer"`
7008}
7009
7010// String returns the string representation
7011func (s CORSRule) String() string {
7012	return awsutil.Prettify(s)
7013}
7014
7015// GoString returns the string representation
7016func (s CORSRule) GoString() string {
7017	return s.String()
7018}
7019
7020// Validate inspects the fields of the type to determine if they are valid.
7021func (s *CORSRule) Validate() error {
7022	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
7023	if s.AllowedMethods == nil {
7024		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
7025	}
7026	if s.AllowedOrigins == nil {
7027		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
7028	}
7029
7030	if invalidParams.Len() > 0 {
7031		return invalidParams
7032	}
7033	return nil
7034}
7035
7036// SetAllowedHeaders sets the AllowedHeaders field's value.
7037func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
7038	s.AllowedHeaders = v
7039	return s
7040}
7041
7042// SetAllowedMethods sets the AllowedMethods field's value.
7043func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
7044	s.AllowedMethods = v
7045	return s
7046}
7047
7048// SetAllowedOrigins sets the AllowedOrigins field's value.
7049func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
7050	s.AllowedOrigins = v
7051	return s
7052}
7053
7054// SetExposeHeaders sets the ExposeHeaders field's value.
7055func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
7056	s.ExposeHeaders = v
7057	return s
7058}
7059
7060// SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
7061func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
7062	s.MaxAgeSeconds = &v
7063	return s
7064}
7065
7066// Describes how a CSV-formatted input object is formatted.
7067type CSVInput struct {
7068	_ struct{} `type:"structure"`
7069
7070	// Specifies that CSV field values may contain quoted record delimiters and
7071	// such records should be allowed. Default value is FALSE. Setting this value
7072	// to TRUE may lower performance.
7073	AllowQuotedRecordDelimiter *bool `type:"boolean"`
7074
7075	// Single character used to indicate a row should be ignored when present at
7076	// the start of a row.
7077	Comments *string `type:"string"`
7078
7079	// Value used to separate individual fields in a record.
7080	FieldDelimiter *string `type:"string"`
7081
7082	// Describes the first line of input. Valid values: None, Ignore, Use.
7083	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
7084
7085	// Value used for escaping where the field delimiter is part of the value.
7086	QuoteCharacter *string `type:"string"`
7087
7088	// Single character used for escaping the quote character inside an already
7089	// escaped value.
7090	QuoteEscapeCharacter *string `type:"string"`
7091
7092	// Value used to separate individual records.
7093	RecordDelimiter *string `type:"string"`
7094}
7095
7096// String returns the string representation
7097func (s CSVInput) String() string {
7098	return awsutil.Prettify(s)
7099}
7100
7101// GoString returns the string representation
7102func (s CSVInput) GoString() string {
7103	return s.String()
7104}
7105
7106// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
7107func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
7108	s.AllowQuotedRecordDelimiter = &v
7109	return s
7110}
7111
7112// SetComments sets the Comments field's value.
7113func (s *CSVInput) SetComments(v string) *CSVInput {
7114	s.Comments = &v
7115	return s
7116}
7117
7118// SetFieldDelimiter sets the FieldDelimiter field's value.
7119func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
7120	s.FieldDelimiter = &v
7121	return s
7122}
7123
7124// SetFileHeaderInfo sets the FileHeaderInfo field's value.
7125func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
7126	s.FileHeaderInfo = &v
7127	return s
7128}
7129
7130// SetQuoteCharacter sets the QuoteCharacter field's value.
7131func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
7132	s.QuoteCharacter = &v
7133	return s
7134}
7135
7136// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
7137func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
7138	s.QuoteEscapeCharacter = &v
7139	return s
7140}
7141
7142// SetRecordDelimiter sets the RecordDelimiter field's value.
7143func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
7144	s.RecordDelimiter = &v
7145	return s
7146}
7147
7148// Describes how CSV-formatted results are formatted.
7149type CSVOutput struct {
7150	_ struct{} `type:"structure"`
7151
7152	// Value used to separate individual fields in a record.
7153	FieldDelimiter *string `type:"string"`
7154
7155	// Value used for escaping where the field delimiter is part of the value.
7156	QuoteCharacter *string `type:"string"`
7157
7158	// Single character used for escaping the quote character inside an already
7159	// escaped value.
7160	QuoteEscapeCharacter *string `type:"string"`
7161
7162	// Indicates whether or not all output fields should be quoted.
7163	QuoteFields *string `type:"string" enum:"QuoteFields"`
7164
7165	// Value used to separate individual records.
7166	RecordDelimiter *string `type:"string"`
7167}
7168
7169// String returns the string representation
7170func (s CSVOutput) String() string {
7171	return awsutil.Prettify(s)
7172}
7173
7174// GoString returns the string representation
7175func (s CSVOutput) GoString() string {
7176	return s.String()
7177}
7178
7179// SetFieldDelimiter sets the FieldDelimiter field's value.
7180func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
7181	s.FieldDelimiter = &v
7182	return s
7183}
7184
7185// SetQuoteCharacter sets the QuoteCharacter field's value.
7186func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
7187	s.QuoteCharacter = &v
7188	return s
7189}
7190
7191// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
7192func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
7193	s.QuoteEscapeCharacter = &v
7194	return s
7195}
7196
7197// SetQuoteFields sets the QuoteFields field's value.
7198func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
7199	s.QuoteFields = &v
7200	return s
7201}
7202
7203// SetRecordDelimiter sets the RecordDelimiter field's value.
7204func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
7205	s.RecordDelimiter = &v
7206	return s
7207}
7208
7209type CloudFunctionConfiguration struct {
7210	_ struct{} `type:"structure"`
7211
7212	CloudFunction *string `type:"string"`
7213
7214	// Bucket event for which to send notifications.
7215	Event *string `deprecated:"true" type:"string" enum:"Event"`
7216
7217	Events []*string `locationName:"Event" type:"list" flattened:"true"`
7218
7219	// Optional unique identifier for configurations in a notification configuration.
7220	// If you don't provide one, Amazon S3 will assign an ID.
7221	Id *string `type:"string"`
7222
7223	InvocationRole *string `type:"string"`
7224}
7225
7226// String returns the string representation
7227func (s CloudFunctionConfiguration) String() string {
7228	return awsutil.Prettify(s)
7229}
7230
7231// GoString returns the string representation
7232func (s CloudFunctionConfiguration) GoString() string {
7233	return s.String()
7234}
7235
7236// SetCloudFunction sets the CloudFunction field's value.
7237func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
7238	s.CloudFunction = &v
7239	return s
7240}
7241
7242// SetEvent sets the Event field's value.
7243func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
7244	s.Event = &v
7245	return s
7246}
7247
7248// SetEvents sets the Events field's value.
7249func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
7250	s.Events = v
7251	return s
7252}
7253
7254// SetId sets the Id field's value.
7255func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
7256	s.Id = &v
7257	return s
7258}
7259
7260// SetInvocationRole sets the InvocationRole field's value.
7261func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
7262	s.InvocationRole = &v
7263	return s
7264}
7265
7266type CommonPrefix struct {
7267	_ struct{} `type:"structure"`
7268
7269	Prefix *string `type:"string"`
7270}
7271
7272// String returns the string representation
7273func (s CommonPrefix) String() string {
7274	return awsutil.Prettify(s)
7275}
7276
7277// GoString returns the string representation
7278func (s CommonPrefix) GoString() string {
7279	return s.String()
7280}
7281
7282// SetPrefix sets the Prefix field's value.
7283func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
7284	s.Prefix = &v
7285	return s
7286}
7287
7288type CompleteMultipartUploadInput struct {
7289	_ struct{} `type:"structure" payload:"MultipartUpload"`
7290
7291	// Bucket is a required field
7292	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
7293
7294	// Key is a required field
7295	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
7296
7297	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
7298
7299	// Confirms that the requester knows that she or he will be charged for the
7300	// request. Bucket owners need not specify this parameter in their requests.
7301	// Documentation on downloading objects from requester pays buckets can be found
7302	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
7303	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
7304
7305	// UploadId is a required field
7306	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
7307}
7308
7309// String returns the string representation
7310func (s CompleteMultipartUploadInput) String() string {
7311	return awsutil.Prettify(s)
7312}
7313
7314// GoString returns the string representation
7315func (s CompleteMultipartUploadInput) GoString() string {
7316	return s.String()
7317}
7318
7319// Validate inspects the fields of the type to determine if they are valid.
7320func (s *CompleteMultipartUploadInput) Validate() error {
7321	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
7322	if s.Bucket == nil {
7323		invalidParams.Add(request.NewErrParamRequired("Bucket"))
7324	}
7325	if s.Key == nil {
7326		invalidParams.Add(request.NewErrParamRequired("Key"))
7327	}
7328	if s.Key != nil && len(*s.Key) < 1 {
7329		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
7330	}
7331	if s.UploadId == nil {
7332		invalidParams.Add(request.NewErrParamRequired("UploadId"))
7333	}
7334
7335	if invalidParams.Len() > 0 {
7336		return invalidParams
7337	}
7338	return nil
7339}
7340
7341// SetBucket sets the Bucket field's value.
7342func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
7343	s.Bucket = &v
7344	return s
7345}
7346
7347func (s *CompleteMultipartUploadInput) getBucket() (v string) {
7348	if s.Bucket == nil {
7349		return v
7350	}
7351	return *s.Bucket
7352}
7353
7354// SetKey sets the Key field's value.
7355func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
7356	s.Key = &v
7357	return s
7358}
7359
7360// SetMultipartUpload sets the MultipartUpload field's value.
7361func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
7362	s.MultipartUpload = v
7363	return s
7364}
7365
7366// SetRequestPayer sets the RequestPayer field's value.
7367func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
7368	s.RequestPayer = &v
7369	return s
7370}
7371
7372// SetUploadId sets the UploadId field's value.
7373func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
7374	s.UploadId = &v
7375	return s
7376}
7377
7378type CompleteMultipartUploadOutput struct {
7379	_ struct{} `type:"structure"`
7380
7381	Bucket *string `type:"string"`
7382
7383	// Entity tag of the object.
7384	ETag *string `type:"string"`
7385
7386	// If the object expiration is configured, this will contain the expiration
7387	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
7388	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
7389
7390	Key *string `min:"1" type:"string"`
7391
7392	Location *string `type:"string"`
7393
7394	// If present, indicates that the requester was successfully charged for the
7395	// request.
7396	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
7397
7398	// If present, specifies the ID of the AWS Key Management Service (KMS) master
7399	// encryption key that was used for the object.
7400	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
7401
7402	// The Server-side encryption algorithm used when storing this object in S3
7403	// (e.g., AES256, aws:kms).
7404	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
7405
7406	// Version of the object.
7407	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
7408}
7409
7410// String returns the string representation
7411func (s CompleteMultipartUploadOutput) String() string {
7412	return awsutil.Prettify(s)
7413}
7414
7415// GoString returns the string representation
7416func (s CompleteMultipartUploadOutput) GoString() string {
7417	return s.String()
7418}
7419
7420// SetBucket sets the Bucket field's value.
7421func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
7422	s.Bucket = &v
7423	return s
7424}
7425
7426func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
7427	if s.Bucket == nil {
7428		return v
7429	}
7430	return *s.Bucket
7431}
7432
7433// SetETag sets the ETag field's value.
7434func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
7435	s.ETag = &v
7436	return s
7437}
7438
7439// SetExpiration sets the Expiration field's value.
7440func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
7441	s.Expiration = &v
7442	return s
7443}
7444
7445// SetKey sets the Key field's value.
7446func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
7447	s.Key = &v
7448	return s
7449}
7450
7451// SetLocation sets the Location field's value.
7452func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
7453	s.Location = &v
7454	return s
7455}
7456
7457// SetRequestCharged sets the RequestCharged field's value.
7458func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
7459	s.RequestCharged = &v
7460	return s
7461}
7462
7463// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
7464func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
7465	s.SSEKMSKeyId = &v
7466	return s
7467}
7468
7469// SetServerSideEncryption sets the ServerSideEncryption field's value.
7470func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
7471	s.ServerSideEncryption = &v
7472	return s
7473}
7474
7475// SetVersionId sets the VersionId field's value.
7476func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
7477	s.VersionId = &v
7478	return s
7479}
7480
7481type CompletedMultipartUpload struct {
7482	_ struct{} `type:"structure"`
7483
7484	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
7485}
7486
7487// String returns the string representation
7488func (s CompletedMultipartUpload) String() string {
7489	return awsutil.Prettify(s)
7490}
7491
7492// GoString returns the string representation
7493func (s CompletedMultipartUpload) GoString() string {
7494	return s.String()
7495}
7496
7497// SetParts sets the Parts field's value.
7498func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
7499	s.Parts = v
7500	return s
7501}
7502
7503type CompletedPart struct {
7504	_ struct{} `type:"structure"`
7505
7506	// Entity tag returned when the part was uploaded.
7507	ETag *string `type:"string"`
7508
7509	// Part number that identifies the part. This is a positive integer between
7510	// 1 and 10,000.
7511	PartNumber *int64 `type:"integer"`
7512}
7513
7514// String returns the string representation
7515func (s CompletedPart) String() string {
7516	return awsutil.Prettify(s)
7517}
7518
7519// GoString returns the string representation
7520func (s CompletedPart) GoString() string {
7521	return s.String()
7522}
7523
7524// SetETag sets the ETag field's value.
7525func (s *CompletedPart) SetETag(v string) *CompletedPart {
7526	s.ETag = &v
7527	return s
7528}
7529
7530// SetPartNumber sets the PartNumber field's value.
7531func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
7532	s.PartNumber = &v
7533	return s
7534}
7535
7536type Condition struct {
7537	_ struct{} `type:"structure"`
7538
7539	// The HTTP error code when the redirect is applied. In the event of an error,
7540	// if the error code equals this value, then the specified redirect is applied.
7541	// Required when parent element Condition is specified and sibling KeyPrefixEquals
7542	// is not specified. If both are specified, then both must be true for the redirect
7543	// to be applied.
7544	HttpErrorCodeReturnedEquals *string `type:"string"`
7545
7546	// The object key name prefix when the redirect is applied. For example, to
7547	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
7548	// To redirect request for all pages with the prefix docs/, the key prefix will
7549	// be /docs, which identifies all objects in the docs/ folder. Required when
7550	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
7551	// is not specified. If both conditions are specified, both must be true for
7552	// the redirect to be applied.
7553	KeyPrefixEquals *string `type:"string"`
7554}
7555
7556// String returns the string representation
7557func (s Condition) String() string {
7558	return awsutil.Prettify(s)
7559}
7560
7561// GoString returns the string representation
7562func (s Condition) GoString() string {
7563	return s.String()
7564}
7565
7566// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
7567func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
7568	s.HttpErrorCodeReturnedEquals = &v
7569	return s
7570}
7571
7572// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
7573func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
7574	s.KeyPrefixEquals = &v
7575	return s
7576}
7577
7578type ContinuationEvent struct {
7579	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
7580}
7581
7582// String returns the string representation
7583func (s ContinuationEvent) String() string {
7584	return awsutil.Prettify(s)
7585}
7586
7587// GoString returns the string representation
7588func (s ContinuationEvent) GoString() string {
7589	return s.String()
7590}
7591
7592// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
7593func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
7594
7595// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
7596// This method is only used internally within the SDK's EventStream handling.
7597func (s *ContinuationEvent) UnmarshalEvent(
7598	payloadUnmarshaler protocol.PayloadUnmarshaler,
7599	msg eventstream.Message,
7600) error {
7601	return nil
7602}
7603
7604type CopyObjectInput struct {
7605	_ struct{} `type:"structure"`
7606
7607	// The canned ACL to apply to the object.
7608	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
7609
7610	// Bucket is a required field
7611	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
7612
7613	// Specifies caching behavior along the request/reply chain.
7614	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
7615
7616	// Specifies presentational information for the object.
7617	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
7618
7619	// Specifies what content encodings have been applied to the object and thus
7620	// what decoding mechanisms must be applied to obtain the media-type referenced
7621	// by the Content-Type header field.
7622	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
7623
7624	// The language the content is in.
7625	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
7626
7627	// A standard MIME type describing the format of the object data.
7628	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
7629
7630	// The name of the source bucket and key name of the source object, separated
7631	// by a slash (/). Must be URL-encoded.
7632	//
7633	// CopySource is a required field
7634	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
7635
7636	// Copies the object if its entity tag (ETag) matches the specified tag.
7637	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
7638
7639	// Copies the object if it has been modified since the specified time.
7640	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
7641
7642	// Copies the object if its entity tag (ETag) is different than the specified
7643	// ETag.
7644	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
7645
7646	// Copies the object if it hasn't been modified since the specified time.
7647	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
7648
7649	// Specifies the algorithm to use when decrypting the source object (e.g., AES256).
7650	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
7651
7652	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
7653	// the source object. The encryption key provided in this header must be one
7654	// that was used when the source object was created.
7655	CopySourceSSECustomerKey *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string"`
7656
7657	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
7658	// Amazon S3 uses this header for a message integrity check to ensure the encryption
7659	// key was transmitted without error.
7660	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
7661
7662	// The date and time at which the object is no longer cacheable.
7663	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
7664
7665	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
7666	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
7667
7668	// Allows grantee to read the object data and its metadata.
7669	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
7670
7671	// Allows grantee to read the object ACL.
7672	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
7673
7674	// Allows grantee to write the ACL for the applicable object.
7675	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
7676
7677	// Key is a required field
7678	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
7679
7680	// A map of metadata to store with the object in S3.
7681	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
7682
7683	// Specifies whether the metadata is copied from the source object or replaced
7684	// with metadata provided in the request.
7685	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
7686
7687	// Confirms that the requester knows that she or he will be charged for the
7688	// request. Bucket owners need not specify this parameter in their requests.
7689	// Documentation on downloading objects from requester pays buckets can be found
7690	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
7691	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
7692
7693	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
7694	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
7695
7696	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
7697	// data. This value is used to store the object and then it is discarded; Amazon
7698	// does not store the encryption key. The key must be appropriate for use with
7699	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
7700	// header.
7701	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
7702
7703	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
7704	// Amazon S3 uses this header for a message integrity check to ensure the encryption
7705	// key was transmitted without error.
7706	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
7707
7708	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
7709	// requests for an object protected by AWS KMS will fail if not made via SSL
7710	// or using SigV4. Documentation on configuring any of the officially supported
7711	// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
7712	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
7713
7714	// The Server-side encryption algorithm used when storing this object in S3
7715	// (e.g., AES256, aws:kms).
7716	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
7717
7718	// The type of storage to use for the object. Defaults to 'STANDARD'.
7719	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
7720
7721	// The tag-set for the object destination object this value must be used in
7722	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
7723	// Query parameters
7724	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
7725
7726	// Specifies whether the object tag-set are copied from the source object or
7727	// replaced with tag-set provided in the request.
7728	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
7729
7730	// If the bucket is configured as a website, redirects requests for this object
7731	// to another object in the same bucket or to an external URL. Amazon S3 stores
7732	// the value of this header in the object metadata.
7733	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
7734}
7735
7736// String returns the string representation
7737func (s CopyObjectInput) String() string {
7738	return awsutil.Prettify(s)
7739}
7740
7741// GoString returns the string representation
7742func (s CopyObjectInput) GoString() string {
7743	return s.String()
7744}
7745
7746// Validate inspects the fields of the type to determine if they are valid.
7747func (s *CopyObjectInput) Validate() error {
7748	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
7749	if s.Bucket == nil {
7750		invalidParams.Add(request.NewErrParamRequired("Bucket"))
7751	}
7752	if s.CopySource == nil {
7753		invalidParams.Add(request.NewErrParamRequired("CopySource"))
7754	}
7755	if s.Key == nil {
7756		invalidParams.Add(request.NewErrParamRequired("Key"))
7757	}
7758	if s.Key != nil && len(*s.Key) < 1 {
7759		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
7760	}
7761
7762	if invalidParams.Len() > 0 {
7763		return invalidParams
7764	}
7765	return nil
7766}
7767
7768// SetACL sets the ACL field's value.
7769func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
7770	s.ACL = &v
7771	return s
7772}
7773
7774// SetBucket sets the Bucket field's value.
7775func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
7776	s.Bucket = &v
7777	return s
7778}
7779
7780func (s *CopyObjectInput) getBucket() (v string) {
7781	if s.Bucket == nil {
7782		return v
7783	}
7784	return *s.Bucket
7785}
7786
7787// SetCacheControl sets the CacheControl field's value.
7788func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
7789	s.CacheControl = &v
7790	return s
7791}
7792
7793// SetContentDisposition sets the ContentDisposition field's value.
7794func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
7795	s.ContentDisposition = &v
7796	return s
7797}
7798
7799// SetContentEncoding sets the ContentEncoding field's value.
7800func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
7801	s.ContentEncoding = &v
7802	return s
7803}
7804
7805// SetContentLanguage sets the ContentLanguage field's value.
7806func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
7807	s.ContentLanguage = &v
7808	return s
7809}
7810
7811// SetContentType sets the ContentType field's value.
7812func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
7813	s.ContentType = &v
7814	return s
7815}
7816
7817// SetCopySource sets the CopySource field's value.
7818func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
7819	s.CopySource = &v
7820	return s
7821}
7822
7823// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
7824func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
7825	s.CopySourceIfMatch = &v
7826	return s
7827}
7828
7829// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
7830func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
7831	s.CopySourceIfModifiedSince = &v
7832	return s
7833}
7834
7835// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
7836func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
7837	s.CopySourceIfNoneMatch = &v
7838	return s
7839}
7840
7841// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
7842func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
7843	s.CopySourceIfUnmodifiedSince = &v
7844	return s
7845}
7846
7847// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
7848func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
7849	s.CopySourceSSECustomerAlgorithm = &v
7850	return s
7851}
7852
7853// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
7854func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
7855	s.CopySourceSSECustomerKey = &v
7856	return s
7857}
7858
7859func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
7860	if s.CopySourceSSECustomerKey == nil {
7861		return v
7862	}
7863	return *s.CopySourceSSECustomerKey
7864}
7865
7866// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
7867func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
7868	s.CopySourceSSECustomerKeyMD5 = &v
7869	return s
7870}
7871
7872// SetExpires sets the Expires field's value.
7873func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
7874	s.Expires = &v
7875	return s
7876}
7877
7878// SetGrantFullControl sets the GrantFullControl field's value.
7879func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
7880	s.GrantFullControl = &v
7881	return s
7882}
7883
7884// SetGrantRead sets the GrantRead field's value.
7885func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
7886	s.GrantRead = &v
7887	return s
7888}
7889
7890// SetGrantReadACP sets the GrantReadACP field's value.
7891func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
7892	s.GrantReadACP = &v
7893	return s
7894}
7895
7896// SetGrantWriteACP sets the GrantWriteACP field's value.
7897func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
7898	s.GrantWriteACP = &v
7899	return s
7900}
7901
7902// SetKey sets the Key field's value.
7903func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
7904	s.Key = &v
7905	return s
7906}
7907
7908// SetMetadata sets the Metadata field's value.
7909func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
7910	s.Metadata = v
7911	return s
7912}
7913
7914// SetMetadataDirective sets the MetadataDirective field's value.
7915func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
7916	s.MetadataDirective = &v
7917	return s
7918}
7919
7920// SetRequestPayer sets the RequestPayer field's value.
7921func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
7922	s.RequestPayer = &v
7923	return s
7924}
7925
7926// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
7927func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
7928	s.SSECustomerAlgorithm = &v
7929	return s
7930}
7931
7932// SetSSECustomerKey sets the SSECustomerKey field's value.
7933func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
7934	s.SSECustomerKey = &v
7935	return s
7936}
7937
7938func (s *CopyObjectInput) getSSECustomerKey() (v string) {
7939	if s.SSECustomerKey == nil {
7940		return v
7941	}
7942	return *s.SSECustomerKey
7943}
7944
7945// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
7946func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
7947	s.SSECustomerKeyMD5 = &v
7948	return s
7949}
7950
7951// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
7952func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
7953	s.SSEKMSKeyId = &v
7954	return s
7955}
7956
7957// SetServerSideEncryption sets the ServerSideEncryption field's value.
7958func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
7959	s.ServerSideEncryption = &v
7960	return s
7961}
7962
7963// SetStorageClass sets the StorageClass field's value.
7964func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
7965	s.StorageClass = &v
7966	return s
7967}
7968
7969// SetTagging sets the Tagging field's value.
7970func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
7971	s.Tagging = &v
7972	return s
7973}
7974
7975// SetTaggingDirective sets the TaggingDirective field's value.
7976func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
7977	s.TaggingDirective = &v
7978	return s
7979}
7980
7981// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
7982func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
7983	s.WebsiteRedirectLocation = &v
7984	return s
7985}
7986
7987type CopyObjectOutput struct {
7988	_ struct{} `type:"structure" payload:"CopyObjectResult"`
7989
7990	CopyObjectResult *CopyObjectResult `type:"structure"`
7991
7992	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
7993
7994	// If the object expiration is configured, the response includes this header.
7995	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
7996
7997	// If present, indicates that the requester was successfully charged for the
7998	// request.
7999	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
8000
8001	// If server-side encryption with a customer-provided encryption key was requested,
8002	// the response will include this header confirming the encryption algorithm
8003	// used.
8004	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
8005
8006	// If server-side encryption with a customer-provided encryption key was requested,
8007	// the response will include this header to provide round trip message integrity
8008	// verification of the customer-provided encryption key.
8009	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
8010
8011	// If present, specifies the ID of the AWS Key Management Service (KMS) master
8012	// encryption key that was used for the object.
8013	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
8014
8015	// The Server-side encryption algorithm used when storing this object in S3
8016	// (e.g., AES256, aws:kms).
8017	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
8018
8019	// Version ID of the newly created copy.
8020	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
8021}
8022
8023// String returns the string representation
8024func (s CopyObjectOutput) String() string {
8025	return awsutil.Prettify(s)
8026}
8027
8028// GoString returns the string representation
8029func (s CopyObjectOutput) GoString() string {
8030	return s.String()
8031}
8032
8033// SetCopyObjectResult sets the CopyObjectResult field's value.
8034func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
8035	s.CopyObjectResult = v
8036	return s
8037}
8038
8039// SetCopySourceVersionId sets the CopySourceVersionId field's value.
8040func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
8041	s.CopySourceVersionId = &v
8042	return s
8043}
8044
8045// SetExpiration sets the Expiration field's value.
8046func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
8047	s.Expiration = &v
8048	return s
8049}
8050
8051// SetRequestCharged sets the RequestCharged field's value.
8052func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
8053	s.RequestCharged = &v
8054	return s
8055}
8056
8057// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
8058func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
8059	s.SSECustomerAlgorithm = &v
8060	return s
8061}
8062
8063// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
8064func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
8065	s.SSECustomerKeyMD5 = &v
8066	return s
8067}
8068
8069// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
8070func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
8071	s.SSEKMSKeyId = &v
8072	return s
8073}
8074
8075// SetServerSideEncryption sets the ServerSideEncryption field's value.
8076func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
8077	s.ServerSideEncryption = &v
8078	return s
8079}
8080
8081// SetVersionId sets the VersionId field's value.
8082func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
8083	s.VersionId = &v
8084	return s
8085}
8086
8087type CopyObjectResult struct {
8088	_ struct{} `type:"structure"`
8089
8090	ETag *string `type:"string"`
8091
8092	LastModified *time.Time `type:"timestamp"`
8093}
8094
8095// String returns the string representation
8096func (s CopyObjectResult) String() string {
8097	return awsutil.Prettify(s)
8098}
8099
8100// GoString returns the string representation
8101func (s CopyObjectResult) GoString() string {
8102	return s.String()
8103}
8104
8105// SetETag sets the ETag field's value.
8106func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
8107	s.ETag = &v
8108	return s
8109}
8110
8111// SetLastModified sets the LastModified field's value.
8112func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
8113	s.LastModified = &v
8114	return s
8115}
8116
8117type CopyPartResult struct {
8118	_ struct{} `type:"structure"`
8119
8120	// Entity tag of the object.
8121	ETag *string `type:"string"`
8122
8123	// Date and time at which the object was uploaded.
8124	LastModified *time.Time `type:"timestamp"`
8125}
8126
8127// String returns the string representation
8128func (s CopyPartResult) String() string {
8129	return awsutil.Prettify(s)
8130}
8131
8132// GoString returns the string representation
8133func (s CopyPartResult) GoString() string {
8134	return s.String()
8135}
8136
8137// SetETag sets the ETag field's value.
8138func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
8139	s.ETag = &v
8140	return s
8141}
8142
8143// SetLastModified sets the LastModified field's value.
8144func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
8145	s.LastModified = &v
8146	return s
8147}
8148
8149type CreateBucketConfiguration struct {
8150	_ struct{} `type:"structure"`
8151
8152	// Specifies the region where the bucket will be created. If you don't specify
8153	// a region, the bucket will be created in US Standard.
8154	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
8155}
8156
8157// String returns the string representation
8158func (s CreateBucketConfiguration) String() string {
8159	return awsutil.Prettify(s)
8160}
8161
8162// GoString returns the string representation
8163func (s CreateBucketConfiguration) GoString() string {
8164	return s.String()
8165}
8166
8167// SetLocationConstraint sets the LocationConstraint field's value.
8168func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
8169	s.LocationConstraint = &v
8170	return s
8171}
8172
8173type CreateBucketInput struct {
8174	_ struct{} `type:"structure" payload:"CreateBucketConfiguration"`
8175
8176	// The canned ACL to apply to the bucket.
8177	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
8178
8179	// Bucket is a required field
8180	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8181
8182	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
8183
8184	// Allows grantee the read, write, read ACP, and write ACP permissions on the
8185	// bucket.
8186	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
8187
8188	// Allows grantee to list the objects in the bucket.
8189	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
8190
8191	// Allows grantee to read the bucket ACL.
8192	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
8193
8194	// Allows grantee to create, overwrite, and delete any object in the bucket.
8195	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
8196
8197	// Allows grantee to write the ACL for the applicable bucket.
8198	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
8199}
8200
8201// String returns the string representation
8202func (s CreateBucketInput) String() string {
8203	return awsutil.Prettify(s)
8204}
8205
8206// GoString returns the string representation
8207func (s CreateBucketInput) GoString() string {
8208	return s.String()
8209}
8210
8211// Validate inspects the fields of the type to determine if they are valid.
8212func (s *CreateBucketInput) Validate() error {
8213	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
8214	if s.Bucket == nil {
8215		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8216	}
8217
8218	if invalidParams.Len() > 0 {
8219		return invalidParams
8220	}
8221	return nil
8222}
8223
8224// SetACL sets the ACL field's value.
8225func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
8226	s.ACL = &v
8227	return s
8228}
8229
8230// SetBucket sets the Bucket field's value.
8231func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
8232	s.Bucket = &v
8233	return s
8234}
8235
8236func (s *CreateBucketInput) getBucket() (v string) {
8237	if s.Bucket == nil {
8238		return v
8239	}
8240	return *s.Bucket
8241}
8242
8243// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
8244func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
8245	s.CreateBucketConfiguration = v
8246	return s
8247}
8248
8249// SetGrantFullControl sets the GrantFullControl field's value.
8250func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
8251	s.GrantFullControl = &v
8252	return s
8253}
8254
8255// SetGrantRead sets the GrantRead field's value.
8256func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
8257	s.GrantRead = &v
8258	return s
8259}
8260
8261// SetGrantReadACP sets the GrantReadACP field's value.
8262func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
8263	s.GrantReadACP = &v
8264	return s
8265}
8266
8267// SetGrantWrite sets the GrantWrite field's value.
8268func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
8269	s.GrantWrite = &v
8270	return s
8271}
8272
8273// SetGrantWriteACP sets the GrantWriteACP field's value.
8274func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
8275	s.GrantWriteACP = &v
8276	return s
8277}
8278
8279type CreateBucketOutput struct {
8280	_ struct{} `type:"structure"`
8281
8282	Location *string `location:"header" locationName:"Location" type:"string"`
8283}
8284
8285// String returns the string representation
8286func (s CreateBucketOutput) String() string {
8287	return awsutil.Prettify(s)
8288}
8289
8290// GoString returns the string representation
8291func (s CreateBucketOutput) GoString() string {
8292	return s.String()
8293}
8294
8295// SetLocation sets the Location field's value.
8296func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
8297	s.Location = &v
8298	return s
8299}
8300
8301type CreateMultipartUploadInput struct {
8302	_ struct{} `type:"structure"`
8303
8304	// The canned ACL to apply to the object.
8305	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
8306
8307	// Bucket is a required field
8308	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8309
8310	// Specifies caching behavior along the request/reply chain.
8311	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
8312
8313	// Specifies presentational information for the object.
8314	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
8315
8316	// Specifies what content encodings have been applied to the object and thus
8317	// what decoding mechanisms must be applied to obtain the media-type referenced
8318	// by the Content-Type header field.
8319	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
8320
8321	// The language the content is in.
8322	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
8323
8324	// A standard MIME type describing the format of the object data.
8325	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
8326
8327	// The date and time at which the object is no longer cacheable.
8328	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
8329
8330	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
8331	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
8332
8333	// Allows grantee to read the object data and its metadata.
8334	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
8335
8336	// Allows grantee to read the object ACL.
8337	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
8338
8339	// Allows grantee to write the ACL for the applicable object.
8340	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
8341
8342	// Key is a required field
8343	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
8344
8345	// A map of metadata to store with the object in S3.
8346	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
8347
8348	// Confirms that the requester knows that she or he will be charged for the
8349	// request. Bucket owners need not specify this parameter in their requests.
8350	// Documentation on downloading objects from requester pays buckets can be found
8351	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
8352	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
8353
8354	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
8355	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
8356
8357	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
8358	// data. This value is used to store the object and then it is discarded; Amazon
8359	// does not store the encryption key. The key must be appropriate for use with
8360	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
8361	// header.
8362	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
8363
8364	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
8365	// Amazon S3 uses this header for a message integrity check to ensure the encryption
8366	// key was transmitted without error.
8367	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
8368
8369	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
8370	// requests for an object protected by AWS KMS will fail if not made via SSL
8371	// or using SigV4. Documentation on configuring any of the officially supported
8372	// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
8373	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
8374
8375	// The Server-side encryption algorithm used when storing this object in S3
8376	// (e.g., AES256, aws:kms).
8377	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
8378
8379	// The type of storage to use for the object. Defaults to 'STANDARD'.
8380	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
8381
8382	// The tag-set for the object. The tag-set must be encoded as URL Query parameters
8383	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
8384
8385	// If the bucket is configured as a website, redirects requests for this object
8386	// to another object in the same bucket or to an external URL. Amazon S3 stores
8387	// the value of this header in the object metadata.
8388	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
8389}
8390
8391// String returns the string representation
8392func (s CreateMultipartUploadInput) String() string {
8393	return awsutil.Prettify(s)
8394}
8395
8396// GoString returns the string representation
8397func (s CreateMultipartUploadInput) GoString() string {
8398	return s.String()
8399}
8400
8401// Validate inspects the fields of the type to determine if they are valid.
8402func (s *CreateMultipartUploadInput) Validate() error {
8403	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
8404	if s.Bucket == nil {
8405		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8406	}
8407	if s.Key == nil {
8408		invalidParams.Add(request.NewErrParamRequired("Key"))
8409	}
8410	if s.Key != nil && len(*s.Key) < 1 {
8411		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
8412	}
8413
8414	if invalidParams.Len() > 0 {
8415		return invalidParams
8416	}
8417	return nil
8418}
8419
8420// SetACL sets the ACL field's value.
8421func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
8422	s.ACL = &v
8423	return s
8424}
8425
8426// SetBucket sets the Bucket field's value.
8427func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
8428	s.Bucket = &v
8429	return s
8430}
8431
8432func (s *CreateMultipartUploadInput) getBucket() (v string) {
8433	if s.Bucket == nil {
8434		return v
8435	}
8436	return *s.Bucket
8437}
8438
8439// SetCacheControl sets the CacheControl field's value.
8440func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
8441	s.CacheControl = &v
8442	return s
8443}
8444
8445// SetContentDisposition sets the ContentDisposition field's value.
8446func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
8447	s.ContentDisposition = &v
8448	return s
8449}
8450
8451// SetContentEncoding sets the ContentEncoding field's value.
8452func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
8453	s.ContentEncoding = &v
8454	return s
8455}
8456
8457// SetContentLanguage sets the ContentLanguage field's value.
8458func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
8459	s.ContentLanguage = &v
8460	return s
8461}
8462
8463// SetContentType sets the ContentType field's value.
8464func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
8465	s.ContentType = &v
8466	return s
8467}
8468
8469// SetExpires sets the Expires field's value.
8470func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
8471	s.Expires = &v
8472	return s
8473}
8474
8475// SetGrantFullControl sets the GrantFullControl field's value.
8476func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
8477	s.GrantFullControl = &v
8478	return s
8479}
8480
8481// SetGrantRead sets the GrantRead field's value.
8482func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
8483	s.GrantRead = &v
8484	return s
8485}
8486
8487// SetGrantReadACP sets the GrantReadACP field's value.
8488func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
8489	s.GrantReadACP = &v
8490	return s
8491}
8492
8493// SetGrantWriteACP sets the GrantWriteACP field's value.
8494func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
8495	s.GrantWriteACP = &v
8496	return s
8497}
8498
8499// SetKey sets the Key field's value.
8500func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
8501	s.Key = &v
8502	return s
8503}
8504
8505// SetMetadata sets the Metadata field's value.
8506func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
8507	s.Metadata = v
8508	return s
8509}
8510
8511// SetRequestPayer sets the RequestPayer field's value.
8512func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
8513	s.RequestPayer = &v
8514	return s
8515}
8516
8517// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
8518func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
8519	s.SSECustomerAlgorithm = &v
8520	return s
8521}
8522
8523// SetSSECustomerKey sets the SSECustomerKey field's value.
8524func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
8525	s.SSECustomerKey = &v
8526	return s
8527}
8528
8529func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
8530	if s.SSECustomerKey == nil {
8531		return v
8532	}
8533	return *s.SSECustomerKey
8534}
8535
8536// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
8537func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
8538	s.SSECustomerKeyMD5 = &v
8539	return s
8540}
8541
8542// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
8543func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
8544	s.SSEKMSKeyId = &v
8545	return s
8546}
8547
8548// SetServerSideEncryption sets the ServerSideEncryption field's value.
8549func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
8550	s.ServerSideEncryption = &v
8551	return s
8552}
8553
8554// SetStorageClass sets the StorageClass field's value.
8555func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
8556	s.StorageClass = &v
8557	return s
8558}
8559
8560// SetTagging sets the Tagging field's value.
8561func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
8562	s.Tagging = &v
8563	return s
8564}
8565
8566// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
8567func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
8568	s.WebsiteRedirectLocation = &v
8569	return s
8570}
8571
8572type CreateMultipartUploadOutput struct {
8573	_ struct{} `type:"structure"`
8574
8575	// Date when multipart upload will become eligible for abort operation by lifecycle.
8576	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
8577
8578	// Id of the lifecycle rule that makes a multipart upload eligible for abort
8579	// operation.
8580	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
8581
8582	// Name of the bucket to which the multipart upload was initiated.
8583	Bucket *string `locationName:"Bucket" type:"string"`
8584
8585	// Object key for which the multipart upload was initiated.
8586	Key *string `min:"1" type:"string"`
8587
8588	// If present, indicates that the requester was successfully charged for the
8589	// request.
8590	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
8591
8592	// If server-side encryption with a customer-provided encryption key was requested,
8593	// the response will include this header confirming the encryption algorithm
8594	// used.
8595	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
8596
8597	// If server-side encryption with a customer-provided encryption key was requested,
8598	// the response will include this header to provide round trip message integrity
8599	// verification of the customer-provided encryption key.
8600	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
8601
8602	// If present, specifies the ID of the AWS Key Management Service (KMS) master
8603	// encryption key that was used for the object.
8604	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
8605
8606	// The Server-side encryption algorithm used when storing this object in S3
8607	// (e.g., AES256, aws:kms).
8608	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
8609
8610	// ID for the initiated multipart upload.
8611	UploadId *string `type:"string"`
8612}
8613
8614// String returns the string representation
8615func (s CreateMultipartUploadOutput) String() string {
8616	return awsutil.Prettify(s)
8617}
8618
8619// GoString returns the string representation
8620func (s CreateMultipartUploadOutput) GoString() string {
8621	return s.String()
8622}
8623
8624// SetAbortDate sets the AbortDate field's value.
8625func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
8626	s.AbortDate = &v
8627	return s
8628}
8629
8630// SetAbortRuleId sets the AbortRuleId field's value.
8631func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
8632	s.AbortRuleId = &v
8633	return s
8634}
8635
8636// SetBucket sets the Bucket field's value.
8637func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
8638	s.Bucket = &v
8639	return s
8640}
8641
8642func (s *CreateMultipartUploadOutput) getBucket() (v string) {
8643	if s.Bucket == nil {
8644		return v
8645	}
8646	return *s.Bucket
8647}
8648
8649// SetKey sets the Key field's value.
8650func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
8651	s.Key = &v
8652	return s
8653}
8654
8655// SetRequestCharged sets the RequestCharged field's value.
8656func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
8657	s.RequestCharged = &v
8658	return s
8659}
8660
8661// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
8662func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
8663	s.SSECustomerAlgorithm = &v
8664	return s
8665}
8666
8667// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
8668func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
8669	s.SSECustomerKeyMD5 = &v
8670	return s
8671}
8672
8673// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
8674func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
8675	s.SSEKMSKeyId = &v
8676	return s
8677}
8678
8679// SetServerSideEncryption sets the ServerSideEncryption field's value.
8680func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
8681	s.ServerSideEncryption = &v
8682	return s
8683}
8684
8685// SetUploadId sets the UploadId field's value.
8686func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
8687	s.UploadId = &v
8688	return s
8689}
8690
8691type Delete struct {
8692	_ struct{} `type:"structure"`
8693
8694	// Objects is a required field
8695	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
8696
8697	// Element to enable quiet mode for the request. When you add this element,
8698	// you must set its value to true.
8699	Quiet *bool `type:"boolean"`
8700}
8701
8702// String returns the string representation
8703func (s Delete) String() string {
8704	return awsutil.Prettify(s)
8705}
8706
8707// GoString returns the string representation
8708func (s Delete) GoString() string {
8709	return s.String()
8710}
8711
8712// Validate inspects the fields of the type to determine if they are valid.
8713func (s *Delete) Validate() error {
8714	invalidParams := request.ErrInvalidParams{Context: "Delete"}
8715	if s.Objects == nil {
8716		invalidParams.Add(request.NewErrParamRequired("Objects"))
8717	}
8718	if s.Objects != nil {
8719		for i, v := range s.Objects {
8720			if v == nil {
8721				continue
8722			}
8723			if err := v.Validate(); err != nil {
8724				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
8725			}
8726		}
8727	}
8728
8729	if invalidParams.Len() > 0 {
8730		return invalidParams
8731	}
8732	return nil
8733}
8734
8735// SetObjects sets the Objects field's value.
8736func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
8737	s.Objects = v
8738	return s
8739}
8740
8741// SetQuiet sets the Quiet field's value.
8742func (s *Delete) SetQuiet(v bool) *Delete {
8743	s.Quiet = &v
8744	return s
8745}
8746
8747type DeleteBucketAnalyticsConfigurationInput struct {
8748	_ struct{} `type:"structure"`
8749
8750	// The name of the bucket from which an analytics configuration is deleted.
8751	//
8752	// Bucket is a required field
8753	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8754
8755	// The identifier used to represent an analytics configuration.
8756	//
8757	// Id is a required field
8758	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
8759}
8760
8761// String returns the string representation
8762func (s DeleteBucketAnalyticsConfigurationInput) String() string {
8763	return awsutil.Prettify(s)
8764}
8765
8766// GoString returns the string representation
8767func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
8768	return s.String()
8769}
8770
8771// Validate inspects the fields of the type to determine if they are valid.
8772func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
8773	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
8774	if s.Bucket == nil {
8775		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8776	}
8777	if s.Id == nil {
8778		invalidParams.Add(request.NewErrParamRequired("Id"))
8779	}
8780
8781	if invalidParams.Len() > 0 {
8782		return invalidParams
8783	}
8784	return nil
8785}
8786
8787// SetBucket sets the Bucket field's value.
8788func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
8789	s.Bucket = &v
8790	return s
8791}
8792
8793func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
8794	if s.Bucket == nil {
8795		return v
8796	}
8797	return *s.Bucket
8798}
8799
8800// SetId sets the Id field's value.
8801func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
8802	s.Id = &v
8803	return s
8804}
8805
8806type DeleteBucketAnalyticsConfigurationOutput struct {
8807	_ struct{} `type:"structure"`
8808}
8809
8810// String returns the string representation
8811func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
8812	return awsutil.Prettify(s)
8813}
8814
8815// GoString returns the string representation
8816func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
8817	return s.String()
8818}
8819
8820type DeleteBucketCorsInput struct {
8821	_ struct{} `type:"structure"`
8822
8823	// Bucket is a required field
8824	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8825}
8826
8827// String returns the string representation
8828func (s DeleteBucketCorsInput) String() string {
8829	return awsutil.Prettify(s)
8830}
8831
8832// GoString returns the string representation
8833func (s DeleteBucketCorsInput) GoString() string {
8834	return s.String()
8835}
8836
8837// Validate inspects the fields of the type to determine if they are valid.
8838func (s *DeleteBucketCorsInput) Validate() error {
8839	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
8840	if s.Bucket == nil {
8841		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8842	}
8843
8844	if invalidParams.Len() > 0 {
8845		return invalidParams
8846	}
8847	return nil
8848}
8849
8850// SetBucket sets the Bucket field's value.
8851func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
8852	s.Bucket = &v
8853	return s
8854}
8855
8856func (s *DeleteBucketCorsInput) getBucket() (v string) {
8857	if s.Bucket == nil {
8858		return v
8859	}
8860	return *s.Bucket
8861}
8862
8863type DeleteBucketCorsOutput struct {
8864	_ struct{} `type:"structure"`
8865}
8866
8867// String returns the string representation
8868func (s DeleteBucketCorsOutput) String() string {
8869	return awsutil.Prettify(s)
8870}
8871
8872// GoString returns the string representation
8873func (s DeleteBucketCorsOutput) GoString() string {
8874	return s.String()
8875}
8876
8877type DeleteBucketEncryptionInput struct {
8878	_ struct{} `type:"structure"`
8879
8880	// The name of the bucket containing the server-side encryption configuration
8881	// to delete.
8882	//
8883	// Bucket is a required field
8884	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8885}
8886
8887// String returns the string representation
8888func (s DeleteBucketEncryptionInput) String() string {
8889	return awsutil.Prettify(s)
8890}
8891
8892// GoString returns the string representation
8893func (s DeleteBucketEncryptionInput) GoString() string {
8894	return s.String()
8895}
8896
8897// Validate inspects the fields of the type to determine if they are valid.
8898func (s *DeleteBucketEncryptionInput) Validate() error {
8899	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
8900	if s.Bucket == nil {
8901		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8902	}
8903
8904	if invalidParams.Len() > 0 {
8905		return invalidParams
8906	}
8907	return nil
8908}
8909
8910// SetBucket sets the Bucket field's value.
8911func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
8912	s.Bucket = &v
8913	return s
8914}
8915
8916func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
8917	if s.Bucket == nil {
8918		return v
8919	}
8920	return *s.Bucket
8921}
8922
8923type DeleteBucketEncryptionOutput struct {
8924	_ struct{} `type:"structure"`
8925}
8926
8927// String returns the string representation
8928func (s DeleteBucketEncryptionOutput) String() string {
8929	return awsutil.Prettify(s)
8930}
8931
8932// GoString returns the string representation
8933func (s DeleteBucketEncryptionOutput) GoString() string {
8934	return s.String()
8935}
8936
8937type DeleteBucketInput struct {
8938	_ struct{} `type:"structure"`
8939
8940	// Bucket is a required field
8941	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8942}
8943
8944// String returns the string representation
8945func (s DeleteBucketInput) String() string {
8946	return awsutil.Prettify(s)
8947}
8948
8949// GoString returns the string representation
8950func (s DeleteBucketInput) GoString() string {
8951	return s.String()
8952}
8953
8954// Validate inspects the fields of the type to determine if they are valid.
8955func (s *DeleteBucketInput) Validate() error {
8956	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
8957	if s.Bucket == nil {
8958		invalidParams.Add(request.NewErrParamRequired("Bucket"))
8959	}
8960
8961	if invalidParams.Len() > 0 {
8962		return invalidParams
8963	}
8964	return nil
8965}
8966
8967// SetBucket sets the Bucket field's value.
8968func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
8969	s.Bucket = &v
8970	return s
8971}
8972
8973func (s *DeleteBucketInput) getBucket() (v string) {
8974	if s.Bucket == nil {
8975		return v
8976	}
8977	return *s.Bucket
8978}
8979
8980type DeleteBucketInventoryConfigurationInput struct {
8981	_ struct{} `type:"structure"`
8982
8983	// The name of the bucket containing the inventory configuration to delete.
8984	//
8985	// Bucket is a required field
8986	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
8987
8988	// The ID used to identify the inventory configuration.
8989	//
8990	// Id is a required field
8991	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
8992}
8993
8994// String returns the string representation
8995func (s DeleteBucketInventoryConfigurationInput) String() string {
8996	return awsutil.Prettify(s)
8997}
8998
8999// GoString returns the string representation
9000func (s DeleteBucketInventoryConfigurationInput) GoString() string {
9001	return s.String()
9002}
9003
9004// Validate inspects the fields of the type to determine if they are valid.
9005func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
9006	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
9007	if s.Bucket == nil {
9008		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9009	}
9010	if s.Id == nil {
9011		invalidParams.Add(request.NewErrParamRequired("Id"))
9012	}
9013
9014	if invalidParams.Len() > 0 {
9015		return invalidParams
9016	}
9017	return nil
9018}
9019
9020// SetBucket sets the Bucket field's value.
9021func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
9022	s.Bucket = &v
9023	return s
9024}
9025
9026func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
9027	if s.Bucket == nil {
9028		return v
9029	}
9030	return *s.Bucket
9031}
9032
9033// SetId sets the Id field's value.
9034func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
9035	s.Id = &v
9036	return s
9037}
9038
9039type DeleteBucketInventoryConfigurationOutput struct {
9040	_ struct{} `type:"structure"`
9041}
9042
9043// String returns the string representation
9044func (s DeleteBucketInventoryConfigurationOutput) String() string {
9045	return awsutil.Prettify(s)
9046}
9047
9048// GoString returns the string representation
9049func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
9050	return s.String()
9051}
9052
9053type DeleteBucketLifecycleInput struct {
9054	_ struct{} `type:"structure"`
9055
9056	// Bucket is a required field
9057	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9058}
9059
9060// String returns the string representation
9061func (s DeleteBucketLifecycleInput) String() string {
9062	return awsutil.Prettify(s)
9063}
9064
9065// GoString returns the string representation
9066func (s DeleteBucketLifecycleInput) GoString() string {
9067	return s.String()
9068}
9069
9070// Validate inspects the fields of the type to determine if they are valid.
9071func (s *DeleteBucketLifecycleInput) Validate() error {
9072	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
9073	if s.Bucket == nil {
9074		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9075	}
9076
9077	if invalidParams.Len() > 0 {
9078		return invalidParams
9079	}
9080	return nil
9081}
9082
9083// SetBucket sets the Bucket field's value.
9084func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
9085	s.Bucket = &v
9086	return s
9087}
9088
9089func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
9090	if s.Bucket == nil {
9091		return v
9092	}
9093	return *s.Bucket
9094}
9095
9096type DeleteBucketLifecycleOutput struct {
9097	_ struct{} `type:"structure"`
9098}
9099
9100// String returns the string representation
9101func (s DeleteBucketLifecycleOutput) String() string {
9102	return awsutil.Prettify(s)
9103}
9104
9105// GoString returns the string representation
9106func (s DeleteBucketLifecycleOutput) GoString() string {
9107	return s.String()
9108}
9109
9110type DeleteBucketMetricsConfigurationInput struct {
9111	_ struct{} `type:"structure"`
9112
9113	// The name of the bucket containing the metrics configuration to delete.
9114	//
9115	// Bucket is a required field
9116	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9117
9118	// The ID used to identify the metrics configuration.
9119	//
9120	// Id is a required field
9121	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
9122}
9123
9124// String returns the string representation
9125func (s DeleteBucketMetricsConfigurationInput) String() string {
9126	return awsutil.Prettify(s)
9127}
9128
9129// GoString returns the string representation
9130func (s DeleteBucketMetricsConfigurationInput) GoString() string {
9131	return s.String()
9132}
9133
9134// Validate inspects the fields of the type to determine if they are valid.
9135func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
9136	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
9137	if s.Bucket == nil {
9138		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9139	}
9140	if s.Id == nil {
9141		invalidParams.Add(request.NewErrParamRequired("Id"))
9142	}
9143
9144	if invalidParams.Len() > 0 {
9145		return invalidParams
9146	}
9147	return nil
9148}
9149
9150// SetBucket sets the Bucket field's value.
9151func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
9152	s.Bucket = &v
9153	return s
9154}
9155
9156func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
9157	if s.Bucket == nil {
9158		return v
9159	}
9160	return *s.Bucket
9161}
9162
9163// SetId sets the Id field's value.
9164func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
9165	s.Id = &v
9166	return s
9167}
9168
9169type DeleteBucketMetricsConfigurationOutput struct {
9170	_ struct{} `type:"structure"`
9171}
9172
9173// String returns the string representation
9174func (s DeleteBucketMetricsConfigurationOutput) String() string {
9175	return awsutil.Prettify(s)
9176}
9177
9178// GoString returns the string representation
9179func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
9180	return s.String()
9181}
9182
9183type DeleteBucketOutput struct {
9184	_ struct{} `type:"structure"`
9185}
9186
9187// String returns the string representation
9188func (s DeleteBucketOutput) String() string {
9189	return awsutil.Prettify(s)
9190}
9191
9192// GoString returns the string representation
9193func (s DeleteBucketOutput) GoString() string {
9194	return s.String()
9195}
9196
9197type DeleteBucketPolicyInput struct {
9198	_ struct{} `type:"structure"`
9199
9200	// Bucket is a required field
9201	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9202}
9203
9204// String returns the string representation
9205func (s DeleteBucketPolicyInput) String() string {
9206	return awsutil.Prettify(s)
9207}
9208
9209// GoString returns the string representation
9210func (s DeleteBucketPolicyInput) GoString() string {
9211	return s.String()
9212}
9213
9214// Validate inspects the fields of the type to determine if they are valid.
9215func (s *DeleteBucketPolicyInput) Validate() error {
9216	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
9217	if s.Bucket == nil {
9218		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9219	}
9220
9221	if invalidParams.Len() > 0 {
9222		return invalidParams
9223	}
9224	return nil
9225}
9226
9227// SetBucket sets the Bucket field's value.
9228func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
9229	s.Bucket = &v
9230	return s
9231}
9232
9233func (s *DeleteBucketPolicyInput) getBucket() (v string) {
9234	if s.Bucket == nil {
9235		return v
9236	}
9237	return *s.Bucket
9238}
9239
9240type DeleteBucketPolicyOutput struct {
9241	_ struct{} `type:"structure"`
9242}
9243
9244// String returns the string representation
9245func (s DeleteBucketPolicyOutput) String() string {
9246	return awsutil.Prettify(s)
9247}
9248
9249// GoString returns the string representation
9250func (s DeleteBucketPolicyOutput) GoString() string {
9251	return s.String()
9252}
9253
9254type DeleteBucketReplicationInput struct {
9255	_ struct{} `type:"structure"`
9256
9257	// Bucket is a required field
9258	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9259}
9260
9261// String returns the string representation
9262func (s DeleteBucketReplicationInput) String() string {
9263	return awsutil.Prettify(s)
9264}
9265
9266// GoString returns the string representation
9267func (s DeleteBucketReplicationInput) GoString() string {
9268	return s.String()
9269}
9270
9271// Validate inspects the fields of the type to determine if they are valid.
9272func (s *DeleteBucketReplicationInput) Validate() error {
9273	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
9274	if s.Bucket == nil {
9275		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9276	}
9277
9278	if invalidParams.Len() > 0 {
9279		return invalidParams
9280	}
9281	return nil
9282}
9283
9284// SetBucket sets the Bucket field's value.
9285func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
9286	s.Bucket = &v
9287	return s
9288}
9289
9290func (s *DeleteBucketReplicationInput) getBucket() (v string) {
9291	if s.Bucket == nil {
9292		return v
9293	}
9294	return *s.Bucket
9295}
9296
9297type DeleteBucketReplicationOutput struct {
9298	_ struct{} `type:"structure"`
9299}
9300
9301// String returns the string representation
9302func (s DeleteBucketReplicationOutput) String() string {
9303	return awsutil.Prettify(s)
9304}
9305
9306// GoString returns the string representation
9307func (s DeleteBucketReplicationOutput) GoString() string {
9308	return s.String()
9309}
9310
9311type DeleteBucketTaggingInput struct {
9312	_ struct{} `type:"structure"`
9313
9314	// Bucket is a required field
9315	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9316}
9317
9318// String returns the string representation
9319func (s DeleteBucketTaggingInput) String() string {
9320	return awsutil.Prettify(s)
9321}
9322
9323// GoString returns the string representation
9324func (s DeleteBucketTaggingInput) GoString() string {
9325	return s.String()
9326}
9327
9328// Validate inspects the fields of the type to determine if they are valid.
9329func (s *DeleteBucketTaggingInput) Validate() error {
9330	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
9331	if s.Bucket == nil {
9332		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9333	}
9334
9335	if invalidParams.Len() > 0 {
9336		return invalidParams
9337	}
9338	return nil
9339}
9340
9341// SetBucket sets the Bucket field's value.
9342func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
9343	s.Bucket = &v
9344	return s
9345}
9346
9347func (s *DeleteBucketTaggingInput) getBucket() (v string) {
9348	if s.Bucket == nil {
9349		return v
9350	}
9351	return *s.Bucket
9352}
9353
9354type DeleteBucketTaggingOutput struct {
9355	_ struct{} `type:"structure"`
9356}
9357
9358// String returns the string representation
9359func (s DeleteBucketTaggingOutput) String() string {
9360	return awsutil.Prettify(s)
9361}
9362
9363// GoString returns the string representation
9364func (s DeleteBucketTaggingOutput) GoString() string {
9365	return s.String()
9366}
9367
9368type DeleteBucketWebsiteInput struct {
9369	_ struct{} `type:"structure"`
9370
9371	// Bucket is a required field
9372	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9373}
9374
9375// String returns the string representation
9376func (s DeleteBucketWebsiteInput) String() string {
9377	return awsutil.Prettify(s)
9378}
9379
9380// GoString returns the string representation
9381func (s DeleteBucketWebsiteInput) GoString() string {
9382	return s.String()
9383}
9384
9385// Validate inspects the fields of the type to determine if they are valid.
9386func (s *DeleteBucketWebsiteInput) Validate() error {
9387	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
9388	if s.Bucket == nil {
9389		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9390	}
9391
9392	if invalidParams.Len() > 0 {
9393		return invalidParams
9394	}
9395	return nil
9396}
9397
9398// SetBucket sets the Bucket field's value.
9399func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
9400	s.Bucket = &v
9401	return s
9402}
9403
9404func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
9405	if s.Bucket == nil {
9406		return v
9407	}
9408	return *s.Bucket
9409}
9410
9411type DeleteBucketWebsiteOutput struct {
9412	_ struct{} `type:"structure"`
9413}
9414
9415// String returns the string representation
9416func (s DeleteBucketWebsiteOutput) String() string {
9417	return awsutil.Prettify(s)
9418}
9419
9420// GoString returns the string representation
9421func (s DeleteBucketWebsiteOutput) GoString() string {
9422	return s.String()
9423}
9424
9425type DeleteMarkerEntry struct {
9426	_ struct{} `type:"structure"`
9427
9428	// Specifies whether the object is (true) or is not (false) the latest version
9429	// of an object.
9430	IsLatest *bool `type:"boolean"`
9431
9432	// The object key.
9433	Key *string `min:"1" type:"string"`
9434
9435	// Date and time the object was last modified.
9436	LastModified *time.Time `type:"timestamp"`
9437
9438	Owner *Owner `type:"structure"`
9439
9440	// Version ID of an object.
9441	VersionId *string `type:"string"`
9442}
9443
9444// String returns the string representation
9445func (s DeleteMarkerEntry) String() string {
9446	return awsutil.Prettify(s)
9447}
9448
9449// GoString returns the string representation
9450func (s DeleteMarkerEntry) GoString() string {
9451	return s.String()
9452}
9453
9454// SetIsLatest sets the IsLatest field's value.
9455func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
9456	s.IsLatest = &v
9457	return s
9458}
9459
9460// SetKey sets the Key field's value.
9461func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
9462	s.Key = &v
9463	return s
9464}
9465
9466// SetLastModified sets the LastModified field's value.
9467func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
9468	s.LastModified = &v
9469	return s
9470}
9471
9472// SetOwner sets the Owner field's value.
9473func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
9474	s.Owner = v
9475	return s
9476}
9477
9478// SetVersionId sets the VersionId field's value.
9479func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
9480	s.VersionId = &v
9481	return s
9482}
9483
9484type DeleteObjectInput struct {
9485	_ struct{} `type:"structure"`
9486
9487	// Bucket is a required field
9488	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9489
9490	// Key is a required field
9491	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
9492
9493	// The concatenation of the authentication device's serial number, a space,
9494	// and the value that is displayed on your authentication device.
9495	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
9496
9497	// Confirms that the requester knows that she or he will be charged for the
9498	// request. Bucket owners need not specify this parameter in their requests.
9499	// Documentation on downloading objects from requester pays buckets can be found
9500	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
9501	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
9502
9503	// VersionId used to reference a specific version of the object.
9504	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
9505}
9506
9507// String returns the string representation
9508func (s DeleteObjectInput) String() string {
9509	return awsutil.Prettify(s)
9510}
9511
9512// GoString returns the string representation
9513func (s DeleteObjectInput) GoString() string {
9514	return s.String()
9515}
9516
9517// Validate inspects the fields of the type to determine if they are valid.
9518func (s *DeleteObjectInput) Validate() error {
9519	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
9520	if s.Bucket == nil {
9521		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9522	}
9523	if s.Key == nil {
9524		invalidParams.Add(request.NewErrParamRequired("Key"))
9525	}
9526	if s.Key != nil && len(*s.Key) < 1 {
9527		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
9528	}
9529
9530	if invalidParams.Len() > 0 {
9531		return invalidParams
9532	}
9533	return nil
9534}
9535
9536// SetBucket sets the Bucket field's value.
9537func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
9538	s.Bucket = &v
9539	return s
9540}
9541
9542func (s *DeleteObjectInput) getBucket() (v string) {
9543	if s.Bucket == nil {
9544		return v
9545	}
9546	return *s.Bucket
9547}
9548
9549// SetKey sets the Key field's value.
9550func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
9551	s.Key = &v
9552	return s
9553}
9554
9555// SetMFA sets the MFA field's value.
9556func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
9557	s.MFA = &v
9558	return s
9559}
9560
9561// SetRequestPayer sets the RequestPayer field's value.
9562func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
9563	s.RequestPayer = &v
9564	return s
9565}
9566
9567// SetVersionId sets the VersionId field's value.
9568func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
9569	s.VersionId = &v
9570	return s
9571}
9572
9573type DeleteObjectOutput struct {
9574	_ struct{} `type:"structure"`
9575
9576	// Specifies whether the versioned object that was permanently deleted was (true)
9577	// or was not (false) a delete marker.
9578	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
9579
9580	// If present, indicates that the requester was successfully charged for the
9581	// request.
9582	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
9583
9584	// Returns the version ID of the delete marker created as a result of the DELETE
9585	// operation.
9586	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
9587}
9588
9589// String returns the string representation
9590func (s DeleteObjectOutput) String() string {
9591	return awsutil.Prettify(s)
9592}
9593
9594// GoString returns the string representation
9595func (s DeleteObjectOutput) GoString() string {
9596	return s.String()
9597}
9598
9599// SetDeleteMarker sets the DeleteMarker field's value.
9600func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
9601	s.DeleteMarker = &v
9602	return s
9603}
9604
9605// SetRequestCharged sets the RequestCharged field's value.
9606func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
9607	s.RequestCharged = &v
9608	return s
9609}
9610
9611// SetVersionId sets the VersionId field's value.
9612func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
9613	s.VersionId = &v
9614	return s
9615}
9616
9617type DeleteObjectTaggingInput struct {
9618	_ struct{} `type:"structure"`
9619
9620	// Bucket is a required field
9621	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9622
9623	// Key is a required field
9624	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
9625
9626	// The versionId of the object that the tag-set will be removed from.
9627	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
9628}
9629
9630// String returns the string representation
9631func (s DeleteObjectTaggingInput) String() string {
9632	return awsutil.Prettify(s)
9633}
9634
9635// GoString returns the string representation
9636func (s DeleteObjectTaggingInput) GoString() string {
9637	return s.String()
9638}
9639
9640// Validate inspects the fields of the type to determine if they are valid.
9641func (s *DeleteObjectTaggingInput) Validate() error {
9642	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
9643	if s.Bucket == nil {
9644		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9645	}
9646	if s.Key == nil {
9647		invalidParams.Add(request.NewErrParamRequired("Key"))
9648	}
9649	if s.Key != nil && len(*s.Key) < 1 {
9650		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
9651	}
9652
9653	if invalidParams.Len() > 0 {
9654		return invalidParams
9655	}
9656	return nil
9657}
9658
9659// SetBucket sets the Bucket field's value.
9660func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
9661	s.Bucket = &v
9662	return s
9663}
9664
9665func (s *DeleteObjectTaggingInput) getBucket() (v string) {
9666	if s.Bucket == nil {
9667		return v
9668	}
9669	return *s.Bucket
9670}
9671
9672// SetKey sets the Key field's value.
9673func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
9674	s.Key = &v
9675	return s
9676}
9677
9678// SetVersionId sets the VersionId field's value.
9679func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
9680	s.VersionId = &v
9681	return s
9682}
9683
9684type DeleteObjectTaggingOutput struct {
9685	_ struct{} `type:"structure"`
9686
9687	// The versionId of the object the tag-set was removed from.
9688	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
9689}
9690
9691// String returns the string representation
9692func (s DeleteObjectTaggingOutput) String() string {
9693	return awsutil.Prettify(s)
9694}
9695
9696// GoString returns the string representation
9697func (s DeleteObjectTaggingOutput) GoString() string {
9698	return s.String()
9699}
9700
9701// SetVersionId sets the VersionId field's value.
9702func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
9703	s.VersionId = &v
9704	return s
9705}
9706
9707type DeleteObjectsInput struct {
9708	_ struct{} `type:"structure" payload:"Delete"`
9709
9710	// Bucket is a required field
9711	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9712
9713	// Delete is a required field
9714	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
9715
9716	// The concatenation of the authentication device's serial number, a space,
9717	// and the value that is displayed on your authentication device.
9718	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
9719
9720	// Confirms that the requester knows that she or he will be charged for the
9721	// request. Bucket owners need not specify this parameter in their requests.
9722	// Documentation on downloading objects from requester pays buckets can be found
9723	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
9724	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
9725}
9726
9727// String returns the string representation
9728func (s DeleteObjectsInput) String() string {
9729	return awsutil.Prettify(s)
9730}
9731
9732// GoString returns the string representation
9733func (s DeleteObjectsInput) GoString() string {
9734	return s.String()
9735}
9736
9737// Validate inspects the fields of the type to determine if they are valid.
9738func (s *DeleteObjectsInput) Validate() error {
9739	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
9740	if s.Bucket == nil {
9741		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9742	}
9743	if s.Delete == nil {
9744		invalidParams.Add(request.NewErrParamRequired("Delete"))
9745	}
9746	if s.Delete != nil {
9747		if err := s.Delete.Validate(); err != nil {
9748			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
9749		}
9750	}
9751
9752	if invalidParams.Len() > 0 {
9753		return invalidParams
9754	}
9755	return nil
9756}
9757
9758// SetBucket sets the Bucket field's value.
9759func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
9760	s.Bucket = &v
9761	return s
9762}
9763
9764func (s *DeleteObjectsInput) getBucket() (v string) {
9765	if s.Bucket == nil {
9766		return v
9767	}
9768	return *s.Bucket
9769}
9770
9771// SetDelete sets the Delete field's value.
9772func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
9773	s.Delete = v
9774	return s
9775}
9776
9777// SetMFA sets the MFA field's value.
9778func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
9779	s.MFA = &v
9780	return s
9781}
9782
9783// SetRequestPayer sets the RequestPayer field's value.
9784func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
9785	s.RequestPayer = &v
9786	return s
9787}
9788
9789type DeleteObjectsOutput struct {
9790	_ struct{} `type:"structure"`
9791
9792	Deleted []*DeletedObject `type:"list" flattened:"true"`
9793
9794	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
9795
9796	// If present, indicates that the requester was successfully charged for the
9797	// request.
9798	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
9799}
9800
9801// String returns the string representation
9802func (s DeleteObjectsOutput) String() string {
9803	return awsutil.Prettify(s)
9804}
9805
9806// GoString returns the string representation
9807func (s DeleteObjectsOutput) GoString() string {
9808	return s.String()
9809}
9810
9811// SetDeleted sets the Deleted field's value.
9812func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
9813	s.Deleted = v
9814	return s
9815}
9816
9817// SetErrors sets the Errors field's value.
9818func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
9819	s.Errors = v
9820	return s
9821}
9822
9823// SetRequestCharged sets the RequestCharged field's value.
9824func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
9825	s.RequestCharged = &v
9826	return s
9827}
9828
9829type DeletedObject struct {
9830	_ struct{} `type:"structure"`
9831
9832	DeleteMarker *bool `type:"boolean"`
9833
9834	DeleteMarkerVersionId *string `type:"string"`
9835
9836	Key *string `min:"1" type:"string"`
9837
9838	VersionId *string `type:"string"`
9839}
9840
9841// String returns the string representation
9842func (s DeletedObject) String() string {
9843	return awsutil.Prettify(s)
9844}
9845
9846// GoString returns the string representation
9847func (s DeletedObject) GoString() string {
9848	return s.String()
9849}
9850
9851// SetDeleteMarker sets the DeleteMarker field's value.
9852func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
9853	s.DeleteMarker = &v
9854	return s
9855}
9856
9857// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
9858func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
9859	s.DeleteMarkerVersionId = &v
9860	return s
9861}
9862
9863// SetKey sets the Key field's value.
9864func (s *DeletedObject) SetKey(v string) *DeletedObject {
9865	s.Key = &v
9866	return s
9867}
9868
9869// SetVersionId sets the VersionId field's value.
9870func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
9871	s.VersionId = &v
9872	return s
9873}
9874
9875// Container for replication destination information.
9876type Destination struct {
9877	_ struct{} `type:"structure"`
9878
9879	// Container for information regarding the access control for replicas.
9880	AccessControlTranslation *AccessControlTranslation `type:"structure"`
9881
9882	// Account ID of the destination bucket. Currently this is only being verified
9883	// if Access Control Translation is enabled
9884	Account *string `type:"string"`
9885
9886	// Amazon resource name (ARN) of the bucket where you want Amazon S3 to store
9887	// replicas of the object identified by the rule.
9888	//
9889	// Bucket is a required field
9890	Bucket *string `type:"string" required:"true"`
9891
9892	// Container for information regarding encryption based configuration for replicas.
9893	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
9894
9895	// The class of storage used to store the object.
9896	StorageClass *string `type:"string" enum:"StorageClass"`
9897}
9898
9899// String returns the string representation
9900func (s Destination) String() string {
9901	return awsutil.Prettify(s)
9902}
9903
9904// GoString returns the string representation
9905func (s Destination) GoString() string {
9906	return s.String()
9907}
9908
9909// Validate inspects the fields of the type to determine if they are valid.
9910func (s *Destination) Validate() error {
9911	invalidParams := request.ErrInvalidParams{Context: "Destination"}
9912	if s.Bucket == nil {
9913		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9914	}
9915	if s.AccessControlTranslation != nil {
9916		if err := s.AccessControlTranslation.Validate(); err != nil {
9917			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
9918		}
9919	}
9920
9921	if invalidParams.Len() > 0 {
9922		return invalidParams
9923	}
9924	return nil
9925}
9926
9927// SetAccessControlTranslation sets the AccessControlTranslation field's value.
9928func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
9929	s.AccessControlTranslation = v
9930	return s
9931}
9932
9933// SetAccount sets the Account field's value.
9934func (s *Destination) SetAccount(v string) *Destination {
9935	s.Account = &v
9936	return s
9937}
9938
9939// SetBucket sets the Bucket field's value.
9940func (s *Destination) SetBucket(v string) *Destination {
9941	s.Bucket = &v
9942	return s
9943}
9944
9945func (s *Destination) getBucket() (v string) {
9946	if s.Bucket == nil {
9947		return v
9948	}
9949	return *s.Bucket
9950}
9951
9952// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
9953func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
9954	s.EncryptionConfiguration = v
9955	return s
9956}
9957
9958// SetStorageClass sets the StorageClass field's value.
9959func (s *Destination) SetStorageClass(v string) *Destination {
9960	s.StorageClass = &v
9961	return s
9962}
9963
9964// Describes the server-side encryption that will be applied to the restore
9965// results.
9966type Encryption struct {
9967	_ struct{} `type:"structure"`
9968
9969	// The server-side encryption algorithm used when storing job results in Amazon
9970	// S3 (e.g., AES256, aws:kms).
9971	//
9972	// EncryptionType is a required field
9973	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
9974
9975	// If the encryption type is aws:kms, this optional value can be used to specify
9976	// the encryption context for the restore results.
9977	KMSContext *string `type:"string"`
9978
9979	// If the encryption type is aws:kms, this optional value specifies the AWS
9980	// KMS key ID to use for encryption of job results.
9981	KMSKeyId *string `type:"string"`
9982}
9983
9984// String returns the string representation
9985func (s Encryption) String() string {
9986	return awsutil.Prettify(s)
9987}
9988
9989// GoString returns the string representation
9990func (s Encryption) GoString() string {
9991	return s.String()
9992}
9993
9994// Validate inspects the fields of the type to determine if they are valid.
9995func (s *Encryption) Validate() error {
9996	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
9997	if s.EncryptionType == nil {
9998		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
9999	}
10000
10001	if invalidParams.Len() > 0 {
10002		return invalidParams
10003	}
10004	return nil
10005}
10006
10007// SetEncryptionType sets the EncryptionType field's value.
10008func (s *Encryption) SetEncryptionType(v string) *Encryption {
10009	s.EncryptionType = &v
10010	return s
10011}
10012
10013// SetKMSContext sets the KMSContext field's value.
10014func (s *Encryption) SetKMSContext(v string) *Encryption {
10015	s.KMSContext = &v
10016	return s
10017}
10018
10019// SetKMSKeyId sets the KMSKeyId field's value.
10020func (s *Encryption) SetKMSKeyId(v string) *Encryption {
10021	s.KMSKeyId = &v
10022	return s
10023}
10024
10025// Container for information regarding encryption based configuration for replicas.
10026type EncryptionConfiguration struct {
10027	_ struct{} `type:"structure"`
10028
10029	// The id of the KMS key used to encrypt the replica object.
10030	ReplicaKmsKeyID *string `type:"string"`
10031}
10032
10033// String returns the string representation
10034func (s EncryptionConfiguration) String() string {
10035	return awsutil.Prettify(s)
10036}
10037
10038// GoString returns the string representation
10039func (s EncryptionConfiguration) GoString() string {
10040	return s.String()
10041}
10042
10043// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
10044func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
10045	s.ReplicaKmsKeyID = &v
10046	return s
10047}
10048
10049type EndEvent struct {
10050	_ struct{} `locationName:"EndEvent" type:"structure"`
10051}
10052
10053// String returns the string representation
10054func (s EndEvent) String() string {
10055	return awsutil.Prettify(s)
10056}
10057
10058// GoString returns the string representation
10059func (s EndEvent) GoString() string {
10060	return s.String()
10061}
10062
10063// The EndEvent is and event in the SelectObjectContentEventStream group of events.
10064func (s *EndEvent) eventSelectObjectContentEventStream() {}
10065
10066// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
10067// This method is only used internally within the SDK's EventStream handling.
10068func (s *EndEvent) UnmarshalEvent(
10069	payloadUnmarshaler protocol.PayloadUnmarshaler,
10070	msg eventstream.Message,
10071) error {
10072	return nil
10073}
10074
10075type Error struct {
10076	_ struct{} `type:"structure"`
10077
10078	Code *string `type:"string"`
10079
10080	Key *string `min:"1" type:"string"`
10081
10082	Message *string `type:"string"`
10083
10084	VersionId *string `type:"string"`
10085}
10086
10087// String returns the string representation
10088func (s Error) String() string {
10089	return awsutil.Prettify(s)
10090}
10091
10092// GoString returns the string representation
10093func (s Error) GoString() string {
10094	return s.String()
10095}
10096
10097// SetCode sets the Code field's value.
10098func (s *Error) SetCode(v string) *Error {
10099	s.Code = &v
10100	return s
10101}
10102
10103// SetKey sets the Key field's value.
10104func (s *Error) SetKey(v string) *Error {
10105	s.Key = &v
10106	return s
10107}
10108
10109// SetMessage sets the Message field's value.
10110func (s *Error) SetMessage(v string) *Error {
10111	s.Message = &v
10112	return s
10113}
10114
10115// SetVersionId sets the VersionId field's value.
10116func (s *Error) SetVersionId(v string) *Error {
10117	s.VersionId = &v
10118	return s
10119}
10120
10121type ErrorDocument struct {
10122	_ struct{} `type:"structure"`
10123
10124	// The object key name to use when a 4XX class error occurs.
10125	//
10126	// Key is a required field
10127	Key *string `min:"1" type:"string" required:"true"`
10128}
10129
10130// String returns the string representation
10131func (s ErrorDocument) String() string {
10132	return awsutil.Prettify(s)
10133}
10134
10135// GoString returns the string representation
10136func (s ErrorDocument) GoString() string {
10137	return s.String()
10138}
10139
10140// Validate inspects the fields of the type to determine if they are valid.
10141func (s *ErrorDocument) Validate() error {
10142	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
10143	if s.Key == nil {
10144		invalidParams.Add(request.NewErrParamRequired("Key"))
10145	}
10146	if s.Key != nil && len(*s.Key) < 1 {
10147		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
10148	}
10149
10150	if invalidParams.Len() > 0 {
10151		return invalidParams
10152	}
10153	return nil
10154}
10155
10156// SetKey sets the Key field's value.
10157func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
10158	s.Key = &v
10159	return s
10160}
10161
10162// Container for key value pair that defines the criteria for the filter rule.
10163type FilterRule struct {
10164	_ struct{} `type:"structure"`
10165
10166	// Object key name prefix or suffix identifying one or more objects to which
10167	// the filtering rule applies. Maximum prefix length can be up to 1,024 characters.
10168	// Overlapping prefixes and suffixes are not supported. For more information,
10169	// go to Configuring Event Notifications (http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
10170	// in the Amazon Simple Storage Service Developer Guide.
10171	Name *string `type:"string" enum:"FilterRuleName"`
10172
10173	Value *string `type:"string"`
10174}
10175
10176// String returns the string representation
10177func (s FilterRule) String() string {
10178	return awsutil.Prettify(s)
10179}
10180
10181// GoString returns the string representation
10182func (s FilterRule) GoString() string {
10183	return s.String()
10184}
10185
10186// SetName sets the Name field's value.
10187func (s *FilterRule) SetName(v string) *FilterRule {
10188	s.Name = &v
10189	return s
10190}
10191
10192// SetValue sets the Value field's value.
10193func (s *FilterRule) SetValue(v string) *FilterRule {
10194	s.Value = &v
10195	return s
10196}
10197
10198type GetBucketAccelerateConfigurationInput struct {
10199	_ struct{} `type:"structure"`
10200
10201	// Name of the bucket for which the accelerate configuration is retrieved.
10202	//
10203	// Bucket is a required field
10204	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10205}
10206
10207// String returns the string representation
10208func (s GetBucketAccelerateConfigurationInput) String() string {
10209	return awsutil.Prettify(s)
10210}
10211
10212// GoString returns the string representation
10213func (s GetBucketAccelerateConfigurationInput) GoString() string {
10214	return s.String()
10215}
10216
10217// Validate inspects the fields of the type to determine if they are valid.
10218func (s *GetBucketAccelerateConfigurationInput) Validate() error {
10219	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
10220	if s.Bucket == nil {
10221		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10222	}
10223
10224	if invalidParams.Len() > 0 {
10225		return invalidParams
10226	}
10227	return nil
10228}
10229
10230// SetBucket sets the Bucket field's value.
10231func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
10232	s.Bucket = &v
10233	return s
10234}
10235
10236func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
10237	if s.Bucket == nil {
10238		return v
10239	}
10240	return *s.Bucket
10241}
10242
10243type GetBucketAccelerateConfigurationOutput struct {
10244	_ struct{} `type:"structure"`
10245
10246	// The accelerate configuration of the bucket.
10247	Status *string `type:"string" enum:"BucketAccelerateStatus"`
10248}
10249
10250// String returns the string representation
10251func (s GetBucketAccelerateConfigurationOutput) String() string {
10252	return awsutil.Prettify(s)
10253}
10254
10255// GoString returns the string representation
10256func (s GetBucketAccelerateConfigurationOutput) GoString() string {
10257	return s.String()
10258}
10259
10260// SetStatus sets the Status field's value.
10261func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
10262	s.Status = &v
10263	return s
10264}
10265
10266type GetBucketAclInput struct {
10267	_ struct{} `type:"structure"`
10268
10269	// Bucket is a required field
10270	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10271}
10272
10273// String returns the string representation
10274func (s GetBucketAclInput) String() string {
10275	return awsutil.Prettify(s)
10276}
10277
10278// GoString returns the string representation
10279func (s GetBucketAclInput) GoString() string {
10280	return s.String()
10281}
10282
10283// Validate inspects the fields of the type to determine if they are valid.
10284func (s *GetBucketAclInput) Validate() error {
10285	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
10286	if s.Bucket == nil {
10287		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10288	}
10289
10290	if invalidParams.Len() > 0 {
10291		return invalidParams
10292	}
10293	return nil
10294}
10295
10296// SetBucket sets the Bucket field's value.
10297func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
10298	s.Bucket = &v
10299	return s
10300}
10301
10302func (s *GetBucketAclInput) getBucket() (v string) {
10303	if s.Bucket == nil {
10304		return v
10305	}
10306	return *s.Bucket
10307}
10308
10309type GetBucketAclOutput struct {
10310	_ struct{} `type:"structure"`
10311
10312	// A list of grants.
10313	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
10314
10315	Owner *Owner `type:"structure"`
10316}
10317
10318// String returns the string representation
10319func (s GetBucketAclOutput) String() string {
10320	return awsutil.Prettify(s)
10321}
10322
10323// GoString returns the string representation
10324func (s GetBucketAclOutput) GoString() string {
10325	return s.String()
10326}
10327
10328// SetGrants sets the Grants field's value.
10329func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
10330	s.Grants = v
10331	return s
10332}
10333
10334// SetOwner sets the Owner field's value.
10335func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
10336	s.Owner = v
10337	return s
10338}
10339
10340type GetBucketAnalyticsConfigurationInput struct {
10341	_ struct{} `type:"structure"`
10342
10343	// The name of the bucket from which an analytics configuration is retrieved.
10344	//
10345	// Bucket is a required field
10346	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10347
10348	// The identifier used to represent an analytics configuration.
10349	//
10350	// Id is a required field
10351	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
10352}
10353
10354// String returns the string representation
10355func (s GetBucketAnalyticsConfigurationInput) String() string {
10356	return awsutil.Prettify(s)
10357}
10358
10359// GoString returns the string representation
10360func (s GetBucketAnalyticsConfigurationInput) GoString() string {
10361	return s.String()
10362}
10363
10364// Validate inspects the fields of the type to determine if they are valid.
10365func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
10366	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
10367	if s.Bucket == nil {
10368		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10369	}
10370	if s.Id == nil {
10371		invalidParams.Add(request.NewErrParamRequired("Id"))
10372	}
10373
10374	if invalidParams.Len() > 0 {
10375		return invalidParams
10376	}
10377	return nil
10378}
10379
10380// SetBucket sets the Bucket field's value.
10381func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
10382	s.Bucket = &v
10383	return s
10384}
10385
10386func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
10387	if s.Bucket == nil {
10388		return v
10389	}
10390	return *s.Bucket
10391}
10392
10393// SetId sets the Id field's value.
10394func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
10395	s.Id = &v
10396	return s
10397}
10398
10399type GetBucketAnalyticsConfigurationOutput struct {
10400	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
10401
10402	// The configuration and any analyses for the analytics filter.
10403	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
10404}
10405
10406// String returns the string representation
10407func (s GetBucketAnalyticsConfigurationOutput) String() string {
10408	return awsutil.Prettify(s)
10409}
10410
10411// GoString returns the string representation
10412func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
10413	return s.String()
10414}
10415
10416// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
10417func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
10418	s.AnalyticsConfiguration = v
10419	return s
10420}
10421
10422type GetBucketCorsInput 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
10429// String returns the string representation
10430func (s GetBucketCorsInput) String() string {
10431	return awsutil.Prettify(s)
10432}
10433
10434// GoString returns the string representation
10435func (s GetBucketCorsInput) GoString() string {
10436	return s.String()
10437}
10438
10439// Validate inspects the fields of the type to determine if they are valid.
10440func (s *GetBucketCorsInput) Validate() error {
10441	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
10442	if s.Bucket == nil {
10443		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10444	}
10445
10446	if invalidParams.Len() > 0 {
10447		return invalidParams
10448	}
10449	return nil
10450}
10451
10452// SetBucket sets the Bucket field's value.
10453func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
10454	s.Bucket = &v
10455	return s
10456}
10457
10458func (s *GetBucketCorsInput) getBucket() (v string) {
10459	if s.Bucket == nil {
10460		return v
10461	}
10462	return *s.Bucket
10463}
10464
10465type GetBucketCorsOutput struct {
10466	_ struct{} `type:"structure"`
10467
10468	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
10469}
10470
10471// String returns the string representation
10472func (s GetBucketCorsOutput) String() string {
10473	return awsutil.Prettify(s)
10474}
10475
10476// GoString returns the string representation
10477func (s GetBucketCorsOutput) GoString() string {
10478	return s.String()
10479}
10480
10481// SetCORSRules sets the CORSRules field's value.
10482func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
10483	s.CORSRules = v
10484	return s
10485}
10486
10487type GetBucketEncryptionInput struct {
10488	_ struct{} `type:"structure"`
10489
10490	// The name of the bucket from which the server-side encryption configuration
10491	// is retrieved.
10492	//
10493	// Bucket is a required field
10494	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10495}
10496
10497// String returns the string representation
10498func (s GetBucketEncryptionInput) String() string {
10499	return awsutil.Prettify(s)
10500}
10501
10502// GoString returns the string representation
10503func (s GetBucketEncryptionInput) GoString() string {
10504	return s.String()
10505}
10506
10507// Validate inspects the fields of the type to determine if they are valid.
10508func (s *GetBucketEncryptionInput) Validate() error {
10509	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
10510	if s.Bucket == nil {
10511		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10512	}
10513
10514	if invalidParams.Len() > 0 {
10515		return invalidParams
10516	}
10517	return nil
10518}
10519
10520// SetBucket sets the Bucket field's value.
10521func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
10522	s.Bucket = &v
10523	return s
10524}
10525
10526func (s *GetBucketEncryptionInput) getBucket() (v string) {
10527	if s.Bucket == nil {
10528		return v
10529	}
10530	return *s.Bucket
10531}
10532
10533type GetBucketEncryptionOutput struct {
10534	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
10535
10536	// Container for server-side encryption configuration rules. Currently S3 supports
10537	// one rule only.
10538	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
10539}
10540
10541// String returns the string representation
10542func (s GetBucketEncryptionOutput) String() string {
10543	return awsutil.Prettify(s)
10544}
10545
10546// GoString returns the string representation
10547func (s GetBucketEncryptionOutput) GoString() string {
10548	return s.String()
10549}
10550
10551// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
10552func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
10553	s.ServerSideEncryptionConfiguration = v
10554	return s
10555}
10556
10557type GetBucketInventoryConfigurationInput struct {
10558	_ struct{} `type:"structure"`
10559
10560	// The name of the bucket containing the inventory configuration to retrieve.
10561	//
10562	// Bucket is a required field
10563	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10564
10565	// The ID used to identify the inventory configuration.
10566	//
10567	// Id is a required field
10568	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
10569}
10570
10571// String returns the string representation
10572func (s GetBucketInventoryConfigurationInput) String() string {
10573	return awsutil.Prettify(s)
10574}
10575
10576// GoString returns the string representation
10577func (s GetBucketInventoryConfigurationInput) GoString() string {
10578	return s.String()
10579}
10580
10581// Validate inspects the fields of the type to determine if they are valid.
10582func (s *GetBucketInventoryConfigurationInput) Validate() error {
10583	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
10584	if s.Bucket == nil {
10585		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10586	}
10587	if s.Id == nil {
10588		invalidParams.Add(request.NewErrParamRequired("Id"))
10589	}
10590
10591	if invalidParams.Len() > 0 {
10592		return invalidParams
10593	}
10594	return nil
10595}
10596
10597// SetBucket sets the Bucket field's value.
10598func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
10599	s.Bucket = &v
10600	return s
10601}
10602
10603func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
10604	if s.Bucket == nil {
10605		return v
10606	}
10607	return *s.Bucket
10608}
10609
10610// SetId sets the Id field's value.
10611func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
10612	s.Id = &v
10613	return s
10614}
10615
10616type GetBucketInventoryConfigurationOutput struct {
10617	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
10618
10619	// Specifies the inventory configuration.
10620	InventoryConfiguration *InventoryConfiguration `type:"structure"`
10621}
10622
10623// String returns the string representation
10624func (s GetBucketInventoryConfigurationOutput) String() string {
10625	return awsutil.Prettify(s)
10626}
10627
10628// GoString returns the string representation
10629func (s GetBucketInventoryConfigurationOutput) GoString() string {
10630	return s.String()
10631}
10632
10633// SetInventoryConfiguration sets the InventoryConfiguration field's value.
10634func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
10635	s.InventoryConfiguration = v
10636	return s
10637}
10638
10639type GetBucketLifecycleConfigurationInput struct {
10640	_ struct{} `type:"structure"`
10641
10642	// Bucket is a required field
10643	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10644}
10645
10646// String returns the string representation
10647func (s GetBucketLifecycleConfigurationInput) String() string {
10648	return awsutil.Prettify(s)
10649}
10650
10651// GoString returns the string representation
10652func (s GetBucketLifecycleConfigurationInput) GoString() string {
10653	return s.String()
10654}
10655
10656// Validate inspects the fields of the type to determine if they are valid.
10657func (s *GetBucketLifecycleConfigurationInput) Validate() error {
10658	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
10659	if s.Bucket == nil {
10660		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10661	}
10662
10663	if invalidParams.Len() > 0 {
10664		return invalidParams
10665	}
10666	return nil
10667}
10668
10669// SetBucket sets the Bucket field's value.
10670func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
10671	s.Bucket = &v
10672	return s
10673}
10674
10675func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
10676	if s.Bucket == nil {
10677		return v
10678	}
10679	return *s.Bucket
10680}
10681
10682type GetBucketLifecycleConfigurationOutput struct {
10683	_ struct{} `type:"structure"`
10684
10685	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
10686}
10687
10688// String returns the string representation
10689func (s GetBucketLifecycleConfigurationOutput) String() string {
10690	return awsutil.Prettify(s)
10691}
10692
10693// GoString returns the string representation
10694func (s GetBucketLifecycleConfigurationOutput) GoString() string {
10695	return s.String()
10696}
10697
10698// SetRules sets the Rules field's value.
10699func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
10700	s.Rules = v
10701	return s
10702}
10703
10704type GetBucketLifecycleInput struct {
10705	_ struct{} `type:"structure"`
10706
10707	// Bucket is a required field
10708	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10709}
10710
10711// String returns the string representation
10712func (s GetBucketLifecycleInput) String() string {
10713	return awsutil.Prettify(s)
10714}
10715
10716// GoString returns the string representation
10717func (s GetBucketLifecycleInput) GoString() string {
10718	return s.String()
10719}
10720
10721// Validate inspects the fields of the type to determine if they are valid.
10722func (s *GetBucketLifecycleInput) Validate() error {
10723	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
10724	if s.Bucket == nil {
10725		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10726	}
10727
10728	if invalidParams.Len() > 0 {
10729		return invalidParams
10730	}
10731	return nil
10732}
10733
10734// SetBucket sets the Bucket field's value.
10735func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
10736	s.Bucket = &v
10737	return s
10738}
10739
10740func (s *GetBucketLifecycleInput) getBucket() (v string) {
10741	if s.Bucket == nil {
10742		return v
10743	}
10744	return *s.Bucket
10745}
10746
10747type GetBucketLifecycleOutput struct {
10748	_ struct{} `type:"structure"`
10749
10750	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
10751}
10752
10753// String returns the string representation
10754func (s GetBucketLifecycleOutput) String() string {
10755	return awsutil.Prettify(s)
10756}
10757
10758// GoString returns the string representation
10759func (s GetBucketLifecycleOutput) GoString() string {
10760	return s.String()
10761}
10762
10763// SetRules sets the Rules field's value.
10764func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
10765	s.Rules = v
10766	return s
10767}
10768
10769type GetBucketLocationInput struct {
10770	_ struct{} `type:"structure"`
10771
10772	// Bucket is a required field
10773	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10774}
10775
10776// String returns the string representation
10777func (s GetBucketLocationInput) String() string {
10778	return awsutil.Prettify(s)
10779}
10780
10781// GoString returns the string representation
10782func (s GetBucketLocationInput) GoString() string {
10783	return s.String()
10784}
10785
10786// Validate inspects the fields of the type to determine if they are valid.
10787func (s *GetBucketLocationInput) Validate() error {
10788	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
10789	if s.Bucket == nil {
10790		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10791	}
10792
10793	if invalidParams.Len() > 0 {
10794		return invalidParams
10795	}
10796	return nil
10797}
10798
10799// SetBucket sets the Bucket field's value.
10800func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
10801	s.Bucket = &v
10802	return s
10803}
10804
10805func (s *GetBucketLocationInput) getBucket() (v string) {
10806	if s.Bucket == nil {
10807		return v
10808	}
10809	return *s.Bucket
10810}
10811
10812type GetBucketLocationOutput struct {
10813	_ struct{} `type:"structure"`
10814
10815	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
10816}
10817
10818// String returns the string representation
10819func (s GetBucketLocationOutput) String() string {
10820	return awsutil.Prettify(s)
10821}
10822
10823// GoString returns the string representation
10824func (s GetBucketLocationOutput) GoString() string {
10825	return s.String()
10826}
10827
10828// SetLocationConstraint sets the LocationConstraint field's value.
10829func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
10830	s.LocationConstraint = &v
10831	return s
10832}
10833
10834type GetBucketLoggingInput struct {
10835	_ struct{} `type:"structure"`
10836
10837	// Bucket is a required field
10838	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10839}
10840
10841// String returns the string representation
10842func (s GetBucketLoggingInput) String() string {
10843	return awsutil.Prettify(s)
10844}
10845
10846// GoString returns the string representation
10847func (s GetBucketLoggingInput) GoString() string {
10848	return s.String()
10849}
10850
10851// Validate inspects the fields of the type to determine if they are valid.
10852func (s *GetBucketLoggingInput) Validate() error {
10853	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
10854	if s.Bucket == nil {
10855		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10856	}
10857
10858	if invalidParams.Len() > 0 {
10859		return invalidParams
10860	}
10861	return nil
10862}
10863
10864// SetBucket sets the Bucket field's value.
10865func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
10866	s.Bucket = &v
10867	return s
10868}
10869
10870func (s *GetBucketLoggingInput) getBucket() (v string) {
10871	if s.Bucket == nil {
10872		return v
10873	}
10874	return *s.Bucket
10875}
10876
10877type GetBucketLoggingOutput struct {
10878	_ struct{} `type:"structure"`
10879
10880	// Container for logging information. Presence of this element indicates that
10881	// logging is enabled. Parameters TargetBucket and TargetPrefix are required
10882	// in this case.
10883	LoggingEnabled *LoggingEnabled `type:"structure"`
10884}
10885
10886// String returns the string representation
10887func (s GetBucketLoggingOutput) String() string {
10888	return awsutil.Prettify(s)
10889}
10890
10891// GoString returns the string representation
10892func (s GetBucketLoggingOutput) GoString() string {
10893	return s.String()
10894}
10895
10896// SetLoggingEnabled sets the LoggingEnabled field's value.
10897func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
10898	s.LoggingEnabled = v
10899	return s
10900}
10901
10902type GetBucketMetricsConfigurationInput struct {
10903	_ struct{} `type:"structure"`
10904
10905	// The name of the bucket containing the metrics configuration to retrieve.
10906	//
10907	// Bucket is a required field
10908	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10909
10910	// The ID used to identify the metrics configuration.
10911	//
10912	// Id is a required field
10913	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
10914}
10915
10916// String returns the string representation
10917func (s GetBucketMetricsConfigurationInput) String() string {
10918	return awsutil.Prettify(s)
10919}
10920
10921// GoString returns the string representation
10922func (s GetBucketMetricsConfigurationInput) GoString() string {
10923	return s.String()
10924}
10925
10926// Validate inspects the fields of the type to determine if they are valid.
10927func (s *GetBucketMetricsConfigurationInput) Validate() error {
10928	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
10929	if s.Bucket == nil {
10930		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10931	}
10932	if s.Id == nil {
10933		invalidParams.Add(request.NewErrParamRequired("Id"))
10934	}
10935
10936	if invalidParams.Len() > 0 {
10937		return invalidParams
10938	}
10939	return nil
10940}
10941
10942// SetBucket sets the Bucket field's value.
10943func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
10944	s.Bucket = &v
10945	return s
10946}
10947
10948func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
10949	if s.Bucket == nil {
10950		return v
10951	}
10952	return *s.Bucket
10953}
10954
10955// SetId sets the Id field's value.
10956func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
10957	s.Id = &v
10958	return s
10959}
10960
10961type GetBucketMetricsConfigurationOutput struct {
10962	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
10963
10964	// Specifies the metrics configuration.
10965	MetricsConfiguration *MetricsConfiguration `type:"structure"`
10966}
10967
10968// String returns the string representation
10969func (s GetBucketMetricsConfigurationOutput) String() string {
10970	return awsutil.Prettify(s)
10971}
10972
10973// GoString returns the string representation
10974func (s GetBucketMetricsConfigurationOutput) GoString() string {
10975	return s.String()
10976}
10977
10978// SetMetricsConfiguration sets the MetricsConfiguration field's value.
10979func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
10980	s.MetricsConfiguration = v
10981	return s
10982}
10983
10984type GetBucketNotificationConfigurationRequest struct {
10985	_ struct{} `type:"structure"`
10986
10987	// Name of the bucket to get the notification configuration for.
10988	//
10989	// Bucket is a required field
10990	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10991}
10992
10993// String returns the string representation
10994func (s GetBucketNotificationConfigurationRequest) String() string {
10995	return awsutil.Prettify(s)
10996}
10997
10998// GoString returns the string representation
10999func (s GetBucketNotificationConfigurationRequest) GoString() string {
11000	return s.String()
11001}
11002
11003// Validate inspects the fields of the type to determine if they are valid.
11004func (s *GetBucketNotificationConfigurationRequest) Validate() error {
11005	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
11006	if s.Bucket == nil {
11007		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11008	}
11009
11010	if invalidParams.Len() > 0 {
11011		return invalidParams
11012	}
11013	return nil
11014}
11015
11016// SetBucket sets the Bucket field's value.
11017func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
11018	s.Bucket = &v
11019	return s
11020}
11021
11022func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
11023	if s.Bucket == nil {
11024		return v
11025	}
11026	return *s.Bucket
11027}
11028
11029type GetBucketPolicyInput struct {
11030	_ struct{} `type:"structure"`
11031
11032	// Bucket is a required field
11033	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11034}
11035
11036// String returns the string representation
11037func (s GetBucketPolicyInput) String() string {
11038	return awsutil.Prettify(s)
11039}
11040
11041// GoString returns the string representation
11042func (s GetBucketPolicyInput) GoString() string {
11043	return s.String()
11044}
11045
11046// Validate inspects the fields of the type to determine if they are valid.
11047func (s *GetBucketPolicyInput) Validate() error {
11048	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
11049	if s.Bucket == nil {
11050		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11051	}
11052
11053	if invalidParams.Len() > 0 {
11054		return invalidParams
11055	}
11056	return nil
11057}
11058
11059// SetBucket sets the Bucket field's value.
11060func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
11061	s.Bucket = &v
11062	return s
11063}
11064
11065func (s *GetBucketPolicyInput) getBucket() (v string) {
11066	if s.Bucket == nil {
11067		return v
11068	}
11069	return *s.Bucket
11070}
11071
11072type GetBucketPolicyOutput struct {
11073	_ struct{} `type:"structure" payload:"Policy"`
11074
11075	// The bucket policy as a JSON document.
11076	Policy *string `type:"string"`
11077}
11078
11079// String returns the string representation
11080func (s GetBucketPolicyOutput) String() string {
11081	return awsutil.Prettify(s)
11082}
11083
11084// GoString returns the string representation
11085func (s GetBucketPolicyOutput) GoString() string {
11086	return s.String()
11087}
11088
11089// SetPolicy sets the Policy field's value.
11090func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
11091	s.Policy = &v
11092	return s
11093}
11094
11095type GetBucketReplicationInput struct {
11096	_ struct{} `type:"structure"`
11097
11098	// Bucket is a required field
11099	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11100}
11101
11102// String returns the string representation
11103func (s GetBucketReplicationInput) String() string {
11104	return awsutil.Prettify(s)
11105}
11106
11107// GoString returns the string representation
11108func (s GetBucketReplicationInput) GoString() string {
11109	return s.String()
11110}
11111
11112// Validate inspects the fields of the type to determine if they are valid.
11113func (s *GetBucketReplicationInput) Validate() error {
11114	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
11115	if s.Bucket == nil {
11116		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11117	}
11118
11119	if invalidParams.Len() > 0 {
11120		return invalidParams
11121	}
11122	return nil
11123}
11124
11125// SetBucket sets the Bucket field's value.
11126func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
11127	s.Bucket = &v
11128	return s
11129}
11130
11131func (s *GetBucketReplicationInput) getBucket() (v string) {
11132	if s.Bucket == nil {
11133		return v
11134	}
11135	return *s.Bucket
11136}
11137
11138type GetBucketReplicationOutput struct {
11139	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
11140
11141	// Container for replication rules. You can add as many as 1,000 rules. Total
11142	// replication configuration size can be up to 2 MB.
11143	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
11144}
11145
11146// String returns the string representation
11147func (s GetBucketReplicationOutput) String() string {
11148	return awsutil.Prettify(s)
11149}
11150
11151// GoString returns the string representation
11152func (s GetBucketReplicationOutput) GoString() string {
11153	return s.String()
11154}
11155
11156// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
11157func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
11158	s.ReplicationConfiguration = v
11159	return s
11160}
11161
11162type GetBucketRequestPaymentInput struct {
11163	_ struct{} `type:"structure"`
11164
11165	// Bucket is a required field
11166	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11167}
11168
11169// String returns the string representation
11170func (s GetBucketRequestPaymentInput) String() string {
11171	return awsutil.Prettify(s)
11172}
11173
11174// GoString returns the string representation
11175func (s GetBucketRequestPaymentInput) GoString() string {
11176	return s.String()
11177}
11178
11179// Validate inspects the fields of the type to determine if they are valid.
11180func (s *GetBucketRequestPaymentInput) Validate() error {
11181	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
11182	if s.Bucket == nil {
11183		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11184	}
11185
11186	if invalidParams.Len() > 0 {
11187		return invalidParams
11188	}
11189	return nil
11190}
11191
11192// SetBucket sets the Bucket field's value.
11193func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
11194	s.Bucket = &v
11195	return s
11196}
11197
11198func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
11199	if s.Bucket == nil {
11200		return v
11201	}
11202	return *s.Bucket
11203}
11204
11205type GetBucketRequestPaymentOutput struct {
11206	_ struct{} `type:"structure"`
11207
11208	// Specifies who pays for the download and request fees.
11209	Payer *string `type:"string" enum:"Payer"`
11210}
11211
11212// String returns the string representation
11213func (s GetBucketRequestPaymentOutput) String() string {
11214	return awsutil.Prettify(s)
11215}
11216
11217// GoString returns the string representation
11218func (s GetBucketRequestPaymentOutput) GoString() string {
11219	return s.String()
11220}
11221
11222// SetPayer sets the Payer field's value.
11223func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
11224	s.Payer = &v
11225	return s
11226}
11227
11228type GetBucketTaggingInput struct {
11229	_ struct{} `type:"structure"`
11230
11231	// Bucket is a required field
11232	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11233}
11234
11235// String returns the string representation
11236func (s GetBucketTaggingInput) String() string {
11237	return awsutil.Prettify(s)
11238}
11239
11240// GoString returns the string representation
11241func (s GetBucketTaggingInput) GoString() string {
11242	return s.String()
11243}
11244
11245// Validate inspects the fields of the type to determine if they are valid.
11246func (s *GetBucketTaggingInput) Validate() error {
11247	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
11248	if s.Bucket == nil {
11249		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11250	}
11251
11252	if invalidParams.Len() > 0 {
11253		return invalidParams
11254	}
11255	return nil
11256}
11257
11258// SetBucket sets the Bucket field's value.
11259func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
11260	s.Bucket = &v
11261	return s
11262}
11263
11264func (s *GetBucketTaggingInput) getBucket() (v string) {
11265	if s.Bucket == nil {
11266		return v
11267	}
11268	return *s.Bucket
11269}
11270
11271type GetBucketTaggingOutput struct {
11272	_ struct{} `type:"structure"`
11273
11274	// TagSet is a required field
11275	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
11276}
11277
11278// String returns the string representation
11279func (s GetBucketTaggingOutput) String() string {
11280	return awsutil.Prettify(s)
11281}
11282
11283// GoString returns the string representation
11284func (s GetBucketTaggingOutput) GoString() string {
11285	return s.String()
11286}
11287
11288// SetTagSet sets the TagSet field's value.
11289func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
11290	s.TagSet = v
11291	return s
11292}
11293
11294type GetBucketVersioningInput struct {
11295	_ struct{} `type:"structure"`
11296
11297	// Bucket is a required field
11298	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11299}
11300
11301// String returns the string representation
11302func (s GetBucketVersioningInput) String() string {
11303	return awsutil.Prettify(s)
11304}
11305
11306// GoString returns the string representation
11307func (s GetBucketVersioningInput) GoString() string {
11308	return s.String()
11309}
11310
11311// Validate inspects the fields of the type to determine if they are valid.
11312func (s *GetBucketVersioningInput) Validate() error {
11313	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
11314	if s.Bucket == nil {
11315		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11316	}
11317
11318	if invalidParams.Len() > 0 {
11319		return invalidParams
11320	}
11321	return nil
11322}
11323
11324// SetBucket sets the Bucket field's value.
11325func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
11326	s.Bucket = &v
11327	return s
11328}
11329
11330func (s *GetBucketVersioningInput) getBucket() (v string) {
11331	if s.Bucket == nil {
11332		return v
11333	}
11334	return *s.Bucket
11335}
11336
11337type GetBucketVersioningOutput struct {
11338	_ struct{} `type:"structure"`
11339
11340	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
11341	// This element is only returned if the bucket has been configured with MFA
11342	// delete. If the bucket has never been so configured, this element is not returned.
11343	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
11344
11345	// The versioning state of the bucket.
11346	Status *string `type:"string" enum:"BucketVersioningStatus"`
11347}
11348
11349// String returns the string representation
11350func (s GetBucketVersioningOutput) String() string {
11351	return awsutil.Prettify(s)
11352}
11353
11354// GoString returns the string representation
11355func (s GetBucketVersioningOutput) GoString() string {
11356	return s.String()
11357}
11358
11359// SetMFADelete sets the MFADelete field's value.
11360func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
11361	s.MFADelete = &v
11362	return s
11363}
11364
11365// SetStatus sets the Status field's value.
11366func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
11367	s.Status = &v
11368	return s
11369}
11370
11371type GetBucketWebsiteInput struct {
11372	_ struct{} `type:"structure"`
11373
11374	// Bucket is a required field
11375	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11376}
11377
11378// String returns the string representation
11379func (s GetBucketWebsiteInput) String() string {
11380	return awsutil.Prettify(s)
11381}
11382
11383// GoString returns the string representation
11384func (s GetBucketWebsiteInput) GoString() string {
11385	return s.String()
11386}
11387
11388// Validate inspects the fields of the type to determine if they are valid.
11389func (s *GetBucketWebsiteInput) Validate() error {
11390	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
11391	if s.Bucket == nil {
11392		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11393	}
11394
11395	if invalidParams.Len() > 0 {
11396		return invalidParams
11397	}
11398	return nil
11399}
11400
11401// SetBucket sets the Bucket field's value.
11402func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
11403	s.Bucket = &v
11404	return s
11405}
11406
11407func (s *GetBucketWebsiteInput) getBucket() (v string) {
11408	if s.Bucket == nil {
11409		return v
11410	}
11411	return *s.Bucket
11412}
11413
11414type GetBucketWebsiteOutput struct {
11415	_ struct{} `type:"structure"`
11416
11417	ErrorDocument *ErrorDocument `type:"structure"`
11418
11419	IndexDocument *IndexDocument `type:"structure"`
11420
11421	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
11422
11423	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
11424}
11425
11426// String returns the string representation
11427func (s GetBucketWebsiteOutput) String() string {
11428	return awsutil.Prettify(s)
11429}
11430
11431// GoString returns the string representation
11432func (s GetBucketWebsiteOutput) GoString() string {
11433	return s.String()
11434}
11435
11436// SetErrorDocument sets the ErrorDocument field's value.
11437func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
11438	s.ErrorDocument = v
11439	return s
11440}
11441
11442// SetIndexDocument sets the IndexDocument field's value.
11443func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
11444	s.IndexDocument = v
11445	return s
11446}
11447
11448// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
11449func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
11450	s.RedirectAllRequestsTo = v
11451	return s
11452}
11453
11454// SetRoutingRules sets the RoutingRules field's value.
11455func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
11456	s.RoutingRules = v
11457	return s
11458}
11459
11460type GetObjectAclInput struct {
11461	_ struct{} `type:"structure"`
11462
11463	// Bucket is a required field
11464	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11465
11466	// Key is a required field
11467	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11468
11469	// Confirms that the requester knows that she or he will be charged for the
11470	// request. Bucket owners need not specify this parameter in their requests.
11471	// Documentation on downloading objects from requester pays buckets can be found
11472	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
11473	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11474
11475	// VersionId used to reference a specific version of the object.
11476	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
11477}
11478
11479// String returns the string representation
11480func (s GetObjectAclInput) String() string {
11481	return awsutil.Prettify(s)
11482}
11483
11484// GoString returns the string representation
11485func (s GetObjectAclInput) GoString() string {
11486	return s.String()
11487}
11488
11489// Validate inspects the fields of the type to determine if they are valid.
11490func (s *GetObjectAclInput) Validate() error {
11491	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
11492	if s.Bucket == nil {
11493		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11494	}
11495	if s.Key == nil {
11496		invalidParams.Add(request.NewErrParamRequired("Key"))
11497	}
11498	if s.Key != nil && len(*s.Key) < 1 {
11499		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11500	}
11501
11502	if invalidParams.Len() > 0 {
11503		return invalidParams
11504	}
11505	return nil
11506}
11507
11508// SetBucket sets the Bucket field's value.
11509func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
11510	s.Bucket = &v
11511	return s
11512}
11513
11514func (s *GetObjectAclInput) getBucket() (v string) {
11515	if s.Bucket == nil {
11516		return v
11517	}
11518	return *s.Bucket
11519}
11520
11521// SetKey sets the Key field's value.
11522func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
11523	s.Key = &v
11524	return s
11525}
11526
11527// SetRequestPayer sets the RequestPayer field's value.
11528func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
11529	s.RequestPayer = &v
11530	return s
11531}
11532
11533// SetVersionId sets the VersionId field's value.
11534func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
11535	s.VersionId = &v
11536	return s
11537}
11538
11539type GetObjectAclOutput struct {
11540	_ struct{} `type:"structure"`
11541
11542	// A list of grants.
11543	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
11544
11545	Owner *Owner `type:"structure"`
11546
11547	// If present, indicates that the requester was successfully charged for the
11548	// request.
11549	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11550}
11551
11552// String returns the string representation
11553func (s GetObjectAclOutput) String() string {
11554	return awsutil.Prettify(s)
11555}
11556
11557// GoString returns the string representation
11558func (s GetObjectAclOutput) GoString() string {
11559	return s.String()
11560}
11561
11562// SetGrants sets the Grants field's value.
11563func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
11564	s.Grants = v
11565	return s
11566}
11567
11568// SetOwner sets the Owner field's value.
11569func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
11570	s.Owner = v
11571	return s
11572}
11573
11574// SetRequestCharged sets the RequestCharged field's value.
11575func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
11576	s.RequestCharged = &v
11577	return s
11578}
11579
11580type GetObjectInput struct {
11581	_ struct{} `type:"structure"`
11582
11583	// Bucket is a required field
11584	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11585
11586	// Return the object only if its entity tag (ETag) is the same as the one specified,
11587	// otherwise return a 412 (precondition failed).
11588	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
11589
11590	// Return the object only if it has been modified since the specified time,
11591	// otherwise return a 304 (not modified).
11592	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
11593
11594	// Return the object only if its entity tag (ETag) is different from the one
11595	// specified, otherwise return a 304 (not modified).
11596	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
11597
11598	// Return the object only if it has not been modified since the specified time,
11599	// otherwise return a 412 (precondition failed).
11600	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
11601
11602	// Key is a required field
11603	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11604
11605	// Part number of the object being read. This is a positive integer between
11606	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
11607	// Useful for downloading just a part of an object.
11608	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
11609
11610	// Downloads the specified range bytes of an object. For more information about
11611	// the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
11612	Range *string `location:"header" locationName:"Range" type:"string"`
11613
11614	// Confirms that the requester knows that she or he will be charged for the
11615	// request. Bucket owners need not specify this parameter in their requests.
11616	// Documentation on downloading objects from requester pays buckets can be found
11617	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
11618	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11619
11620	// Sets the Cache-Control header of the response.
11621	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
11622
11623	// Sets the Content-Disposition header of the response
11624	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
11625
11626	// Sets the Content-Encoding header of the response.
11627	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
11628
11629	// Sets the Content-Language header of the response.
11630	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
11631
11632	// Sets the Content-Type header of the response.
11633	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
11634
11635	// Sets the Expires header of the response.
11636	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"`
11637
11638	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
11639	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
11640
11641	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
11642	// data. This value is used to store the object and then it is discarded; Amazon
11643	// does not store the encryption key. The key must be appropriate for use with
11644	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
11645	// header.
11646	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
11647
11648	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
11649	// Amazon S3 uses this header for a message integrity check to ensure the encryption
11650	// key was transmitted without error.
11651	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
11652
11653	// VersionId used to reference a specific version of the object.
11654	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
11655}
11656
11657// String returns the string representation
11658func (s GetObjectInput) String() string {
11659	return awsutil.Prettify(s)
11660}
11661
11662// GoString returns the string representation
11663func (s GetObjectInput) GoString() string {
11664	return s.String()
11665}
11666
11667// Validate inspects the fields of the type to determine if they are valid.
11668func (s *GetObjectInput) Validate() error {
11669	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
11670	if s.Bucket == nil {
11671		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11672	}
11673	if s.Key == nil {
11674		invalidParams.Add(request.NewErrParamRequired("Key"))
11675	}
11676	if s.Key != nil && len(*s.Key) < 1 {
11677		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11678	}
11679
11680	if invalidParams.Len() > 0 {
11681		return invalidParams
11682	}
11683	return nil
11684}
11685
11686// SetBucket sets the Bucket field's value.
11687func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
11688	s.Bucket = &v
11689	return s
11690}
11691
11692func (s *GetObjectInput) getBucket() (v string) {
11693	if s.Bucket == nil {
11694		return v
11695	}
11696	return *s.Bucket
11697}
11698
11699// SetIfMatch sets the IfMatch field's value.
11700func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
11701	s.IfMatch = &v
11702	return s
11703}
11704
11705// SetIfModifiedSince sets the IfModifiedSince field's value.
11706func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
11707	s.IfModifiedSince = &v
11708	return s
11709}
11710
11711// SetIfNoneMatch sets the IfNoneMatch field's value.
11712func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
11713	s.IfNoneMatch = &v
11714	return s
11715}
11716
11717// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
11718func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
11719	s.IfUnmodifiedSince = &v
11720	return s
11721}
11722
11723// SetKey sets the Key field's value.
11724func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
11725	s.Key = &v
11726	return s
11727}
11728
11729// SetPartNumber sets the PartNumber field's value.
11730func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
11731	s.PartNumber = &v
11732	return s
11733}
11734
11735// SetRange sets the Range field's value.
11736func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
11737	s.Range = &v
11738	return s
11739}
11740
11741// SetRequestPayer sets the RequestPayer field's value.
11742func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
11743	s.RequestPayer = &v
11744	return s
11745}
11746
11747// SetResponseCacheControl sets the ResponseCacheControl field's value.
11748func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
11749	s.ResponseCacheControl = &v
11750	return s
11751}
11752
11753// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
11754func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
11755	s.ResponseContentDisposition = &v
11756	return s
11757}
11758
11759// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
11760func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
11761	s.ResponseContentEncoding = &v
11762	return s
11763}
11764
11765// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
11766func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
11767	s.ResponseContentLanguage = &v
11768	return s
11769}
11770
11771// SetResponseContentType sets the ResponseContentType field's value.
11772func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
11773	s.ResponseContentType = &v
11774	return s
11775}
11776
11777// SetResponseExpires sets the ResponseExpires field's value.
11778func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
11779	s.ResponseExpires = &v
11780	return s
11781}
11782
11783// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
11784func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
11785	s.SSECustomerAlgorithm = &v
11786	return s
11787}
11788
11789// SetSSECustomerKey sets the SSECustomerKey field's value.
11790func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
11791	s.SSECustomerKey = &v
11792	return s
11793}
11794
11795func (s *GetObjectInput) getSSECustomerKey() (v string) {
11796	if s.SSECustomerKey == nil {
11797		return v
11798	}
11799	return *s.SSECustomerKey
11800}
11801
11802// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
11803func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
11804	s.SSECustomerKeyMD5 = &v
11805	return s
11806}
11807
11808// SetVersionId sets the VersionId field's value.
11809func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
11810	s.VersionId = &v
11811	return s
11812}
11813
11814type GetObjectOutput struct {
11815	_ struct{} `type:"structure" payload:"Body"`
11816
11817	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
11818
11819	// Object data.
11820	Body io.ReadCloser `type:"blob"`
11821
11822	// Specifies caching behavior along the request/reply chain.
11823	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
11824
11825	// Specifies presentational information for the object.
11826	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
11827
11828	// Specifies what content encodings have been applied to the object and thus
11829	// what decoding mechanisms must be applied to obtain the media-type referenced
11830	// by the Content-Type header field.
11831	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
11832
11833	// The language the content is in.
11834	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
11835
11836	// Size of the body in bytes.
11837	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
11838
11839	// The portion of the object returned in the response.
11840	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
11841
11842	// A standard MIME type describing the format of the object data.
11843	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
11844
11845	// Specifies whether the object retrieved was (true) or was not (false) a Delete
11846	// Marker. If false, this response header does not appear in the response.
11847	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
11848
11849	// An ETag is an opaque identifier assigned by a web server to a specific version
11850	// of a resource found at a URL
11851	ETag *string `location:"header" locationName:"ETag" type:"string"`
11852
11853	// If the object expiration is configured (see PUT Bucket lifecycle), the response
11854	// includes this header. It includes the expiry-date and rule-id key value pairs
11855	// providing object expiration information. The value of the rule-id is URL
11856	// encoded.
11857	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
11858
11859	// The date and time at which the object is no longer cacheable.
11860	Expires *string `location:"header" locationName:"Expires" type:"string"`
11861
11862	// Last modified date of the object
11863	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
11864
11865	// A map of metadata to store with the object in S3.
11866	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
11867
11868	// This is set to the number of metadata entries not returned in x-amz-meta
11869	// headers. This can happen if you create metadata using an API like SOAP that
11870	// supports more flexible metadata than the REST API. For example, using SOAP,
11871	// you can create metadata whose values are not legal HTTP headers.
11872	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
11873
11874	// The count of parts this object has.
11875	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
11876
11877	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
11878
11879	// If present, indicates that the requester was successfully charged for the
11880	// request.
11881	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11882
11883	// Provides information about object restoration operation and expiration time
11884	// of the restored object copy.
11885	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
11886
11887	// If server-side encryption with a customer-provided encryption key was requested,
11888	// the response will include this header confirming the encryption algorithm
11889	// used.
11890	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
11891
11892	// If server-side encryption with a customer-provided encryption key was requested,
11893	// the response will include this header to provide round trip message integrity
11894	// verification of the customer-provided encryption key.
11895	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
11896
11897	// If present, specifies the ID of the AWS Key Management Service (KMS) master
11898	// encryption key that was used for the object.
11899	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
11900
11901	// The Server-side encryption algorithm used when storing this object in S3
11902	// (e.g., AES256, aws:kms).
11903	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
11904
11905	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
11906
11907	// The number of tags, if any, on the object.
11908	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
11909
11910	// Version of the object.
11911	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
11912
11913	// If the bucket is configured as a website, redirects requests for this object
11914	// to another object in the same bucket or to an external URL. Amazon S3 stores
11915	// the value of this header in the object metadata.
11916	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
11917}
11918
11919// String returns the string representation
11920func (s GetObjectOutput) String() string {
11921	return awsutil.Prettify(s)
11922}
11923
11924// GoString returns the string representation
11925func (s GetObjectOutput) GoString() string {
11926	return s.String()
11927}
11928
11929// SetAcceptRanges sets the AcceptRanges field's value.
11930func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
11931	s.AcceptRanges = &v
11932	return s
11933}
11934
11935// SetBody sets the Body field's value.
11936func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
11937	s.Body = v
11938	return s
11939}
11940
11941// SetCacheControl sets the CacheControl field's value.
11942func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
11943	s.CacheControl = &v
11944	return s
11945}
11946
11947// SetContentDisposition sets the ContentDisposition field's value.
11948func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
11949	s.ContentDisposition = &v
11950	return s
11951}
11952
11953// SetContentEncoding sets the ContentEncoding field's value.
11954func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
11955	s.ContentEncoding = &v
11956	return s
11957}
11958
11959// SetContentLanguage sets the ContentLanguage field's value.
11960func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
11961	s.ContentLanguage = &v
11962	return s
11963}
11964
11965// SetContentLength sets the ContentLength field's value.
11966func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
11967	s.ContentLength = &v
11968	return s
11969}
11970
11971// SetContentRange sets the ContentRange field's value.
11972func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
11973	s.ContentRange = &v
11974	return s
11975}
11976
11977// SetContentType sets the ContentType field's value.
11978func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
11979	s.ContentType = &v
11980	return s
11981}
11982
11983// SetDeleteMarker sets the DeleteMarker field's value.
11984func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
11985	s.DeleteMarker = &v
11986	return s
11987}
11988
11989// SetETag sets the ETag field's value.
11990func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
11991	s.ETag = &v
11992	return s
11993}
11994
11995// SetExpiration sets the Expiration field's value.
11996func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
11997	s.Expiration = &v
11998	return s
11999}
12000
12001// SetExpires sets the Expires field's value.
12002func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
12003	s.Expires = &v
12004	return s
12005}
12006
12007// SetLastModified sets the LastModified field's value.
12008func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
12009	s.LastModified = &v
12010	return s
12011}
12012
12013// SetMetadata sets the Metadata field's value.
12014func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
12015	s.Metadata = v
12016	return s
12017}
12018
12019// SetMissingMeta sets the MissingMeta field's value.
12020func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
12021	s.MissingMeta = &v
12022	return s
12023}
12024
12025// SetPartsCount sets the PartsCount field's value.
12026func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
12027	s.PartsCount = &v
12028	return s
12029}
12030
12031// SetReplicationStatus sets the ReplicationStatus field's value.
12032func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
12033	s.ReplicationStatus = &v
12034	return s
12035}
12036
12037// SetRequestCharged sets the RequestCharged field's value.
12038func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
12039	s.RequestCharged = &v
12040	return s
12041}
12042
12043// SetRestore sets the Restore field's value.
12044func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
12045	s.Restore = &v
12046	return s
12047}
12048
12049// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12050func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
12051	s.SSECustomerAlgorithm = &v
12052	return s
12053}
12054
12055// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12056func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
12057	s.SSECustomerKeyMD5 = &v
12058	return s
12059}
12060
12061// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12062func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
12063	s.SSEKMSKeyId = &v
12064	return s
12065}
12066
12067// SetServerSideEncryption sets the ServerSideEncryption field's value.
12068func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
12069	s.ServerSideEncryption = &v
12070	return s
12071}
12072
12073// SetStorageClass sets the StorageClass field's value.
12074func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
12075	s.StorageClass = &v
12076	return s
12077}
12078
12079// SetTagCount sets the TagCount field's value.
12080func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
12081	s.TagCount = &v
12082	return s
12083}
12084
12085// SetVersionId sets the VersionId field's value.
12086func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
12087	s.VersionId = &v
12088	return s
12089}
12090
12091// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
12092func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
12093	s.WebsiteRedirectLocation = &v
12094	return s
12095}
12096
12097type GetObjectTaggingInput struct {
12098	_ struct{} `type:"structure"`
12099
12100	// Bucket is a required field
12101	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12102
12103	// Key is a required field
12104	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12105
12106	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
12107}
12108
12109// String returns the string representation
12110func (s GetObjectTaggingInput) String() string {
12111	return awsutil.Prettify(s)
12112}
12113
12114// GoString returns the string representation
12115func (s GetObjectTaggingInput) GoString() string {
12116	return s.String()
12117}
12118
12119// Validate inspects the fields of the type to determine if they are valid.
12120func (s *GetObjectTaggingInput) Validate() error {
12121	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
12122	if s.Bucket == nil {
12123		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12124	}
12125	if s.Key == nil {
12126		invalidParams.Add(request.NewErrParamRequired("Key"))
12127	}
12128	if s.Key != nil && len(*s.Key) < 1 {
12129		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12130	}
12131
12132	if invalidParams.Len() > 0 {
12133		return invalidParams
12134	}
12135	return nil
12136}
12137
12138// SetBucket sets the Bucket field's value.
12139func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
12140	s.Bucket = &v
12141	return s
12142}
12143
12144func (s *GetObjectTaggingInput) getBucket() (v string) {
12145	if s.Bucket == nil {
12146		return v
12147	}
12148	return *s.Bucket
12149}
12150
12151// SetKey sets the Key field's value.
12152func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
12153	s.Key = &v
12154	return s
12155}
12156
12157// SetVersionId sets the VersionId field's value.
12158func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
12159	s.VersionId = &v
12160	return s
12161}
12162
12163type GetObjectTaggingOutput struct {
12164	_ struct{} `type:"structure"`
12165
12166	// TagSet is a required field
12167	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
12168
12169	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
12170}
12171
12172// String returns the string representation
12173func (s GetObjectTaggingOutput) String() string {
12174	return awsutil.Prettify(s)
12175}
12176
12177// GoString returns the string representation
12178func (s GetObjectTaggingOutput) GoString() string {
12179	return s.String()
12180}
12181
12182// SetTagSet sets the TagSet field's value.
12183func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
12184	s.TagSet = v
12185	return s
12186}
12187
12188// SetVersionId sets the VersionId field's value.
12189func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
12190	s.VersionId = &v
12191	return s
12192}
12193
12194type GetObjectTorrentInput struct {
12195	_ struct{} `type:"structure"`
12196
12197	// Bucket is a required field
12198	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12199
12200	// Key is a required field
12201	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12202
12203	// Confirms that the requester knows that she or he will be charged for the
12204	// request. Bucket owners need not specify this parameter in their requests.
12205	// Documentation on downloading objects from requester pays buckets can be found
12206	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
12207	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12208}
12209
12210// String returns the string representation
12211func (s GetObjectTorrentInput) String() string {
12212	return awsutil.Prettify(s)
12213}
12214
12215// GoString returns the string representation
12216func (s GetObjectTorrentInput) GoString() string {
12217	return s.String()
12218}
12219
12220// Validate inspects the fields of the type to determine if they are valid.
12221func (s *GetObjectTorrentInput) Validate() error {
12222	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
12223	if s.Bucket == nil {
12224		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12225	}
12226	if s.Key == nil {
12227		invalidParams.Add(request.NewErrParamRequired("Key"))
12228	}
12229	if s.Key != nil && len(*s.Key) < 1 {
12230		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12231	}
12232
12233	if invalidParams.Len() > 0 {
12234		return invalidParams
12235	}
12236	return nil
12237}
12238
12239// SetBucket sets the Bucket field's value.
12240func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
12241	s.Bucket = &v
12242	return s
12243}
12244
12245func (s *GetObjectTorrentInput) getBucket() (v string) {
12246	if s.Bucket == nil {
12247		return v
12248	}
12249	return *s.Bucket
12250}
12251
12252// SetKey sets the Key field's value.
12253func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
12254	s.Key = &v
12255	return s
12256}
12257
12258// SetRequestPayer sets the RequestPayer field's value.
12259func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
12260	s.RequestPayer = &v
12261	return s
12262}
12263
12264type GetObjectTorrentOutput struct {
12265	_ struct{} `type:"structure" payload:"Body"`
12266
12267	Body io.ReadCloser `type:"blob"`
12268
12269	// If present, indicates that the requester was successfully charged for the
12270	// request.
12271	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12272}
12273
12274// String returns the string representation
12275func (s GetObjectTorrentOutput) String() string {
12276	return awsutil.Prettify(s)
12277}
12278
12279// GoString returns the string representation
12280func (s GetObjectTorrentOutput) GoString() string {
12281	return s.String()
12282}
12283
12284// SetBody sets the Body field's value.
12285func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
12286	s.Body = v
12287	return s
12288}
12289
12290// SetRequestCharged sets the RequestCharged field's value.
12291func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
12292	s.RequestCharged = &v
12293	return s
12294}
12295
12296type GlacierJobParameters struct {
12297	_ struct{} `type:"structure"`
12298
12299	// Glacier retrieval tier at which the restore will be processed.
12300	//
12301	// Tier is a required field
12302	Tier *string `type:"string" required:"true" enum:"Tier"`
12303}
12304
12305// String returns the string representation
12306func (s GlacierJobParameters) String() string {
12307	return awsutil.Prettify(s)
12308}
12309
12310// GoString returns the string representation
12311func (s GlacierJobParameters) GoString() string {
12312	return s.String()
12313}
12314
12315// Validate inspects the fields of the type to determine if they are valid.
12316func (s *GlacierJobParameters) Validate() error {
12317	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
12318	if s.Tier == nil {
12319		invalidParams.Add(request.NewErrParamRequired("Tier"))
12320	}
12321
12322	if invalidParams.Len() > 0 {
12323		return invalidParams
12324	}
12325	return nil
12326}
12327
12328// SetTier sets the Tier field's value.
12329func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
12330	s.Tier = &v
12331	return s
12332}
12333
12334type Grant struct {
12335	_ struct{} `type:"structure"`
12336
12337	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
12338
12339	// Specifies the permission given to the grantee.
12340	Permission *string `type:"string" enum:"Permission"`
12341}
12342
12343// String returns the string representation
12344func (s Grant) String() string {
12345	return awsutil.Prettify(s)
12346}
12347
12348// GoString returns the string representation
12349func (s Grant) GoString() string {
12350	return s.String()
12351}
12352
12353// Validate inspects the fields of the type to determine if they are valid.
12354func (s *Grant) Validate() error {
12355	invalidParams := request.ErrInvalidParams{Context: "Grant"}
12356	if s.Grantee != nil {
12357		if err := s.Grantee.Validate(); err != nil {
12358			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
12359		}
12360	}
12361
12362	if invalidParams.Len() > 0 {
12363		return invalidParams
12364	}
12365	return nil
12366}
12367
12368// SetGrantee sets the Grantee field's value.
12369func (s *Grant) SetGrantee(v *Grantee) *Grant {
12370	s.Grantee = v
12371	return s
12372}
12373
12374// SetPermission sets the Permission field's value.
12375func (s *Grant) SetPermission(v string) *Grant {
12376	s.Permission = &v
12377	return s
12378}
12379
12380type Grantee struct {
12381	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
12382
12383	// Screen name of the grantee.
12384	DisplayName *string `type:"string"`
12385
12386	// Email address of the grantee.
12387	EmailAddress *string `type:"string"`
12388
12389	// The canonical user ID of the grantee.
12390	ID *string `type:"string"`
12391
12392	// Type of grantee
12393	//
12394	// Type is a required field
12395	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
12396
12397	// URI of the grantee group.
12398	URI *string `type:"string"`
12399}
12400
12401// String returns the string representation
12402func (s Grantee) String() string {
12403	return awsutil.Prettify(s)
12404}
12405
12406// GoString returns the string representation
12407func (s Grantee) GoString() string {
12408	return s.String()
12409}
12410
12411// Validate inspects the fields of the type to determine if they are valid.
12412func (s *Grantee) Validate() error {
12413	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
12414	if s.Type == nil {
12415		invalidParams.Add(request.NewErrParamRequired("Type"))
12416	}
12417
12418	if invalidParams.Len() > 0 {
12419		return invalidParams
12420	}
12421	return nil
12422}
12423
12424// SetDisplayName sets the DisplayName field's value.
12425func (s *Grantee) SetDisplayName(v string) *Grantee {
12426	s.DisplayName = &v
12427	return s
12428}
12429
12430// SetEmailAddress sets the EmailAddress field's value.
12431func (s *Grantee) SetEmailAddress(v string) *Grantee {
12432	s.EmailAddress = &v
12433	return s
12434}
12435
12436// SetID sets the ID field's value.
12437func (s *Grantee) SetID(v string) *Grantee {
12438	s.ID = &v
12439	return s
12440}
12441
12442// SetType sets the Type field's value.
12443func (s *Grantee) SetType(v string) *Grantee {
12444	s.Type = &v
12445	return s
12446}
12447
12448// SetURI sets the URI field's value.
12449func (s *Grantee) SetURI(v string) *Grantee {
12450	s.URI = &v
12451	return s
12452}
12453
12454type HeadBucketInput struct {
12455	_ struct{} `type:"structure"`
12456
12457	// Bucket is a required field
12458	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12459}
12460
12461// String returns the string representation
12462func (s HeadBucketInput) String() string {
12463	return awsutil.Prettify(s)
12464}
12465
12466// GoString returns the string representation
12467func (s HeadBucketInput) GoString() string {
12468	return s.String()
12469}
12470
12471// Validate inspects the fields of the type to determine if they are valid.
12472func (s *HeadBucketInput) Validate() error {
12473	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
12474	if s.Bucket == nil {
12475		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12476	}
12477
12478	if invalidParams.Len() > 0 {
12479		return invalidParams
12480	}
12481	return nil
12482}
12483
12484// SetBucket sets the Bucket field's value.
12485func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
12486	s.Bucket = &v
12487	return s
12488}
12489
12490func (s *HeadBucketInput) getBucket() (v string) {
12491	if s.Bucket == nil {
12492		return v
12493	}
12494	return *s.Bucket
12495}
12496
12497type HeadBucketOutput struct {
12498	_ struct{} `type:"structure"`
12499}
12500
12501// String returns the string representation
12502func (s HeadBucketOutput) String() string {
12503	return awsutil.Prettify(s)
12504}
12505
12506// GoString returns the string representation
12507func (s HeadBucketOutput) GoString() string {
12508	return s.String()
12509}
12510
12511type HeadObjectInput struct {
12512	_ struct{} `type:"structure"`
12513
12514	// Bucket is a required field
12515	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12516
12517	// Return the object only if its entity tag (ETag) is the same as the one specified,
12518	// otherwise return a 412 (precondition failed).
12519	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
12520
12521	// Return the object only if it has been modified since the specified time,
12522	// otherwise return a 304 (not modified).
12523	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
12524
12525	// Return the object only if its entity tag (ETag) is different from the one
12526	// specified, otherwise return a 304 (not modified).
12527	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
12528
12529	// Return the object only if it has not been modified since the specified time,
12530	// otherwise return a 412 (precondition failed).
12531	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
12532
12533	// Key is a required field
12534	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12535
12536	// Part number of the object being read. This is a positive integer between
12537	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
12538	// Useful querying about the size of the part and the number of parts in this
12539	// object.
12540	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
12541
12542	// Downloads the specified range bytes of an object. For more information about
12543	// the HTTP Range header, go to http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
12544	Range *string `location:"header" locationName:"Range" type:"string"`
12545
12546	// Confirms that the requester knows that she or he will be charged for the
12547	// request. Bucket owners need not specify this parameter in their requests.
12548	// Documentation on downloading objects from requester pays buckets can be found
12549	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
12550	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12551
12552	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
12553	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12554
12555	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
12556	// data. This value is used to store the object and then it is discarded; Amazon
12557	// does not store the encryption key. The key must be appropriate for use with
12558	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
12559	// header.
12560	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
12561
12562	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
12563	// Amazon S3 uses this header for a message integrity check to ensure the encryption
12564	// key was transmitted without error.
12565	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12566
12567	// VersionId used to reference a specific version of the object.
12568	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
12569}
12570
12571// String returns the string representation
12572func (s HeadObjectInput) String() string {
12573	return awsutil.Prettify(s)
12574}
12575
12576// GoString returns the string representation
12577func (s HeadObjectInput) GoString() string {
12578	return s.String()
12579}
12580
12581// Validate inspects the fields of the type to determine if they are valid.
12582func (s *HeadObjectInput) Validate() error {
12583	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
12584	if s.Bucket == nil {
12585		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12586	}
12587	if s.Key == nil {
12588		invalidParams.Add(request.NewErrParamRequired("Key"))
12589	}
12590	if s.Key != nil && len(*s.Key) < 1 {
12591		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12592	}
12593
12594	if invalidParams.Len() > 0 {
12595		return invalidParams
12596	}
12597	return nil
12598}
12599
12600// SetBucket sets the Bucket field's value.
12601func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
12602	s.Bucket = &v
12603	return s
12604}
12605
12606func (s *HeadObjectInput) getBucket() (v string) {
12607	if s.Bucket == nil {
12608		return v
12609	}
12610	return *s.Bucket
12611}
12612
12613// SetIfMatch sets the IfMatch field's value.
12614func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
12615	s.IfMatch = &v
12616	return s
12617}
12618
12619// SetIfModifiedSince sets the IfModifiedSince field's value.
12620func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
12621	s.IfModifiedSince = &v
12622	return s
12623}
12624
12625// SetIfNoneMatch sets the IfNoneMatch field's value.
12626func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
12627	s.IfNoneMatch = &v
12628	return s
12629}
12630
12631// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
12632func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
12633	s.IfUnmodifiedSince = &v
12634	return s
12635}
12636
12637// SetKey sets the Key field's value.
12638func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
12639	s.Key = &v
12640	return s
12641}
12642
12643// SetPartNumber sets the PartNumber field's value.
12644func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
12645	s.PartNumber = &v
12646	return s
12647}
12648
12649// SetRange sets the Range field's value.
12650func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
12651	s.Range = &v
12652	return s
12653}
12654
12655// SetRequestPayer sets the RequestPayer field's value.
12656func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
12657	s.RequestPayer = &v
12658	return s
12659}
12660
12661// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12662func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
12663	s.SSECustomerAlgorithm = &v
12664	return s
12665}
12666
12667// SetSSECustomerKey sets the SSECustomerKey field's value.
12668func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
12669	s.SSECustomerKey = &v
12670	return s
12671}
12672
12673func (s *HeadObjectInput) getSSECustomerKey() (v string) {
12674	if s.SSECustomerKey == nil {
12675		return v
12676	}
12677	return *s.SSECustomerKey
12678}
12679
12680// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12681func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
12682	s.SSECustomerKeyMD5 = &v
12683	return s
12684}
12685
12686// SetVersionId sets the VersionId field's value.
12687func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
12688	s.VersionId = &v
12689	return s
12690}
12691
12692type HeadObjectOutput struct {
12693	_ struct{} `type:"structure"`
12694
12695	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
12696
12697	// Specifies caching behavior along the request/reply chain.
12698	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
12699
12700	// Specifies presentational information for the object.
12701	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
12702
12703	// Specifies what content encodings have been applied to the object and thus
12704	// what decoding mechanisms must be applied to obtain the media-type referenced
12705	// by the Content-Type header field.
12706	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
12707
12708	// The language the content is in.
12709	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
12710
12711	// Size of the body in bytes.
12712	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
12713
12714	// A standard MIME type describing the format of the object data.
12715	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
12716
12717	// Specifies whether the object retrieved was (true) or was not (false) a Delete
12718	// Marker. If false, this response header does not appear in the response.
12719	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
12720
12721	// An ETag is an opaque identifier assigned by a web server to a specific version
12722	// of a resource found at a URL
12723	ETag *string `location:"header" locationName:"ETag" type:"string"`
12724
12725	// If the object expiration is configured (see PUT Bucket lifecycle), the response
12726	// includes this header. It includes the expiry-date and rule-id key value pairs
12727	// providing object expiration information. The value of the rule-id is URL
12728	// encoded.
12729	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
12730
12731	// The date and time at which the object is no longer cacheable.
12732	Expires *string `location:"header" locationName:"Expires" type:"string"`
12733
12734	// Last modified date of the object
12735	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
12736
12737	// A map of metadata to store with the object in S3.
12738	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
12739
12740	// This is set to the number of metadata entries not returned in x-amz-meta
12741	// headers. This can happen if you create metadata using an API like SOAP that
12742	// supports more flexible metadata than the REST API. For example, using SOAP,
12743	// you can create metadata whose values are not legal HTTP headers.
12744	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
12745
12746	// The count of parts this object has.
12747	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
12748
12749	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
12750
12751	// If present, indicates that the requester was successfully charged for the
12752	// request.
12753	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12754
12755	// Provides information about object restoration operation and expiration time
12756	// of the restored object copy.
12757	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
12758
12759	// If server-side encryption with a customer-provided encryption key was requested,
12760	// the response will include this header confirming the encryption algorithm
12761	// used.
12762	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12763
12764	// If server-side encryption with a customer-provided encryption key was requested,
12765	// the response will include this header to provide round trip message integrity
12766	// verification of the customer-provided encryption key.
12767	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12768
12769	// If present, specifies the ID of the AWS Key Management Service (KMS) master
12770	// encryption key that was used for the object.
12771	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
12772
12773	// The Server-side encryption algorithm used when storing this object in S3
12774	// (e.g., AES256, aws:kms).
12775	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12776
12777	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
12778
12779	// Version of the object.
12780	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
12781
12782	// If the bucket is configured as a website, redirects requests for this object
12783	// to another object in the same bucket or to an external URL. Amazon S3 stores
12784	// the value of this header in the object metadata.
12785	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
12786}
12787
12788// String returns the string representation
12789func (s HeadObjectOutput) String() string {
12790	return awsutil.Prettify(s)
12791}
12792
12793// GoString returns the string representation
12794func (s HeadObjectOutput) GoString() string {
12795	return s.String()
12796}
12797
12798// SetAcceptRanges sets the AcceptRanges field's value.
12799func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
12800	s.AcceptRanges = &v
12801	return s
12802}
12803
12804// SetCacheControl sets the CacheControl field's value.
12805func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
12806	s.CacheControl = &v
12807	return s
12808}
12809
12810// SetContentDisposition sets the ContentDisposition field's value.
12811func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
12812	s.ContentDisposition = &v
12813	return s
12814}
12815
12816// SetContentEncoding sets the ContentEncoding field's value.
12817func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
12818	s.ContentEncoding = &v
12819	return s
12820}
12821
12822// SetContentLanguage sets the ContentLanguage field's value.
12823func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
12824	s.ContentLanguage = &v
12825	return s
12826}
12827
12828// SetContentLength sets the ContentLength field's value.
12829func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
12830	s.ContentLength = &v
12831	return s
12832}
12833
12834// SetContentType sets the ContentType field's value.
12835func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
12836	s.ContentType = &v
12837	return s
12838}
12839
12840// SetDeleteMarker sets the DeleteMarker field's value.
12841func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
12842	s.DeleteMarker = &v
12843	return s
12844}
12845
12846// SetETag sets the ETag field's value.
12847func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
12848	s.ETag = &v
12849	return s
12850}
12851
12852// SetExpiration sets the Expiration field's value.
12853func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
12854	s.Expiration = &v
12855	return s
12856}
12857
12858// SetExpires sets the Expires field's value.
12859func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
12860	s.Expires = &v
12861	return s
12862}
12863
12864// SetLastModified sets the LastModified field's value.
12865func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
12866	s.LastModified = &v
12867	return s
12868}
12869
12870// SetMetadata sets the Metadata field's value.
12871func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
12872	s.Metadata = v
12873	return s
12874}
12875
12876// SetMissingMeta sets the MissingMeta field's value.
12877func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
12878	s.MissingMeta = &v
12879	return s
12880}
12881
12882// SetPartsCount sets the PartsCount field's value.
12883func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
12884	s.PartsCount = &v
12885	return s
12886}
12887
12888// SetReplicationStatus sets the ReplicationStatus field's value.
12889func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
12890	s.ReplicationStatus = &v
12891	return s
12892}
12893
12894// SetRequestCharged sets the RequestCharged field's value.
12895func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
12896	s.RequestCharged = &v
12897	return s
12898}
12899
12900// SetRestore sets the Restore field's value.
12901func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
12902	s.Restore = &v
12903	return s
12904}
12905
12906// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12907func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
12908	s.SSECustomerAlgorithm = &v
12909	return s
12910}
12911
12912// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12913func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
12914	s.SSECustomerKeyMD5 = &v
12915	return s
12916}
12917
12918// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12919func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
12920	s.SSEKMSKeyId = &v
12921	return s
12922}
12923
12924// SetServerSideEncryption sets the ServerSideEncryption field's value.
12925func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
12926	s.ServerSideEncryption = &v
12927	return s
12928}
12929
12930// SetStorageClass sets the StorageClass field's value.
12931func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
12932	s.StorageClass = &v
12933	return s
12934}
12935
12936// SetVersionId sets the VersionId field's value.
12937func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
12938	s.VersionId = &v
12939	return s
12940}
12941
12942// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
12943func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
12944	s.WebsiteRedirectLocation = &v
12945	return s
12946}
12947
12948type IndexDocument struct {
12949	_ struct{} `type:"structure"`
12950
12951	// A suffix that is appended to a request that is for a directory on the website
12952	// endpoint (e.g. if the suffix is index.html and you make a request to samplebucket/images/
12953	// the data that is returned will be for the object with the key name images/index.html)
12954	// The suffix must not be empty and must not include a slash character.
12955	//
12956	// Suffix is a required field
12957	Suffix *string `type:"string" required:"true"`
12958}
12959
12960// String returns the string representation
12961func (s IndexDocument) String() string {
12962	return awsutil.Prettify(s)
12963}
12964
12965// GoString returns the string representation
12966func (s IndexDocument) GoString() string {
12967	return s.String()
12968}
12969
12970// Validate inspects the fields of the type to determine if they are valid.
12971func (s *IndexDocument) Validate() error {
12972	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
12973	if s.Suffix == nil {
12974		invalidParams.Add(request.NewErrParamRequired("Suffix"))
12975	}
12976
12977	if invalidParams.Len() > 0 {
12978		return invalidParams
12979	}
12980	return nil
12981}
12982
12983// SetSuffix sets the Suffix field's value.
12984func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
12985	s.Suffix = &v
12986	return s
12987}
12988
12989type Initiator struct {
12990	_ struct{} `type:"structure"`
12991
12992	// Name of the Principal.
12993	DisplayName *string `type:"string"`
12994
12995	// If the principal is an AWS account, it provides the Canonical User ID. If
12996	// the principal is an IAM User, it provides a user ARN value.
12997	ID *string `type:"string"`
12998}
12999
13000// String returns the string representation
13001func (s Initiator) String() string {
13002	return awsutil.Prettify(s)
13003}
13004
13005// GoString returns the string representation
13006func (s Initiator) GoString() string {
13007	return s.String()
13008}
13009
13010// SetDisplayName sets the DisplayName field's value.
13011func (s *Initiator) SetDisplayName(v string) *Initiator {
13012	s.DisplayName = &v
13013	return s
13014}
13015
13016// SetID sets the ID field's value.
13017func (s *Initiator) SetID(v string) *Initiator {
13018	s.ID = &v
13019	return s
13020}
13021
13022// Describes the serialization format of the object.
13023type InputSerialization struct {
13024	_ struct{} `type:"structure"`
13025
13026	// Describes the serialization of a CSV-encoded object.
13027	CSV *CSVInput `type:"structure"`
13028
13029	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
13030	// Value: NONE.
13031	CompressionType *string `type:"string" enum:"CompressionType"`
13032
13033	// Specifies JSON as object's input serialization format.
13034	JSON *JSONInput `type:"structure"`
13035}
13036
13037// String returns the string representation
13038func (s InputSerialization) String() string {
13039	return awsutil.Prettify(s)
13040}
13041
13042// GoString returns the string representation
13043func (s InputSerialization) GoString() string {
13044	return s.String()
13045}
13046
13047// SetCSV sets the CSV field's value.
13048func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
13049	s.CSV = v
13050	return s
13051}
13052
13053// SetCompressionType sets the CompressionType field's value.
13054func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
13055	s.CompressionType = &v
13056	return s
13057}
13058
13059// SetJSON sets the JSON field's value.
13060func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
13061	s.JSON = v
13062	return s
13063}
13064
13065type InventoryConfiguration struct {
13066	_ struct{} `type:"structure"`
13067
13068	// Contains information about where to publish the inventory results.
13069	//
13070	// Destination is a required field
13071	Destination *InventoryDestination `type:"structure" required:"true"`
13072
13073	// Specifies an inventory filter. The inventory only includes objects that meet
13074	// the filter's criteria.
13075	Filter *InventoryFilter `type:"structure"`
13076
13077	// The ID used to identify the inventory configuration.
13078	//
13079	// Id is a required field
13080	Id *string `type:"string" required:"true"`
13081
13082	// Specifies which object version(s) to included in the inventory results.
13083	//
13084	// IncludedObjectVersions is a required field
13085	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
13086
13087	// Specifies whether the inventory is enabled or disabled.
13088	//
13089	// IsEnabled is a required field
13090	IsEnabled *bool `type:"boolean" required:"true"`
13091
13092	// Contains the optional fields that are included in the inventory results.
13093	OptionalFields []*string `locationNameList:"Field" type:"list"`
13094
13095	// Specifies the schedule for generating inventory results.
13096	//
13097	// Schedule is a required field
13098	Schedule *InventorySchedule `type:"structure" required:"true"`
13099}
13100
13101// String returns the string representation
13102func (s InventoryConfiguration) String() string {
13103	return awsutil.Prettify(s)
13104}
13105
13106// GoString returns the string representation
13107func (s InventoryConfiguration) GoString() string {
13108	return s.String()
13109}
13110
13111// Validate inspects the fields of the type to determine if they are valid.
13112func (s *InventoryConfiguration) Validate() error {
13113	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
13114	if s.Destination == nil {
13115		invalidParams.Add(request.NewErrParamRequired("Destination"))
13116	}
13117	if s.Id == nil {
13118		invalidParams.Add(request.NewErrParamRequired("Id"))
13119	}
13120	if s.IncludedObjectVersions == nil {
13121		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
13122	}
13123	if s.IsEnabled == nil {
13124		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
13125	}
13126	if s.Schedule == nil {
13127		invalidParams.Add(request.NewErrParamRequired("Schedule"))
13128	}
13129	if s.Destination != nil {
13130		if err := s.Destination.Validate(); err != nil {
13131			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
13132		}
13133	}
13134	if s.Filter != nil {
13135		if err := s.Filter.Validate(); err != nil {
13136			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
13137		}
13138	}
13139	if s.Schedule != nil {
13140		if err := s.Schedule.Validate(); err != nil {
13141			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
13142		}
13143	}
13144
13145	if invalidParams.Len() > 0 {
13146		return invalidParams
13147	}
13148	return nil
13149}
13150
13151// SetDestination sets the Destination field's value.
13152func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
13153	s.Destination = v
13154	return s
13155}
13156
13157// SetFilter sets the Filter field's value.
13158func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
13159	s.Filter = v
13160	return s
13161}
13162
13163// SetId sets the Id field's value.
13164func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
13165	s.Id = &v
13166	return s
13167}
13168
13169// SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
13170func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
13171	s.IncludedObjectVersions = &v
13172	return s
13173}
13174
13175// SetIsEnabled sets the IsEnabled field's value.
13176func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
13177	s.IsEnabled = &v
13178	return s
13179}
13180
13181// SetOptionalFields sets the OptionalFields field's value.
13182func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
13183	s.OptionalFields = v
13184	return s
13185}
13186
13187// SetSchedule sets the Schedule field's value.
13188func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
13189	s.Schedule = v
13190	return s
13191}
13192
13193type InventoryDestination struct {
13194	_ struct{} `type:"structure"`
13195
13196	// Contains the bucket name, file format, bucket owner (optional), and prefix
13197	// (optional) where inventory results are published.
13198	//
13199	// S3BucketDestination is a required field
13200	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
13201}
13202
13203// String returns the string representation
13204func (s InventoryDestination) String() string {
13205	return awsutil.Prettify(s)
13206}
13207
13208// GoString returns the string representation
13209func (s InventoryDestination) GoString() string {
13210	return s.String()
13211}
13212
13213// Validate inspects the fields of the type to determine if they are valid.
13214func (s *InventoryDestination) Validate() error {
13215	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
13216	if s.S3BucketDestination == nil {
13217		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
13218	}
13219	if s.S3BucketDestination != nil {
13220		if err := s.S3BucketDestination.Validate(); err != nil {
13221			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
13222		}
13223	}
13224
13225	if invalidParams.Len() > 0 {
13226		return invalidParams
13227	}
13228	return nil
13229}
13230
13231// SetS3BucketDestination sets the S3BucketDestination field's value.
13232func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
13233	s.S3BucketDestination = v
13234	return s
13235}
13236
13237// Contains the type of server-side encryption used to encrypt the inventory
13238// results.
13239type InventoryEncryption struct {
13240	_ struct{} `type:"structure"`
13241
13242	// Specifies the use of SSE-KMS to encrypt delievered Inventory reports.
13243	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
13244
13245	// Specifies the use of SSE-S3 to encrypt delievered Inventory reports.
13246	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
13247}
13248
13249// String returns the string representation
13250func (s InventoryEncryption) String() string {
13251	return awsutil.Prettify(s)
13252}
13253
13254// GoString returns the string representation
13255func (s InventoryEncryption) GoString() string {
13256	return s.String()
13257}
13258
13259// Validate inspects the fields of the type to determine if they are valid.
13260func (s *InventoryEncryption) Validate() error {
13261	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
13262	if s.SSEKMS != nil {
13263		if err := s.SSEKMS.Validate(); err != nil {
13264			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
13265		}
13266	}
13267
13268	if invalidParams.Len() > 0 {
13269		return invalidParams
13270	}
13271	return nil
13272}
13273
13274// SetSSEKMS sets the SSEKMS field's value.
13275func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
13276	s.SSEKMS = v
13277	return s
13278}
13279
13280// SetSSES3 sets the SSES3 field's value.
13281func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
13282	s.SSES3 = v
13283	return s
13284}
13285
13286type InventoryFilter struct {
13287	_ struct{} `type:"structure"`
13288
13289	// The prefix that an object must have to be included in the inventory results.
13290	//
13291	// Prefix is a required field
13292	Prefix *string `type:"string" required:"true"`
13293}
13294
13295// String returns the string representation
13296func (s InventoryFilter) String() string {
13297	return awsutil.Prettify(s)
13298}
13299
13300// GoString returns the string representation
13301func (s InventoryFilter) GoString() string {
13302	return s.String()
13303}
13304
13305// Validate inspects the fields of the type to determine if they are valid.
13306func (s *InventoryFilter) Validate() error {
13307	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
13308	if s.Prefix == nil {
13309		invalidParams.Add(request.NewErrParamRequired("Prefix"))
13310	}
13311
13312	if invalidParams.Len() > 0 {
13313		return invalidParams
13314	}
13315	return nil
13316}
13317
13318// SetPrefix sets the Prefix field's value.
13319func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
13320	s.Prefix = &v
13321	return s
13322}
13323
13324type InventoryS3BucketDestination struct {
13325	_ struct{} `type:"structure"`
13326
13327	// The ID of the account that owns the destination bucket.
13328	AccountId *string `type:"string"`
13329
13330	// The Amazon resource name (ARN) of the bucket where inventory results will
13331	// be published.
13332	//
13333	// Bucket is a required field
13334	Bucket *string `type:"string" required:"true"`
13335
13336	// Contains the type of server-side encryption used to encrypt the inventory
13337	// results.
13338	Encryption *InventoryEncryption `type:"structure"`
13339
13340	// Specifies the output format of the inventory results.
13341	//
13342	// Format is a required field
13343	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
13344
13345	// The prefix that is prepended to all inventory results.
13346	Prefix *string `type:"string"`
13347}
13348
13349// String returns the string representation
13350func (s InventoryS3BucketDestination) String() string {
13351	return awsutil.Prettify(s)
13352}
13353
13354// GoString returns the string representation
13355func (s InventoryS3BucketDestination) GoString() string {
13356	return s.String()
13357}
13358
13359// Validate inspects the fields of the type to determine if they are valid.
13360func (s *InventoryS3BucketDestination) Validate() error {
13361	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
13362	if s.Bucket == nil {
13363		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13364	}
13365	if s.Format == nil {
13366		invalidParams.Add(request.NewErrParamRequired("Format"))
13367	}
13368	if s.Encryption != nil {
13369		if err := s.Encryption.Validate(); err != nil {
13370			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
13371		}
13372	}
13373
13374	if invalidParams.Len() > 0 {
13375		return invalidParams
13376	}
13377	return nil
13378}
13379
13380// SetAccountId sets the AccountId field's value.
13381func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
13382	s.AccountId = &v
13383	return s
13384}
13385
13386// SetBucket sets the Bucket field's value.
13387func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
13388	s.Bucket = &v
13389	return s
13390}
13391
13392func (s *InventoryS3BucketDestination) getBucket() (v string) {
13393	if s.Bucket == nil {
13394		return v
13395	}
13396	return *s.Bucket
13397}
13398
13399// SetEncryption sets the Encryption field's value.
13400func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
13401	s.Encryption = v
13402	return s
13403}
13404
13405// SetFormat sets the Format field's value.
13406func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
13407	s.Format = &v
13408	return s
13409}
13410
13411// SetPrefix sets the Prefix field's value.
13412func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
13413	s.Prefix = &v
13414	return s
13415}
13416
13417type InventorySchedule struct {
13418	_ struct{} `type:"structure"`
13419
13420	// Specifies how frequently inventory results are produced.
13421	//
13422	// Frequency is a required field
13423	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
13424}
13425
13426// String returns the string representation
13427func (s InventorySchedule) String() string {
13428	return awsutil.Prettify(s)
13429}
13430
13431// GoString returns the string representation
13432func (s InventorySchedule) GoString() string {
13433	return s.String()
13434}
13435
13436// Validate inspects the fields of the type to determine if they are valid.
13437func (s *InventorySchedule) Validate() error {
13438	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
13439	if s.Frequency == nil {
13440		invalidParams.Add(request.NewErrParamRequired("Frequency"))
13441	}
13442
13443	if invalidParams.Len() > 0 {
13444		return invalidParams
13445	}
13446	return nil
13447}
13448
13449// SetFrequency sets the Frequency field's value.
13450func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
13451	s.Frequency = &v
13452	return s
13453}
13454
13455type JSONInput struct {
13456	_ struct{} `type:"structure"`
13457
13458	// The type of JSON. Valid values: Document, Lines.
13459	Type *string `type:"string" enum:"JSONType"`
13460}
13461
13462// String returns the string representation
13463func (s JSONInput) String() string {
13464	return awsutil.Prettify(s)
13465}
13466
13467// GoString returns the string representation
13468func (s JSONInput) GoString() string {
13469	return s.String()
13470}
13471
13472// SetType sets the Type field's value.
13473func (s *JSONInput) SetType(v string) *JSONInput {
13474	s.Type = &v
13475	return s
13476}
13477
13478type JSONOutput struct {
13479	_ struct{} `type:"structure"`
13480
13481	// The value used to separate individual records in the output.
13482	RecordDelimiter *string `type:"string"`
13483}
13484
13485// String returns the string representation
13486func (s JSONOutput) String() string {
13487	return awsutil.Prettify(s)
13488}
13489
13490// GoString returns the string representation
13491func (s JSONOutput) GoString() string {
13492	return s.String()
13493}
13494
13495// SetRecordDelimiter sets the RecordDelimiter field's value.
13496func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
13497	s.RecordDelimiter = &v
13498	return s
13499}
13500
13501// Container for object key name prefix and suffix filtering rules.
13502type KeyFilter struct {
13503	_ struct{} `type:"structure"`
13504
13505	// A list of containers for key value pair that defines the criteria for the
13506	// filter rule.
13507	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
13508}
13509
13510// String returns the string representation
13511func (s KeyFilter) String() string {
13512	return awsutil.Prettify(s)
13513}
13514
13515// GoString returns the string representation
13516func (s KeyFilter) GoString() string {
13517	return s.String()
13518}
13519
13520// SetFilterRules sets the FilterRules field's value.
13521func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
13522	s.FilterRules = v
13523	return s
13524}
13525
13526// Container for specifying the AWS Lambda notification configuration.
13527type LambdaFunctionConfiguration struct {
13528	_ struct{} `type:"structure"`
13529
13530	// Events is a required field
13531	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
13532
13533	// Container for object key name filtering rules. For information about key
13534	// name filtering, go to Configuring Event Notifications (http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
13535	// in the Amazon Simple Storage Service Developer Guide.
13536	Filter *NotificationConfigurationFilter `type:"structure"`
13537
13538	// Optional unique identifier for configurations in a notification configuration.
13539	// If you don't provide one, Amazon S3 will assign an ID.
13540	Id *string `type:"string"`
13541
13542	// Lambda cloud function ARN that Amazon S3 can invoke when it detects events
13543	// of the specified type.
13544	//
13545	// LambdaFunctionArn is a required field
13546	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
13547}
13548
13549// String returns the string representation
13550func (s LambdaFunctionConfiguration) String() string {
13551	return awsutil.Prettify(s)
13552}
13553
13554// GoString returns the string representation
13555func (s LambdaFunctionConfiguration) GoString() string {
13556	return s.String()
13557}
13558
13559// Validate inspects the fields of the type to determine if they are valid.
13560func (s *LambdaFunctionConfiguration) Validate() error {
13561	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
13562	if s.Events == nil {
13563		invalidParams.Add(request.NewErrParamRequired("Events"))
13564	}
13565	if s.LambdaFunctionArn == nil {
13566		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
13567	}
13568
13569	if invalidParams.Len() > 0 {
13570		return invalidParams
13571	}
13572	return nil
13573}
13574
13575// SetEvents sets the Events field's value.
13576func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
13577	s.Events = v
13578	return s
13579}
13580
13581// SetFilter sets the Filter field's value.
13582func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
13583	s.Filter = v
13584	return s
13585}
13586
13587// SetId sets the Id field's value.
13588func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
13589	s.Id = &v
13590	return s
13591}
13592
13593// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
13594func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
13595	s.LambdaFunctionArn = &v
13596	return s
13597}
13598
13599type LifecycleConfiguration struct {
13600	_ struct{} `type:"structure"`
13601
13602	// Rules is a required field
13603	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
13604}
13605
13606// String returns the string representation
13607func (s LifecycleConfiguration) String() string {
13608	return awsutil.Prettify(s)
13609}
13610
13611// GoString returns the string representation
13612func (s LifecycleConfiguration) GoString() string {
13613	return s.String()
13614}
13615
13616// Validate inspects the fields of the type to determine if they are valid.
13617func (s *LifecycleConfiguration) Validate() error {
13618	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
13619	if s.Rules == nil {
13620		invalidParams.Add(request.NewErrParamRequired("Rules"))
13621	}
13622	if s.Rules != nil {
13623		for i, v := range s.Rules {
13624			if v == nil {
13625				continue
13626			}
13627			if err := v.Validate(); err != nil {
13628				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
13629			}
13630		}
13631	}
13632
13633	if invalidParams.Len() > 0 {
13634		return invalidParams
13635	}
13636	return nil
13637}
13638
13639// SetRules sets the Rules field's value.
13640func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
13641	s.Rules = v
13642	return s
13643}
13644
13645type LifecycleExpiration struct {
13646	_ struct{} `type:"structure"`
13647
13648	// Indicates at what date the object is to be moved or deleted. Should be in
13649	// GMT ISO 8601 Format.
13650	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
13651
13652	// Indicates the lifetime, in days, of the objects that are subject to the rule.
13653	// The value must be a non-zero positive integer.
13654	Days *int64 `type:"integer"`
13655
13656	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
13657	// versions. If set to true, the delete marker will be expired; if set to false
13658	// the policy takes no action. This cannot be specified with Days or Date in
13659	// a Lifecycle Expiration Policy.
13660	ExpiredObjectDeleteMarker *bool `type:"boolean"`
13661}
13662
13663// String returns the string representation
13664func (s LifecycleExpiration) String() string {
13665	return awsutil.Prettify(s)
13666}
13667
13668// GoString returns the string representation
13669func (s LifecycleExpiration) GoString() string {
13670	return s.String()
13671}
13672
13673// SetDate sets the Date field's value.
13674func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
13675	s.Date = &v
13676	return s
13677}
13678
13679// SetDays sets the Days field's value.
13680func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
13681	s.Days = &v
13682	return s
13683}
13684
13685// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
13686func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
13687	s.ExpiredObjectDeleteMarker = &v
13688	return s
13689}
13690
13691type LifecycleRule struct {
13692	_ struct{} `type:"structure"`
13693
13694	// Specifies the days since the initiation of an Incomplete Multipart Upload
13695	// that Lifecycle will wait before permanently removing all parts of the upload.
13696	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
13697
13698	Expiration *LifecycleExpiration `type:"structure"`
13699
13700	// The Filter is used to identify objects that a Lifecycle Rule applies to.
13701	// A Filter must have exactly one of Prefix, Tag, or And specified.
13702	Filter *LifecycleRuleFilter `type:"structure"`
13703
13704	// Unique identifier for the rule. The value cannot be longer than 255 characters.
13705	ID *string `type:"string"`
13706
13707	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
13708	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
13709	// configuration action on a bucket that has versioning enabled (or suspended)
13710	// to request that Amazon S3 delete noncurrent object versions at a specific
13711	// period in the object's lifetime.
13712	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
13713
13714	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
13715
13716	// Prefix identifying one or more objects to which the rule applies. This is
13717	// deprecated; use Filter instead.
13718	Prefix *string `deprecated:"true" type:"string"`
13719
13720	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
13721	// is not currently being applied.
13722	//
13723	// Status is a required field
13724	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
13725
13726	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
13727}
13728
13729// String returns the string representation
13730func (s LifecycleRule) String() string {
13731	return awsutil.Prettify(s)
13732}
13733
13734// GoString returns the string representation
13735func (s LifecycleRule) GoString() string {
13736	return s.String()
13737}
13738
13739// Validate inspects the fields of the type to determine if they are valid.
13740func (s *LifecycleRule) Validate() error {
13741	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
13742	if s.Status == nil {
13743		invalidParams.Add(request.NewErrParamRequired("Status"))
13744	}
13745	if s.Filter != nil {
13746		if err := s.Filter.Validate(); err != nil {
13747			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
13748		}
13749	}
13750
13751	if invalidParams.Len() > 0 {
13752		return invalidParams
13753	}
13754	return nil
13755}
13756
13757// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
13758func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
13759	s.AbortIncompleteMultipartUpload = v
13760	return s
13761}
13762
13763// SetExpiration sets the Expiration field's value.
13764func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
13765	s.Expiration = v
13766	return s
13767}
13768
13769// SetFilter sets the Filter field's value.
13770func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
13771	s.Filter = v
13772	return s
13773}
13774
13775// SetID sets the ID field's value.
13776func (s *LifecycleRule) SetID(v string) *LifecycleRule {
13777	s.ID = &v
13778	return s
13779}
13780
13781// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
13782func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
13783	s.NoncurrentVersionExpiration = v
13784	return s
13785}
13786
13787// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
13788func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
13789	s.NoncurrentVersionTransitions = v
13790	return s
13791}
13792
13793// SetPrefix sets the Prefix field's value.
13794func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
13795	s.Prefix = &v
13796	return s
13797}
13798
13799// SetStatus sets the Status field's value.
13800func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
13801	s.Status = &v
13802	return s
13803}
13804
13805// SetTransitions sets the Transitions field's value.
13806func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
13807	s.Transitions = v
13808	return s
13809}
13810
13811// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
13812// more predicates. The Lifecycle Rule will apply to any object matching all
13813// of the predicates configured inside the And operator.
13814type LifecycleRuleAndOperator struct {
13815	_ struct{} `type:"structure"`
13816
13817	Prefix *string `type:"string"`
13818
13819	// All of these tags must exist in the object's tag set in order for the rule
13820	// to apply.
13821	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
13822}
13823
13824// String returns the string representation
13825func (s LifecycleRuleAndOperator) String() string {
13826	return awsutil.Prettify(s)
13827}
13828
13829// GoString returns the string representation
13830func (s LifecycleRuleAndOperator) GoString() string {
13831	return s.String()
13832}
13833
13834// Validate inspects the fields of the type to determine if they are valid.
13835func (s *LifecycleRuleAndOperator) Validate() error {
13836	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
13837	if s.Tags != nil {
13838		for i, v := range s.Tags {
13839			if v == nil {
13840				continue
13841			}
13842			if err := v.Validate(); err != nil {
13843				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
13844			}
13845		}
13846	}
13847
13848	if invalidParams.Len() > 0 {
13849		return invalidParams
13850	}
13851	return nil
13852}
13853
13854// SetPrefix sets the Prefix field's value.
13855func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
13856	s.Prefix = &v
13857	return s
13858}
13859
13860// SetTags sets the Tags field's value.
13861func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
13862	s.Tags = v
13863	return s
13864}
13865
13866// The Filter is used to identify objects that a Lifecycle Rule applies to.
13867// A Filter must have exactly one of Prefix, Tag, or And specified.
13868type LifecycleRuleFilter struct {
13869	_ struct{} `type:"structure"`
13870
13871	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
13872	// more predicates. The Lifecycle Rule will apply to any object matching all
13873	// of the predicates configured inside the And operator.
13874	And *LifecycleRuleAndOperator `type:"structure"`
13875
13876	// Prefix identifying one or more objects to which the rule applies.
13877	Prefix *string `type:"string"`
13878
13879	// This tag must exist in the object's tag set in order for the rule to apply.
13880	Tag *Tag `type:"structure"`
13881}
13882
13883// String returns the string representation
13884func (s LifecycleRuleFilter) String() string {
13885	return awsutil.Prettify(s)
13886}
13887
13888// GoString returns the string representation
13889func (s LifecycleRuleFilter) GoString() string {
13890	return s.String()
13891}
13892
13893// Validate inspects the fields of the type to determine if they are valid.
13894func (s *LifecycleRuleFilter) Validate() error {
13895	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
13896	if s.And != nil {
13897		if err := s.And.Validate(); err != nil {
13898			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
13899		}
13900	}
13901	if s.Tag != nil {
13902		if err := s.Tag.Validate(); err != nil {
13903			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
13904		}
13905	}
13906
13907	if invalidParams.Len() > 0 {
13908		return invalidParams
13909	}
13910	return nil
13911}
13912
13913// SetAnd sets the And field's value.
13914func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
13915	s.And = v
13916	return s
13917}
13918
13919// SetPrefix sets the Prefix field's value.
13920func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
13921	s.Prefix = &v
13922	return s
13923}
13924
13925// SetTag sets the Tag field's value.
13926func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
13927	s.Tag = v
13928	return s
13929}
13930
13931type ListBucketAnalyticsConfigurationsInput struct {
13932	_ struct{} `type:"structure"`
13933
13934	// The name of the bucket from which analytics configurations are retrieved.
13935	//
13936	// Bucket is a required field
13937	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13938
13939	// The ContinuationToken that represents a placeholder from where this request
13940	// should begin.
13941	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
13942}
13943
13944// String returns the string representation
13945func (s ListBucketAnalyticsConfigurationsInput) String() string {
13946	return awsutil.Prettify(s)
13947}
13948
13949// GoString returns the string representation
13950func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
13951	return s.String()
13952}
13953
13954// Validate inspects the fields of the type to determine if they are valid.
13955func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
13956	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
13957	if s.Bucket == nil {
13958		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13959	}
13960
13961	if invalidParams.Len() > 0 {
13962		return invalidParams
13963	}
13964	return nil
13965}
13966
13967// SetBucket sets the Bucket field's value.
13968func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
13969	s.Bucket = &v
13970	return s
13971}
13972
13973func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
13974	if s.Bucket == nil {
13975		return v
13976	}
13977	return *s.Bucket
13978}
13979
13980// SetContinuationToken sets the ContinuationToken field's value.
13981func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
13982	s.ContinuationToken = &v
13983	return s
13984}
13985
13986type ListBucketAnalyticsConfigurationsOutput struct {
13987	_ struct{} `type:"structure"`
13988
13989	// The list of analytics configurations for a bucket.
13990	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
13991
13992	// The ContinuationToken that represents where this request began.
13993	ContinuationToken *string `type:"string"`
13994
13995	// Indicates whether the returned list of analytics configurations is complete.
13996	// A value of true indicates that the list is not complete and the NextContinuationToken
13997	// will be provided for a subsequent request.
13998	IsTruncated *bool `type:"boolean"`
13999
14000	// NextContinuationToken is sent when isTruncated is true, which indicates that
14001	// there are more analytics configurations to list. The next request must include
14002	// this NextContinuationToken. The token is obfuscated and is not a usable value.
14003	NextContinuationToken *string `type:"string"`
14004}
14005
14006// String returns the string representation
14007func (s ListBucketAnalyticsConfigurationsOutput) String() string {
14008	return awsutil.Prettify(s)
14009}
14010
14011// GoString returns the string representation
14012func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
14013	return s.String()
14014}
14015
14016// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
14017func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
14018	s.AnalyticsConfigurationList = v
14019	return s
14020}
14021
14022// SetContinuationToken sets the ContinuationToken field's value.
14023func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
14024	s.ContinuationToken = &v
14025	return s
14026}
14027
14028// SetIsTruncated sets the IsTruncated field's value.
14029func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
14030	s.IsTruncated = &v
14031	return s
14032}
14033
14034// SetNextContinuationToken sets the NextContinuationToken field's value.
14035func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
14036	s.NextContinuationToken = &v
14037	return s
14038}
14039
14040type ListBucketInventoryConfigurationsInput struct {
14041	_ struct{} `type:"structure"`
14042
14043	// The name of the bucket containing the inventory configurations to retrieve.
14044	//
14045	// Bucket is a required field
14046	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14047
14048	// The marker used to continue an inventory configuration listing that has been
14049	// truncated. Use the NextContinuationToken from a previously truncated list
14050	// response to continue the listing. The continuation token is an opaque value
14051	// that Amazon S3 understands.
14052	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
14053}
14054
14055// String returns the string representation
14056func (s ListBucketInventoryConfigurationsInput) String() string {
14057	return awsutil.Prettify(s)
14058}
14059
14060// GoString returns the string representation
14061func (s ListBucketInventoryConfigurationsInput) GoString() string {
14062	return s.String()
14063}
14064
14065// Validate inspects the fields of the type to determine if they are valid.
14066func (s *ListBucketInventoryConfigurationsInput) Validate() error {
14067	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
14068	if s.Bucket == nil {
14069		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14070	}
14071
14072	if invalidParams.Len() > 0 {
14073		return invalidParams
14074	}
14075	return nil
14076}
14077
14078// SetBucket sets the Bucket field's value.
14079func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
14080	s.Bucket = &v
14081	return s
14082}
14083
14084func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
14085	if s.Bucket == nil {
14086		return v
14087	}
14088	return *s.Bucket
14089}
14090
14091// SetContinuationToken sets the ContinuationToken field's value.
14092func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
14093	s.ContinuationToken = &v
14094	return s
14095}
14096
14097type ListBucketInventoryConfigurationsOutput struct {
14098	_ struct{} `type:"structure"`
14099
14100	// If sent in the request, the marker that is used as a starting point for this
14101	// inventory configuration list response.
14102	ContinuationToken *string `type:"string"`
14103
14104	// The list of inventory configurations for a bucket.
14105	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
14106
14107	// Indicates whether the returned list of inventory configurations is truncated
14108	// in this response. A value of true indicates that the list is truncated.
14109	IsTruncated *bool `type:"boolean"`
14110
14111	// The marker used to continue this inventory configuration listing. Use the
14112	// NextContinuationToken from this response to continue the listing in a subsequent
14113	// request. The continuation token is an opaque value that Amazon S3 understands.
14114	NextContinuationToken *string `type:"string"`
14115}
14116
14117// String returns the string representation
14118func (s ListBucketInventoryConfigurationsOutput) String() string {
14119	return awsutil.Prettify(s)
14120}
14121
14122// GoString returns the string representation
14123func (s ListBucketInventoryConfigurationsOutput) GoString() string {
14124	return s.String()
14125}
14126
14127// SetContinuationToken sets the ContinuationToken field's value.
14128func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
14129	s.ContinuationToken = &v
14130	return s
14131}
14132
14133// SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
14134func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
14135	s.InventoryConfigurationList = v
14136	return s
14137}
14138
14139// SetIsTruncated sets the IsTruncated field's value.
14140func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
14141	s.IsTruncated = &v
14142	return s
14143}
14144
14145// SetNextContinuationToken sets the NextContinuationToken field's value.
14146func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
14147	s.NextContinuationToken = &v
14148	return s
14149}
14150
14151type ListBucketMetricsConfigurationsInput struct {
14152	_ struct{} `type:"structure"`
14153
14154	// The name of the bucket containing the metrics configurations to retrieve.
14155	//
14156	// Bucket is a required field
14157	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14158
14159	// The marker that is used to continue a metrics configuration listing that
14160	// has been truncated. Use the NextContinuationToken from a previously truncated
14161	// list response to continue the listing. The continuation token is an opaque
14162	// value that Amazon S3 understands.
14163	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
14164}
14165
14166// String returns the string representation
14167func (s ListBucketMetricsConfigurationsInput) String() string {
14168	return awsutil.Prettify(s)
14169}
14170
14171// GoString returns the string representation
14172func (s ListBucketMetricsConfigurationsInput) GoString() string {
14173	return s.String()
14174}
14175
14176// Validate inspects the fields of the type to determine if they are valid.
14177func (s *ListBucketMetricsConfigurationsInput) Validate() error {
14178	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
14179	if s.Bucket == nil {
14180		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14181	}
14182
14183	if invalidParams.Len() > 0 {
14184		return invalidParams
14185	}
14186	return nil
14187}
14188
14189// SetBucket sets the Bucket field's value.
14190func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
14191	s.Bucket = &v
14192	return s
14193}
14194
14195func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
14196	if s.Bucket == nil {
14197		return v
14198	}
14199	return *s.Bucket
14200}
14201
14202// SetContinuationToken sets the ContinuationToken field's value.
14203func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
14204	s.ContinuationToken = &v
14205	return s
14206}
14207
14208type ListBucketMetricsConfigurationsOutput struct {
14209	_ struct{} `type:"structure"`
14210
14211	// The marker that is used as a starting point for this metrics configuration
14212	// list response. This value is present if it was sent in the request.
14213	ContinuationToken *string `type:"string"`
14214
14215	// Indicates whether the returned list of metrics configurations is complete.
14216	// A value of true indicates that the list is not complete and the NextContinuationToken
14217	// will be provided for a subsequent request.
14218	IsTruncated *bool `type:"boolean"`
14219
14220	// The list of metrics configurations for a bucket.
14221	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
14222
14223	// The marker used to continue a metrics configuration listing that has been
14224	// truncated. Use the NextContinuationToken from a previously truncated list
14225	// response to continue the listing. The continuation token is an opaque value
14226	// that Amazon S3 understands.
14227	NextContinuationToken *string `type:"string"`
14228}
14229
14230// String returns the string representation
14231func (s ListBucketMetricsConfigurationsOutput) String() string {
14232	return awsutil.Prettify(s)
14233}
14234
14235// GoString returns the string representation
14236func (s ListBucketMetricsConfigurationsOutput) GoString() string {
14237	return s.String()
14238}
14239
14240// SetContinuationToken sets the ContinuationToken field's value.
14241func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
14242	s.ContinuationToken = &v
14243	return s
14244}
14245
14246// SetIsTruncated sets the IsTruncated field's value.
14247func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
14248	s.IsTruncated = &v
14249	return s
14250}
14251
14252// SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
14253func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
14254	s.MetricsConfigurationList = v
14255	return s
14256}
14257
14258// SetNextContinuationToken sets the NextContinuationToken field's value.
14259func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
14260	s.NextContinuationToken = &v
14261	return s
14262}
14263
14264type ListBucketsInput struct {
14265	_ struct{} `type:"structure"`
14266}
14267
14268// String returns the string representation
14269func (s ListBucketsInput) String() string {
14270	return awsutil.Prettify(s)
14271}
14272
14273// GoString returns the string representation
14274func (s ListBucketsInput) GoString() string {
14275	return s.String()
14276}
14277
14278type ListBucketsOutput struct {
14279	_ struct{} `type:"structure"`
14280
14281	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
14282
14283	Owner *Owner `type:"structure"`
14284}
14285
14286// String returns the string representation
14287func (s ListBucketsOutput) String() string {
14288	return awsutil.Prettify(s)
14289}
14290
14291// GoString returns the string representation
14292func (s ListBucketsOutput) GoString() string {
14293	return s.String()
14294}
14295
14296// SetBuckets sets the Buckets field's value.
14297func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
14298	s.Buckets = v
14299	return s
14300}
14301
14302// SetOwner sets the Owner field's value.
14303func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
14304	s.Owner = v
14305	return s
14306}
14307
14308type ListMultipartUploadsInput struct {
14309	_ struct{} `type:"structure"`
14310
14311	// Bucket is a required field
14312	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14313
14314	// Character you use to group keys.
14315	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
14316
14317	// Requests Amazon S3 to encode the object keys in the response and specifies
14318	// the encoding method to use. An object key may contain any Unicode character;
14319	// however, XML 1.0 parser cannot parse some characters, such as characters
14320	// with an ASCII value from 0 to 10. For characters that are not supported in
14321	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
14322	// keys in the response.
14323	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
14324
14325	// Together with upload-id-marker, this parameter specifies the multipart upload
14326	// after which listing should begin.
14327	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
14328
14329	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
14330	// in the response body. 1,000 is the maximum number of uploads that can be
14331	// returned in a response.
14332	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
14333
14334	// Lists in-progress uploads only for those keys that begin with the specified
14335	// prefix.
14336	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
14337
14338	// Together with key-marker, specifies the multipart upload after which listing
14339	// should begin. If key-marker is not specified, the upload-id-marker parameter
14340	// is ignored.
14341	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
14342}
14343
14344// String returns the string representation
14345func (s ListMultipartUploadsInput) String() string {
14346	return awsutil.Prettify(s)
14347}
14348
14349// GoString returns the string representation
14350func (s ListMultipartUploadsInput) GoString() string {
14351	return s.String()
14352}
14353
14354// Validate inspects the fields of the type to determine if they are valid.
14355func (s *ListMultipartUploadsInput) Validate() error {
14356	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
14357	if s.Bucket == nil {
14358		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14359	}
14360
14361	if invalidParams.Len() > 0 {
14362		return invalidParams
14363	}
14364	return nil
14365}
14366
14367// SetBucket sets the Bucket field's value.
14368func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
14369	s.Bucket = &v
14370	return s
14371}
14372
14373func (s *ListMultipartUploadsInput) getBucket() (v string) {
14374	if s.Bucket == nil {
14375		return v
14376	}
14377	return *s.Bucket
14378}
14379
14380// SetDelimiter sets the Delimiter field's value.
14381func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
14382	s.Delimiter = &v
14383	return s
14384}
14385
14386// SetEncodingType sets the EncodingType field's value.
14387func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
14388	s.EncodingType = &v
14389	return s
14390}
14391
14392// SetKeyMarker sets the KeyMarker field's value.
14393func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
14394	s.KeyMarker = &v
14395	return s
14396}
14397
14398// SetMaxUploads sets the MaxUploads field's value.
14399func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
14400	s.MaxUploads = &v
14401	return s
14402}
14403
14404// SetPrefix sets the Prefix field's value.
14405func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
14406	s.Prefix = &v
14407	return s
14408}
14409
14410// SetUploadIdMarker sets the UploadIdMarker field's value.
14411func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
14412	s.UploadIdMarker = &v
14413	return s
14414}
14415
14416type ListMultipartUploadsOutput struct {
14417	_ struct{} `type:"structure"`
14418
14419	// Name of the bucket to which the multipart upload was initiated.
14420	Bucket *string `type:"string"`
14421
14422	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
14423
14424	Delimiter *string `type:"string"`
14425
14426	// Encoding type used by Amazon S3 to encode object keys in the response.
14427	EncodingType *string `type:"string" enum:"EncodingType"`
14428
14429	// Indicates whether the returned list of multipart uploads is truncated. A
14430	// value of true indicates that the list was truncated. The list can be truncated
14431	// if the number of multipart uploads exceeds the limit allowed or specified
14432	// by max uploads.
14433	IsTruncated *bool `type:"boolean"`
14434
14435	// The key at or after which the listing began.
14436	KeyMarker *string `type:"string"`
14437
14438	// Maximum number of multipart uploads that could have been included in the
14439	// response.
14440	MaxUploads *int64 `type:"integer"`
14441
14442	// When a list is truncated, this element specifies the value that should be
14443	// used for the key-marker request parameter in a subsequent request.
14444	NextKeyMarker *string `type:"string"`
14445
14446	// When a list is truncated, this element specifies the value that should be
14447	// used for the upload-id-marker request parameter in a subsequent request.
14448	NextUploadIdMarker *string `type:"string"`
14449
14450	// When a prefix is provided in the request, this field contains the specified
14451	// prefix. The result contains only keys starting with the specified prefix.
14452	Prefix *string `type:"string"`
14453
14454	// Upload ID after which listing began.
14455	UploadIdMarker *string `type:"string"`
14456
14457	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
14458}
14459
14460// String returns the string representation
14461func (s ListMultipartUploadsOutput) String() string {
14462	return awsutil.Prettify(s)
14463}
14464
14465// GoString returns the string representation
14466func (s ListMultipartUploadsOutput) GoString() string {
14467	return s.String()
14468}
14469
14470// SetBucket sets the Bucket field's value.
14471func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
14472	s.Bucket = &v
14473	return s
14474}
14475
14476func (s *ListMultipartUploadsOutput) getBucket() (v string) {
14477	if s.Bucket == nil {
14478		return v
14479	}
14480	return *s.Bucket
14481}
14482
14483// SetCommonPrefixes sets the CommonPrefixes field's value.
14484func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
14485	s.CommonPrefixes = v
14486	return s
14487}
14488
14489// SetDelimiter sets the Delimiter field's value.
14490func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
14491	s.Delimiter = &v
14492	return s
14493}
14494
14495// SetEncodingType sets the EncodingType field's value.
14496func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
14497	s.EncodingType = &v
14498	return s
14499}
14500
14501// SetIsTruncated sets the IsTruncated field's value.
14502func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
14503	s.IsTruncated = &v
14504	return s
14505}
14506
14507// SetKeyMarker sets the KeyMarker field's value.
14508func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
14509	s.KeyMarker = &v
14510	return s
14511}
14512
14513// SetMaxUploads sets the MaxUploads field's value.
14514func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
14515	s.MaxUploads = &v
14516	return s
14517}
14518
14519// SetNextKeyMarker sets the NextKeyMarker field's value.
14520func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
14521	s.NextKeyMarker = &v
14522	return s
14523}
14524
14525// SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
14526func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
14527	s.NextUploadIdMarker = &v
14528	return s
14529}
14530
14531// SetPrefix sets the Prefix field's value.
14532func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
14533	s.Prefix = &v
14534	return s
14535}
14536
14537// SetUploadIdMarker sets the UploadIdMarker field's value.
14538func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
14539	s.UploadIdMarker = &v
14540	return s
14541}
14542
14543// SetUploads sets the Uploads field's value.
14544func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
14545	s.Uploads = v
14546	return s
14547}
14548
14549type ListObjectVersionsInput struct {
14550	_ struct{} `type:"structure"`
14551
14552	// Bucket is a required field
14553	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14554
14555	// A delimiter is a character you use to group keys.
14556	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
14557
14558	// Requests Amazon S3 to encode the object keys in the response and specifies
14559	// the encoding method to use. An object key may contain any Unicode character;
14560	// however, XML 1.0 parser cannot parse some characters, such as characters
14561	// with an ASCII value from 0 to 10. For characters that are not supported in
14562	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
14563	// keys in the response.
14564	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
14565
14566	// Specifies the key to start with when listing objects in a bucket.
14567	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
14568
14569	// Sets the maximum number of keys returned in the response. The response might
14570	// contain fewer keys but will never contain more.
14571	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
14572
14573	// Limits the response to keys that begin with the specified prefix.
14574	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
14575
14576	// Specifies the object version you want to start listing from.
14577	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
14578}
14579
14580// String returns the string representation
14581func (s ListObjectVersionsInput) String() string {
14582	return awsutil.Prettify(s)
14583}
14584
14585// GoString returns the string representation
14586func (s ListObjectVersionsInput) GoString() string {
14587	return s.String()
14588}
14589
14590// Validate inspects the fields of the type to determine if they are valid.
14591func (s *ListObjectVersionsInput) Validate() error {
14592	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
14593	if s.Bucket == nil {
14594		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14595	}
14596
14597	if invalidParams.Len() > 0 {
14598		return invalidParams
14599	}
14600	return nil
14601}
14602
14603// SetBucket sets the Bucket field's value.
14604func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
14605	s.Bucket = &v
14606	return s
14607}
14608
14609func (s *ListObjectVersionsInput) getBucket() (v string) {
14610	if s.Bucket == nil {
14611		return v
14612	}
14613	return *s.Bucket
14614}
14615
14616// SetDelimiter sets the Delimiter field's value.
14617func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
14618	s.Delimiter = &v
14619	return s
14620}
14621
14622// SetEncodingType sets the EncodingType field's value.
14623func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
14624	s.EncodingType = &v
14625	return s
14626}
14627
14628// SetKeyMarker sets the KeyMarker field's value.
14629func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
14630	s.KeyMarker = &v
14631	return s
14632}
14633
14634// SetMaxKeys sets the MaxKeys field's value.
14635func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
14636	s.MaxKeys = &v
14637	return s
14638}
14639
14640// SetPrefix sets the Prefix field's value.
14641func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
14642	s.Prefix = &v
14643	return s
14644}
14645
14646// SetVersionIdMarker sets the VersionIdMarker field's value.
14647func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
14648	s.VersionIdMarker = &v
14649	return s
14650}
14651
14652type ListObjectVersionsOutput struct {
14653	_ struct{} `type:"structure"`
14654
14655	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
14656
14657	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
14658
14659	Delimiter *string `type:"string"`
14660
14661	// Encoding type used by Amazon S3 to encode object keys in the response.
14662	EncodingType *string `type:"string" enum:"EncodingType"`
14663
14664	// A flag that indicates whether or not Amazon S3 returned all of the results
14665	// that satisfied the search criteria. If your results were truncated, you can
14666	// make a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
14667	// response parameters as a starting place in another request to return the
14668	// rest of the results.
14669	IsTruncated *bool `type:"boolean"`
14670
14671	// Marks the last Key returned in a truncated response.
14672	KeyMarker *string `type:"string"`
14673
14674	MaxKeys *int64 `type:"integer"`
14675
14676	Name *string `type:"string"`
14677
14678	// Use this value for the key marker request parameter in a subsequent request.
14679	NextKeyMarker *string `type:"string"`
14680
14681	// Use this value for the next version id marker parameter in a subsequent request.
14682	NextVersionIdMarker *string `type:"string"`
14683
14684	Prefix *string `type:"string"`
14685
14686	VersionIdMarker *string `type:"string"`
14687
14688	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
14689}
14690
14691// String returns the string representation
14692func (s ListObjectVersionsOutput) String() string {
14693	return awsutil.Prettify(s)
14694}
14695
14696// GoString returns the string representation
14697func (s ListObjectVersionsOutput) GoString() string {
14698	return s.String()
14699}
14700
14701// SetCommonPrefixes sets the CommonPrefixes field's value.
14702func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
14703	s.CommonPrefixes = v
14704	return s
14705}
14706
14707// SetDeleteMarkers sets the DeleteMarkers field's value.
14708func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
14709	s.DeleteMarkers = v
14710	return s
14711}
14712
14713// SetDelimiter sets the Delimiter field's value.
14714func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
14715	s.Delimiter = &v
14716	return s
14717}
14718
14719// SetEncodingType sets the EncodingType field's value.
14720func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
14721	s.EncodingType = &v
14722	return s
14723}
14724
14725// SetIsTruncated sets the IsTruncated field's value.
14726func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
14727	s.IsTruncated = &v
14728	return s
14729}
14730
14731// SetKeyMarker sets the KeyMarker field's value.
14732func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
14733	s.KeyMarker = &v
14734	return s
14735}
14736
14737// SetMaxKeys sets the MaxKeys field's value.
14738func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
14739	s.MaxKeys = &v
14740	return s
14741}
14742
14743// SetName sets the Name field's value.
14744func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
14745	s.Name = &v
14746	return s
14747}
14748
14749// SetNextKeyMarker sets the NextKeyMarker field's value.
14750func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
14751	s.NextKeyMarker = &v
14752	return s
14753}
14754
14755// SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
14756func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
14757	s.NextVersionIdMarker = &v
14758	return s
14759}
14760
14761// SetPrefix sets the Prefix field's value.
14762func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
14763	s.Prefix = &v
14764	return s
14765}
14766
14767// SetVersionIdMarker sets the VersionIdMarker field's value.
14768func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
14769	s.VersionIdMarker = &v
14770	return s
14771}
14772
14773// SetVersions sets the Versions field's value.
14774func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
14775	s.Versions = v
14776	return s
14777}
14778
14779type ListObjectsInput struct {
14780	_ struct{} `type:"structure"`
14781
14782	// Bucket is a required field
14783	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14784
14785	// A delimiter is a character you use to group keys.
14786	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
14787
14788	// Requests Amazon S3 to encode the object keys in the response and specifies
14789	// the encoding method to use. An object key may contain any Unicode character;
14790	// however, XML 1.0 parser cannot parse some characters, such as characters
14791	// with an ASCII value from 0 to 10. For characters that are not supported in
14792	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
14793	// keys in the response.
14794	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
14795
14796	// Specifies the key to start with when listing objects in a bucket.
14797	Marker *string `location:"querystring" locationName:"marker" type:"string"`
14798
14799	// Sets the maximum number of keys returned in the response. The response might
14800	// contain fewer keys but will never contain more.
14801	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
14802
14803	// Limits the response to keys that begin with the specified prefix.
14804	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
14805
14806	// Confirms that the requester knows that she or he will be charged for the
14807	// list objects request. Bucket owners need not specify this parameter in their
14808	// requests.
14809	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
14810}
14811
14812// String returns the string representation
14813func (s ListObjectsInput) String() string {
14814	return awsutil.Prettify(s)
14815}
14816
14817// GoString returns the string representation
14818func (s ListObjectsInput) GoString() string {
14819	return s.String()
14820}
14821
14822// Validate inspects the fields of the type to determine if they are valid.
14823func (s *ListObjectsInput) Validate() error {
14824	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
14825	if s.Bucket == nil {
14826		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14827	}
14828
14829	if invalidParams.Len() > 0 {
14830		return invalidParams
14831	}
14832	return nil
14833}
14834
14835// SetBucket sets the Bucket field's value.
14836func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
14837	s.Bucket = &v
14838	return s
14839}
14840
14841func (s *ListObjectsInput) getBucket() (v string) {
14842	if s.Bucket == nil {
14843		return v
14844	}
14845	return *s.Bucket
14846}
14847
14848// SetDelimiter sets the Delimiter field's value.
14849func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
14850	s.Delimiter = &v
14851	return s
14852}
14853
14854// SetEncodingType sets the EncodingType field's value.
14855func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
14856	s.EncodingType = &v
14857	return s
14858}
14859
14860// SetMarker sets the Marker field's value.
14861func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
14862	s.Marker = &v
14863	return s
14864}
14865
14866// SetMaxKeys sets the MaxKeys field's value.
14867func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
14868	s.MaxKeys = &v
14869	return s
14870}
14871
14872// SetPrefix sets the Prefix field's value.
14873func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
14874	s.Prefix = &v
14875	return s
14876}
14877
14878// SetRequestPayer sets the RequestPayer field's value.
14879func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
14880	s.RequestPayer = &v
14881	return s
14882}
14883
14884type ListObjectsOutput struct {
14885	_ struct{} `type:"structure"`
14886
14887	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
14888
14889	Contents []*Object `type:"list" flattened:"true"`
14890
14891	Delimiter *string `type:"string"`
14892
14893	// Encoding type used by Amazon S3 to encode object keys in the response.
14894	EncodingType *string `type:"string" enum:"EncodingType"`
14895
14896	// A flag that indicates whether or not Amazon S3 returned all of the results
14897	// that satisfied the search criteria.
14898	IsTruncated *bool `type:"boolean"`
14899
14900	Marker *string `type:"string"`
14901
14902	MaxKeys *int64 `type:"integer"`
14903
14904	Name *string `type:"string"`
14905
14906	// When response is truncated (the IsTruncated element value in the response
14907	// is true), you can use the key name in this field as marker in the subsequent
14908	// request to get next set of objects. Amazon S3 lists objects in alphabetical
14909	// order Note: This element is returned only if you have delimiter request parameter
14910	// specified. If response does not include the NextMaker and it is truncated,
14911	// you can use the value of the last Key in the response as the marker in the
14912	// subsequent request to get the next set of object keys.
14913	NextMarker *string `type:"string"`
14914
14915	Prefix *string `type:"string"`
14916}
14917
14918// String returns the string representation
14919func (s ListObjectsOutput) String() string {
14920	return awsutil.Prettify(s)
14921}
14922
14923// GoString returns the string representation
14924func (s ListObjectsOutput) GoString() string {
14925	return s.String()
14926}
14927
14928// SetCommonPrefixes sets the CommonPrefixes field's value.
14929func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
14930	s.CommonPrefixes = v
14931	return s
14932}
14933
14934// SetContents sets the Contents field's value.
14935func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
14936	s.Contents = v
14937	return s
14938}
14939
14940// SetDelimiter sets the Delimiter field's value.
14941func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
14942	s.Delimiter = &v
14943	return s
14944}
14945
14946// SetEncodingType sets the EncodingType field's value.
14947func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
14948	s.EncodingType = &v
14949	return s
14950}
14951
14952// SetIsTruncated sets the IsTruncated field's value.
14953func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
14954	s.IsTruncated = &v
14955	return s
14956}
14957
14958// SetMarker sets the Marker field's value.
14959func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
14960	s.Marker = &v
14961	return s
14962}
14963
14964// SetMaxKeys sets the MaxKeys field's value.
14965func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
14966	s.MaxKeys = &v
14967	return s
14968}
14969
14970// SetName sets the Name field's value.
14971func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
14972	s.Name = &v
14973	return s
14974}
14975
14976// SetNextMarker sets the NextMarker field's value.
14977func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
14978	s.NextMarker = &v
14979	return s
14980}
14981
14982// SetPrefix sets the Prefix field's value.
14983func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
14984	s.Prefix = &v
14985	return s
14986}
14987
14988type ListObjectsV2Input struct {
14989	_ struct{} `type:"structure"`
14990
14991	// Name of the bucket to list.
14992	//
14993	// Bucket is a required field
14994	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14995
14996	// ContinuationToken indicates Amazon S3 that the list is being continued on
14997	// this bucket with a token. ContinuationToken is obfuscated and is not a real
14998	// key
14999	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
15000
15001	// A delimiter is a character you use to group keys.
15002	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
15003
15004	// Encoding type used by Amazon S3 to encode object keys in the response.
15005	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
15006
15007	// The owner field is not present in listV2 by default, if you want to return
15008	// owner field with each key in the result then set the fetch owner field to
15009	// true
15010	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
15011
15012	// Sets the maximum number of keys returned in the response. The response might
15013	// contain fewer keys but will never contain more.
15014	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
15015
15016	// Limits the response to keys that begin with the specified prefix.
15017	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
15018
15019	// Confirms that the requester knows that she or he will be charged for the
15020	// list objects request in V2 style. Bucket owners need not specify this parameter
15021	// in their requests.
15022	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
15023
15024	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
15025	// listing after this specified key. StartAfter can be any key in the bucket
15026	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
15027}
15028
15029// String returns the string representation
15030func (s ListObjectsV2Input) String() string {
15031	return awsutil.Prettify(s)
15032}
15033
15034// GoString returns the string representation
15035func (s ListObjectsV2Input) GoString() string {
15036	return s.String()
15037}
15038
15039// Validate inspects the fields of the type to determine if they are valid.
15040func (s *ListObjectsV2Input) Validate() error {
15041	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
15042	if s.Bucket == nil {
15043		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15044	}
15045
15046	if invalidParams.Len() > 0 {
15047		return invalidParams
15048	}
15049	return nil
15050}
15051
15052// SetBucket sets the Bucket field's value.
15053func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
15054	s.Bucket = &v
15055	return s
15056}
15057
15058func (s *ListObjectsV2Input) getBucket() (v string) {
15059	if s.Bucket == nil {
15060		return v
15061	}
15062	return *s.Bucket
15063}
15064
15065// SetContinuationToken sets the ContinuationToken field's value.
15066func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
15067	s.ContinuationToken = &v
15068	return s
15069}
15070
15071// SetDelimiter sets the Delimiter field's value.
15072func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
15073	s.Delimiter = &v
15074	return s
15075}
15076
15077// SetEncodingType sets the EncodingType field's value.
15078func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
15079	s.EncodingType = &v
15080	return s
15081}
15082
15083// SetFetchOwner sets the FetchOwner field's value.
15084func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
15085	s.FetchOwner = &v
15086	return s
15087}
15088
15089// SetMaxKeys sets the MaxKeys field's value.
15090func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
15091	s.MaxKeys = &v
15092	return s
15093}
15094
15095// SetPrefix sets the Prefix field's value.
15096func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
15097	s.Prefix = &v
15098	return s
15099}
15100
15101// SetRequestPayer sets the RequestPayer field's value.
15102func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
15103	s.RequestPayer = &v
15104	return s
15105}
15106
15107// SetStartAfter sets the StartAfter field's value.
15108func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
15109	s.StartAfter = &v
15110	return s
15111}
15112
15113type ListObjectsV2Output struct {
15114	_ struct{} `type:"structure"`
15115
15116	// CommonPrefixes contains all (if there are any) keys between Prefix and the
15117	// next occurrence of the string specified by delimiter
15118	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
15119
15120	// Metadata about each object returned.
15121	Contents []*Object `type:"list" flattened:"true"`
15122
15123	// ContinuationToken indicates Amazon S3 that the list is being continued on
15124	// this bucket with a token. ContinuationToken is obfuscated and is not a real
15125	// key
15126	ContinuationToken *string `type:"string"`
15127
15128	// A delimiter is a character you use to group keys.
15129	Delimiter *string `type:"string"`
15130
15131	// Encoding type used by Amazon S3 to encode object keys in the response.
15132	EncodingType *string `type:"string" enum:"EncodingType"`
15133
15134	// A flag that indicates whether or not Amazon S3 returned all of the results
15135	// that satisfied the search criteria.
15136	IsTruncated *bool `type:"boolean"`
15137
15138	// KeyCount is the number of keys returned with this request. KeyCount will
15139	// always be less than equals to MaxKeys field. Say you ask for 50 keys, your
15140	// result will include less than equals 50 keys
15141	KeyCount *int64 `type:"integer"`
15142
15143	// Sets the maximum number of keys returned in the response. The response might
15144	// contain fewer keys but will never contain more.
15145	MaxKeys *int64 `type:"integer"`
15146
15147	// Name of the bucket to list.
15148	Name *string `type:"string"`
15149
15150	// NextContinuationToken is sent when isTruncated is true which means there
15151	// are more keys in the bucket that can be listed. The next list requests to
15152	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
15153	// is obfuscated and is not a real key
15154	NextContinuationToken *string `type:"string"`
15155
15156	// Limits the response to keys that begin with the specified prefix.
15157	Prefix *string `type:"string"`
15158
15159	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
15160	// listing after this specified key. StartAfter can be any key in the bucket
15161	StartAfter *string `type:"string"`
15162}
15163
15164// String returns the string representation
15165func (s ListObjectsV2Output) String() string {
15166	return awsutil.Prettify(s)
15167}
15168
15169// GoString returns the string representation
15170func (s ListObjectsV2Output) GoString() string {
15171	return s.String()
15172}
15173
15174// SetCommonPrefixes sets the CommonPrefixes field's value.
15175func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
15176	s.CommonPrefixes = v
15177	return s
15178}
15179
15180// SetContents sets the Contents field's value.
15181func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
15182	s.Contents = v
15183	return s
15184}
15185
15186// SetContinuationToken sets the ContinuationToken field's value.
15187func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
15188	s.ContinuationToken = &v
15189	return s
15190}
15191
15192// SetDelimiter sets the Delimiter field's value.
15193func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
15194	s.Delimiter = &v
15195	return s
15196}
15197
15198// SetEncodingType sets the EncodingType field's value.
15199func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
15200	s.EncodingType = &v
15201	return s
15202}
15203
15204// SetIsTruncated sets the IsTruncated field's value.
15205func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
15206	s.IsTruncated = &v
15207	return s
15208}
15209
15210// SetKeyCount sets the KeyCount field's value.
15211func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
15212	s.KeyCount = &v
15213	return s
15214}
15215
15216// SetMaxKeys sets the MaxKeys field's value.
15217func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
15218	s.MaxKeys = &v
15219	return s
15220}
15221
15222// SetName sets the Name field's value.
15223func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
15224	s.Name = &v
15225	return s
15226}
15227
15228// SetNextContinuationToken sets the NextContinuationToken field's value.
15229func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
15230	s.NextContinuationToken = &v
15231	return s
15232}
15233
15234// SetPrefix sets the Prefix field's value.
15235func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
15236	s.Prefix = &v
15237	return s
15238}
15239
15240// SetStartAfter sets the StartAfter field's value.
15241func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
15242	s.StartAfter = &v
15243	return s
15244}
15245
15246type ListPartsInput struct {
15247	_ struct{} `type:"structure"`
15248
15249	// Bucket is a required field
15250	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15251
15252	// Key is a required field
15253	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
15254
15255	// Sets the maximum number of parts to return.
15256	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
15257
15258	// Specifies the part after which listing should begin. Only parts with higher
15259	// part numbers will be listed.
15260	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
15261
15262	// Confirms that the requester knows that she or he will be charged for the
15263	// request. Bucket owners need not specify this parameter in their requests.
15264	// Documentation on downloading objects from requester pays buckets can be found
15265	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
15266	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
15267
15268	// Upload ID identifying the multipart upload whose parts are being listed.
15269	//
15270	// UploadId is a required field
15271	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
15272}
15273
15274// String returns the string representation
15275func (s ListPartsInput) String() string {
15276	return awsutil.Prettify(s)
15277}
15278
15279// GoString returns the string representation
15280func (s ListPartsInput) GoString() string {
15281	return s.String()
15282}
15283
15284// Validate inspects the fields of the type to determine if they are valid.
15285func (s *ListPartsInput) Validate() error {
15286	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
15287	if s.Bucket == nil {
15288		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15289	}
15290	if s.Key == nil {
15291		invalidParams.Add(request.NewErrParamRequired("Key"))
15292	}
15293	if s.Key != nil && len(*s.Key) < 1 {
15294		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
15295	}
15296	if s.UploadId == nil {
15297		invalidParams.Add(request.NewErrParamRequired("UploadId"))
15298	}
15299
15300	if invalidParams.Len() > 0 {
15301		return invalidParams
15302	}
15303	return nil
15304}
15305
15306// SetBucket sets the Bucket field's value.
15307func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
15308	s.Bucket = &v
15309	return s
15310}
15311
15312func (s *ListPartsInput) getBucket() (v string) {
15313	if s.Bucket == nil {
15314		return v
15315	}
15316	return *s.Bucket
15317}
15318
15319// SetKey sets the Key field's value.
15320func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
15321	s.Key = &v
15322	return s
15323}
15324
15325// SetMaxParts sets the MaxParts field's value.
15326func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
15327	s.MaxParts = &v
15328	return s
15329}
15330
15331// SetPartNumberMarker sets the PartNumberMarker field's value.
15332func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
15333	s.PartNumberMarker = &v
15334	return s
15335}
15336
15337// SetRequestPayer sets the RequestPayer field's value.
15338func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
15339	s.RequestPayer = &v
15340	return s
15341}
15342
15343// SetUploadId sets the UploadId field's value.
15344func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
15345	s.UploadId = &v
15346	return s
15347}
15348
15349type ListPartsOutput struct {
15350	_ struct{} `type:"structure"`
15351
15352	// Date when multipart upload will become eligible for abort operation by lifecycle.
15353	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
15354
15355	// Id of the lifecycle rule that makes a multipart upload eligible for abort
15356	// operation.
15357	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
15358
15359	// Name of the bucket to which the multipart upload was initiated.
15360	Bucket *string `type:"string"`
15361
15362	// Identifies who initiated the multipart upload.
15363	Initiator *Initiator `type:"structure"`
15364
15365	// Indicates whether the returned list of parts is truncated.
15366	IsTruncated *bool `type:"boolean"`
15367
15368	// Object key for which the multipart upload was initiated.
15369	Key *string `min:"1" type:"string"`
15370
15371	// Maximum number of parts that were allowed in the response.
15372	MaxParts *int64 `type:"integer"`
15373
15374	// When a list is truncated, this element specifies the last part in the list,
15375	// as well as the value to use for the part-number-marker request parameter
15376	// in a subsequent request.
15377	NextPartNumberMarker *int64 `type:"integer"`
15378
15379	Owner *Owner `type:"structure"`
15380
15381	// Part number after which listing begins.
15382	PartNumberMarker *int64 `type:"integer"`
15383
15384	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
15385
15386	// If present, indicates that the requester was successfully charged for the
15387	// request.
15388	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
15389
15390	// The class of storage used to store the object.
15391	StorageClass *string `type:"string" enum:"StorageClass"`
15392
15393	// Upload ID identifying the multipart upload whose parts are being listed.
15394	UploadId *string `type:"string"`
15395}
15396
15397// String returns the string representation
15398func (s ListPartsOutput) String() string {
15399	return awsutil.Prettify(s)
15400}
15401
15402// GoString returns the string representation
15403func (s ListPartsOutput) GoString() string {
15404	return s.String()
15405}
15406
15407// SetAbortDate sets the AbortDate field's value.
15408func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
15409	s.AbortDate = &v
15410	return s
15411}
15412
15413// SetAbortRuleId sets the AbortRuleId field's value.
15414func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
15415	s.AbortRuleId = &v
15416	return s
15417}
15418
15419// SetBucket sets the Bucket field's value.
15420func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
15421	s.Bucket = &v
15422	return s
15423}
15424
15425func (s *ListPartsOutput) getBucket() (v string) {
15426	if s.Bucket == nil {
15427		return v
15428	}
15429	return *s.Bucket
15430}
15431
15432// SetInitiator sets the Initiator field's value.
15433func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
15434	s.Initiator = v
15435	return s
15436}
15437
15438// SetIsTruncated sets the IsTruncated field's value.
15439func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
15440	s.IsTruncated = &v
15441	return s
15442}
15443
15444// SetKey sets the Key field's value.
15445func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
15446	s.Key = &v
15447	return s
15448}
15449
15450// SetMaxParts sets the MaxParts field's value.
15451func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
15452	s.MaxParts = &v
15453	return s
15454}
15455
15456// SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
15457func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
15458	s.NextPartNumberMarker = &v
15459	return s
15460}
15461
15462// SetOwner sets the Owner field's value.
15463func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
15464	s.Owner = v
15465	return s
15466}
15467
15468// SetPartNumberMarker sets the PartNumberMarker field's value.
15469func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
15470	s.PartNumberMarker = &v
15471	return s
15472}
15473
15474// SetParts sets the Parts field's value.
15475func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
15476	s.Parts = v
15477	return s
15478}
15479
15480// SetRequestCharged sets the RequestCharged field's value.
15481func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
15482	s.RequestCharged = &v
15483	return s
15484}
15485
15486// SetStorageClass sets the StorageClass field's value.
15487func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
15488	s.StorageClass = &v
15489	return s
15490}
15491
15492// SetUploadId sets the UploadId field's value.
15493func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
15494	s.UploadId = &v
15495	return s
15496}
15497
15498// Describes an S3 location that will receive the results of the restore request.
15499type Location struct {
15500	_ struct{} `type:"structure"`
15501
15502	// A list of grants that control access to the staged results.
15503	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
15504
15505	// The name of the bucket where the restore results will be placed.
15506	//
15507	// BucketName is a required field
15508	BucketName *string `type:"string" required:"true"`
15509
15510	// The canned ACL to apply to the restore results.
15511	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
15512
15513	// Describes the server-side encryption that will be applied to the restore
15514	// results.
15515	Encryption *Encryption `type:"structure"`
15516
15517	// The prefix that is prepended to the restore results for this request.
15518	//
15519	// Prefix is a required field
15520	Prefix *string `type:"string" required:"true"`
15521
15522	// The class of storage used to store the restore results.
15523	StorageClass *string `type:"string" enum:"StorageClass"`
15524
15525	// The tag-set that is applied to the restore results.
15526	Tagging *Tagging `type:"structure"`
15527
15528	// A list of metadata to store with the restore results in S3.
15529	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
15530}
15531
15532// String returns the string representation
15533func (s Location) String() string {
15534	return awsutil.Prettify(s)
15535}
15536
15537// GoString returns the string representation
15538func (s Location) GoString() string {
15539	return s.String()
15540}
15541
15542// Validate inspects the fields of the type to determine if they are valid.
15543func (s *Location) Validate() error {
15544	invalidParams := request.ErrInvalidParams{Context: "Location"}
15545	if s.BucketName == nil {
15546		invalidParams.Add(request.NewErrParamRequired("BucketName"))
15547	}
15548	if s.Prefix == nil {
15549		invalidParams.Add(request.NewErrParamRequired("Prefix"))
15550	}
15551	if s.AccessControlList != nil {
15552		for i, v := range s.AccessControlList {
15553			if v == nil {
15554				continue
15555			}
15556			if err := v.Validate(); err != nil {
15557				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
15558			}
15559		}
15560	}
15561	if s.Encryption != nil {
15562		if err := s.Encryption.Validate(); err != nil {
15563			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
15564		}
15565	}
15566	if s.Tagging != nil {
15567		if err := s.Tagging.Validate(); err != nil {
15568			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
15569		}
15570	}
15571
15572	if invalidParams.Len() > 0 {
15573		return invalidParams
15574	}
15575	return nil
15576}
15577
15578// SetAccessControlList sets the AccessControlList field's value.
15579func (s *Location) SetAccessControlList(v []*Grant) *Location {
15580	s.AccessControlList = v
15581	return s
15582}
15583
15584// SetBucketName sets the BucketName field's value.
15585func (s *Location) SetBucketName(v string) *Location {
15586	s.BucketName = &v
15587	return s
15588}
15589
15590// SetCannedACL sets the CannedACL field's value.
15591func (s *Location) SetCannedACL(v string) *Location {
15592	s.CannedACL = &v
15593	return s
15594}
15595
15596// SetEncryption sets the Encryption field's value.
15597func (s *Location) SetEncryption(v *Encryption) *Location {
15598	s.Encryption = v
15599	return s
15600}
15601
15602// SetPrefix sets the Prefix field's value.
15603func (s *Location) SetPrefix(v string) *Location {
15604	s.Prefix = &v
15605	return s
15606}
15607
15608// SetStorageClass sets the StorageClass field's value.
15609func (s *Location) SetStorageClass(v string) *Location {
15610	s.StorageClass = &v
15611	return s
15612}
15613
15614// SetTagging sets the Tagging field's value.
15615func (s *Location) SetTagging(v *Tagging) *Location {
15616	s.Tagging = v
15617	return s
15618}
15619
15620// SetUserMetadata sets the UserMetadata field's value.
15621func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
15622	s.UserMetadata = v
15623	return s
15624}
15625
15626// Container for logging information. Presence of this element indicates that
15627// logging is enabled. Parameters TargetBucket and TargetPrefix are required
15628// in this case.
15629type LoggingEnabled struct {
15630	_ struct{} `type:"structure"`
15631
15632	// Specifies the bucket where you want Amazon S3 to store server access logs.
15633	// You can have your logs delivered to any bucket that you own, including the
15634	// same bucket that is being logged. You can also configure multiple buckets
15635	// to deliver their logs to the same target bucket. In this case you should
15636	// choose a different TargetPrefix for each source bucket so that the delivered
15637	// log files can be distinguished by key.
15638	//
15639	// TargetBucket is a required field
15640	TargetBucket *string `type:"string" required:"true"`
15641
15642	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
15643
15644	// This element lets you specify a prefix for the keys that the log files will
15645	// be stored under.
15646	//
15647	// TargetPrefix is a required field
15648	TargetPrefix *string `type:"string" required:"true"`
15649}
15650
15651// String returns the string representation
15652func (s LoggingEnabled) String() string {
15653	return awsutil.Prettify(s)
15654}
15655
15656// GoString returns the string representation
15657func (s LoggingEnabled) GoString() string {
15658	return s.String()
15659}
15660
15661// Validate inspects the fields of the type to determine if they are valid.
15662func (s *LoggingEnabled) Validate() error {
15663	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
15664	if s.TargetBucket == nil {
15665		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
15666	}
15667	if s.TargetPrefix == nil {
15668		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
15669	}
15670	if s.TargetGrants != nil {
15671		for i, v := range s.TargetGrants {
15672			if v == nil {
15673				continue
15674			}
15675			if err := v.Validate(); err != nil {
15676				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
15677			}
15678		}
15679	}
15680
15681	if invalidParams.Len() > 0 {
15682		return invalidParams
15683	}
15684	return nil
15685}
15686
15687// SetTargetBucket sets the TargetBucket field's value.
15688func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
15689	s.TargetBucket = &v
15690	return s
15691}
15692
15693// SetTargetGrants sets the TargetGrants field's value.
15694func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
15695	s.TargetGrants = v
15696	return s
15697}
15698
15699// SetTargetPrefix sets the TargetPrefix field's value.
15700func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
15701	s.TargetPrefix = &v
15702	return s
15703}
15704
15705// A metadata key-value pair to store with an object.
15706type MetadataEntry struct {
15707	_ struct{} `type:"structure"`
15708
15709	Name *string `type:"string"`
15710
15711	Value *string `type:"string"`
15712}
15713
15714// String returns the string representation
15715func (s MetadataEntry) String() string {
15716	return awsutil.Prettify(s)
15717}
15718
15719// GoString returns the string representation
15720func (s MetadataEntry) GoString() string {
15721	return s.String()
15722}
15723
15724// SetName sets the Name field's value.
15725func (s *MetadataEntry) SetName(v string) *MetadataEntry {
15726	s.Name = &v
15727	return s
15728}
15729
15730// SetValue sets the Value field's value.
15731func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
15732	s.Value = &v
15733	return s
15734}
15735
15736type MetricsAndOperator struct {
15737	_ struct{} `type:"structure"`
15738
15739	// The prefix used when evaluating an AND predicate.
15740	Prefix *string `type:"string"`
15741
15742	// The list of tags used when evaluating an AND predicate.
15743	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
15744}
15745
15746// String returns the string representation
15747func (s MetricsAndOperator) String() string {
15748	return awsutil.Prettify(s)
15749}
15750
15751// GoString returns the string representation
15752func (s MetricsAndOperator) GoString() string {
15753	return s.String()
15754}
15755
15756// Validate inspects the fields of the type to determine if they are valid.
15757func (s *MetricsAndOperator) Validate() error {
15758	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
15759	if s.Tags != nil {
15760		for i, v := range s.Tags {
15761			if v == nil {
15762				continue
15763			}
15764			if err := v.Validate(); err != nil {
15765				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
15766			}
15767		}
15768	}
15769
15770	if invalidParams.Len() > 0 {
15771		return invalidParams
15772	}
15773	return nil
15774}
15775
15776// SetPrefix sets the Prefix field's value.
15777func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
15778	s.Prefix = &v
15779	return s
15780}
15781
15782// SetTags sets the Tags field's value.
15783func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
15784	s.Tags = v
15785	return s
15786}
15787
15788type MetricsConfiguration struct {
15789	_ struct{} `type:"structure"`
15790
15791	// Specifies a metrics configuration filter. The metrics configuration will
15792	// only include objects that meet the filter's criteria. A filter must be a
15793	// prefix, a tag, or a conjunction (MetricsAndOperator).
15794	Filter *MetricsFilter `type:"structure"`
15795
15796	// The ID used to identify the metrics configuration.
15797	//
15798	// Id is a required field
15799	Id *string `type:"string" required:"true"`
15800}
15801
15802// String returns the string representation
15803func (s MetricsConfiguration) String() string {
15804	return awsutil.Prettify(s)
15805}
15806
15807// GoString returns the string representation
15808func (s MetricsConfiguration) GoString() string {
15809	return s.String()
15810}
15811
15812// Validate inspects the fields of the type to determine if they are valid.
15813func (s *MetricsConfiguration) Validate() error {
15814	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
15815	if s.Id == nil {
15816		invalidParams.Add(request.NewErrParamRequired("Id"))
15817	}
15818	if s.Filter != nil {
15819		if err := s.Filter.Validate(); err != nil {
15820			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
15821		}
15822	}
15823
15824	if invalidParams.Len() > 0 {
15825		return invalidParams
15826	}
15827	return nil
15828}
15829
15830// SetFilter sets the Filter field's value.
15831func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
15832	s.Filter = v
15833	return s
15834}
15835
15836// SetId sets the Id field's value.
15837func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
15838	s.Id = &v
15839	return s
15840}
15841
15842type MetricsFilter struct {
15843	_ struct{} `type:"structure"`
15844
15845	// A conjunction (logical AND) of predicates, which is used in evaluating a
15846	// metrics filter. The operator must have at least two predicates, and an object
15847	// must match all of the predicates in order for the filter to apply.
15848	And *MetricsAndOperator `type:"structure"`
15849
15850	// The prefix used when evaluating a metrics filter.
15851	Prefix *string `type:"string"`
15852
15853	// The tag used when evaluating a metrics filter.
15854	Tag *Tag `type:"structure"`
15855}
15856
15857// String returns the string representation
15858func (s MetricsFilter) String() string {
15859	return awsutil.Prettify(s)
15860}
15861
15862// GoString returns the string representation
15863func (s MetricsFilter) GoString() string {
15864	return s.String()
15865}
15866
15867// Validate inspects the fields of the type to determine if they are valid.
15868func (s *MetricsFilter) Validate() error {
15869	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
15870	if s.And != nil {
15871		if err := s.And.Validate(); err != nil {
15872			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
15873		}
15874	}
15875	if s.Tag != nil {
15876		if err := s.Tag.Validate(); err != nil {
15877			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
15878		}
15879	}
15880
15881	if invalidParams.Len() > 0 {
15882		return invalidParams
15883	}
15884	return nil
15885}
15886
15887// SetAnd sets the And field's value.
15888func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
15889	s.And = v
15890	return s
15891}
15892
15893// SetPrefix sets the Prefix field's value.
15894func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
15895	s.Prefix = &v
15896	return s
15897}
15898
15899// SetTag sets the Tag field's value.
15900func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
15901	s.Tag = v
15902	return s
15903}
15904
15905type MultipartUpload struct {
15906	_ struct{} `type:"structure"`
15907
15908	// Date and time at which the multipart upload was initiated.
15909	Initiated *time.Time `type:"timestamp"`
15910
15911	// Identifies who initiated the multipart upload.
15912	Initiator *Initiator `type:"structure"`
15913
15914	// Key of the object for which the multipart upload was initiated.
15915	Key *string `min:"1" type:"string"`
15916
15917	Owner *Owner `type:"structure"`
15918
15919	// The class of storage used to store the object.
15920	StorageClass *string `type:"string" enum:"StorageClass"`
15921
15922	// Upload ID that identifies the multipart upload.
15923	UploadId *string `type:"string"`
15924}
15925
15926// String returns the string representation
15927func (s MultipartUpload) String() string {
15928	return awsutil.Prettify(s)
15929}
15930
15931// GoString returns the string representation
15932func (s MultipartUpload) GoString() string {
15933	return s.String()
15934}
15935
15936// SetInitiated sets the Initiated field's value.
15937func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
15938	s.Initiated = &v
15939	return s
15940}
15941
15942// SetInitiator sets the Initiator field's value.
15943func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
15944	s.Initiator = v
15945	return s
15946}
15947
15948// SetKey sets the Key field's value.
15949func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
15950	s.Key = &v
15951	return s
15952}
15953
15954// SetOwner sets the Owner field's value.
15955func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
15956	s.Owner = v
15957	return s
15958}
15959
15960// SetStorageClass sets the StorageClass field's value.
15961func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
15962	s.StorageClass = &v
15963	return s
15964}
15965
15966// SetUploadId sets the UploadId field's value.
15967func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
15968	s.UploadId = &v
15969	return s
15970}
15971
15972// Specifies when noncurrent object versions expire. Upon expiration, Amazon
15973// S3 permanently deletes the noncurrent object versions. You set this lifecycle
15974// configuration action on a bucket that has versioning enabled (or suspended)
15975// to request that Amazon S3 delete noncurrent object versions at a specific
15976// period in the object's lifetime.
15977type NoncurrentVersionExpiration struct {
15978	_ struct{} `type:"structure"`
15979
15980	// Specifies the number of days an object is noncurrent before Amazon S3 can
15981	// perform the associated action. For information about the noncurrent days
15982	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
15983	// (http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) in
15984	// the Amazon Simple Storage Service Developer Guide.
15985	NoncurrentDays *int64 `type:"integer"`
15986}
15987
15988// String returns the string representation
15989func (s NoncurrentVersionExpiration) String() string {
15990	return awsutil.Prettify(s)
15991}
15992
15993// GoString returns the string representation
15994func (s NoncurrentVersionExpiration) GoString() string {
15995	return s.String()
15996}
15997
15998// SetNoncurrentDays sets the NoncurrentDays field's value.
15999func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
16000	s.NoncurrentDays = &v
16001	return s
16002}
16003
16004// Container for the transition rule that describes when noncurrent objects
16005// transition to the STANDARD_IA, ONEZONE_IA or GLACIER storage class. If your
16006// bucket is versioning-enabled (or versioning is suspended), you can set this
16007// action to request that Amazon S3 transition noncurrent object versions to
16008// the STANDARD_IA, ONEZONE_IA or GLACIER storage class at a specific period
16009// in the object's lifetime.
16010type NoncurrentVersionTransition struct {
16011	_ struct{} `type:"structure"`
16012
16013	// Specifies the number of days an object is noncurrent before Amazon S3 can
16014	// perform the associated action. For information about the noncurrent days
16015	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
16016	// (http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html) in
16017	// the Amazon Simple Storage Service Developer Guide.
16018	NoncurrentDays *int64 `type:"integer"`
16019
16020	// The class of storage used to store the object.
16021	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
16022}
16023
16024// String returns the string representation
16025func (s NoncurrentVersionTransition) String() string {
16026	return awsutil.Prettify(s)
16027}
16028
16029// GoString returns the string representation
16030func (s NoncurrentVersionTransition) GoString() string {
16031	return s.String()
16032}
16033
16034// SetNoncurrentDays sets the NoncurrentDays field's value.
16035func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
16036	s.NoncurrentDays = &v
16037	return s
16038}
16039
16040// SetStorageClass sets the StorageClass field's value.
16041func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
16042	s.StorageClass = &v
16043	return s
16044}
16045
16046// Container for specifying the notification configuration of the bucket. If
16047// this element is empty, notifications are turned off on the bucket.
16048type NotificationConfiguration struct {
16049	_ struct{} `type:"structure"`
16050
16051	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
16052
16053	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
16054
16055	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
16056}
16057
16058// String returns the string representation
16059func (s NotificationConfiguration) String() string {
16060	return awsutil.Prettify(s)
16061}
16062
16063// GoString returns the string representation
16064func (s NotificationConfiguration) GoString() string {
16065	return s.String()
16066}
16067
16068// Validate inspects the fields of the type to determine if they are valid.
16069func (s *NotificationConfiguration) Validate() error {
16070	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
16071	if s.LambdaFunctionConfigurations != nil {
16072		for i, v := range s.LambdaFunctionConfigurations {
16073			if v == nil {
16074				continue
16075			}
16076			if err := v.Validate(); err != nil {
16077				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
16078			}
16079		}
16080	}
16081	if s.QueueConfigurations != nil {
16082		for i, v := range s.QueueConfigurations {
16083			if v == nil {
16084				continue
16085			}
16086			if err := v.Validate(); err != nil {
16087				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
16088			}
16089		}
16090	}
16091	if s.TopicConfigurations != nil {
16092		for i, v := range s.TopicConfigurations {
16093			if v == nil {
16094				continue
16095			}
16096			if err := v.Validate(); err != nil {
16097				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
16098			}
16099		}
16100	}
16101
16102	if invalidParams.Len() > 0 {
16103		return invalidParams
16104	}
16105	return nil
16106}
16107
16108// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
16109func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
16110	s.LambdaFunctionConfigurations = v
16111	return s
16112}
16113
16114// SetQueueConfigurations sets the QueueConfigurations field's value.
16115func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
16116	s.QueueConfigurations = v
16117	return s
16118}
16119
16120// SetTopicConfigurations sets the TopicConfigurations field's value.
16121func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
16122	s.TopicConfigurations = v
16123	return s
16124}
16125
16126type NotificationConfigurationDeprecated struct {
16127	_ struct{} `type:"structure"`
16128
16129	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
16130
16131	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
16132
16133	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
16134}
16135
16136// String returns the string representation
16137func (s NotificationConfigurationDeprecated) String() string {
16138	return awsutil.Prettify(s)
16139}
16140
16141// GoString returns the string representation
16142func (s NotificationConfigurationDeprecated) GoString() string {
16143	return s.String()
16144}
16145
16146// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
16147func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
16148	s.CloudFunctionConfiguration = v
16149	return s
16150}
16151
16152// SetQueueConfiguration sets the QueueConfiguration field's value.
16153func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
16154	s.QueueConfiguration = v
16155	return s
16156}
16157
16158// SetTopicConfiguration sets the TopicConfiguration field's value.
16159func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
16160	s.TopicConfiguration = v
16161	return s
16162}
16163
16164// Container for object key name filtering rules. For information about key
16165// name filtering, go to Configuring Event Notifications (http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
16166// in the Amazon Simple Storage Service Developer Guide.
16167type NotificationConfigurationFilter struct {
16168	_ struct{} `type:"structure"`
16169
16170	// Container for object key name prefix and suffix filtering rules.
16171	Key *KeyFilter `locationName:"S3Key" type:"structure"`
16172}
16173
16174// String returns the string representation
16175func (s NotificationConfigurationFilter) String() string {
16176	return awsutil.Prettify(s)
16177}
16178
16179// GoString returns the string representation
16180func (s NotificationConfigurationFilter) GoString() string {
16181	return s.String()
16182}
16183
16184// SetKey sets the Key field's value.
16185func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
16186	s.Key = v
16187	return s
16188}
16189
16190type Object struct {
16191	_ struct{} `type:"structure"`
16192
16193	ETag *string `type:"string"`
16194
16195	Key *string `min:"1" type:"string"`
16196
16197	LastModified *time.Time `type:"timestamp"`
16198
16199	Owner *Owner `type:"structure"`
16200
16201	Size *int64 `type:"integer"`
16202
16203	// The class of storage used to store the object.
16204	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
16205}
16206
16207// String returns the string representation
16208func (s Object) String() string {
16209	return awsutil.Prettify(s)
16210}
16211
16212// GoString returns the string representation
16213func (s Object) GoString() string {
16214	return s.String()
16215}
16216
16217// SetETag sets the ETag field's value.
16218func (s *Object) SetETag(v string) *Object {
16219	s.ETag = &v
16220	return s
16221}
16222
16223// SetKey sets the Key field's value.
16224func (s *Object) SetKey(v string) *Object {
16225	s.Key = &v
16226	return s
16227}
16228
16229// SetLastModified sets the LastModified field's value.
16230func (s *Object) SetLastModified(v time.Time) *Object {
16231	s.LastModified = &v
16232	return s
16233}
16234
16235// SetOwner sets the Owner field's value.
16236func (s *Object) SetOwner(v *Owner) *Object {
16237	s.Owner = v
16238	return s
16239}
16240
16241// SetSize sets the Size field's value.
16242func (s *Object) SetSize(v int64) *Object {
16243	s.Size = &v
16244	return s
16245}
16246
16247// SetStorageClass sets the StorageClass field's value.
16248func (s *Object) SetStorageClass(v string) *Object {
16249	s.StorageClass = &v
16250	return s
16251}
16252
16253type ObjectIdentifier struct {
16254	_ struct{} `type:"structure"`
16255
16256	// Key name of the object to delete.
16257	//
16258	// Key is a required field
16259	Key *string `min:"1" type:"string" required:"true"`
16260
16261	// VersionId for the specific version of the object to delete.
16262	VersionId *string `type:"string"`
16263}
16264
16265// String returns the string representation
16266func (s ObjectIdentifier) String() string {
16267	return awsutil.Prettify(s)
16268}
16269
16270// GoString returns the string representation
16271func (s ObjectIdentifier) GoString() string {
16272	return s.String()
16273}
16274
16275// Validate inspects the fields of the type to determine if they are valid.
16276func (s *ObjectIdentifier) Validate() error {
16277	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
16278	if s.Key == nil {
16279		invalidParams.Add(request.NewErrParamRequired("Key"))
16280	}
16281	if s.Key != nil && len(*s.Key) < 1 {
16282		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16283	}
16284
16285	if invalidParams.Len() > 0 {
16286		return invalidParams
16287	}
16288	return nil
16289}
16290
16291// SetKey sets the Key field's value.
16292func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
16293	s.Key = &v
16294	return s
16295}
16296
16297// SetVersionId sets the VersionId field's value.
16298func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
16299	s.VersionId = &v
16300	return s
16301}
16302
16303type ObjectVersion struct {
16304	_ struct{} `type:"structure"`
16305
16306	ETag *string `type:"string"`
16307
16308	// Specifies whether the object is (true) or is not (false) the latest version
16309	// of an object.
16310	IsLatest *bool `type:"boolean"`
16311
16312	// The object key.
16313	Key *string `min:"1" type:"string"`
16314
16315	// Date and time the object was last modified.
16316	LastModified *time.Time `type:"timestamp"`
16317
16318	Owner *Owner `type:"structure"`
16319
16320	// Size in bytes of the object.
16321	Size *int64 `type:"integer"`
16322
16323	// The class of storage used to store the object.
16324	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
16325
16326	// Version ID of an object.
16327	VersionId *string `type:"string"`
16328}
16329
16330// String returns the string representation
16331func (s ObjectVersion) String() string {
16332	return awsutil.Prettify(s)
16333}
16334
16335// GoString returns the string representation
16336func (s ObjectVersion) GoString() string {
16337	return s.String()
16338}
16339
16340// SetETag sets the ETag field's value.
16341func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
16342	s.ETag = &v
16343	return s
16344}
16345
16346// SetIsLatest sets the IsLatest field's value.
16347func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
16348	s.IsLatest = &v
16349	return s
16350}
16351
16352// SetKey sets the Key field's value.
16353func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
16354	s.Key = &v
16355	return s
16356}
16357
16358// SetLastModified sets the LastModified field's value.
16359func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
16360	s.LastModified = &v
16361	return s
16362}
16363
16364// SetOwner sets the Owner field's value.
16365func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
16366	s.Owner = v
16367	return s
16368}
16369
16370// SetSize sets the Size field's value.
16371func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
16372	s.Size = &v
16373	return s
16374}
16375
16376// SetStorageClass sets the StorageClass field's value.
16377func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
16378	s.StorageClass = &v
16379	return s
16380}
16381
16382// SetVersionId sets the VersionId field's value.
16383func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
16384	s.VersionId = &v
16385	return s
16386}
16387
16388// Describes the location where the restore job's output is stored.
16389type OutputLocation struct {
16390	_ struct{} `type:"structure"`
16391
16392	// Describes an S3 location that will receive the results of the restore request.
16393	S3 *Location `type:"structure"`
16394}
16395
16396// String returns the string representation
16397func (s OutputLocation) String() string {
16398	return awsutil.Prettify(s)
16399}
16400
16401// GoString returns the string representation
16402func (s OutputLocation) GoString() string {
16403	return s.String()
16404}
16405
16406// Validate inspects the fields of the type to determine if they are valid.
16407func (s *OutputLocation) Validate() error {
16408	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
16409	if s.S3 != nil {
16410		if err := s.S3.Validate(); err != nil {
16411			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
16412		}
16413	}
16414
16415	if invalidParams.Len() > 0 {
16416		return invalidParams
16417	}
16418	return nil
16419}
16420
16421// SetS3 sets the S3 field's value.
16422func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
16423	s.S3 = v
16424	return s
16425}
16426
16427// Describes how results of the Select job are serialized.
16428type OutputSerialization struct {
16429	_ struct{} `type:"structure"`
16430
16431	// Describes the serialization of CSV-encoded Select results.
16432	CSV *CSVOutput `type:"structure"`
16433
16434	// Specifies JSON as request's output serialization format.
16435	JSON *JSONOutput `type:"structure"`
16436}
16437
16438// String returns the string representation
16439func (s OutputSerialization) String() string {
16440	return awsutil.Prettify(s)
16441}
16442
16443// GoString returns the string representation
16444func (s OutputSerialization) GoString() string {
16445	return s.String()
16446}
16447
16448// SetCSV sets the CSV field's value.
16449func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
16450	s.CSV = v
16451	return s
16452}
16453
16454// SetJSON sets the JSON field's value.
16455func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
16456	s.JSON = v
16457	return s
16458}
16459
16460type Owner struct {
16461	_ struct{} `type:"structure"`
16462
16463	DisplayName *string `type:"string"`
16464
16465	ID *string `type:"string"`
16466}
16467
16468// String returns the string representation
16469func (s Owner) String() string {
16470	return awsutil.Prettify(s)
16471}
16472
16473// GoString returns the string representation
16474func (s Owner) GoString() string {
16475	return s.String()
16476}
16477
16478// SetDisplayName sets the DisplayName field's value.
16479func (s *Owner) SetDisplayName(v string) *Owner {
16480	s.DisplayName = &v
16481	return s
16482}
16483
16484// SetID sets the ID field's value.
16485func (s *Owner) SetID(v string) *Owner {
16486	s.ID = &v
16487	return s
16488}
16489
16490type Part struct {
16491	_ struct{} `type:"structure"`
16492
16493	// Entity tag returned when the part was uploaded.
16494	ETag *string `type:"string"`
16495
16496	// Date and time at which the part was uploaded.
16497	LastModified *time.Time `type:"timestamp"`
16498
16499	// Part number identifying the part. This is a positive integer between 1 and
16500	// 10,000.
16501	PartNumber *int64 `type:"integer"`
16502
16503	// Size of the uploaded part data.
16504	Size *int64 `type:"integer"`
16505}
16506
16507// String returns the string representation
16508func (s Part) String() string {
16509	return awsutil.Prettify(s)
16510}
16511
16512// GoString returns the string representation
16513func (s Part) GoString() string {
16514	return s.String()
16515}
16516
16517// SetETag sets the ETag field's value.
16518func (s *Part) SetETag(v string) *Part {
16519	s.ETag = &v
16520	return s
16521}
16522
16523// SetLastModified sets the LastModified field's value.
16524func (s *Part) SetLastModified(v time.Time) *Part {
16525	s.LastModified = &v
16526	return s
16527}
16528
16529// SetPartNumber sets the PartNumber field's value.
16530func (s *Part) SetPartNumber(v int64) *Part {
16531	s.PartNumber = &v
16532	return s
16533}
16534
16535// SetSize sets the Size field's value.
16536func (s *Part) SetSize(v int64) *Part {
16537	s.Size = &v
16538	return s
16539}
16540
16541type Progress struct {
16542	_ struct{} `type:"structure"`
16543
16544	// Current number of uncompressed object bytes processed.
16545	BytesProcessed *int64 `type:"long"`
16546
16547	// Current number of bytes of records payload data returned.
16548	BytesReturned *int64 `type:"long"`
16549
16550	// Current number of object bytes scanned.
16551	BytesScanned *int64 `type:"long"`
16552}
16553
16554// String returns the string representation
16555func (s Progress) String() string {
16556	return awsutil.Prettify(s)
16557}
16558
16559// GoString returns the string representation
16560func (s Progress) GoString() string {
16561	return s.String()
16562}
16563
16564// SetBytesProcessed sets the BytesProcessed field's value.
16565func (s *Progress) SetBytesProcessed(v int64) *Progress {
16566	s.BytesProcessed = &v
16567	return s
16568}
16569
16570// SetBytesReturned sets the BytesReturned field's value.
16571func (s *Progress) SetBytesReturned(v int64) *Progress {
16572	s.BytesReturned = &v
16573	return s
16574}
16575
16576// SetBytesScanned sets the BytesScanned field's value.
16577func (s *Progress) SetBytesScanned(v int64) *Progress {
16578	s.BytesScanned = &v
16579	return s
16580}
16581
16582type ProgressEvent struct {
16583	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
16584
16585	// The Progress event details.
16586	Details *Progress `locationName:"Details" type:"structure"`
16587}
16588
16589// String returns the string representation
16590func (s ProgressEvent) String() string {
16591	return awsutil.Prettify(s)
16592}
16593
16594// GoString returns the string representation
16595func (s ProgressEvent) GoString() string {
16596	return s.String()
16597}
16598
16599// SetDetails sets the Details field's value.
16600func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
16601	s.Details = v
16602	return s
16603}
16604
16605// The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
16606func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
16607
16608// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
16609// This method is only used internally within the SDK's EventStream handling.
16610func (s *ProgressEvent) UnmarshalEvent(
16611	payloadUnmarshaler protocol.PayloadUnmarshaler,
16612	msg eventstream.Message,
16613) error {
16614	if err := payloadUnmarshaler.UnmarshalPayload(
16615		bytes.NewReader(msg.Payload), s,
16616	); err != nil {
16617		return err
16618	}
16619	return nil
16620}
16621
16622type PutBucketAccelerateConfigurationInput struct {
16623	_ struct{} `type:"structure" payload:"AccelerateConfiguration"`
16624
16625	// Specifies the Accelerate Configuration you want to set for the bucket.
16626	//
16627	// AccelerateConfiguration is a required field
16628	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
16629
16630	// Name of the bucket for which the accelerate configuration is set.
16631	//
16632	// Bucket is a required field
16633	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16634}
16635
16636// String returns the string representation
16637func (s PutBucketAccelerateConfigurationInput) String() string {
16638	return awsutil.Prettify(s)
16639}
16640
16641// GoString returns the string representation
16642func (s PutBucketAccelerateConfigurationInput) GoString() string {
16643	return s.String()
16644}
16645
16646// Validate inspects the fields of the type to determine if they are valid.
16647func (s *PutBucketAccelerateConfigurationInput) Validate() error {
16648	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
16649	if s.AccelerateConfiguration == nil {
16650		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
16651	}
16652	if s.Bucket == nil {
16653		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16654	}
16655
16656	if invalidParams.Len() > 0 {
16657		return invalidParams
16658	}
16659	return nil
16660}
16661
16662// SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
16663func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
16664	s.AccelerateConfiguration = v
16665	return s
16666}
16667
16668// SetBucket sets the Bucket field's value.
16669func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
16670	s.Bucket = &v
16671	return s
16672}
16673
16674func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
16675	if s.Bucket == nil {
16676		return v
16677	}
16678	return *s.Bucket
16679}
16680
16681type PutBucketAccelerateConfigurationOutput struct {
16682	_ struct{} `type:"structure"`
16683}
16684
16685// String returns the string representation
16686func (s PutBucketAccelerateConfigurationOutput) String() string {
16687	return awsutil.Prettify(s)
16688}
16689
16690// GoString returns the string representation
16691func (s PutBucketAccelerateConfigurationOutput) GoString() string {
16692	return s.String()
16693}
16694
16695type PutBucketAclInput struct {
16696	_ struct{} `type:"structure" payload:"AccessControlPolicy"`
16697
16698	// The canned ACL to apply to the bucket.
16699	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
16700
16701	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
16702
16703	// Bucket is a required field
16704	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16705
16706	// Allows grantee the read, write, read ACP, and write ACP permissions on the
16707	// bucket.
16708	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
16709
16710	// Allows grantee to list the objects in the bucket.
16711	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
16712
16713	// Allows grantee to read the bucket ACL.
16714	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
16715
16716	// Allows grantee to create, overwrite, and delete any object in the bucket.
16717	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
16718
16719	// Allows grantee to write the ACL for the applicable bucket.
16720	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
16721}
16722
16723// String returns the string representation
16724func (s PutBucketAclInput) String() string {
16725	return awsutil.Prettify(s)
16726}
16727
16728// GoString returns the string representation
16729func (s PutBucketAclInput) GoString() string {
16730	return s.String()
16731}
16732
16733// Validate inspects the fields of the type to determine if they are valid.
16734func (s *PutBucketAclInput) Validate() error {
16735	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
16736	if s.Bucket == nil {
16737		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16738	}
16739	if s.AccessControlPolicy != nil {
16740		if err := s.AccessControlPolicy.Validate(); err != nil {
16741			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
16742		}
16743	}
16744
16745	if invalidParams.Len() > 0 {
16746		return invalidParams
16747	}
16748	return nil
16749}
16750
16751// SetACL sets the ACL field's value.
16752func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
16753	s.ACL = &v
16754	return s
16755}
16756
16757// SetAccessControlPolicy sets the AccessControlPolicy field's value.
16758func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
16759	s.AccessControlPolicy = v
16760	return s
16761}
16762
16763// SetBucket sets the Bucket field's value.
16764func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
16765	s.Bucket = &v
16766	return s
16767}
16768
16769func (s *PutBucketAclInput) getBucket() (v string) {
16770	if s.Bucket == nil {
16771		return v
16772	}
16773	return *s.Bucket
16774}
16775
16776// SetGrantFullControl sets the GrantFullControl field's value.
16777func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
16778	s.GrantFullControl = &v
16779	return s
16780}
16781
16782// SetGrantRead sets the GrantRead field's value.
16783func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
16784	s.GrantRead = &v
16785	return s
16786}
16787
16788// SetGrantReadACP sets the GrantReadACP field's value.
16789func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
16790	s.GrantReadACP = &v
16791	return s
16792}
16793
16794// SetGrantWrite sets the GrantWrite field's value.
16795func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
16796	s.GrantWrite = &v
16797	return s
16798}
16799
16800// SetGrantWriteACP sets the GrantWriteACP field's value.
16801func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
16802	s.GrantWriteACP = &v
16803	return s
16804}
16805
16806type PutBucketAclOutput struct {
16807	_ struct{} `type:"structure"`
16808}
16809
16810// String returns the string representation
16811func (s PutBucketAclOutput) String() string {
16812	return awsutil.Prettify(s)
16813}
16814
16815// GoString returns the string representation
16816func (s PutBucketAclOutput) GoString() string {
16817	return s.String()
16818}
16819
16820type PutBucketAnalyticsConfigurationInput struct {
16821	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
16822
16823	// The configuration and any analyses for the analytics filter.
16824	//
16825	// AnalyticsConfiguration is a required field
16826	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
16827
16828	// The name of the bucket to which an analytics configuration is stored.
16829	//
16830	// Bucket is a required field
16831	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16832
16833	// The identifier used to represent an analytics configuration.
16834	//
16835	// Id is a required field
16836	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
16837}
16838
16839// String returns the string representation
16840func (s PutBucketAnalyticsConfigurationInput) String() string {
16841	return awsutil.Prettify(s)
16842}
16843
16844// GoString returns the string representation
16845func (s PutBucketAnalyticsConfigurationInput) GoString() string {
16846	return s.String()
16847}
16848
16849// Validate inspects the fields of the type to determine if they are valid.
16850func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
16851	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
16852	if s.AnalyticsConfiguration == nil {
16853		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
16854	}
16855	if s.Bucket == nil {
16856		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16857	}
16858	if s.Id == nil {
16859		invalidParams.Add(request.NewErrParamRequired("Id"))
16860	}
16861	if s.AnalyticsConfiguration != nil {
16862		if err := s.AnalyticsConfiguration.Validate(); err != nil {
16863			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
16864		}
16865	}
16866
16867	if invalidParams.Len() > 0 {
16868		return invalidParams
16869	}
16870	return nil
16871}
16872
16873// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
16874func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
16875	s.AnalyticsConfiguration = v
16876	return s
16877}
16878
16879// SetBucket sets the Bucket field's value.
16880func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
16881	s.Bucket = &v
16882	return s
16883}
16884
16885func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
16886	if s.Bucket == nil {
16887		return v
16888	}
16889	return *s.Bucket
16890}
16891
16892// SetId sets the Id field's value.
16893func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
16894	s.Id = &v
16895	return s
16896}
16897
16898type PutBucketAnalyticsConfigurationOutput struct {
16899	_ struct{} `type:"structure"`
16900}
16901
16902// String returns the string representation
16903func (s PutBucketAnalyticsConfigurationOutput) String() string {
16904	return awsutil.Prettify(s)
16905}
16906
16907// GoString returns the string representation
16908func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
16909	return s.String()
16910}
16911
16912type PutBucketCorsInput struct {
16913	_ struct{} `type:"structure" payload:"CORSConfiguration"`
16914
16915	// Bucket is a required field
16916	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16917
16918	// CORSConfiguration is a required field
16919	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
16920}
16921
16922// String returns the string representation
16923func (s PutBucketCorsInput) String() string {
16924	return awsutil.Prettify(s)
16925}
16926
16927// GoString returns the string representation
16928func (s PutBucketCorsInput) GoString() string {
16929	return s.String()
16930}
16931
16932// Validate inspects the fields of the type to determine if they are valid.
16933func (s *PutBucketCorsInput) Validate() error {
16934	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
16935	if s.Bucket == nil {
16936		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16937	}
16938	if s.CORSConfiguration == nil {
16939		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
16940	}
16941	if s.CORSConfiguration != nil {
16942		if err := s.CORSConfiguration.Validate(); err != nil {
16943			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
16944		}
16945	}
16946
16947	if invalidParams.Len() > 0 {
16948		return invalidParams
16949	}
16950	return nil
16951}
16952
16953// SetBucket sets the Bucket field's value.
16954func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
16955	s.Bucket = &v
16956	return s
16957}
16958
16959func (s *PutBucketCorsInput) getBucket() (v string) {
16960	if s.Bucket == nil {
16961		return v
16962	}
16963	return *s.Bucket
16964}
16965
16966// SetCORSConfiguration sets the CORSConfiguration field's value.
16967func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
16968	s.CORSConfiguration = v
16969	return s
16970}
16971
16972type PutBucketCorsOutput struct {
16973	_ struct{} `type:"structure"`
16974}
16975
16976// String returns the string representation
16977func (s PutBucketCorsOutput) String() string {
16978	return awsutil.Prettify(s)
16979}
16980
16981// GoString returns the string representation
16982func (s PutBucketCorsOutput) GoString() string {
16983	return s.String()
16984}
16985
16986type PutBucketEncryptionInput struct {
16987	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
16988
16989	// The name of the bucket for which the server-side encryption configuration
16990	// is set.
16991	//
16992	// Bucket is a required field
16993	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16994
16995	// Container for server-side encryption configuration rules. Currently S3 supports
16996	// one rule only.
16997	//
16998	// ServerSideEncryptionConfiguration is a required field
16999	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17000}
17001
17002// String returns the string representation
17003func (s PutBucketEncryptionInput) String() string {
17004	return awsutil.Prettify(s)
17005}
17006
17007// GoString returns the string representation
17008func (s PutBucketEncryptionInput) GoString() string {
17009	return s.String()
17010}
17011
17012// Validate inspects the fields of the type to determine if they are valid.
17013func (s *PutBucketEncryptionInput) Validate() error {
17014	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
17015	if s.Bucket == nil {
17016		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17017	}
17018	if s.ServerSideEncryptionConfiguration == nil {
17019		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
17020	}
17021	if s.ServerSideEncryptionConfiguration != nil {
17022		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
17023			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
17024		}
17025	}
17026
17027	if invalidParams.Len() > 0 {
17028		return invalidParams
17029	}
17030	return nil
17031}
17032
17033// SetBucket sets the Bucket field's value.
17034func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
17035	s.Bucket = &v
17036	return s
17037}
17038
17039func (s *PutBucketEncryptionInput) getBucket() (v string) {
17040	if s.Bucket == nil {
17041		return v
17042	}
17043	return *s.Bucket
17044}
17045
17046// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
17047func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
17048	s.ServerSideEncryptionConfiguration = v
17049	return s
17050}
17051
17052type PutBucketEncryptionOutput struct {
17053	_ struct{} `type:"structure"`
17054}
17055
17056// String returns the string representation
17057func (s PutBucketEncryptionOutput) String() string {
17058	return awsutil.Prettify(s)
17059}
17060
17061// GoString returns the string representation
17062func (s PutBucketEncryptionOutput) GoString() string {
17063	return s.String()
17064}
17065
17066type PutBucketInventoryConfigurationInput struct {
17067	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
17068
17069	// The name of the bucket where the inventory configuration will be stored.
17070	//
17071	// Bucket is a required field
17072	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17073
17074	// The ID used to identify the inventory configuration.
17075	//
17076	// Id is a required field
17077	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
17078
17079	// Specifies the inventory configuration.
17080	//
17081	// InventoryConfiguration is a required field
17082	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17083}
17084
17085// String returns the string representation
17086func (s PutBucketInventoryConfigurationInput) String() string {
17087	return awsutil.Prettify(s)
17088}
17089
17090// GoString returns the string representation
17091func (s PutBucketInventoryConfigurationInput) GoString() string {
17092	return s.String()
17093}
17094
17095// Validate inspects the fields of the type to determine if they are valid.
17096func (s *PutBucketInventoryConfigurationInput) Validate() error {
17097	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
17098	if s.Bucket == nil {
17099		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17100	}
17101	if s.Id == nil {
17102		invalidParams.Add(request.NewErrParamRequired("Id"))
17103	}
17104	if s.InventoryConfiguration == nil {
17105		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
17106	}
17107	if s.InventoryConfiguration != nil {
17108		if err := s.InventoryConfiguration.Validate(); err != nil {
17109			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
17110		}
17111	}
17112
17113	if invalidParams.Len() > 0 {
17114		return invalidParams
17115	}
17116	return nil
17117}
17118
17119// SetBucket sets the Bucket field's value.
17120func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
17121	s.Bucket = &v
17122	return s
17123}
17124
17125func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
17126	if s.Bucket == nil {
17127		return v
17128	}
17129	return *s.Bucket
17130}
17131
17132// SetId sets the Id field's value.
17133func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
17134	s.Id = &v
17135	return s
17136}
17137
17138// SetInventoryConfiguration sets the InventoryConfiguration field's value.
17139func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
17140	s.InventoryConfiguration = v
17141	return s
17142}
17143
17144type PutBucketInventoryConfigurationOutput struct {
17145	_ struct{} `type:"structure"`
17146}
17147
17148// String returns the string representation
17149func (s PutBucketInventoryConfigurationOutput) String() string {
17150	return awsutil.Prettify(s)
17151}
17152
17153// GoString returns the string representation
17154func (s PutBucketInventoryConfigurationOutput) GoString() string {
17155	return s.String()
17156}
17157
17158type PutBucketLifecycleConfigurationInput struct {
17159	_ struct{} `type:"structure" payload:"LifecycleConfiguration"`
17160
17161	// Bucket is a required field
17162	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17163
17164	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17165}
17166
17167// String returns the string representation
17168func (s PutBucketLifecycleConfigurationInput) String() string {
17169	return awsutil.Prettify(s)
17170}
17171
17172// GoString returns the string representation
17173func (s PutBucketLifecycleConfigurationInput) GoString() string {
17174	return s.String()
17175}
17176
17177// Validate inspects the fields of the type to determine if they are valid.
17178func (s *PutBucketLifecycleConfigurationInput) Validate() error {
17179	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
17180	if s.Bucket == nil {
17181		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17182	}
17183	if s.LifecycleConfiguration != nil {
17184		if err := s.LifecycleConfiguration.Validate(); err != nil {
17185			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
17186		}
17187	}
17188
17189	if invalidParams.Len() > 0 {
17190		return invalidParams
17191	}
17192	return nil
17193}
17194
17195// SetBucket sets the Bucket field's value.
17196func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
17197	s.Bucket = &v
17198	return s
17199}
17200
17201func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
17202	if s.Bucket == nil {
17203		return v
17204	}
17205	return *s.Bucket
17206}
17207
17208// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
17209func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
17210	s.LifecycleConfiguration = v
17211	return s
17212}
17213
17214type PutBucketLifecycleConfigurationOutput struct {
17215	_ struct{} `type:"structure"`
17216}
17217
17218// String returns the string representation
17219func (s PutBucketLifecycleConfigurationOutput) String() string {
17220	return awsutil.Prettify(s)
17221}
17222
17223// GoString returns the string representation
17224func (s PutBucketLifecycleConfigurationOutput) GoString() string {
17225	return s.String()
17226}
17227
17228type PutBucketLifecycleInput struct {
17229	_ struct{} `type:"structure" payload:"LifecycleConfiguration"`
17230
17231	// Bucket is a required field
17232	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17233
17234	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17235}
17236
17237// String returns the string representation
17238func (s PutBucketLifecycleInput) String() string {
17239	return awsutil.Prettify(s)
17240}
17241
17242// GoString returns the string representation
17243func (s PutBucketLifecycleInput) GoString() string {
17244	return s.String()
17245}
17246
17247// Validate inspects the fields of the type to determine if they are valid.
17248func (s *PutBucketLifecycleInput) Validate() error {
17249	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
17250	if s.Bucket == nil {
17251		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17252	}
17253	if s.LifecycleConfiguration != nil {
17254		if err := s.LifecycleConfiguration.Validate(); err != nil {
17255			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
17256		}
17257	}
17258
17259	if invalidParams.Len() > 0 {
17260		return invalidParams
17261	}
17262	return nil
17263}
17264
17265// SetBucket sets the Bucket field's value.
17266func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
17267	s.Bucket = &v
17268	return s
17269}
17270
17271func (s *PutBucketLifecycleInput) getBucket() (v string) {
17272	if s.Bucket == nil {
17273		return v
17274	}
17275	return *s.Bucket
17276}
17277
17278// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
17279func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
17280	s.LifecycleConfiguration = v
17281	return s
17282}
17283
17284type PutBucketLifecycleOutput struct {
17285	_ struct{} `type:"structure"`
17286}
17287
17288// String returns the string representation
17289func (s PutBucketLifecycleOutput) String() string {
17290	return awsutil.Prettify(s)
17291}
17292
17293// GoString returns the string representation
17294func (s PutBucketLifecycleOutput) GoString() string {
17295	return s.String()
17296}
17297
17298type PutBucketLoggingInput struct {
17299	_ struct{} `type:"structure" payload:"BucketLoggingStatus"`
17300
17301	// Bucket is a required field
17302	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17303
17304	// BucketLoggingStatus is a required field
17305	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17306}
17307
17308// String returns the string representation
17309func (s PutBucketLoggingInput) String() string {
17310	return awsutil.Prettify(s)
17311}
17312
17313// GoString returns the string representation
17314func (s PutBucketLoggingInput) GoString() string {
17315	return s.String()
17316}
17317
17318// Validate inspects the fields of the type to determine if they are valid.
17319func (s *PutBucketLoggingInput) Validate() error {
17320	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
17321	if s.Bucket == nil {
17322		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17323	}
17324	if s.BucketLoggingStatus == nil {
17325		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
17326	}
17327	if s.BucketLoggingStatus != nil {
17328		if err := s.BucketLoggingStatus.Validate(); err != nil {
17329			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
17330		}
17331	}
17332
17333	if invalidParams.Len() > 0 {
17334		return invalidParams
17335	}
17336	return nil
17337}
17338
17339// SetBucket sets the Bucket field's value.
17340func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
17341	s.Bucket = &v
17342	return s
17343}
17344
17345func (s *PutBucketLoggingInput) getBucket() (v string) {
17346	if s.Bucket == nil {
17347		return v
17348	}
17349	return *s.Bucket
17350}
17351
17352// SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
17353func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
17354	s.BucketLoggingStatus = v
17355	return s
17356}
17357
17358type PutBucketLoggingOutput struct {
17359	_ struct{} `type:"structure"`
17360}
17361
17362// String returns the string representation
17363func (s PutBucketLoggingOutput) String() string {
17364	return awsutil.Prettify(s)
17365}
17366
17367// GoString returns the string representation
17368func (s PutBucketLoggingOutput) GoString() string {
17369	return s.String()
17370}
17371
17372type PutBucketMetricsConfigurationInput struct {
17373	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
17374
17375	// The name of the bucket for which the metrics configuration is set.
17376	//
17377	// Bucket is a required field
17378	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17379
17380	// The ID used to identify the metrics configuration.
17381	//
17382	// Id is a required field
17383	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
17384
17385	// Specifies the metrics configuration.
17386	//
17387	// MetricsConfiguration is a required field
17388	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17389}
17390
17391// String returns the string representation
17392func (s PutBucketMetricsConfigurationInput) String() string {
17393	return awsutil.Prettify(s)
17394}
17395
17396// GoString returns the string representation
17397func (s PutBucketMetricsConfigurationInput) GoString() string {
17398	return s.String()
17399}
17400
17401// Validate inspects the fields of the type to determine if they are valid.
17402func (s *PutBucketMetricsConfigurationInput) Validate() error {
17403	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
17404	if s.Bucket == nil {
17405		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17406	}
17407	if s.Id == nil {
17408		invalidParams.Add(request.NewErrParamRequired("Id"))
17409	}
17410	if s.MetricsConfiguration == nil {
17411		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
17412	}
17413	if s.MetricsConfiguration != nil {
17414		if err := s.MetricsConfiguration.Validate(); err != nil {
17415			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
17416		}
17417	}
17418
17419	if invalidParams.Len() > 0 {
17420		return invalidParams
17421	}
17422	return nil
17423}
17424
17425// SetBucket sets the Bucket field's value.
17426func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
17427	s.Bucket = &v
17428	return s
17429}
17430
17431func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
17432	if s.Bucket == nil {
17433		return v
17434	}
17435	return *s.Bucket
17436}
17437
17438// SetId sets the Id field's value.
17439func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
17440	s.Id = &v
17441	return s
17442}
17443
17444// SetMetricsConfiguration sets the MetricsConfiguration field's value.
17445func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
17446	s.MetricsConfiguration = v
17447	return s
17448}
17449
17450type PutBucketMetricsConfigurationOutput struct {
17451	_ struct{} `type:"structure"`
17452}
17453
17454// String returns the string representation
17455func (s PutBucketMetricsConfigurationOutput) String() string {
17456	return awsutil.Prettify(s)
17457}
17458
17459// GoString returns the string representation
17460func (s PutBucketMetricsConfigurationOutput) GoString() string {
17461	return s.String()
17462}
17463
17464type PutBucketNotificationConfigurationInput struct {
17465	_ struct{} `type:"structure" payload:"NotificationConfiguration"`
17466
17467	// Bucket is a required field
17468	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17469
17470	// Container for specifying the notification configuration of the bucket. If
17471	// this element is empty, notifications are turned off on the bucket.
17472	//
17473	// NotificationConfiguration is a required field
17474	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17475}
17476
17477// String returns the string representation
17478func (s PutBucketNotificationConfigurationInput) String() string {
17479	return awsutil.Prettify(s)
17480}
17481
17482// GoString returns the string representation
17483func (s PutBucketNotificationConfigurationInput) GoString() string {
17484	return s.String()
17485}
17486
17487// Validate inspects the fields of the type to determine if they are valid.
17488func (s *PutBucketNotificationConfigurationInput) Validate() error {
17489	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
17490	if s.Bucket == nil {
17491		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17492	}
17493	if s.NotificationConfiguration == nil {
17494		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
17495	}
17496	if s.NotificationConfiguration != nil {
17497		if err := s.NotificationConfiguration.Validate(); err != nil {
17498			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
17499		}
17500	}
17501
17502	if invalidParams.Len() > 0 {
17503		return invalidParams
17504	}
17505	return nil
17506}
17507
17508// SetBucket sets the Bucket field's value.
17509func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
17510	s.Bucket = &v
17511	return s
17512}
17513
17514func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
17515	if s.Bucket == nil {
17516		return v
17517	}
17518	return *s.Bucket
17519}
17520
17521// SetNotificationConfiguration sets the NotificationConfiguration field's value.
17522func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
17523	s.NotificationConfiguration = v
17524	return s
17525}
17526
17527type PutBucketNotificationConfigurationOutput struct {
17528	_ struct{} `type:"structure"`
17529}
17530
17531// String returns the string representation
17532func (s PutBucketNotificationConfigurationOutput) String() string {
17533	return awsutil.Prettify(s)
17534}
17535
17536// GoString returns the string representation
17537func (s PutBucketNotificationConfigurationOutput) GoString() string {
17538	return s.String()
17539}
17540
17541type PutBucketNotificationInput struct {
17542	_ struct{} `type:"structure" payload:"NotificationConfiguration"`
17543
17544	// Bucket is a required field
17545	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17546
17547	// NotificationConfiguration is a required field
17548	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17549}
17550
17551// String returns the string representation
17552func (s PutBucketNotificationInput) String() string {
17553	return awsutil.Prettify(s)
17554}
17555
17556// GoString returns the string representation
17557func (s PutBucketNotificationInput) GoString() string {
17558	return s.String()
17559}
17560
17561// Validate inspects the fields of the type to determine if they are valid.
17562func (s *PutBucketNotificationInput) Validate() error {
17563	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
17564	if s.Bucket == nil {
17565		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17566	}
17567	if s.NotificationConfiguration == nil {
17568		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
17569	}
17570
17571	if invalidParams.Len() > 0 {
17572		return invalidParams
17573	}
17574	return nil
17575}
17576
17577// SetBucket sets the Bucket field's value.
17578func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
17579	s.Bucket = &v
17580	return s
17581}
17582
17583func (s *PutBucketNotificationInput) getBucket() (v string) {
17584	if s.Bucket == nil {
17585		return v
17586	}
17587	return *s.Bucket
17588}
17589
17590// SetNotificationConfiguration sets the NotificationConfiguration field's value.
17591func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
17592	s.NotificationConfiguration = v
17593	return s
17594}
17595
17596type PutBucketNotificationOutput struct {
17597	_ struct{} `type:"structure"`
17598}
17599
17600// String returns the string representation
17601func (s PutBucketNotificationOutput) String() string {
17602	return awsutil.Prettify(s)
17603}
17604
17605// GoString returns the string representation
17606func (s PutBucketNotificationOutput) GoString() string {
17607	return s.String()
17608}
17609
17610type PutBucketPolicyInput struct {
17611	_ struct{} `type:"structure" payload:"Policy"`
17612
17613	// Bucket is a required field
17614	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17615
17616	// Set this parameter to true to confirm that you want to remove your permissions
17617	// to change this bucket policy in the future.
17618	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
17619
17620	// The bucket policy as a JSON document.
17621	//
17622	// Policy is a required field
17623	Policy *string `type:"string" required:"true"`
17624}
17625
17626// String returns the string representation
17627func (s PutBucketPolicyInput) String() string {
17628	return awsutil.Prettify(s)
17629}
17630
17631// GoString returns the string representation
17632func (s PutBucketPolicyInput) GoString() string {
17633	return s.String()
17634}
17635
17636// Validate inspects the fields of the type to determine if they are valid.
17637func (s *PutBucketPolicyInput) Validate() error {
17638	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
17639	if s.Bucket == nil {
17640		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17641	}
17642	if s.Policy == nil {
17643		invalidParams.Add(request.NewErrParamRequired("Policy"))
17644	}
17645
17646	if invalidParams.Len() > 0 {
17647		return invalidParams
17648	}
17649	return nil
17650}
17651
17652// SetBucket sets the Bucket field's value.
17653func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
17654	s.Bucket = &v
17655	return s
17656}
17657
17658func (s *PutBucketPolicyInput) getBucket() (v string) {
17659	if s.Bucket == nil {
17660		return v
17661	}
17662	return *s.Bucket
17663}
17664
17665// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
17666func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
17667	s.ConfirmRemoveSelfBucketAccess = &v
17668	return s
17669}
17670
17671// SetPolicy sets the Policy field's value.
17672func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
17673	s.Policy = &v
17674	return s
17675}
17676
17677type PutBucketPolicyOutput struct {
17678	_ struct{} `type:"structure"`
17679}
17680
17681// String returns the string representation
17682func (s PutBucketPolicyOutput) String() string {
17683	return awsutil.Prettify(s)
17684}
17685
17686// GoString returns the string representation
17687func (s PutBucketPolicyOutput) GoString() string {
17688	return s.String()
17689}
17690
17691type PutBucketReplicationInput struct {
17692	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
17693
17694	// Bucket is a required field
17695	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17696
17697	// Container for replication rules. You can add as many as 1,000 rules. Total
17698	// replication configuration size can be up to 2 MB.
17699	//
17700	// ReplicationConfiguration is a required field
17701	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17702}
17703
17704// String returns the string representation
17705func (s PutBucketReplicationInput) String() string {
17706	return awsutil.Prettify(s)
17707}
17708
17709// GoString returns the string representation
17710func (s PutBucketReplicationInput) GoString() string {
17711	return s.String()
17712}
17713
17714// Validate inspects the fields of the type to determine if they are valid.
17715func (s *PutBucketReplicationInput) Validate() error {
17716	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
17717	if s.Bucket == nil {
17718		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17719	}
17720	if s.ReplicationConfiguration == nil {
17721		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
17722	}
17723	if s.ReplicationConfiguration != nil {
17724		if err := s.ReplicationConfiguration.Validate(); err != nil {
17725			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
17726		}
17727	}
17728
17729	if invalidParams.Len() > 0 {
17730		return invalidParams
17731	}
17732	return nil
17733}
17734
17735// SetBucket sets the Bucket field's value.
17736func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
17737	s.Bucket = &v
17738	return s
17739}
17740
17741func (s *PutBucketReplicationInput) getBucket() (v string) {
17742	if s.Bucket == nil {
17743		return v
17744	}
17745	return *s.Bucket
17746}
17747
17748// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
17749func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
17750	s.ReplicationConfiguration = v
17751	return s
17752}
17753
17754type PutBucketReplicationOutput struct {
17755	_ struct{} `type:"structure"`
17756}
17757
17758// String returns the string representation
17759func (s PutBucketReplicationOutput) String() string {
17760	return awsutil.Prettify(s)
17761}
17762
17763// GoString returns the string representation
17764func (s PutBucketReplicationOutput) GoString() string {
17765	return s.String()
17766}
17767
17768type PutBucketRequestPaymentInput struct {
17769	_ struct{} `type:"structure" payload:"RequestPaymentConfiguration"`
17770
17771	// Bucket is a required field
17772	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17773
17774	// RequestPaymentConfiguration is a required field
17775	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17776}
17777
17778// String returns the string representation
17779func (s PutBucketRequestPaymentInput) String() string {
17780	return awsutil.Prettify(s)
17781}
17782
17783// GoString returns the string representation
17784func (s PutBucketRequestPaymentInput) GoString() string {
17785	return s.String()
17786}
17787
17788// Validate inspects the fields of the type to determine if they are valid.
17789func (s *PutBucketRequestPaymentInput) Validate() error {
17790	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
17791	if s.Bucket == nil {
17792		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17793	}
17794	if s.RequestPaymentConfiguration == nil {
17795		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
17796	}
17797	if s.RequestPaymentConfiguration != nil {
17798		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
17799			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
17800		}
17801	}
17802
17803	if invalidParams.Len() > 0 {
17804		return invalidParams
17805	}
17806	return nil
17807}
17808
17809// SetBucket sets the Bucket field's value.
17810func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
17811	s.Bucket = &v
17812	return s
17813}
17814
17815func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
17816	if s.Bucket == nil {
17817		return v
17818	}
17819	return *s.Bucket
17820}
17821
17822// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
17823func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
17824	s.RequestPaymentConfiguration = v
17825	return s
17826}
17827
17828type PutBucketRequestPaymentOutput struct {
17829	_ struct{} `type:"structure"`
17830}
17831
17832// String returns the string representation
17833func (s PutBucketRequestPaymentOutput) String() string {
17834	return awsutil.Prettify(s)
17835}
17836
17837// GoString returns the string representation
17838func (s PutBucketRequestPaymentOutput) GoString() string {
17839	return s.String()
17840}
17841
17842type PutBucketTaggingInput struct {
17843	_ struct{} `type:"structure" payload:"Tagging"`
17844
17845	// Bucket is a required field
17846	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17847
17848	// Tagging is a required field
17849	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17850}
17851
17852// String returns the string representation
17853func (s PutBucketTaggingInput) String() string {
17854	return awsutil.Prettify(s)
17855}
17856
17857// GoString returns the string representation
17858func (s PutBucketTaggingInput) GoString() string {
17859	return s.String()
17860}
17861
17862// Validate inspects the fields of the type to determine if they are valid.
17863func (s *PutBucketTaggingInput) Validate() error {
17864	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
17865	if s.Bucket == nil {
17866		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17867	}
17868	if s.Tagging == nil {
17869		invalidParams.Add(request.NewErrParamRequired("Tagging"))
17870	}
17871	if s.Tagging != nil {
17872		if err := s.Tagging.Validate(); err != nil {
17873			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
17874		}
17875	}
17876
17877	if invalidParams.Len() > 0 {
17878		return invalidParams
17879	}
17880	return nil
17881}
17882
17883// SetBucket sets the Bucket field's value.
17884func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
17885	s.Bucket = &v
17886	return s
17887}
17888
17889func (s *PutBucketTaggingInput) getBucket() (v string) {
17890	if s.Bucket == nil {
17891		return v
17892	}
17893	return *s.Bucket
17894}
17895
17896// SetTagging sets the Tagging field's value.
17897func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
17898	s.Tagging = v
17899	return s
17900}
17901
17902type PutBucketTaggingOutput struct {
17903	_ struct{} `type:"structure"`
17904}
17905
17906// String returns the string representation
17907func (s PutBucketTaggingOutput) String() string {
17908	return awsutil.Prettify(s)
17909}
17910
17911// GoString returns the string representation
17912func (s PutBucketTaggingOutput) GoString() string {
17913	return s.String()
17914}
17915
17916type PutBucketVersioningInput struct {
17917	_ struct{} `type:"structure" payload:"VersioningConfiguration"`
17918
17919	// Bucket is a required field
17920	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17921
17922	// The concatenation of the authentication device's serial number, a space,
17923	// and the value that is displayed on your authentication device.
17924	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
17925
17926	// VersioningConfiguration is a required field
17927	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
17928}
17929
17930// String returns the string representation
17931func (s PutBucketVersioningInput) String() string {
17932	return awsutil.Prettify(s)
17933}
17934
17935// GoString returns the string representation
17936func (s PutBucketVersioningInput) GoString() string {
17937	return s.String()
17938}
17939
17940// Validate inspects the fields of the type to determine if they are valid.
17941func (s *PutBucketVersioningInput) Validate() error {
17942	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
17943	if s.Bucket == nil {
17944		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17945	}
17946	if s.VersioningConfiguration == nil {
17947		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
17948	}
17949
17950	if invalidParams.Len() > 0 {
17951		return invalidParams
17952	}
17953	return nil
17954}
17955
17956// SetBucket sets the Bucket field's value.
17957func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
17958	s.Bucket = &v
17959	return s
17960}
17961
17962func (s *PutBucketVersioningInput) getBucket() (v string) {
17963	if s.Bucket == nil {
17964		return v
17965	}
17966	return *s.Bucket
17967}
17968
17969// SetMFA sets the MFA field's value.
17970func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
17971	s.MFA = &v
17972	return s
17973}
17974
17975// SetVersioningConfiguration sets the VersioningConfiguration field's value.
17976func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
17977	s.VersioningConfiguration = v
17978	return s
17979}
17980
17981type PutBucketVersioningOutput struct {
17982	_ struct{} `type:"structure"`
17983}
17984
17985// String returns the string representation
17986func (s PutBucketVersioningOutput) String() string {
17987	return awsutil.Prettify(s)
17988}
17989
17990// GoString returns the string representation
17991func (s PutBucketVersioningOutput) GoString() string {
17992	return s.String()
17993}
17994
17995type PutBucketWebsiteInput struct {
17996	_ struct{} `type:"structure" payload:"WebsiteConfiguration"`
17997
17998	// Bucket is a required field
17999	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18000
18001	// WebsiteConfiguration is a required field
18002	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18003}
18004
18005// String returns the string representation
18006func (s PutBucketWebsiteInput) String() string {
18007	return awsutil.Prettify(s)
18008}
18009
18010// GoString returns the string representation
18011func (s PutBucketWebsiteInput) GoString() string {
18012	return s.String()
18013}
18014
18015// Validate inspects the fields of the type to determine if they are valid.
18016func (s *PutBucketWebsiteInput) Validate() error {
18017	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
18018	if s.Bucket == nil {
18019		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18020	}
18021	if s.WebsiteConfiguration == nil {
18022		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
18023	}
18024	if s.WebsiteConfiguration != nil {
18025		if err := s.WebsiteConfiguration.Validate(); err != nil {
18026			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
18027		}
18028	}
18029
18030	if invalidParams.Len() > 0 {
18031		return invalidParams
18032	}
18033	return nil
18034}
18035
18036// SetBucket sets the Bucket field's value.
18037func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
18038	s.Bucket = &v
18039	return s
18040}
18041
18042func (s *PutBucketWebsiteInput) getBucket() (v string) {
18043	if s.Bucket == nil {
18044		return v
18045	}
18046	return *s.Bucket
18047}
18048
18049// SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
18050func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
18051	s.WebsiteConfiguration = v
18052	return s
18053}
18054
18055type PutBucketWebsiteOutput struct {
18056	_ struct{} `type:"structure"`
18057}
18058
18059// String returns the string representation
18060func (s PutBucketWebsiteOutput) String() string {
18061	return awsutil.Prettify(s)
18062}
18063
18064// GoString returns the string representation
18065func (s PutBucketWebsiteOutput) GoString() string {
18066	return s.String()
18067}
18068
18069type PutObjectAclInput struct {
18070	_ struct{} `type:"structure" payload:"AccessControlPolicy"`
18071
18072	// The canned ACL to apply to the object.
18073	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
18074
18075	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18076
18077	// Bucket is a required field
18078	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18079
18080	// Allows grantee the read, write, read ACP, and write ACP permissions on the
18081	// bucket.
18082	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
18083
18084	// Allows grantee to list the objects in the bucket.
18085	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
18086
18087	// Allows grantee to read the bucket ACL.
18088	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
18089
18090	// Allows grantee to create, overwrite, and delete any object in the bucket.
18091	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
18092
18093	// Allows grantee to write the ACL for the applicable bucket.
18094	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
18095
18096	// Key is a required field
18097	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18098
18099	// Confirms that the requester knows that she or he will be charged for the
18100	// request. Bucket owners need not specify this parameter in their requests.
18101	// Documentation on downloading objects from requester pays buckets can be found
18102	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
18103	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
18104
18105	// VersionId used to reference a specific version of the object.
18106	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
18107}
18108
18109// String returns the string representation
18110func (s PutObjectAclInput) String() string {
18111	return awsutil.Prettify(s)
18112}
18113
18114// GoString returns the string representation
18115func (s PutObjectAclInput) GoString() string {
18116	return s.String()
18117}
18118
18119// Validate inspects the fields of the type to determine if they are valid.
18120func (s *PutObjectAclInput) Validate() error {
18121	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
18122	if s.Bucket == nil {
18123		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18124	}
18125	if s.Key == nil {
18126		invalidParams.Add(request.NewErrParamRequired("Key"))
18127	}
18128	if s.Key != nil && len(*s.Key) < 1 {
18129		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18130	}
18131	if s.AccessControlPolicy != nil {
18132		if err := s.AccessControlPolicy.Validate(); err != nil {
18133			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
18134		}
18135	}
18136
18137	if invalidParams.Len() > 0 {
18138		return invalidParams
18139	}
18140	return nil
18141}
18142
18143// SetACL sets the ACL field's value.
18144func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
18145	s.ACL = &v
18146	return s
18147}
18148
18149// SetAccessControlPolicy sets the AccessControlPolicy field's value.
18150func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
18151	s.AccessControlPolicy = v
18152	return s
18153}
18154
18155// SetBucket sets the Bucket field's value.
18156func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
18157	s.Bucket = &v
18158	return s
18159}
18160
18161func (s *PutObjectAclInput) getBucket() (v string) {
18162	if s.Bucket == nil {
18163		return v
18164	}
18165	return *s.Bucket
18166}
18167
18168// SetGrantFullControl sets the GrantFullControl field's value.
18169func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
18170	s.GrantFullControl = &v
18171	return s
18172}
18173
18174// SetGrantRead sets the GrantRead field's value.
18175func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
18176	s.GrantRead = &v
18177	return s
18178}
18179
18180// SetGrantReadACP sets the GrantReadACP field's value.
18181func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
18182	s.GrantReadACP = &v
18183	return s
18184}
18185
18186// SetGrantWrite sets the GrantWrite field's value.
18187func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
18188	s.GrantWrite = &v
18189	return s
18190}
18191
18192// SetGrantWriteACP sets the GrantWriteACP field's value.
18193func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
18194	s.GrantWriteACP = &v
18195	return s
18196}
18197
18198// SetKey sets the Key field's value.
18199func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
18200	s.Key = &v
18201	return s
18202}
18203
18204// SetRequestPayer sets the RequestPayer field's value.
18205func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
18206	s.RequestPayer = &v
18207	return s
18208}
18209
18210// SetVersionId sets the VersionId field's value.
18211func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
18212	s.VersionId = &v
18213	return s
18214}
18215
18216type PutObjectAclOutput struct {
18217	_ struct{} `type:"structure"`
18218
18219	// If present, indicates that the requester was successfully charged for the
18220	// request.
18221	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
18222}
18223
18224// String returns the string representation
18225func (s PutObjectAclOutput) String() string {
18226	return awsutil.Prettify(s)
18227}
18228
18229// GoString returns the string representation
18230func (s PutObjectAclOutput) GoString() string {
18231	return s.String()
18232}
18233
18234// SetRequestCharged sets the RequestCharged field's value.
18235func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
18236	s.RequestCharged = &v
18237	return s
18238}
18239
18240type PutObjectInput struct {
18241	_ struct{} `type:"structure" payload:"Body"`
18242
18243	// The canned ACL to apply to the object.
18244	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
18245
18246	// Object data.
18247	Body io.ReadSeeker `type:"blob"`
18248
18249	// Name of the bucket to which the PUT operation was initiated.
18250	//
18251	// Bucket is a required field
18252	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18253
18254	// Specifies caching behavior along the request/reply chain.
18255	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
18256
18257	// Specifies presentational information for the object.
18258	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
18259
18260	// Specifies what content encodings have been applied to the object and thus
18261	// what decoding mechanisms must be applied to obtain the media-type referenced
18262	// by the Content-Type header field.
18263	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
18264
18265	// The language the content is in.
18266	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
18267
18268	// Size of the body in bytes. This parameter is useful when the size of the
18269	// body cannot be determined automatically.
18270	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
18271
18272	// The base64-encoded 128-bit MD5 digest of the part data.
18273	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
18274
18275	// A standard MIME type describing the format of the object data.
18276	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
18277
18278	// The date and time at which the object is no longer cacheable.
18279	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
18280
18281	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
18282	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
18283
18284	// Allows grantee to read the object data and its metadata.
18285	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
18286
18287	// Allows grantee to read the object ACL.
18288	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
18289
18290	// Allows grantee to write the ACL for the applicable object.
18291	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
18292
18293	// Object key for which the PUT operation was initiated.
18294	//
18295	// Key is a required field
18296	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18297
18298	// A map of metadata to store with the object in S3.
18299	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
18300
18301	// Confirms that the requester knows that she or he will be charged for the
18302	// request. Bucket owners need not specify this parameter in their requests.
18303	// Documentation on downloading objects from requester pays buckets can be found
18304	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
18305	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
18306
18307	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
18308	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
18309
18310	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
18311	// data. This value is used to store the object and then it is discarded; Amazon
18312	// does not store the encryption key. The key must be appropriate for use with
18313	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
18314	// header.
18315	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
18316
18317	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
18318	// Amazon S3 uses this header for a message integrity check to ensure the encryption
18319	// key was transmitted without error.
18320	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
18321
18322	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
18323	// requests for an object protected by AWS KMS will fail if not made via SSL
18324	// or using SigV4. Documentation on configuring any of the officially supported
18325	// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
18326	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
18327
18328	// The Server-side encryption algorithm used when storing this object in S3
18329	// (e.g., AES256, aws:kms).
18330	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
18331
18332	// The type of storage to use for the object. Defaults to 'STANDARD'.
18333	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
18334
18335	// The tag-set for the object. The tag-set must be encoded as URL Query parameters
18336	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
18337
18338	// If the bucket is configured as a website, redirects requests for this object
18339	// to another object in the same bucket or to an external URL. Amazon S3 stores
18340	// the value of this header in the object metadata.
18341	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
18342}
18343
18344// String returns the string representation
18345func (s PutObjectInput) String() string {
18346	return awsutil.Prettify(s)
18347}
18348
18349// GoString returns the string representation
18350func (s PutObjectInput) GoString() string {
18351	return s.String()
18352}
18353
18354// Validate inspects the fields of the type to determine if they are valid.
18355func (s *PutObjectInput) Validate() error {
18356	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
18357	if s.Bucket == nil {
18358		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18359	}
18360	if s.Key == nil {
18361		invalidParams.Add(request.NewErrParamRequired("Key"))
18362	}
18363	if s.Key != nil && len(*s.Key) < 1 {
18364		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18365	}
18366
18367	if invalidParams.Len() > 0 {
18368		return invalidParams
18369	}
18370	return nil
18371}
18372
18373// SetACL sets the ACL field's value.
18374func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
18375	s.ACL = &v
18376	return s
18377}
18378
18379// SetBody sets the Body field's value.
18380func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
18381	s.Body = v
18382	return s
18383}
18384
18385// SetBucket sets the Bucket field's value.
18386func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
18387	s.Bucket = &v
18388	return s
18389}
18390
18391func (s *PutObjectInput) getBucket() (v string) {
18392	if s.Bucket == nil {
18393		return v
18394	}
18395	return *s.Bucket
18396}
18397
18398// SetCacheControl sets the CacheControl field's value.
18399func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
18400	s.CacheControl = &v
18401	return s
18402}
18403
18404// SetContentDisposition sets the ContentDisposition field's value.
18405func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
18406	s.ContentDisposition = &v
18407	return s
18408}
18409
18410// SetContentEncoding sets the ContentEncoding field's value.
18411func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
18412	s.ContentEncoding = &v
18413	return s
18414}
18415
18416// SetContentLanguage sets the ContentLanguage field's value.
18417func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
18418	s.ContentLanguage = &v
18419	return s
18420}
18421
18422// SetContentLength sets the ContentLength field's value.
18423func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
18424	s.ContentLength = &v
18425	return s
18426}
18427
18428// SetContentMD5 sets the ContentMD5 field's value.
18429func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
18430	s.ContentMD5 = &v
18431	return s
18432}
18433
18434// SetContentType sets the ContentType field's value.
18435func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
18436	s.ContentType = &v
18437	return s
18438}
18439
18440// SetExpires sets the Expires field's value.
18441func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
18442	s.Expires = &v
18443	return s
18444}
18445
18446// SetGrantFullControl sets the GrantFullControl field's value.
18447func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
18448	s.GrantFullControl = &v
18449	return s
18450}
18451
18452// SetGrantRead sets the GrantRead field's value.
18453func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
18454	s.GrantRead = &v
18455	return s
18456}
18457
18458// SetGrantReadACP sets the GrantReadACP field's value.
18459func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
18460	s.GrantReadACP = &v
18461	return s
18462}
18463
18464// SetGrantWriteACP sets the GrantWriteACP field's value.
18465func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
18466	s.GrantWriteACP = &v
18467	return s
18468}
18469
18470// SetKey sets the Key field's value.
18471func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
18472	s.Key = &v
18473	return s
18474}
18475
18476// SetMetadata sets the Metadata field's value.
18477func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
18478	s.Metadata = v
18479	return s
18480}
18481
18482// SetRequestPayer sets the RequestPayer field's value.
18483func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
18484	s.RequestPayer = &v
18485	return s
18486}
18487
18488// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
18489func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
18490	s.SSECustomerAlgorithm = &v
18491	return s
18492}
18493
18494// SetSSECustomerKey sets the SSECustomerKey field's value.
18495func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
18496	s.SSECustomerKey = &v
18497	return s
18498}
18499
18500func (s *PutObjectInput) getSSECustomerKey() (v string) {
18501	if s.SSECustomerKey == nil {
18502		return v
18503	}
18504	return *s.SSECustomerKey
18505}
18506
18507// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
18508func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
18509	s.SSECustomerKeyMD5 = &v
18510	return s
18511}
18512
18513// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
18514func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
18515	s.SSEKMSKeyId = &v
18516	return s
18517}
18518
18519// SetServerSideEncryption sets the ServerSideEncryption field's value.
18520func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
18521	s.ServerSideEncryption = &v
18522	return s
18523}
18524
18525// SetStorageClass sets the StorageClass field's value.
18526func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
18527	s.StorageClass = &v
18528	return s
18529}
18530
18531// SetTagging sets the Tagging field's value.
18532func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
18533	s.Tagging = &v
18534	return s
18535}
18536
18537// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
18538func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
18539	s.WebsiteRedirectLocation = &v
18540	return s
18541}
18542
18543type PutObjectOutput struct {
18544	_ struct{} `type:"structure"`
18545
18546	// Entity tag for the uploaded object.
18547	ETag *string `location:"header" locationName:"ETag" type:"string"`
18548
18549	// If the object expiration is configured, this will contain the expiration
18550	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
18551	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
18552
18553	// If present, indicates that the requester was successfully charged for the
18554	// request.
18555	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
18556
18557	// If server-side encryption with a customer-provided encryption key was requested,
18558	// the response will include this header confirming the encryption algorithm
18559	// used.
18560	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
18561
18562	// If server-side encryption with a customer-provided encryption key was requested,
18563	// the response will include this header to provide round trip message integrity
18564	// verification of the customer-provided encryption key.
18565	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
18566
18567	// If present, specifies the ID of the AWS Key Management Service (KMS) master
18568	// encryption key that was used for the object.
18569	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
18570
18571	// The Server-side encryption algorithm used when storing this object in S3
18572	// (e.g., AES256, aws:kms).
18573	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
18574
18575	// Version of the object.
18576	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
18577}
18578
18579// String returns the string representation
18580func (s PutObjectOutput) String() string {
18581	return awsutil.Prettify(s)
18582}
18583
18584// GoString returns the string representation
18585func (s PutObjectOutput) GoString() string {
18586	return s.String()
18587}
18588
18589// SetETag sets the ETag field's value.
18590func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
18591	s.ETag = &v
18592	return s
18593}
18594
18595// SetExpiration sets the Expiration field's value.
18596func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
18597	s.Expiration = &v
18598	return s
18599}
18600
18601// SetRequestCharged sets the RequestCharged field's value.
18602func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
18603	s.RequestCharged = &v
18604	return s
18605}
18606
18607// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
18608func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
18609	s.SSECustomerAlgorithm = &v
18610	return s
18611}
18612
18613// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
18614func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
18615	s.SSECustomerKeyMD5 = &v
18616	return s
18617}
18618
18619// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
18620func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
18621	s.SSEKMSKeyId = &v
18622	return s
18623}
18624
18625// SetServerSideEncryption sets the ServerSideEncryption field's value.
18626func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
18627	s.ServerSideEncryption = &v
18628	return s
18629}
18630
18631// SetVersionId sets the VersionId field's value.
18632func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
18633	s.VersionId = &v
18634	return s
18635}
18636
18637type PutObjectTaggingInput struct {
18638	_ struct{} `type:"structure" payload:"Tagging"`
18639
18640	// Bucket is a required field
18641	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18642
18643	// Key is a required field
18644	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18645
18646	// Tagging is a required field
18647	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
18648
18649	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
18650}
18651
18652// String returns the string representation
18653func (s PutObjectTaggingInput) String() string {
18654	return awsutil.Prettify(s)
18655}
18656
18657// GoString returns the string representation
18658func (s PutObjectTaggingInput) GoString() string {
18659	return s.String()
18660}
18661
18662// Validate inspects the fields of the type to determine if they are valid.
18663func (s *PutObjectTaggingInput) Validate() error {
18664	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
18665	if s.Bucket == nil {
18666		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18667	}
18668	if s.Key == nil {
18669		invalidParams.Add(request.NewErrParamRequired("Key"))
18670	}
18671	if s.Key != nil && len(*s.Key) < 1 {
18672		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18673	}
18674	if s.Tagging == nil {
18675		invalidParams.Add(request.NewErrParamRequired("Tagging"))
18676	}
18677	if s.Tagging != nil {
18678		if err := s.Tagging.Validate(); err != nil {
18679			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
18680		}
18681	}
18682
18683	if invalidParams.Len() > 0 {
18684		return invalidParams
18685	}
18686	return nil
18687}
18688
18689// SetBucket sets the Bucket field's value.
18690func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
18691	s.Bucket = &v
18692	return s
18693}
18694
18695func (s *PutObjectTaggingInput) getBucket() (v string) {
18696	if s.Bucket == nil {
18697		return v
18698	}
18699	return *s.Bucket
18700}
18701
18702// SetKey sets the Key field's value.
18703func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
18704	s.Key = &v
18705	return s
18706}
18707
18708// SetTagging sets the Tagging field's value.
18709func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
18710	s.Tagging = v
18711	return s
18712}
18713
18714// SetVersionId sets the VersionId field's value.
18715func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
18716	s.VersionId = &v
18717	return s
18718}
18719
18720type PutObjectTaggingOutput struct {
18721	_ struct{} `type:"structure"`
18722
18723	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
18724}
18725
18726// String returns the string representation
18727func (s PutObjectTaggingOutput) String() string {
18728	return awsutil.Prettify(s)
18729}
18730
18731// GoString returns the string representation
18732func (s PutObjectTaggingOutput) GoString() string {
18733	return s.String()
18734}
18735
18736// SetVersionId sets the VersionId field's value.
18737func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
18738	s.VersionId = &v
18739	return s
18740}
18741
18742// Container for specifying an configuration when you want Amazon S3 to publish
18743// events to an Amazon Simple Queue Service (Amazon SQS) queue.
18744type QueueConfiguration struct {
18745	_ struct{} `type:"structure"`
18746
18747	// Events is a required field
18748	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
18749
18750	// Container for object key name filtering rules. For information about key
18751	// name filtering, go to Configuring Event Notifications (http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
18752	// in the Amazon Simple Storage Service Developer Guide.
18753	Filter *NotificationConfigurationFilter `type:"structure"`
18754
18755	// Optional unique identifier for configurations in a notification configuration.
18756	// If you don't provide one, Amazon S3 will assign an ID.
18757	Id *string `type:"string"`
18758
18759	// Amazon SQS queue ARN to which Amazon S3 will publish a message when it detects
18760	// events of specified type.
18761	//
18762	// QueueArn is a required field
18763	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
18764}
18765
18766// String returns the string representation
18767func (s QueueConfiguration) String() string {
18768	return awsutil.Prettify(s)
18769}
18770
18771// GoString returns the string representation
18772func (s QueueConfiguration) GoString() string {
18773	return s.String()
18774}
18775
18776// Validate inspects the fields of the type to determine if they are valid.
18777func (s *QueueConfiguration) Validate() error {
18778	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
18779	if s.Events == nil {
18780		invalidParams.Add(request.NewErrParamRequired("Events"))
18781	}
18782	if s.QueueArn == nil {
18783		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
18784	}
18785
18786	if invalidParams.Len() > 0 {
18787		return invalidParams
18788	}
18789	return nil
18790}
18791
18792// SetEvents sets the Events field's value.
18793func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
18794	s.Events = v
18795	return s
18796}
18797
18798// SetFilter sets the Filter field's value.
18799func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
18800	s.Filter = v
18801	return s
18802}
18803
18804// SetId sets the Id field's value.
18805func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
18806	s.Id = &v
18807	return s
18808}
18809
18810// SetQueueArn sets the QueueArn field's value.
18811func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
18812	s.QueueArn = &v
18813	return s
18814}
18815
18816type QueueConfigurationDeprecated struct {
18817	_ struct{} `type:"structure"`
18818
18819	// Bucket event for which to send notifications.
18820	Event *string `deprecated:"true" type:"string" enum:"Event"`
18821
18822	Events []*string `locationName:"Event" type:"list" flattened:"true"`
18823
18824	// Optional unique identifier for configurations in a notification configuration.
18825	// If you don't provide one, Amazon S3 will assign an ID.
18826	Id *string `type:"string"`
18827
18828	Queue *string `type:"string"`
18829}
18830
18831// String returns the string representation
18832func (s QueueConfigurationDeprecated) String() string {
18833	return awsutil.Prettify(s)
18834}
18835
18836// GoString returns the string representation
18837func (s QueueConfigurationDeprecated) GoString() string {
18838	return s.String()
18839}
18840
18841// SetEvent sets the Event field's value.
18842func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
18843	s.Event = &v
18844	return s
18845}
18846
18847// SetEvents sets the Events field's value.
18848func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
18849	s.Events = v
18850	return s
18851}
18852
18853// SetId sets the Id field's value.
18854func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
18855	s.Id = &v
18856	return s
18857}
18858
18859// SetQueue sets the Queue field's value.
18860func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
18861	s.Queue = &v
18862	return s
18863}
18864
18865type RecordsEvent struct {
18866	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
18867
18868	// The byte array of partial, one or more result records.
18869	//
18870	// Payload is automatically base64 encoded/decoded by the SDK.
18871	Payload []byte `type:"blob"`
18872}
18873
18874// String returns the string representation
18875func (s RecordsEvent) String() string {
18876	return awsutil.Prettify(s)
18877}
18878
18879// GoString returns the string representation
18880func (s RecordsEvent) GoString() string {
18881	return s.String()
18882}
18883
18884// SetPayload sets the Payload field's value.
18885func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
18886	s.Payload = v
18887	return s
18888}
18889
18890// The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
18891func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
18892
18893// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
18894// This method is only used internally within the SDK's EventStream handling.
18895func (s *RecordsEvent) UnmarshalEvent(
18896	payloadUnmarshaler protocol.PayloadUnmarshaler,
18897	msg eventstream.Message,
18898) error {
18899	s.Payload = make([]byte, len(msg.Payload))
18900	copy(s.Payload, msg.Payload)
18901	return nil
18902}
18903
18904type Redirect struct {
18905	_ struct{} `type:"structure"`
18906
18907	// The host name to use in the redirect request.
18908	HostName *string `type:"string"`
18909
18910	// The HTTP redirect code to use on the response. Not required if one of the
18911	// siblings is present.
18912	HttpRedirectCode *string `type:"string"`
18913
18914	// Protocol to use (http, https) when redirecting requests. The default is the
18915	// protocol that is used in the original request.
18916	Protocol *string `type:"string" enum:"Protocol"`
18917
18918	// The object key prefix to use in the redirect request. For example, to redirect
18919	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
18920	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
18921	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
18922	// if one of the siblings is present. Can be present only if ReplaceKeyWith
18923	// is not provided.
18924	ReplaceKeyPrefixWith *string `type:"string"`
18925
18926	// The specific object key to use in the redirect request. For example, redirect
18927	// request to error.html. Not required if one of the sibling is present. Can
18928	// be present only if ReplaceKeyPrefixWith is not provided.
18929	ReplaceKeyWith *string `type:"string"`
18930}
18931
18932// String returns the string representation
18933func (s Redirect) String() string {
18934	return awsutil.Prettify(s)
18935}
18936
18937// GoString returns the string representation
18938func (s Redirect) GoString() string {
18939	return s.String()
18940}
18941
18942// SetHostName sets the HostName field's value.
18943func (s *Redirect) SetHostName(v string) *Redirect {
18944	s.HostName = &v
18945	return s
18946}
18947
18948// SetHttpRedirectCode sets the HttpRedirectCode field's value.
18949func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
18950	s.HttpRedirectCode = &v
18951	return s
18952}
18953
18954// SetProtocol sets the Protocol field's value.
18955func (s *Redirect) SetProtocol(v string) *Redirect {
18956	s.Protocol = &v
18957	return s
18958}
18959
18960// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
18961func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
18962	s.ReplaceKeyPrefixWith = &v
18963	return s
18964}
18965
18966// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
18967func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
18968	s.ReplaceKeyWith = &v
18969	return s
18970}
18971
18972type RedirectAllRequestsTo struct {
18973	_ struct{} `type:"structure"`
18974
18975	// Name of the host where requests will be redirected.
18976	//
18977	// HostName is a required field
18978	HostName *string `type:"string" required:"true"`
18979
18980	// Protocol to use (http, https) when redirecting requests. The default is the
18981	// protocol that is used in the original request.
18982	Protocol *string `type:"string" enum:"Protocol"`
18983}
18984
18985// String returns the string representation
18986func (s RedirectAllRequestsTo) String() string {
18987	return awsutil.Prettify(s)
18988}
18989
18990// GoString returns the string representation
18991func (s RedirectAllRequestsTo) GoString() string {
18992	return s.String()
18993}
18994
18995// Validate inspects the fields of the type to determine if they are valid.
18996func (s *RedirectAllRequestsTo) Validate() error {
18997	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
18998	if s.HostName == nil {
18999		invalidParams.Add(request.NewErrParamRequired("HostName"))
19000	}
19001
19002	if invalidParams.Len() > 0 {
19003		return invalidParams
19004	}
19005	return nil
19006}
19007
19008// SetHostName sets the HostName field's value.
19009func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
19010	s.HostName = &v
19011	return s
19012}
19013
19014// SetProtocol sets the Protocol field's value.
19015func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
19016	s.Protocol = &v
19017	return s
19018}
19019
19020// Container for replication rules. You can add as many as 1,000 rules. Total
19021// replication configuration size can be up to 2 MB.
19022type ReplicationConfiguration struct {
19023	_ struct{} `type:"structure"`
19024
19025	// Amazon Resource Name (ARN) of an IAM role for Amazon S3 to assume when replicating
19026	// the objects.
19027	//
19028	// Role is a required field
19029	Role *string `type:"string" required:"true"`
19030
19031	// Container for information about a particular replication rule. Replication
19032	// configuration must have at least one rule and can contain up to 1,000 rules.
19033	//
19034	// Rules is a required field
19035	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
19036}
19037
19038// String returns the string representation
19039func (s ReplicationConfiguration) String() string {
19040	return awsutil.Prettify(s)
19041}
19042
19043// GoString returns the string representation
19044func (s ReplicationConfiguration) GoString() string {
19045	return s.String()
19046}
19047
19048// Validate inspects the fields of the type to determine if they are valid.
19049func (s *ReplicationConfiguration) Validate() error {
19050	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
19051	if s.Role == nil {
19052		invalidParams.Add(request.NewErrParamRequired("Role"))
19053	}
19054	if s.Rules == nil {
19055		invalidParams.Add(request.NewErrParamRequired("Rules"))
19056	}
19057	if s.Rules != nil {
19058		for i, v := range s.Rules {
19059			if v == nil {
19060				continue
19061			}
19062			if err := v.Validate(); err != nil {
19063				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
19064			}
19065		}
19066	}
19067
19068	if invalidParams.Len() > 0 {
19069		return invalidParams
19070	}
19071	return nil
19072}
19073
19074// SetRole sets the Role field's value.
19075func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
19076	s.Role = &v
19077	return s
19078}
19079
19080// SetRules sets the Rules field's value.
19081func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
19082	s.Rules = v
19083	return s
19084}
19085
19086// Container for information about a particular replication rule.
19087type ReplicationRule struct {
19088	_ struct{} `type:"structure"`
19089
19090	// Container for replication destination information.
19091	//
19092	// Destination is a required field
19093	Destination *Destination `type:"structure" required:"true"`
19094
19095	// Unique identifier for the rule. The value cannot be longer than 255 characters.
19096	ID *string `type:"string"`
19097
19098	// Object keyname prefix identifying one or more objects to which the rule applies.
19099	// Maximum prefix length can be up to 1,024 characters. Overlapping prefixes
19100	// are not supported.
19101	//
19102	// Prefix is a required field
19103	Prefix *string `type:"string" required:"true"`
19104
19105	// Container for filters that define which source objects should be replicated.
19106	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
19107
19108	// The rule is ignored if status is not Enabled.
19109	//
19110	// Status is a required field
19111	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
19112}
19113
19114// String returns the string representation
19115func (s ReplicationRule) String() string {
19116	return awsutil.Prettify(s)
19117}
19118
19119// GoString returns the string representation
19120func (s ReplicationRule) GoString() string {
19121	return s.String()
19122}
19123
19124// Validate inspects the fields of the type to determine if they are valid.
19125func (s *ReplicationRule) Validate() error {
19126	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
19127	if s.Destination == nil {
19128		invalidParams.Add(request.NewErrParamRequired("Destination"))
19129	}
19130	if s.Prefix == nil {
19131		invalidParams.Add(request.NewErrParamRequired("Prefix"))
19132	}
19133	if s.Status == nil {
19134		invalidParams.Add(request.NewErrParamRequired("Status"))
19135	}
19136	if s.Destination != nil {
19137		if err := s.Destination.Validate(); err != nil {
19138			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
19139		}
19140	}
19141	if s.SourceSelectionCriteria != nil {
19142		if err := s.SourceSelectionCriteria.Validate(); err != nil {
19143			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
19144		}
19145	}
19146
19147	if invalidParams.Len() > 0 {
19148		return invalidParams
19149	}
19150	return nil
19151}
19152
19153// SetDestination sets the Destination field's value.
19154func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
19155	s.Destination = v
19156	return s
19157}
19158
19159// SetID sets the ID field's value.
19160func (s *ReplicationRule) SetID(v string) *ReplicationRule {
19161	s.ID = &v
19162	return s
19163}
19164
19165// SetPrefix sets the Prefix field's value.
19166func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
19167	s.Prefix = &v
19168	return s
19169}
19170
19171// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
19172func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
19173	s.SourceSelectionCriteria = v
19174	return s
19175}
19176
19177// SetStatus sets the Status field's value.
19178func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
19179	s.Status = &v
19180	return s
19181}
19182
19183type RequestPaymentConfiguration struct {
19184	_ struct{} `type:"structure"`
19185
19186	// Specifies who pays for the download and request fees.
19187	//
19188	// Payer is a required field
19189	Payer *string `type:"string" required:"true" enum:"Payer"`
19190}
19191
19192// String returns the string representation
19193func (s RequestPaymentConfiguration) String() string {
19194	return awsutil.Prettify(s)
19195}
19196
19197// GoString returns the string representation
19198func (s RequestPaymentConfiguration) GoString() string {
19199	return s.String()
19200}
19201
19202// Validate inspects the fields of the type to determine if they are valid.
19203func (s *RequestPaymentConfiguration) Validate() error {
19204	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
19205	if s.Payer == nil {
19206		invalidParams.Add(request.NewErrParamRequired("Payer"))
19207	}
19208
19209	if invalidParams.Len() > 0 {
19210		return invalidParams
19211	}
19212	return nil
19213}
19214
19215// SetPayer sets the Payer field's value.
19216func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
19217	s.Payer = &v
19218	return s
19219}
19220
19221type RequestProgress struct {
19222	_ struct{} `type:"structure"`
19223
19224	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
19225	// TRUE, FALSE. Default value: FALSE.
19226	Enabled *bool `type:"boolean"`
19227}
19228
19229// String returns the string representation
19230func (s RequestProgress) String() string {
19231	return awsutil.Prettify(s)
19232}
19233
19234// GoString returns the string representation
19235func (s RequestProgress) GoString() string {
19236	return s.String()
19237}
19238
19239// SetEnabled sets the Enabled field's value.
19240func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
19241	s.Enabled = &v
19242	return s
19243}
19244
19245type RestoreObjectInput struct {
19246	_ struct{} `type:"structure" payload:"RestoreRequest"`
19247
19248	// Bucket is a required field
19249	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19250
19251	// Key is a required field
19252	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
19253
19254	// Confirms that the requester knows that she or he will be charged for the
19255	// request. Bucket owners need not specify this parameter in their requests.
19256	// Documentation on downloading objects from requester pays buckets can be found
19257	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
19258	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
19259
19260	// Container for restore job parameters.
19261	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19262
19263	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
19264}
19265
19266// String returns the string representation
19267func (s RestoreObjectInput) String() string {
19268	return awsutil.Prettify(s)
19269}
19270
19271// GoString returns the string representation
19272func (s RestoreObjectInput) GoString() string {
19273	return s.String()
19274}
19275
19276// Validate inspects the fields of the type to determine if they are valid.
19277func (s *RestoreObjectInput) Validate() error {
19278	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
19279	if s.Bucket == nil {
19280		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19281	}
19282	if s.Key == nil {
19283		invalidParams.Add(request.NewErrParamRequired("Key"))
19284	}
19285	if s.Key != nil && len(*s.Key) < 1 {
19286		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
19287	}
19288	if s.RestoreRequest != nil {
19289		if err := s.RestoreRequest.Validate(); err != nil {
19290			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
19291		}
19292	}
19293
19294	if invalidParams.Len() > 0 {
19295		return invalidParams
19296	}
19297	return nil
19298}
19299
19300// SetBucket sets the Bucket field's value.
19301func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
19302	s.Bucket = &v
19303	return s
19304}
19305
19306func (s *RestoreObjectInput) getBucket() (v string) {
19307	if s.Bucket == nil {
19308		return v
19309	}
19310	return *s.Bucket
19311}
19312
19313// SetKey sets the Key field's value.
19314func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
19315	s.Key = &v
19316	return s
19317}
19318
19319// SetRequestPayer sets the RequestPayer field's value.
19320func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
19321	s.RequestPayer = &v
19322	return s
19323}
19324
19325// SetRestoreRequest sets the RestoreRequest field's value.
19326func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
19327	s.RestoreRequest = v
19328	return s
19329}
19330
19331// SetVersionId sets the VersionId field's value.
19332func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
19333	s.VersionId = &v
19334	return s
19335}
19336
19337type RestoreObjectOutput struct {
19338	_ struct{} `type:"structure"`
19339
19340	// If present, indicates that the requester was successfully charged for the
19341	// request.
19342	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
19343
19344	// Indicates the path in the provided S3 output location where Select results
19345	// will be restored to.
19346	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
19347}
19348
19349// String returns the string representation
19350func (s RestoreObjectOutput) String() string {
19351	return awsutil.Prettify(s)
19352}
19353
19354// GoString returns the string representation
19355func (s RestoreObjectOutput) GoString() string {
19356	return s.String()
19357}
19358
19359// SetRequestCharged sets the RequestCharged field's value.
19360func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
19361	s.RequestCharged = &v
19362	return s
19363}
19364
19365// SetRestoreOutputPath sets the RestoreOutputPath field's value.
19366func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
19367	s.RestoreOutputPath = &v
19368	return s
19369}
19370
19371// Container for restore job parameters.
19372type RestoreRequest struct {
19373	_ struct{} `type:"structure"`
19374
19375	// Lifetime of the active copy in days. Do not use with restores that specify
19376	// OutputLocation.
19377	Days *int64 `type:"integer"`
19378
19379	// The optional description for the job.
19380	Description *string `type:"string"`
19381
19382	// Glacier related parameters pertaining to this job. Do not use with restores
19383	// that specify OutputLocation.
19384	GlacierJobParameters *GlacierJobParameters `type:"structure"`
19385
19386	// Describes the location where the restore job's output is stored.
19387	OutputLocation *OutputLocation `type:"structure"`
19388
19389	// Describes the parameters for Select job types.
19390	SelectParameters *SelectParameters `type:"structure"`
19391
19392	// Glacier retrieval tier at which the restore will be processed.
19393	Tier *string `type:"string" enum:"Tier"`
19394
19395	// Type of restore request.
19396	Type *string `type:"string" enum:"RestoreRequestType"`
19397}
19398
19399// String returns the string representation
19400func (s RestoreRequest) String() string {
19401	return awsutil.Prettify(s)
19402}
19403
19404// GoString returns the string representation
19405func (s RestoreRequest) GoString() string {
19406	return s.String()
19407}
19408
19409// Validate inspects the fields of the type to determine if they are valid.
19410func (s *RestoreRequest) Validate() error {
19411	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
19412	if s.GlacierJobParameters != nil {
19413		if err := s.GlacierJobParameters.Validate(); err != nil {
19414			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
19415		}
19416	}
19417	if s.OutputLocation != nil {
19418		if err := s.OutputLocation.Validate(); err != nil {
19419			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
19420		}
19421	}
19422	if s.SelectParameters != nil {
19423		if err := s.SelectParameters.Validate(); err != nil {
19424			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
19425		}
19426	}
19427
19428	if invalidParams.Len() > 0 {
19429		return invalidParams
19430	}
19431	return nil
19432}
19433
19434// SetDays sets the Days field's value.
19435func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
19436	s.Days = &v
19437	return s
19438}
19439
19440// SetDescription sets the Description field's value.
19441func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
19442	s.Description = &v
19443	return s
19444}
19445
19446// SetGlacierJobParameters sets the GlacierJobParameters field's value.
19447func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
19448	s.GlacierJobParameters = v
19449	return s
19450}
19451
19452// SetOutputLocation sets the OutputLocation field's value.
19453func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
19454	s.OutputLocation = v
19455	return s
19456}
19457
19458// SetSelectParameters sets the SelectParameters field's value.
19459func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
19460	s.SelectParameters = v
19461	return s
19462}
19463
19464// SetTier sets the Tier field's value.
19465func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
19466	s.Tier = &v
19467	return s
19468}
19469
19470// SetType sets the Type field's value.
19471func (s *RestoreRequest) SetType(v string) *RestoreRequest {
19472	s.Type = &v
19473	return s
19474}
19475
19476type RoutingRule struct {
19477	_ struct{} `type:"structure"`
19478
19479	// A container for describing a condition that must be met for the specified
19480	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
19481	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
19482	// redirect request to another host where you might process the error.
19483	Condition *Condition `type:"structure"`
19484
19485	// Container for redirect information. You can redirect requests to another
19486	// host, to another page, or with another protocol. In the event of an error,
19487	// you can can specify a different error code to return.
19488	//
19489	// Redirect is a required field
19490	Redirect *Redirect `type:"structure" required:"true"`
19491}
19492
19493// String returns the string representation
19494func (s RoutingRule) String() string {
19495	return awsutil.Prettify(s)
19496}
19497
19498// GoString returns the string representation
19499func (s RoutingRule) GoString() string {
19500	return s.String()
19501}
19502
19503// Validate inspects the fields of the type to determine if they are valid.
19504func (s *RoutingRule) Validate() error {
19505	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
19506	if s.Redirect == nil {
19507		invalidParams.Add(request.NewErrParamRequired("Redirect"))
19508	}
19509
19510	if invalidParams.Len() > 0 {
19511		return invalidParams
19512	}
19513	return nil
19514}
19515
19516// SetCondition sets the Condition field's value.
19517func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
19518	s.Condition = v
19519	return s
19520}
19521
19522// SetRedirect sets the Redirect field's value.
19523func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
19524	s.Redirect = v
19525	return s
19526}
19527
19528type Rule struct {
19529	_ struct{} `type:"structure"`
19530
19531	// Specifies the days since the initiation of an Incomplete Multipart Upload
19532	// that Lifecycle will wait before permanently removing all parts of the upload.
19533	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
19534
19535	Expiration *LifecycleExpiration `type:"structure"`
19536
19537	// Unique identifier for the rule. The value cannot be longer than 255 characters.
19538	ID *string `type:"string"`
19539
19540	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
19541	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
19542	// configuration action on a bucket that has versioning enabled (or suspended)
19543	// to request that Amazon S3 delete noncurrent object versions at a specific
19544	// period in the object's lifetime.
19545	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
19546
19547	// Container for the transition rule that describes when noncurrent objects
19548	// transition to the STANDARD_IA, ONEZONE_IA or GLACIER storage class. If your
19549	// bucket is versioning-enabled (or versioning is suspended), you can set this
19550	// action to request that Amazon S3 transition noncurrent object versions to
19551	// the STANDARD_IA, ONEZONE_IA or GLACIER storage class at a specific period
19552	// in the object's lifetime.
19553	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
19554
19555	// Prefix identifying one or more objects to which the rule applies.
19556	//
19557	// Prefix is a required field
19558	Prefix *string `type:"string" required:"true"`
19559
19560	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
19561	// is not currently being applied.
19562	//
19563	// Status is a required field
19564	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
19565
19566	Transition *Transition `type:"structure"`
19567}
19568
19569// String returns the string representation
19570func (s Rule) String() string {
19571	return awsutil.Prettify(s)
19572}
19573
19574// GoString returns the string representation
19575func (s Rule) GoString() string {
19576	return s.String()
19577}
19578
19579// Validate inspects the fields of the type to determine if they are valid.
19580func (s *Rule) Validate() error {
19581	invalidParams := request.ErrInvalidParams{Context: "Rule"}
19582	if s.Prefix == nil {
19583		invalidParams.Add(request.NewErrParamRequired("Prefix"))
19584	}
19585	if s.Status == nil {
19586		invalidParams.Add(request.NewErrParamRequired("Status"))
19587	}
19588
19589	if invalidParams.Len() > 0 {
19590		return invalidParams
19591	}
19592	return nil
19593}
19594
19595// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
19596func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
19597	s.AbortIncompleteMultipartUpload = v
19598	return s
19599}
19600
19601// SetExpiration sets the Expiration field's value.
19602func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
19603	s.Expiration = v
19604	return s
19605}
19606
19607// SetID sets the ID field's value.
19608func (s *Rule) SetID(v string) *Rule {
19609	s.ID = &v
19610	return s
19611}
19612
19613// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
19614func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
19615	s.NoncurrentVersionExpiration = v
19616	return s
19617}
19618
19619// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
19620func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
19621	s.NoncurrentVersionTransition = v
19622	return s
19623}
19624
19625// SetPrefix sets the Prefix field's value.
19626func (s *Rule) SetPrefix(v string) *Rule {
19627	s.Prefix = &v
19628	return s
19629}
19630
19631// SetStatus sets the Status field's value.
19632func (s *Rule) SetStatus(v string) *Rule {
19633	s.Status = &v
19634	return s
19635}
19636
19637// SetTransition sets the Transition field's value.
19638func (s *Rule) SetTransition(v *Transition) *Rule {
19639	s.Transition = v
19640	return s
19641}
19642
19643// Specifies the use of SSE-KMS to encrypt delievered Inventory reports.
19644type SSEKMS struct {
19645	_ struct{} `locationName:"SSE-KMS" type:"structure"`
19646
19647	// Specifies the ID of the AWS Key Management Service (KMS) master encryption
19648	// key to use for encrypting Inventory reports.
19649	//
19650	// KeyId is a required field
19651	KeyId *string `type:"string" required:"true"`
19652}
19653
19654// String returns the string representation
19655func (s SSEKMS) String() string {
19656	return awsutil.Prettify(s)
19657}
19658
19659// GoString returns the string representation
19660func (s SSEKMS) GoString() string {
19661	return s.String()
19662}
19663
19664// Validate inspects the fields of the type to determine if they are valid.
19665func (s *SSEKMS) Validate() error {
19666	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
19667	if s.KeyId == nil {
19668		invalidParams.Add(request.NewErrParamRequired("KeyId"))
19669	}
19670
19671	if invalidParams.Len() > 0 {
19672		return invalidParams
19673	}
19674	return nil
19675}
19676
19677// SetKeyId sets the KeyId field's value.
19678func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
19679	s.KeyId = &v
19680	return s
19681}
19682
19683// Specifies the use of SSE-S3 to encrypt delievered Inventory reports.
19684type SSES3 struct {
19685	_ struct{} `locationName:"SSE-S3" type:"structure"`
19686}
19687
19688// String returns the string representation
19689func (s SSES3) String() string {
19690	return awsutil.Prettify(s)
19691}
19692
19693// GoString returns the string representation
19694func (s SSES3) GoString() string {
19695	return s.String()
19696}
19697
19698// SelectObjectContentEventStream provides handling of EventStreams for
19699// the SelectObjectContent API.
19700//
19701// Use this type to receive SelectObjectContentEventStream events. The events
19702// can be read from the Events channel member.
19703//
19704// The events that can be received are:
19705//
19706//     * ContinuationEvent
19707//     * EndEvent
19708//     * ProgressEvent
19709//     * RecordsEvent
19710//     * StatsEvent
19711type SelectObjectContentEventStream struct {
19712	// Reader is the EventStream reader for the SelectObjectContentEventStream
19713	// events. This value is automatically set by the SDK when the API call is made
19714	// Use this member when unit testing your code with the SDK to mock out the
19715	// EventStream Reader.
19716	//
19717	// Must not be nil.
19718	Reader SelectObjectContentEventStreamReader
19719
19720	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
19721	// EventStream this is the response Body. The stream will be closed when
19722	// the Close method of the EventStream is called.
19723	StreamCloser io.Closer
19724}
19725
19726// Close closes the EventStream. This will also cause the Events channel to be
19727// closed. You can use the closing of the Events channel to terminate your
19728// application's read from the API's EventStream.
19729//
19730// Will close the underlying EventStream reader. For EventStream over HTTP
19731// connection this will also close the HTTP connection.
19732//
19733// Close must be called when done using the EventStream API. Not calling Close
19734// may result in resource leaks.
19735func (es *SelectObjectContentEventStream) Close() (err error) {
19736	es.Reader.Close()
19737	return es.Err()
19738}
19739
19740// Err returns any error that occurred while reading EventStream Events from
19741// the service API's response. Returns nil if there were no errors.
19742func (es *SelectObjectContentEventStream) Err() error {
19743	if err := es.Reader.Err(); err != nil {
19744		return err
19745	}
19746	es.StreamCloser.Close()
19747
19748	return nil
19749}
19750
19751// Events returns a channel to read EventStream Events from the
19752// SelectObjectContent API.
19753//
19754// These events are:
19755//
19756//     * ContinuationEvent
19757//     * EndEvent
19758//     * ProgressEvent
19759//     * RecordsEvent
19760//     * StatsEvent
19761func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
19762	return es.Reader.Events()
19763}
19764
19765// SelectObjectContentEventStreamEvent groups together all EventStream
19766// events read from the SelectObjectContent API.
19767//
19768// These events are:
19769//
19770//     * ContinuationEvent
19771//     * EndEvent
19772//     * ProgressEvent
19773//     * RecordsEvent
19774//     * StatsEvent
19775type SelectObjectContentEventStreamEvent interface {
19776	eventSelectObjectContentEventStream()
19777}
19778
19779// SelectObjectContentEventStreamReader provides the interface for reading EventStream
19780// Events from the SelectObjectContent API. The
19781// default implementation for this interface will be SelectObjectContentEventStream.
19782//
19783// The reader's Close method must allow multiple concurrent calls.
19784//
19785// These events are:
19786//
19787//     * ContinuationEvent
19788//     * EndEvent
19789//     * ProgressEvent
19790//     * RecordsEvent
19791//     * StatsEvent
19792type SelectObjectContentEventStreamReader interface {
19793	// Returns a channel of events as they are read from the event stream.
19794	Events() <-chan SelectObjectContentEventStreamEvent
19795
19796	// Close will close the underlying event stream reader. For event stream over
19797	// HTTP this will also close the HTTP connection.
19798	Close() error
19799
19800	// Returns any error that has occured while reading from the event stream.
19801	Err() error
19802}
19803
19804type readSelectObjectContentEventStream struct {
19805	eventReader *eventstreamapi.EventReader
19806	stream      chan SelectObjectContentEventStreamEvent
19807	errVal      atomic.Value
19808
19809	done      chan struct{}
19810	closeOnce sync.Once
19811}
19812
19813func newReadSelectObjectContentEventStream(
19814	reader io.ReadCloser,
19815	unmarshalers request.HandlerList,
19816	logger aws.Logger,
19817	logLevel aws.LogLevelType,
19818) *readSelectObjectContentEventStream {
19819	r := &readSelectObjectContentEventStream{
19820		stream: make(chan SelectObjectContentEventStreamEvent),
19821		done:   make(chan struct{}),
19822	}
19823
19824	r.eventReader = eventstreamapi.NewEventReader(
19825		reader,
19826		protocol.HandlerPayloadUnmarshal{
19827			Unmarshalers: unmarshalers,
19828		},
19829		r.unmarshalerForEventType,
19830	)
19831	r.eventReader.UseLogger(logger, logLevel)
19832
19833	return r
19834}
19835
19836// Close will close the underlying event stream reader. For EventStream over
19837// HTTP this will also close the HTTP connection.
19838func (r *readSelectObjectContentEventStream) Close() error {
19839	r.closeOnce.Do(r.safeClose)
19840
19841	return r.Err()
19842}
19843
19844func (r *readSelectObjectContentEventStream) safeClose() {
19845	close(r.done)
19846	err := r.eventReader.Close()
19847	if err != nil {
19848		r.errVal.Store(err)
19849	}
19850}
19851
19852func (r *readSelectObjectContentEventStream) Err() error {
19853	if v := r.errVal.Load(); v != nil {
19854		return v.(error)
19855	}
19856
19857	return nil
19858}
19859
19860func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
19861	return r.stream
19862}
19863
19864func (r *readSelectObjectContentEventStream) readEventStream() {
19865	defer close(r.stream)
19866
19867	for {
19868		event, err := r.eventReader.ReadEvent()
19869		if err != nil {
19870			if err == io.EOF {
19871				return
19872			}
19873			select {
19874			case <-r.done:
19875				// If closed already ignore the error
19876				return
19877			default:
19878			}
19879			r.errVal.Store(err)
19880			return
19881		}
19882
19883		select {
19884		case r.stream <- event.(SelectObjectContentEventStreamEvent):
19885		case <-r.done:
19886			return
19887		}
19888	}
19889}
19890
19891func (r *readSelectObjectContentEventStream) unmarshalerForEventType(
19892	eventType string,
19893) (eventstreamapi.Unmarshaler, error) {
19894	switch eventType {
19895	case "Cont":
19896		return &ContinuationEvent{}, nil
19897
19898	case "End":
19899		return &EndEvent{}, nil
19900
19901	case "Progress":
19902		return &ProgressEvent{}, nil
19903
19904	case "Records":
19905		return &RecordsEvent{}, nil
19906
19907	case "Stats":
19908		return &StatsEvent{}, nil
19909	default:
19910		return nil, awserr.New(
19911			request.ErrCodeSerialization,
19912			fmt.Sprintf("unknown event type name, %s, for SelectObjectContentEventStream", eventType),
19913			nil,
19914		)
19915	}
19916}
19917
19918// Request to filter the contents of an Amazon S3 object based on a simple Structured
19919// Query Language (SQL) statement. In the request, along with the SQL expression,
19920// you must also specify a data serialization format (JSON or CSV) of the object.
19921// Amazon S3 uses this to parse object data into records, and returns only records
19922// that match the specified SQL expression. You must also specify the data serialization
19923// format for the response. For more information, go to S3Select API Documentation
19924// (http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
19925type SelectObjectContentInput struct {
19926	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
19927
19928	// The S3 Bucket.
19929	//
19930	// Bucket is a required field
19931	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19932
19933	// The expression that is used to query the object.
19934	//
19935	// Expression is a required field
19936	Expression *string `type:"string" required:"true"`
19937
19938	// The type of the provided expression (e.g., SQL).
19939	//
19940	// ExpressionType is a required field
19941	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
19942
19943	// Describes the format of the data in the object that is being queried.
19944	//
19945	// InputSerialization is a required field
19946	InputSerialization *InputSerialization `type:"structure" required:"true"`
19947
19948	// The Object Key.
19949	//
19950	// Key is a required field
19951	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
19952
19953	// Describes the format of the data that you want Amazon S3 to return in response.
19954	//
19955	// OutputSerialization is a required field
19956	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
19957
19958	// Specifies if periodic request progress information should be enabled.
19959	RequestProgress *RequestProgress `type:"structure"`
19960
19961	// The SSE Algorithm used to encrypt the object. For more information, go to
19962	//  Server-Side Encryption (Using Customer-Provided Encryption Keys (http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
19963	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
19964
19965	// The SSE Customer Key. For more information, go to  Server-Side Encryption
19966	// (Using Customer-Provided Encryption Keys (http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
19967	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
19968
19969	// The SSE Customer Key MD5. For more information, go to  Server-Side Encryption
19970	// (Using Customer-Provided Encryption Keys (http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
19971	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
19972}
19973
19974// String returns the string representation
19975func (s SelectObjectContentInput) String() string {
19976	return awsutil.Prettify(s)
19977}
19978
19979// GoString returns the string representation
19980func (s SelectObjectContentInput) GoString() string {
19981	return s.String()
19982}
19983
19984// Validate inspects the fields of the type to determine if they are valid.
19985func (s *SelectObjectContentInput) Validate() error {
19986	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
19987	if s.Bucket == nil {
19988		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19989	}
19990	if s.Expression == nil {
19991		invalidParams.Add(request.NewErrParamRequired("Expression"))
19992	}
19993	if s.ExpressionType == nil {
19994		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
19995	}
19996	if s.InputSerialization == nil {
19997		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
19998	}
19999	if s.Key == nil {
20000		invalidParams.Add(request.NewErrParamRequired("Key"))
20001	}
20002	if s.Key != nil && len(*s.Key) < 1 {
20003		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20004	}
20005	if s.OutputSerialization == nil {
20006		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
20007	}
20008
20009	if invalidParams.Len() > 0 {
20010		return invalidParams
20011	}
20012	return nil
20013}
20014
20015// SetBucket sets the Bucket field's value.
20016func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
20017	s.Bucket = &v
20018	return s
20019}
20020
20021func (s *SelectObjectContentInput) getBucket() (v string) {
20022	if s.Bucket == nil {
20023		return v
20024	}
20025	return *s.Bucket
20026}
20027
20028// SetExpression sets the Expression field's value.
20029func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
20030	s.Expression = &v
20031	return s
20032}
20033
20034// SetExpressionType sets the ExpressionType field's value.
20035func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
20036	s.ExpressionType = &v
20037	return s
20038}
20039
20040// SetInputSerialization sets the InputSerialization field's value.
20041func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
20042	s.InputSerialization = v
20043	return s
20044}
20045
20046// SetKey sets the Key field's value.
20047func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
20048	s.Key = &v
20049	return s
20050}
20051
20052// SetOutputSerialization sets the OutputSerialization field's value.
20053func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
20054	s.OutputSerialization = v
20055	return s
20056}
20057
20058// SetRequestProgress sets the RequestProgress field's value.
20059func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
20060	s.RequestProgress = v
20061	return s
20062}
20063
20064// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
20065func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
20066	s.SSECustomerAlgorithm = &v
20067	return s
20068}
20069
20070// SetSSECustomerKey sets the SSECustomerKey field's value.
20071func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
20072	s.SSECustomerKey = &v
20073	return s
20074}
20075
20076func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
20077	if s.SSECustomerKey == nil {
20078		return v
20079	}
20080	return *s.SSECustomerKey
20081}
20082
20083// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
20084func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
20085	s.SSECustomerKeyMD5 = &v
20086	return s
20087}
20088
20089type SelectObjectContentOutput struct {
20090	_ struct{} `type:"structure" payload:"Payload"`
20091
20092	// Use EventStream to use the API's stream.
20093	EventStream *SelectObjectContentEventStream `type:"structure"`
20094}
20095
20096// String returns the string representation
20097func (s SelectObjectContentOutput) String() string {
20098	return awsutil.Prettify(s)
20099}
20100
20101// GoString returns the string representation
20102func (s SelectObjectContentOutput) GoString() string {
20103	return s.String()
20104}
20105
20106// SetEventStream sets the EventStream field's value.
20107func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
20108	s.EventStream = v
20109	return s
20110}
20111
20112func (s *SelectObjectContentOutput) runEventStreamLoop(r *request.Request) {
20113	if r.Error != nil {
20114		return
20115	}
20116	reader := newReadSelectObjectContentEventStream(
20117		r.HTTPResponse.Body,
20118		r.Handlers.UnmarshalStream,
20119		r.Config.Logger,
20120		r.Config.LogLevel.Value(),
20121	)
20122	go reader.readEventStream()
20123
20124	eventStream := &SelectObjectContentEventStream{
20125		StreamCloser: r.HTTPResponse.Body,
20126		Reader:       reader,
20127	}
20128	s.EventStream = eventStream
20129}
20130
20131// Describes the parameters for Select job types.
20132type SelectParameters struct {
20133	_ struct{} `type:"structure"`
20134
20135	// The expression that is used to query the object.
20136	//
20137	// Expression is a required field
20138	Expression *string `type:"string" required:"true"`
20139
20140	// The type of the provided expression (e.g., SQL).
20141	//
20142	// ExpressionType is a required field
20143	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
20144
20145	// Describes the serialization format of the object.
20146	//
20147	// InputSerialization is a required field
20148	InputSerialization *InputSerialization `type:"structure" required:"true"`
20149
20150	// Describes how the results of the Select job are serialized.
20151	//
20152	// OutputSerialization is a required field
20153	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
20154}
20155
20156// String returns the string representation
20157func (s SelectParameters) String() string {
20158	return awsutil.Prettify(s)
20159}
20160
20161// GoString returns the string representation
20162func (s SelectParameters) GoString() string {
20163	return s.String()
20164}
20165
20166// Validate inspects the fields of the type to determine if they are valid.
20167func (s *SelectParameters) Validate() error {
20168	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
20169	if s.Expression == nil {
20170		invalidParams.Add(request.NewErrParamRequired("Expression"))
20171	}
20172	if s.ExpressionType == nil {
20173		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
20174	}
20175	if s.InputSerialization == nil {
20176		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
20177	}
20178	if s.OutputSerialization == nil {
20179		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
20180	}
20181
20182	if invalidParams.Len() > 0 {
20183		return invalidParams
20184	}
20185	return nil
20186}
20187
20188// SetExpression sets the Expression field's value.
20189func (s *SelectParameters) SetExpression(v string) *SelectParameters {
20190	s.Expression = &v
20191	return s
20192}
20193
20194// SetExpressionType sets the ExpressionType field's value.
20195func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
20196	s.ExpressionType = &v
20197	return s
20198}
20199
20200// SetInputSerialization sets the InputSerialization field's value.
20201func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
20202	s.InputSerialization = v
20203	return s
20204}
20205
20206// SetOutputSerialization sets the OutputSerialization field's value.
20207func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
20208	s.OutputSerialization = v
20209	return s
20210}
20211
20212// Describes the default server-side encryption to apply to new objects in the
20213// bucket. If Put Object request does not specify any server-side encryption,
20214// this default encryption will be applied.
20215type ServerSideEncryptionByDefault struct {
20216	_ struct{} `type:"structure"`
20217
20218	// KMS master key ID to use for the default encryption. This parameter is allowed
20219	// if SSEAlgorithm is aws:kms.
20220	KMSMasterKeyID *string `type:"string"`
20221
20222	// Server-side encryption algorithm to use for the default encryption.
20223	//
20224	// SSEAlgorithm is a required field
20225	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
20226}
20227
20228// String returns the string representation
20229func (s ServerSideEncryptionByDefault) String() string {
20230	return awsutil.Prettify(s)
20231}
20232
20233// GoString returns the string representation
20234func (s ServerSideEncryptionByDefault) GoString() string {
20235	return s.String()
20236}
20237
20238// Validate inspects the fields of the type to determine if they are valid.
20239func (s *ServerSideEncryptionByDefault) Validate() error {
20240	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
20241	if s.SSEAlgorithm == nil {
20242		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
20243	}
20244
20245	if invalidParams.Len() > 0 {
20246		return invalidParams
20247	}
20248	return nil
20249}
20250
20251// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
20252func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
20253	s.KMSMasterKeyID = &v
20254	return s
20255}
20256
20257// SetSSEAlgorithm sets the SSEAlgorithm field's value.
20258func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
20259	s.SSEAlgorithm = &v
20260	return s
20261}
20262
20263// Container for server-side encryption configuration rules. Currently S3 supports
20264// one rule only.
20265type ServerSideEncryptionConfiguration struct {
20266	_ struct{} `type:"structure"`
20267
20268	// Container for information about a particular server-side encryption configuration
20269	// rule.
20270	//
20271	// Rules is a required field
20272	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
20273}
20274
20275// String returns the string representation
20276func (s ServerSideEncryptionConfiguration) String() string {
20277	return awsutil.Prettify(s)
20278}
20279
20280// GoString returns the string representation
20281func (s ServerSideEncryptionConfiguration) GoString() string {
20282	return s.String()
20283}
20284
20285// Validate inspects the fields of the type to determine if they are valid.
20286func (s *ServerSideEncryptionConfiguration) Validate() error {
20287	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
20288	if s.Rules == nil {
20289		invalidParams.Add(request.NewErrParamRequired("Rules"))
20290	}
20291	if s.Rules != nil {
20292		for i, v := range s.Rules {
20293			if v == nil {
20294				continue
20295			}
20296			if err := v.Validate(); err != nil {
20297				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
20298			}
20299		}
20300	}
20301
20302	if invalidParams.Len() > 0 {
20303		return invalidParams
20304	}
20305	return nil
20306}
20307
20308// SetRules sets the Rules field's value.
20309func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
20310	s.Rules = v
20311	return s
20312}
20313
20314// Container for information about a particular server-side encryption configuration
20315// rule.
20316type ServerSideEncryptionRule struct {
20317	_ struct{} `type:"structure"`
20318
20319	// Describes the default server-side encryption to apply to new objects in the
20320	// bucket. If Put Object request does not specify any server-side encryption,
20321	// this default encryption will be applied.
20322	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
20323}
20324
20325// String returns the string representation
20326func (s ServerSideEncryptionRule) String() string {
20327	return awsutil.Prettify(s)
20328}
20329
20330// GoString returns the string representation
20331func (s ServerSideEncryptionRule) GoString() string {
20332	return s.String()
20333}
20334
20335// Validate inspects the fields of the type to determine if they are valid.
20336func (s *ServerSideEncryptionRule) Validate() error {
20337	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
20338	if s.ApplyServerSideEncryptionByDefault != nil {
20339		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
20340			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
20341		}
20342	}
20343
20344	if invalidParams.Len() > 0 {
20345		return invalidParams
20346	}
20347	return nil
20348}
20349
20350// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
20351func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
20352	s.ApplyServerSideEncryptionByDefault = v
20353	return s
20354}
20355
20356// Container for filters that define which source objects should be replicated.
20357type SourceSelectionCriteria struct {
20358	_ struct{} `type:"structure"`
20359
20360	// Container for filter information of selection of KMS Encrypted S3 objects.
20361	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
20362}
20363
20364// String returns the string representation
20365func (s SourceSelectionCriteria) String() string {
20366	return awsutil.Prettify(s)
20367}
20368
20369// GoString returns the string representation
20370func (s SourceSelectionCriteria) GoString() string {
20371	return s.String()
20372}
20373
20374// Validate inspects the fields of the type to determine if they are valid.
20375func (s *SourceSelectionCriteria) Validate() error {
20376	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
20377	if s.SseKmsEncryptedObjects != nil {
20378		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
20379			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
20380		}
20381	}
20382
20383	if invalidParams.Len() > 0 {
20384		return invalidParams
20385	}
20386	return nil
20387}
20388
20389// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
20390func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
20391	s.SseKmsEncryptedObjects = v
20392	return s
20393}
20394
20395// Container for filter information of selection of KMS Encrypted S3 objects.
20396type SseKmsEncryptedObjects struct {
20397	_ struct{} `type:"structure"`
20398
20399	// The replication for KMS encrypted S3 objects is disabled if status is not
20400	// Enabled.
20401	//
20402	// Status is a required field
20403	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
20404}
20405
20406// String returns the string representation
20407func (s SseKmsEncryptedObjects) String() string {
20408	return awsutil.Prettify(s)
20409}
20410
20411// GoString returns the string representation
20412func (s SseKmsEncryptedObjects) GoString() string {
20413	return s.String()
20414}
20415
20416// Validate inspects the fields of the type to determine if they are valid.
20417func (s *SseKmsEncryptedObjects) Validate() error {
20418	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
20419	if s.Status == nil {
20420		invalidParams.Add(request.NewErrParamRequired("Status"))
20421	}
20422
20423	if invalidParams.Len() > 0 {
20424		return invalidParams
20425	}
20426	return nil
20427}
20428
20429// SetStatus sets the Status field's value.
20430func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
20431	s.Status = &v
20432	return s
20433}
20434
20435type Stats struct {
20436	_ struct{} `type:"structure"`
20437
20438	// Total number of uncompressed object bytes processed.
20439	BytesProcessed *int64 `type:"long"`
20440
20441	// Total number of bytes of records payload data returned.
20442	BytesReturned *int64 `type:"long"`
20443
20444	// Total number of object bytes scanned.
20445	BytesScanned *int64 `type:"long"`
20446}
20447
20448// String returns the string representation
20449func (s Stats) String() string {
20450	return awsutil.Prettify(s)
20451}
20452
20453// GoString returns the string representation
20454func (s Stats) GoString() string {
20455	return s.String()
20456}
20457
20458// SetBytesProcessed sets the BytesProcessed field's value.
20459func (s *Stats) SetBytesProcessed(v int64) *Stats {
20460	s.BytesProcessed = &v
20461	return s
20462}
20463
20464// SetBytesReturned sets the BytesReturned field's value.
20465func (s *Stats) SetBytesReturned(v int64) *Stats {
20466	s.BytesReturned = &v
20467	return s
20468}
20469
20470// SetBytesScanned sets the BytesScanned field's value.
20471func (s *Stats) SetBytesScanned(v int64) *Stats {
20472	s.BytesScanned = &v
20473	return s
20474}
20475
20476type StatsEvent struct {
20477	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
20478
20479	// The Stats event details.
20480	Details *Stats `locationName:"Details" type:"structure"`
20481}
20482
20483// String returns the string representation
20484func (s StatsEvent) String() string {
20485	return awsutil.Prettify(s)
20486}
20487
20488// GoString returns the string representation
20489func (s StatsEvent) GoString() string {
20490	return s.String()
20491}
20492
20493// SetDetails sets the Details field's value.
20494func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
20495	s.Details = v
20496	return s
20497}
20498
20499// The StatsEvent is and event in the SelectObjectContentEventStream group of events.
20500func (s *StatsEvent) eventSelectObjectContentEventStream() {}
20501
20502// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
20503// This method is only used internally within the SDK's EventStream handling.
20504func (s *StatsEvent) UnmarshalEvent(
20505	payloadUnmarshaler protocol.PayloadUnmarshaler,
20506	msg eventstream.Message,
20507) error {
20508	if err := payloadUnmarshaler.UnmarshalPayload(
20509		bytes.NewReader(msg.Payload), s,
20510	); err != nil {
20511		return err
20512	}
20513	return nil
20514}
20515
20516type StorageClassAnalysis struct {
20517	_ struct{} `type:"structure"`
20518
20519	// A container used to describe how data related to the storage class analysis
20520	// should be exported.
20521	DataExport *StorageClassAnalysisDataExport `type:"structure"`
20522}
20523
20524// String returns the string representation
20525func (s StorageClassAnalysis) String() string {
20526	return awsutil.Prettify(s)
20527}
20528
20529// GoString returns the string representation
20530func (s StorageClassAnalysis) GoString() string {
20531	return s.String()
20532}
20533
20534// Validate inspects the fields of the type to determine if they are valid.
20535func (s *StorageClassAnalysis) Validate() error {
20536	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
20537	if s.DataExport != nil {
20538		if err := s.DataExport.Validate(); err != nil {
20539			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
20540		}
20541	}
20542
20543	if invalidParams.Len() > 0 {
20544		return invalidParams
20545	}
20546	return nil
20547}
20548
20549// SetDataExport sets the DataExport field's value.
20550func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
20551	s.DataExport = v
20552	return s
20553}
20554
20555type StorageClassAnalysisDataExport struct {
20556	_ struct{} `type:"structure"`
20557
20558	// The place to store the data for an analysis.
20559	//
20560	// Destination is a required field
20561	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
20562
20563	// The version of the output schema to use when exporting data. Must be V_1.
20564	//
20565	// OutputSchemaVersion is a required field
20566	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
20567}
20568
20569// String returns the string representation
20570func (s StorageClassAnalysisDataExport) String() string {
20571	return awsutil.Prettify(s)
20572}
20573
20574// GoString returns the string representation
20575func (s StorageClassAnalysisDataExport) GoString() string {
20576	return s.String()
20577}
20578
20579// Validate inspects the fields of the type to determine if they are valid.
20580func (s *StorageClassAnalysisDataExport) Validate() error {
20581	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
20582	if s.Destination == nil {
20583		invalidParams.Add(request.NewErrParamRequired("Destination"))
20584	}
20585	if s.OutputSchemaVersion == nil {
20586		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
20587	}
20588	if s.Destination != nil {
20589		if err := s.Destination.Validate(); err != nil {
20590			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
20591		}
20592	}
20593
20594	if invalidParams.Len() > 0 {
20595		return invalidParams
20596	}
20597	return nil
20598}
20599
20600// SetDestination sets the Destination field's value.
20601func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
20602	s.Destination = v
20603	return s
20604}
20605
20606// SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
20607func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
20608	s.OutputSchemaVersion = &v
20609	return s
20610}
20611
20612type Tag struct {
20613	_ struct{} `type:"structure"`
20614
20615	// Name of the tag.
20616	//
20617	// Key is a required field
20618	Key *string `min:"1" type:"string" required:"true"`
20619
20620	// Value of the tag.
20621	//
20622	// Value is a required field
20623	Value *string `type:"string" required:"true"`
20624}
20625
20626// String returns the string representation
20627func (s Tag) String() string {
20628	return awsutil.Prettify(s)
20629}
20630
20631// GoString returns the string representation
20632func (s Tag) GoString() string {
20633	return s.String()
20634}
20635
20636// Validate inspects the fields of the type to determine if they are valid.
20637func (s *Tag) Validate() error {
20638	invalidParams := request.ErrInvalidParams{Context: "Tag"}
20639	if s.Key == nil {
20640		invalidParams.Add(request.NewErrParamRequired("Key"))
20641	}
20642	if s.Key != nil && len(*s.Key) < 1 {
20643		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20644	}
20645	if s.Value == nil {
20646		invalidParams.Add(request.NewErrParamRequired("Value"))
20647	}
20648
20649	if invalidParams.Len() > 0 {
20650		return invalidParams
20651	}
20652	return nil
20653}
20654
20655// SetKey sets the Key field's value.
20656func (s *Tag) SetKey(v string) *Tag {
20657	s.Key = &v
20658	return s
20659}
20660
20661// SetValue sets the Value field's value.
20662func (s *Tag) SetValue(v string) *Tag {
20663	s.Value = &v
20664	return s
20665}
20666
20667type Tagging struct {
20668	_ struct{} `type:"structure"`
20669
20670	// TagSet is a required field
20671	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
20672}
20673
20674// String returns the string representation
20675func (s Tagging) String() string {
20676	return awsutil.Prettify(s)
20677}
20678
20679// GoString returns the string representation
20680func (s Tagging) GoString() string {
20681	return s.String()
20682}
20683
20684// Validate inspects the fields of the type to determine if they are valid.
20685func (s *Tagging) Validate() error {
20686	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
20687	if s.TagSet == nil {
20688		invalidParams.Add(request.NewErrParamRequired("TagSet"))
20689	}
20690	if s.TagSet != nil {
20691		for i, v := range s.TagSet {
20692			if v == nil {
20693				continue
20694			}
20695			if err := v.Validate(); err != nil {
20696				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
20697			}
20698		}
20699	}
20700
20701	if invalidParams.Len() > 0 {
20702		return invalidParams
20703	}
20704	return nil
20705}
20706
20707// SetTagSet sets the TagSet field's value.
20708func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
20709	s.TagSet = v
20710	return s
20711}
20712
20713type TargetGrant struct {
20714	_ struct{} `type:"structure"`
20715
20716	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
20717
20718	// Logging permissions assigned to the Grantee for the bucket.
20719	Permission *string `type:"string" enum:"BucketLogsPermission"`
20720}
20721
20722// String returns the string representation
20723func (s TargetGrant) String() string {
20724	return awsutil.Prettify(s)
20725}
20726
20727// GoString returns the string representation
20728func (s TargetGrant) GoString() string {
20729	return s.String()
20730}
20731
20732// Validate inspects the fields of the type to determine if they are valid.
20733func (s *TargetGrant) Validate() error {
20734	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
20735	if s.Grantee != nil {
20736		if err := s.Grantee.Validate(); err != nil {
20737			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
20738		}
20739	}
20740
20741	if invalidParams.Len() > 0 {
20742		return invalidParams
20743	}
20744	return nil
20745}
20746
20747// SetGrantee sets the Grantee field's value.
20748func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
20749	s.Grantee = v
20750	return s
20751}
20752
20753// SetPermission sets the Permission field's value.
20754func (s *TargetGrant) SetPermission(v string) *TargetGrant {
20755	s.Permission = &v
20756	return s
20757}
20758
20759// Container for specifying the configuration when you want Amazon S3 to publish
20760// events to an Amazon Simple Notification Service (Amazon SNS) topic.
20761type TopicConfiguration struct {
20762	_ struct{} `type:"structure"`
20763
20764	// Events is a required field
20765	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
20766
20767	// Container for object key name filtering rules. For information about key
20768	// name filtering, go to Configuring Event Notifications (http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
20769	// in the Amazon Simple Storage Service Developer Guide.
20770	Filter *NotificationConfigurationFilter `type:"structure"`
20771
20772	// Optional unique identifier for configurations in a notification configuration.
20773	// If you don't provide one, Amazon S3 will assign an ID.
20774	Id *string `type:"string"`
20775
20776	// Amazon SNS topic ARN to which Amazon S3 will publish a message when it detects
20777	// events of specified type.
20778	//
20779	// TopicArn is a required field
20780	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
20781}
20782
20783// String returns the string representation
20784func (s TopicConfiguration) String() string {
20785	return awsutil.Prettify(s)
20786}
20787
20788// GoString returns the string representation
20789func (s TopicConfiguration) GoString() string {
20790	return s.String()
20791}
20792
20793// Validate inspects the fields of the type to determine if they are valid.
20794func (s *TopicConfiguration) Validate() error {
20795	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
20796	if s.Events == nil {
20797		invalidParams.Add(request.NewErrParamRequired("Events"))
20798	}
20799	if s.TopicArn == nil {
20800		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
20801	}
20802
20803	if invalidParams.Len() > 0 {
20804		return invalidParams
20805	}
20806	return nil
20807}
20808
20809// SetEvents sets the Events field's value.
20810func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
20811	s.Events = v
20812	return s
20813}
20814
20815// SetFilter sets the Filter field's value.
20816func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
20817	s.Filter = v
20818	return s
20819}
20820
20821// SetId sets the Id field's value.
20822func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
20823	s.Id = &v
20824	return s
20825}
20826
20827// SetTopicArn sets the TopicArn field's value.
20828func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
20829	s.TopicArn = &v
20830	return s
20831}
20832
20833type TopicConfigurationDeprecated struct {
20834	_ struct{} `type:"structure"`
20835
20836	// Bucket event for which to send notifications.
20837	Event *string `deprecated:"true" type:"string" enum:"Event"`
20838
20839	Events []*string `locationName:"Event" type:"list" flattened:"true"`
20840
20841	// Optional unique identifier for configurations in a notification configuration.
20842	// If you don't provide one, Amazon S3 will assign an ID.
20843	Id *string `type:"string"`
20844
20845	// Amazon SNS topic to which Amazon S3 will publish a message to report the
20846	// specified events for the bucket.
20847	Topic *string `type:"string"`
20848}
20849
20850// String returns the string representation
20851func (s TopicConfigurationDeprecated) String() string {
20852	return awsutil.Prettify(s)
20853}
20854
20855// GoString returns the string representation
20856func (s TopicConfigurationDeprecated) GoString() string {
20857	return s.String()
20858}
20859
20860// SetEvent sets the Event field's value.
20861func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
20862	s.Event = &v
20863	return s
20864}
20865
20866// SetEvents sets the Events field's value.
20867func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
20868	s.Events = v
20869	return s
20870}
20871
20872// SetId sets the Id field's value.
20873func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
20874	s.Id = &v
20875	return s
20876}
20877
20878// SetTopic sets the Topic field's value.
20879func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
20880	s.Topic = &v
20881	return s
20882}
20883
20884type Transition struct {
20885	_ struct{} `type:"structure"`
20886
20887	// Indicates at what date the object is to be moved or deleted. Should be in
20888	// GMT ISO 8601 Format.
20889	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
20890
20891	// Indicates the lifetime, in days, of the objects that are subject to the rule.
20892	// The value must be a non-zero positive integer.
20893	Days *int64 `type:"integer"`
20894
20895	// The class of storage used to store the object.
20896	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
20897}
20898
20899// String returns the string representation
20900func (s Transition) String() string {
20901	return awsutil.Prettify(s)
20902}
20903
20904// GoString returns the string representation
20905func (s Transition) GoString() string {
20906	return s.String()
20907}
20908
20909// SetDate sets the Date field's value.
20910func (s *Transition) SetDate(v time.Time) *Transition {
20911	s.Date = &v
20912	return s
20913}
20914
20915// SetDays sets the Days field's value.
20916func (s *Transition) SetDays(v int64) *Transition {
20917	s.Days = &v
20918	return s
20919}
20920
20921// SetStorageClass sets the StorageClass field's value.
20922func (s *Transition) SetStorageClass(v string) *Transition {
20923	s.StorageClass = &v
20924	return s
20925}
20926
20927type UploadPartCopyInput struct {
20928	_ struct{} `type:"structure"`
20929
20930	// Bucket is a required field
20931	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20932
20933	// The name of the source bucket and key name of the source object, separated
20934	// by a slash (/). Must be URL-encoded.
20935	//
20936	// CopySource is a required field
20937	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
20938
20939	// Copies the object if its entity tag (ETag) matches the specified tag.
20940	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
20941
20942	// Copies the object if it has been modified since the specified time.
20943	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
20944
20945	// Copies the object if its entity tag (ETag) is different than the specified
20946	// ETag.
20947	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
20948
20949	// Copies the object if it hasn't been modified since the specified time.
20950	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
20951
20952	// The range of bytes to copy from the source object. The range value must use
20953	// the form bytes=first-last, where the first and last are the zero-based byte
20954	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
20955	// first ten bytes of the source. You can copy a range only if the source object
20956	// is greater than 5 GB.
20957	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
20958
20959	// Specifies the algorithm to use when decrypting the source object (e.g., AES256).
20960	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
20961
20962	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
20963	// the source object. The encryption key provided in this header must be one
20964	// that was used when the source object was created.
20965	CopySourceSSECustomerKey *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string"`
20966
20967	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
20968	// Amazon S3 uses this header for a message integrity check to ensure the encryption
20969	// key was transmitted without error.
20970	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
20971
20972	// Key is a required field
20973	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20974
20975	// Part number of part being copied. This is a positive integer between 1 and
20976	// 10,000.
20977	//
20978	// PartNumber is a required field
20979	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
20980
20981	// Confirms that the requester knows that she or he will be charged for the
20982	// request. Bucket owners need not specify this parameter in their requests.
20983	// Documentation on downloading objects from requester pays buckets can be found
20984	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
20985	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20986
20987	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
20988	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
20989
20990	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
20991	// data. This value is used to store the object and then it is discarded; Amazon
20992	// does not store the encryption key. The key must be appropriate for use with
20993	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
20994	// header. This must be the same encryption key specified in the initiate multipart
20995	// upload request.
20996	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
20997
20998	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
20999	// Amazon S3 uses this header for a message integrity check to ensure the encryption
21000	// key was transmitted without error.
21001	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
21002
21003	// Upload ID identifying the multipart upload whose part is being copied.
21004	//
21005	// UploadId is a required field
21006	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
21007}
21008
21009// String returns the string representation
21010func (s UploadPartCopyInput) String() string {
21011	return awsutil.Prettify(s)
21012}
21013
21014// GoString returns the string representation
21015func (s UploadPartCopyInput) GoString() string {
21016	return s.String()
21017}
21018
21019// Validate inspects the fields of the type to determine if they are valid.
21020func (s *UploadPartCopyInput) Validate() error {
21021	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
21022	if s.Bucket == nil {
21023		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21024	}
21025	if s.CopySource == nil {
21026		invalidParams.Add(request.NewErrParamRequired("CopySource"))
21027	}
21028	if s.Key == nil {
21029		invalidParams.Add(request.NewErrParamRequired("Key"))
21030	}
21031	if s.Key != nil && len(*s.Key) < 1 {
21032		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21033	}
21034	if s.PartNumber == nil {
21035		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
21036	}
21037	if s.UploadId == nil {
21038		invalidParams.Add(request.NewErrParamRequired("UploadId"))
21039	}
21040
21041	if invalidParams.Len() > 0 {
21042		return invalidParams
21043	}
21044	return nil
21045}
21046
21047// SetBucket sets the Bucket field's value.
21048func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
21049	s.Bucket = &v
21050	return s
21051}
21052
21053func (s *UploadPartCopyInput) getBucket() (v string) {
21054	if s.Bucket == nil {
21055		return v
21056	}
21057	return *s.Bucket
21058}
21059
21060// SetCopySource sets the CopySource field's value.
21061func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
21062	s.CopySource = &v
21063	return s
21064}
21065
21066// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
21067func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
21068	s.CopySourceIfMatch = &v
21069	return s
21070}
21071
21072// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
21073func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
21074	s.CopySourceIfModifiedSince = &v
21075	return s
21076}
21077
21078// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
21079func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
21080	s.CopySourceIfNoneMatch = &v
21081	return s
21082}
21083
21084// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
21085func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
21086	s.CopySourceIfUnmodifiedSince = &v
21087	return s
21088}
21089
21090// SetCopySourceRange sets the CopySourceRange field's value.
21091func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
21092	s.CopySourceRange = &v
21093	return s
21094}
21095
21096// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
21097func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
21098	s.CopySourceSSECustomerAlgorithm = &v
21099	return s
21100}
21101
21102// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
21103func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
21104	s.CopySourceSSECustomerKey = &v
21105	return s
21106}
21107
21108func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
21109	if s.CopySourceSSECustomerKey == nil {
21110		return v
21111	}
21112	return *s.CopySourceSSECustomerKey
21113}
21114
21115// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
21116func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
21117	s.CopySourceSSECustomerKeyMD5 = &v
21118	return s
21119}
21120
21121// SetKey sets the Key field's value.
21122func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
21123	s.Key = &v
21124	return s
21125}
21126
21127// SetPartNumber sets the PartNumber field's value.
21128func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
21129	s.PartNumber = &v
21130	return s
21131}
21132
21133// SetRequestPayer sets the RequestPayer field's value.
21134func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
21135	s.RequestPayer = &v
21136	return s
21137}
21138
21139// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21140func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
21141	s.SSECustomerAlgorithm = &v
21142	return s
21143}
21144
21145// SetSSECustomerKey sets the SSECustomerKey field's value.
21146func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
21147	s.SSECustomerKey = &v
21148	return s
21149}
21150
21151func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
21152	if s.SSECustomerKey == nil {
21153		return v
21154	}
21155	return *s.SSECustomerKey
21156}
21157
21158// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21159func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
21160	s.SSECustomerKeyMD5 = &v
21161	return s
21162}
21163
21164// SetUploadId sets the UploadId field's value.
21165func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
21166	s.UploadId = &v
21167	return s
21168}
21169
21170type UploadPartCopyOutput struct {
21171	_ struct{} `type:"structure" payload:"CopyPartResult"`
21172
21173	CopyPartResult *CopyPartResult `type:"structure"`
21174
21175	// The version of the source object that was copied, if you have enabled versioning
21176	// on the source bucket.
21177	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
21178
21179	// If present, indicates that the requester was successfully charged for the
21180	// request.
21181	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
21182
21183	// If server-side encryption with a customer-provided encryption key was requested,
21184	// the response will include this header confirming the encryption algorithm
21185	// used.
21186	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
21187
21188	// If server-side encryption with a customer-provided encryption key was requested,
21189	// the response will include this header to provide round trip message integrity
21190	// verification of the customer-provided encryption key.
21191	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
21192
21193	// If present, specifies the ID of the AWS Key Management Service (KMS) master
21194	// encryption key that was used for the object.
21195	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
21196
21197	// The Server-side encryption algorithm used when storing this object in S3
21198	// (e.g., AES256, aws:kms).
21199	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
21200}
21201
21202// String returns the string representation
21203func (s UploadPartCopyOutput) String() string {
21204	return awsutil.Prettify(s)
21205}
21206
21207// GoString returns the string representation
21208func (s UploadPartCopyOutput) GoString() string {
21209	return s.String()
21210}
21211
21212// SetCopyPartResult sets the CopyPartResult field's value.
21213func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
21214	s.CopyPartResult = v
21215	return s
21216}
21217
21218// SetCopySourceVersionId sets the CopySourceVersionId field's value.
21219func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
21220	s.CopySourceVersionId = &v
21221	return s
21222}
21223
21224// SetRequestCharged sets the RequestCharged field's value.
21225func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
21226	s.RequestCharged = &v
21227	return s
21228}
21229
21230// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21231func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
21232	s.SSECustomerAlgorithm = &v
21233	return s
21234}
21235
21236// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21237func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
21238	s.SSECustomerKeyMD5 = &v
21239	return s
21240}
21241
21242// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
21243func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
21244	s.SSEKMSKeyId = &v
21245	return s
21246}
21247
21248// SetServerSideEncryption sets the ServerSideEncryption field's value.
21249func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
21250	s.ServerSideEncryption = &v
21251	return s
21252}
21253
21254type UploadPartInput struct {
21255	_ struct{} `type:"structure" payload:"Body"`
21256
21257	// Object data.
21258	Body io.ReadSeeker `type:"blob"`
21259
21260	// Name of the bucket to which the multipart upload was initiated.
21261	//
21262	// Bucket is a required field
21263	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21264
21265	// Size of the body in bytes. This parameter is useful when the size of the
21266	// body cannot be determined automatically.
21267	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
21268
21269	// The base64-encoded 128-bit MD5 digest of the part data.
21270	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
21271
21272	// Object key for which the multipart upload was initiated.
21273	//
21274	// Key is a required field
21275	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21276
21277	// Part number of part being uploaded. This is a positive integer between 1
21278	// and 10,000.
21279	//
21280	// PartNumber is a required field
21281	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
21282
21283	// Confirms that the requester knows that she or he will be charged for the
21284	// request. Bucket owners need not specify this parameter in their requests.
21285	// Documentation on downloading objects from requester pays buckets can be found
21286	// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
21287	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21288
21289	// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
21290	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
21291
21292	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
21293	// data. This value is used to store the object and then it is discarded; Amazon
21294	// does not store the encryption key. The key must be appropriate for use with
21295	// the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
21296	// header. This must be the same encryption key specified in the initiate multipart
21297	// upload request.
21298	SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
21299
21300	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
21301	// Amazon S3 uses this header for a message integrity check to ensure the encryption
21302	// key was transmitted without error.
21303	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
21304
21305	// Upload ID identifying the multipart upload whose part is being uploaded.
21306	//
21307	// UploadId is a required field
21308	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
21309}
21310
21311// String returns the string representation
21312func (s UploadPartInput) String() string {
21313	return awsutil.Prettify(s)
21314}
21315
21316// GoString returns the string representation
21317func (s UploadPartInput) GoString() string {
21318	return s.String()
21319}
21320
21321// Validate inspects the fields of the type to determine if they are valid.
21322func (s *UploadPartInput) Validate() error {
21323	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
21324	if s.Bucket == nil {
21325		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21326	}
21327	if s.Key == nil {
21328		invalidParams.Add(request.NewErrParamRequired("Key"))
21329	}
21330	if s.Key != nil && len(*s.Key) < 1 {
21331		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21332	}
21333	if s.PartNumber == nil {
21334		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
21335	}
21336	if s.UploadId == nil {
21337		invalidParams.Add(request.NewErrParamRequired("UploadId"))
21338	}
21339
21340	if invalidParams.Len() > 0 {
21341		return invalidParams
21342	}
21343	return nil
21344}
21345
21346// SetBody sets the Body field's value.
21347func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
21348	s.Body = v
21349	return s
21350}
21351
21352// SetBucket sets the Bucket field's value.
21353func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
21354	s.Bucket = &v
21355	return s
21356}
21357
21358func (s *UploadPartInput) getBucket() (v string) {
21359	if s.Bucket == nil {
21360		return v
21361	}
21362	return *s.Bucket
21363}
21364
21365// SetContentLength sets the ContentLength field's value.
21366func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
21367	s.ContentLength = &v
21368	return s
21369}
21370
21371// SetContentMD5 sets the ContentMD5 field's value.
21372func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
21373	s.ContentMD5 = &v
21374	return s
21375}
21376
21377// SetKey sets the Key field's value.
21378func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
21379	s.Key = &v
21380	return s
21381}
21382
21383// SetPartNumber sets the PartNumber field's value.
21384func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
21385	s.PartNumber = &v
21386	return s
21387}
21388
21389// SetRequestPayer sets the RequestPayer field's value.
21390func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
21391	s.RequestPayer = &v
21392	return s
21393}
21394
21395// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21396func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
21397	s.SSECustomerAlgorithm = &v
21398	return s
21399}
21400
21401// SetSSECustomerKey sets the SSECustomerKey field's value.
21402func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
21403	s.SSECustomerKey = &v
21404	return s
21405}
21406
21407func (s *UploadPartInput) getSSECustomerKey() (v string) {
21408	if s.SSECustomerKey == nil {
21409		return v
21410	}
21411	return *s.SSECustomerKey
21412}
21413
21414// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21415func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
21416	s.SSECustomerKeyMD5 = &v
21417	return s
21418}
21419
21420// SetUploadId sets the UploadId field's value.
21421func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
21422	s.UploadId = &v
21423	return s
21424}
21425
21426type UploadPartOutput struct {
21427	_ struct{} `type:"structure"`
21428
21429	// Entity tag for the uploaded object.
21430	ETag *string `location:"header" locationName:"ETag" type:"string"`
21431
21432	// If present, indicates that the requester was successfully charged for the
21433	// request.
21434	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
21435
21436	// If server-side encryption with a customer-provided encryption key was requested,
21437	// the response will include this header confirming the encryption algorithm
21438	// used.
21439	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
21440
21441	// If server-side encryption with a customer-provided encryption key was requested,
21442	// the response will include this header to provide round trip message integrity
21443	// verification of the customer-provided encryption key.
21444	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
21445
21446	// If present, specifies the ID of the AWS Key Management Service (KMS) master
21447	// encryption key that was used for the object.
21448	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
21449
21450	// The Server-side encryption algorithm used when storing this object in S3
21451	// (e.g., AES256, aws:kms).
21452	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
21453}
21454
21455// String returns the string representation
21456func (s UploadPartOutput) String() string {
21457	return awsutil.Prettify(s)
21458}
21459
21460// GoString returns the string representation
21461func (s UploadPartOutput) GoString() string {
21462	return s.String()
21463}
21464
21465// SetETag sets the ETag field's value.
21466func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
21467	s.ETag = &v
21468	return s
21469}
21470
21471// SetRequestCharged sets the RequestCharged field's value.
21472func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
21473	s.RequestCharged = &v
21474	return s
21475}
21476
21477// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21478func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
21479	s.SSECustomerAlgorithm = &v
21480	return s
21481}
21482
21483// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21484func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
21485	s.SSECustomerKeyMD5 = &v
21486	return s
21487}
21488
21489// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
21490func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
21491	s.SSEKMSKeyId = &v
21492	return s
21493}
21494
21495// SetServerSideEncryption sets the ServerSideEncryption field's value.
21496func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
21497	s.ServerSideEncryption = &v
21498	return s
21499}
21500
21501type VersioningConfiguration struct {
21502	_ struct{} `type:"structure"`
21503
21504	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
21505	// This element is only returned if the bucket has been configured with MFA
21506	// delete. If the bucket has never been so configured, this element is not returned.
21507	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
21508
21509	// The versioning state of the bucket.
21510	Status *string `type:"string" enum:"BucketVersioningStatus"`
21511}
21512
21513// String returns the string representation
21514func (s VersioningConfiguration) String() string {
21515	return awsutil.Prettify(s)
21516}
21517
21518// GoString returns the string representation
21519func (s VersioningConfiguration) GoString() string {
21520	return s.String()
21521}
21522
21523// SetMFADelete sets the MFADelete field's value.
21524func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
21525	s.MFADelete = &v
21526	return s
21527}
21528
21529// SetStatus sets the Status field's value.
21530func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
21531	s.Status = &v
21532	return s
21533}
21534
21535type WebsiteConfiguration struct {
21536	_ struct{} `type:"structure"`
21537
21538	ErrorDocument *ErrorDocument `type:"structure"`
21539
21540	IndexDocument *IndexDocument `type:"structure"`
21541
21542	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
21543
21544	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
21545}
21546
21547// String returns the string representation
21548func (s WebsiteConfiguration) String() string {
21549	return awsutil.Prettify(s)
21550}
21551
21552// GoString returns the string representation
21553func (s WebsiteConfiguration) GoString() string {
21554	return s.String()
21555}
21556
21557// Validate inspects the fields of the type to determine if they are valid.
21558func (s *WebsiteConfiguration) Validate() error {
21559	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
21560	if s.ErrorDocument != nil {
21561		if err := s.ErrorDocument.Validate(); err != nil {
21562			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
21563		}
21564	}
21565	if s.IndexDocument != nil {
21566		if err := s.IndexDocument.Validate(); err != nil {
21567			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
21568		}
21569	}
21570	if s.RedirectAllRequestsTo != nil {
21571		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
21572			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
21573		}
21574	}
21575	if s.RoutingRules != nil {
21576		for i, v := range s.RoutingRules {
21577			if v == nil {
21578				continue
21579			}
21580			if err := v.Validate(); err != nil {
21581				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
21582			}
21583		}
21584	}
21585
21586	if invalidParams.Len() > 0 {
21587		return invalidParams
21588	}
21589	return nil
21590}
21591
21592// SetErrorDocument sets the ErrorDocument field's value.
21593func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
21594	s.ErrorDocument = v
21595	return s
21596}
21597
21598// SetIndexDocument sets the IndexDocument field's value.
21599func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
21600	s.IndexDocument = v
21601	return s
21602}
21603
21604// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
21605func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
21606	s.RedirectAllRequestsTo = v
21607	return s
21608}
21609
21610// SetRoutingRules sets the RoutingRules field's value.
21611func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
21612	s.RoutingRules = v
21613	return s
21614}
21615
21616const (
21617	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
21618	AnalyticsS3ExportFileFormatCsv = "CSV"
21619)
21620
21621const (
21622	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
21623	BucketAccelerateStatusEnabled = "Enabled"
21624
21625	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
21626	BucketAccelerateStatusSuspended = "Suspended"
21627)
21628
21629const (
21630	// BucketCannedACLPrivate is a BucketCannedACL enum value
21631	BucketCannedACLPrivate = "private"
21632
21633	// BucketCannedACLPublicRead is a BucketCannedACL enum value
21634	BucketCannedACLPublicRead = "public-read"
21635
21636	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
21637	BucketCannedACLPublicReadWrite = "public-read-write"
21638
21639	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
21640	BucketCannedACLAuthenticatedRead = "authenticated-read"
21641)
21642
21643const (
21644	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
21645	BucketLocationConstraintEu = "EU"
21646
21647	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
21648	BucketLocationConstraintEuWest1 = "eu-west-1"
21649
21650	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
21651	BucketLocationConstraintUsWest1 = "us-west-1"
21652
21653	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
21654	BucketLocationConstraintUsWest2 = "us-west-2"
21655
21656	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
21657	BucketLocationConstraintApSouth1 = "ap-south-1"
21658
21659	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
21660	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
21661
21662	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
21663	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
21664
21665	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
21666	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
21667
21668	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
21669	BucketLocationConstraintSaEast1 = "sa-east-1"
21670
21671	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
21672	BucketLocationConstraintCnNorth1 = "cn-north-1"
21673
21674	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
21675	BucketLocationConstraintEuCentral1 = "eu-central-1"
21676)
21677
21678const (
21679	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
21680	BucketLogsPermissionFullControl = "FULL_CONTROL"
21681
21682	// BucketLogsPermissionRead is a BucketLogsPermission enum value
21683	BucketLogsPermissionRead = "READ"
21684
21685	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
21686	BucketLogsPermissionWrite = "WRITE"
21687)
21688
21689const (
21690	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
21691	BucketVersioningStatusEnabled = "Enabled"
21692
21693	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
21694	BucketVersioningStatusSuspended = "Suspended"
21695)
21696
21697const (
21698	// CompressionTypeNone is a CompressionType enum value
21699	CompressionTypeNone = "NONE"
21700
21701	// CompressionTypeGzip is a CompressionType enum value
21702	CompressionTypeGzip = "GZIP"
21703
21704	// CompressionTypeBzip2 is a CompressionType enum value
21705	CompressionTypeBzip2 = "BZIP2"
21706)
21707
21708// Requests Amazon S3 to encode the object keys in the response and specifies
21709// the encoding method to use. An object key may contain any Unicode character;
21710// however, XML 1.0 parser cannot parse some characters, such as characters
21711// with an ASCII value from 0 to 10. For characters that are not supported in
21712// XML 1.0, you can add this parameter to request that Amazon S3 encode the
21713// keys in the response.
21714const (
21715	// EncodingTypeUrl is a EncodingType enum value
21716	EncodingTypeUrl = "url"
21717)
21718
21719// Bucket event for which to send notifications.
21720const (
21721	// EventS3ReducedRedundancyLostObject is a Event enum value
21722	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
21723
21724	// EventS3ObjectCreated is a Event enum value
21725	EventS3ObjectCreated = "s3:ObjectCreated:*"
21726
21727	// EventS3ObjectCreatedPut is a Event enum value
21728	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
21729
21730	// EventS3ObjectCreatedPost is a Event enum value
21731	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
21732
21733	// EventS3ObjectCreatedCopy is a Event enum value
21734	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
21735
21736	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
21737	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
21738
21739	// EventS3ObjectRemoved is a Event enum value
21740	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
21741
21742	// EventS3ObjectRemovedDelete is a Event enum value
21743	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
21744
21745	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
21746	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
21747)
21748
21749const (
21750	// ExpirationStatusEnabled is a ExpirationStatus enum value
21751	ExpirationStatusEnabled = "Enabled"
21752
21753	// ExpirationStatusDisabled is a ExpirationStatus enum value
21754	ExpirationStatusDisabled = "Disabled"
21755)
21756
21757const (
21758	// ExpressionTypeSql is a ExpressionType enum value
21759	ExpressionTypeSql = "SQL"
21760)
21761
21762const (
21763	// FileHeaderInfoUse is a FileHeaderInfo enum value
21764	FileHeaderInfoUse = "USE"
21765
21766	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
21767	FileHeaderInfoIgnore = "IGNORE"
21768
21769	// FileHeaderInfoNone is a FileHeaderInfo enum value
21770	FileHeaderInfoNone = "NONE"
21771)
21772
21773const (
21774	// FilterRuleNamePrefix is a FilterRuleName enum value
21775	FilterRuleNamePrefix = "prefix"
21776
21777	// FilterRuleNameSuffix is a FilterRuleName enum value
21778	FilterRuleNameSuffix = "suffix"
21779)
21780
21781const (
21782	// InventoryFormatCsv is a InventoryFormat enum value
21783	InventoryFormatCsv = "CSV"
21784
21785	// InventoryFormatOrc is a InventoryFormat enum value
21786	InventoryFormatOrc = "ORC"
21787)
21788
21789const (
21790	// InventoryFrequencyDaily is a InventoryFrequency enum value
21791	InventoryFrequencyDaily = "Daily"
21792
21793	// InventoryFrequencyWeekly is a InventoryFrequency enum value
21794	InventoryFrequencyWeekly = "Weekly"
21795)
21796
21797const (
21798	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
21799	InventoryIncludedObjectVersionsAll = "All"
21800
21801	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
21802	InventoryIncludedObjectVersionsCurrent = "Current"
21803)
21804
21805const (
21806	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
21807	InventoryOptionalFieldSize = "Size"
21808
21809	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
21810	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
21811
21812	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
21813	InventoryOptionalFieldStorageClass = "StorageClass"
21814
21815	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
21816	InventoryOptionalFieldEtag = "ETag"
21817
21818	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
21819	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
21820
21821	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
21822	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
21823
21824	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
21825	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
21826)
21827
21828const (
21829	// JSONTypeDocument is a JSONType enum value
21830	JSONTypeDocument = "DOCUMENT"
21831
21832	// JSONTypeLines is a JSONType enum value
21833	JSONTypeLines = "LINES"
21834)
21835
21836const (
21837	// MFADeleteEnabled is a MFADelete enum value
21838	MFADeleteEnabled = "Enabled"
21839
21840	// MFADeleteDisabled is a MFADelete enum value
21841	MFADeleteDisabled = "Disabled"
21842)
21843
21844const (
21845	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
21846	MFADeleteStatusEnabled = "Enabled"
21847
21848	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
21849	MFADeleteStatusDisabled = "Disabled"
21850)
21851
21852const (
21853	// MetadataDirectiveCopy is a MetadataDirective enum value
21854	MetadataDirectiveCopy = "COPY"
21855
21856	// MetadataDirectiveReplace is a MetadataDirective enum value
21857	MetadataDirectiveReplace = "REPLACE"
21858)
21859
21860const (
21861	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
21862	ObjectCannedACLPrivate = "private"
21863
21864	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
21865	ObjectCannedACLPublicRead = "public-read"
21866
21867	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
21868	ObjectCannedACLPublicReadWrite = "public-read-write"
21869
21870	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
21871	ObjectCannedACLAuthenticatedRead = "authenticated-read"
21872
21873	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
21874	ObjectCannedACLAwsExecRead = "aws-exec-read"
21875
21876	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
21877	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
21878
21879	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
21880	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
21881)
21882
21883const (
21884	// ObjectStorageClassStandard is a ObjectStorageClass enum value
21885	ObjectStorageClassStandard = "STANDARD"
21886
21887	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
21888	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
21889
21890	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
21891	ObjectStorageClassGlacier = "GLACIER"
21892
21893	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
21894	ObjectStorageClassStandardIa = "STANDARD_IA"
21895
21896	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
21897	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
21898)
21899
21900const (
21901	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
21902	ObjectVersionStorageClassStandard = "STANDARD"
21903)
21904
21905const (
21906	// OwnerOverrideDestination is a OwnerOverride enum value
21907	OwnerOverrideDestination = "Destination"
21908)
21909
21910const (
21911	// PayerRequester is a Payer enum value
21912	PayerRequester = "Requester"
21913
21914	// PayerBucketOwner is a Payer enum value
21915	PayerBucketOwner = "BucketOwner"
21916)
21917
21918const (
21919	// PermissionFullControl is a Permission enum value
21920	PermissionFullControl = "FULL_CONTROL"
21921
21922	// PermissionWrite is a Permission enum value
21923	PermissionWrite = "WRITE"
21924
21925	// PermissionWriteAcp is a Permission enum value
21926	PermissionWriteAcp = "WRITE_ACP"
21927
21928	// PermissionRead is a Permission enum value
21929	PermissionRead = "READ"
21930
21931	// PermissionReadAcp is a Permission enum value
21932	PermissionReadAcp = "READ_ACP"
21933)
21934
21935const (
21936	// ProtocolHttp is a Protocol enum value
21937	ProtocolHttp = "http"
21938
21939	// ProtocolHttps is a Protocol enum value
21940	ProtocolHttps = "https"
21941)
21942
21943const (
21944	// QuoteFieldsAlways is a QuoteFields enum value
21945	QuoteFieldsAlways = "ALWAYS"
21946
21947	// QuoteFieldsAsneeded is a QuoteFields enum value
21948	QuoteFieldsAsneeded = "ASNEEDED"
21949)
21950
21951const (
21952	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
21953	ReplicationRuleStatusEnabled = "Enabled"
21954
21955	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
21956	ReplicationRuleStatusDisabled = "Disabled"
21957)
21958
21959const (
21960	// ReplicationStatusComplete is a ReplicationStatus enum value
21961	ReplicationStatusComplete = "COMPLETE"
21962
21963	// ReplicationStatusPending is a ReplicationStatus enum value
21964	ReplicationStatusPending = "PENDING"
21965
21966	// ReplicationStatusFailed is a ReplicationStatus enum value
21967	ReplicationStatusFailed = "FAILED"
21968
21969	// ReplicationStatusReplica is a ReplicationStatus enum value
21970	ReplicationStatusReplica = "REPLICA"
21971)
21972
21973// If present, indicates that the requester was successfully charged for the
21974// request.
21975const (
21976	// RequestChargedRequester is a RequestCharged enum value
21977	RequestChargedRequester = "requester"
21978)
21979
21980// Confirms that the requester knows that she or he will be charged for the
21981// request. Bucket owners need not specify this parameter in their requests.
21982// Documentation on downloading objects from requester pays buckets can be found
21983// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
21984const (
21985	// RequestPayerRequester is a RequestPayer enum value
21986	RequestPayerRequester = "requester"
21987)
21988
21989const (
21990	// RestoreRequestTypeSelect is a RestoreRequestType enum value
21991	RestoreRequestTypeSelect = "SELECT"
21992)
21993
21994const (
21995	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
21996	ServerSideEncryptionAes256 = "AES256"
21997
21998	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
21999	ServerSideEncryptionAwsKms = "aws:kms"
22000)
22001
22002const (
22003	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
22004	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
22005
22006	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
22007	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
22008)
22009
22010const (
22011	// StorageClassStandard is a StorageClass enum value
22012	StorageClassStandard = "STANDARD"
22013
22014	// StorageClassReducedRedundancy is a StorageClass enum value
22015	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
22016
22017	// StorageClassStandardIa is a StorageClass enum value
22018	StorageClassStandardIa = "STANDARD_IA"
22019
22020	// StorageClassOnezoneIa is a StorageClass enum value
22021	StorageClassOnezoneIa = "ONEZONE_IA"
22022)
22023
22024const (
22025	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
22026	StorageClassAnalysisSchemaVersionV1 = "V_1"
22027)
22028
22029const (
22030	// TaggingDirectiveCopy is a TaggingDirective enum value
22031	TaggingDirectiveCopy = "COPY"
22032
22033	// TaggingDirectiveReplace is a TaggingDirective enum value
22034	TaggingDirectiveReplace = "REPLACE"
22035)
22036
22037const (
22038	// TierStandard is a Tier enum value
22039	TierStandard = "Standard"
22040
22041	// TierBulk is a Tier enum value
22042	TierBulk = "Bulk"
22043
22044	// TierExpedited is a Tier enum value
22045	TierExpedited = "Expedited"
22046)
22047
22048const (
22049	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
22050	TransitionStorageClassGlacier = "GLACIER"
22051
22052	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
22053	TransitionStorageClassStandardIa = "STANDARD_IA"
22054
22055	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
22056	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
22057)
22058
22059const (
22060	// TypeCanonicalUser is a Type enum value
22061	TypeCanonicalUser = "CanonicalUser"
22062
22063	// TypeAmazonCustomerByEmail is a Type enum value
22064	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
22065
22066	// TypeGroup is a Type enum value
22067	TypeGroup = "Group"
22068)
22069