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	"time"
11
12	"github.com/aws/aws-sdk-go/aws"
13	"github.com/aws/aws-sdk-go/aws/awserr"
14	"github.com/aws/aws-sdk-go/aws/awsutil"
15	"github.com/aws/aws-sdk-go/aws/client"
16	"github.com/aws/aws-sdk-go/aws/request"
17	"github.com/aws/aws-sdk-go/private/checksum"
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	"github.com/aws/aws-sdk-go/service/s3/internal/arn"
24)
25
26const opAbortMultipartUpload = "AbortMultipartUpload"
27
28// AbortMultipartUploadRequest generates a "aws/request.Request" representing the
29// client's request for the AbortMultipartUpload operation. The "output" return
30// value will be populated with the request's response once the request completes
31// successfully.
32//
33// Use "Send" method on the returned Request to send the API call to the service.
34// the "output" return value is not valid until after Send returns without error.
35//
36// See AbortMultipartUpload for more information on using the AbortMultipartUpload
37// API call, and error handling.
38//
39// This method is useful when you want to inject custom logic or configuration
40// into the SDK's request lifecycle. Such as custom headers, or retry logic.
41//
42//
43//    // Example sending a request using the AbortMultipartUploadRequest method.
44//    req, resp := client.AbortMultipartUploadRequest(params)
45//
46//    err := req.Send()
47//    if err == nil { // resp is now filled
48//        fmt.Println(resp)
49//    }
50//
51// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload
52func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) (req *request.Request, output *AbortMultipartUploadOutput) {
53	op := &request.Operation{
54		Name:       opAbortMultipartUpload,
55		HTTPMethod: "DELETE",
56		HTTPPath:   "/{Bucket}/{Key+}",
57	}
58
59	if input == nil {
60		input = &AbortMultipartUploadInput{}
61	}
62
63	output = &AbortMultipartUploadOutput{}
64	req = c.newRequest(op, input, output)
65	return
66}
67
68// AbortMultipartUpload API operation for Amazon Simple Storage Service.
69//
70// This operation aborts a multipart upload. After a multipart upload is aborted,
71// no additional parts can be uploaded using that upload ID. The storage consumed
72// by any previously uploaded parts will be freed. However, if any part uploads
73// are currently in progress, those part uploads might or might not succeed.
74// As a result, it might be necessary to abort a given multipart upload multiple
75// times in order to completely free all storage consumed by all parts.
76//
77// To verify that all parts have been removed, so you don't get charged for
78// the part storage, you should call the ListParts operation and ensure that
79// the parts list is empty.
80//
81// For information about permissions required to use the multipart upload API,
82// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
83//
84// The following operations are related to AbortMultipartUpload:
85//
86//    * CreateMultipartUpload
87//
88//    * UploadPart
89//
90//    * CompleteMultipartUpload
91//
92//    * ListParts
93//
94//    * ListMultipartUploads
95//
96// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
97// with awserr.Error's Code and Message methods to get detailed information about
98// the error.
99//
100// See the AWS API reference guide for Amazon Simple Storage Service's
101// API operation AbortMultipartUpload for usage and error information.
102//
103// Returned Error Codes:
104//   * ErrCodeNoSuchUpload "NoSuchUpload"
105//   The specified multipart upload does not exist.
106//
107// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload
108func (c *S3) AbortMultipartUpload(input *AbortMultipartUploadInput) (*AbortMultipartUploadOutput, error) {
109	req, out := c.AbortMultipartUploadRequest(input)
110	return out, req.Send()
111}
112
113// AbortMultipartUploadWithContext is the same as AbortMultipartUpload with the addition of
114// the ability to pass a context and additional request options.
115//
116// See AbortMultipartUpload for details on how to use this API operation.
117//
118// The context must be non-nil and will be used for request cancellation. If
119// the context is nil a panic will occur. In the future the SDK may create
120// sub-contexts for http.Requests. See https://golang.org/pkg/context/
121// for more information on using Contexts.
122func (c *S3) AbortMultipartUploadWithContext(ctx aws.Context, input *AbortMultipartUploadInput, opts ...request.Option) (*AbortMultipartUploadOutput, error) {
123	req, out := c.AbortMultipartUploadRequest(input)
124	req.SetContext(ctx)
125	req.ApplyOptions(opts...)
126	return out, req.Send()
127}
128
129const opCompleteMultipartUpload = "CompleteMultipartUpload"
130
131// CompleteMultipartUploadRequest generates a "aws/request.Request" representing the
132// client's request for the CompleteMultipartUpload operation. The "output" return
133// value will be populated with the request's response once the request completes
134// successfully.
135//
136// Use "Send" method on the returned Request to send the API call to the service.
137// the "output" return value is not valid until after Send returns without error.
138//
139// See CompleteMultipartUpload for more information on using the CompleteMultipartUpload
140// API call, and error handling.
141//
142// This method is useful when you want to inject custom logic or configuration
143// into the SDK's request lifecycle. Such as custom headers, or retry logic.
144//
145//
146//    // Example sending a request using the CompleteMultipartUploadRequest method.
147//    req, resp := client.CompleteMultipartUploadRequest(params)
148//
149//    err := req.Send()
150//    if err == nil { // resp is now filled
151//        fmt.Println(resp)
152//    }
153//
154// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
155func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) (req *request.Request, output *CompleteMultipartUploadOutput) {
156	op := &request.Operation{
157		Name:       opCompleteMultipartUpload,
158		HTTPMethod: "POST",
159		HTTPPath:   "/{Bucket}/{Key+}",
160	}
161
162	if input == nil {
163		input = &CompleteMultipartUploadInput{}
164	}
165
166	output = &CompleteMultipartUploadOutput{}
167	req = c.newRequest(op, input, output)
168	return
169}
170
171// CompleteMultipartUpload API operation for Amazon Simple Storage Service.
172//
173// Completes a multipart upload by assembling previously uploaded parts.
174//
175// You first initiate the multipart upload and then upload all parts using the
176// UploadPart operation. After successfully uploading all relevant parts of
177// an upload, you call this operation to complete the upload. Upon receiving
178// this request, Amazon S3 concatenates all the parts in ascending order by
179// part number to create a new object. In the Complete Multipart Upload request,
180// you must provide the parts list. You must ensure that the parts list is complete.
181// This operation concatenates the parts that you provide in the list. For each
182// part in the list, you must provide the part number and the ETag value, returned
183// after that part was uploaded.
184//
185// Processing of a Complete Multipart Upload request could take several minutes
186// to complete. After Amazon S3 begins processing the request, it sends an HTTP
187// response header that specifies a 200 OK response. While processing is in
188// progress, Amazon S3 periodically sends white space characters to keep the
189// connection from timing out. Because a request could fail after the initial
190// 200 OK response has been sent, it is important that you check the response
191// body to determine whether the request succeeded.
192//
193// Note that if CompleteMultipartUpload fails, applications should be prepared
194// to retry the failed requests. For more information, see Amazon S3 Error Best
195// Practices (https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html).
196//
197// For more information about multipart uploads, see Uploading Objects Using
198// Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
199//
200// For information about permissions required to use the multipart upload API,
201// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
202//
203// GetBucketLifecycle has the following special errors:
204//
205//    * Error code: EntityTooSmall Description: Your proposed upload is smaller
206//    than the minimum allowed object size. Each part must be at least 5 MB
207//    in size, except the last part. 400 Bad Request
208//
209//    * Error code: InvalidPart Description: One or more of the specified parts
210//    could not be found. The part might not have been uploaded, or the specified
211//    entity tag might not have matched the part's entity tag. 400 Bad Request
212//
213//    * Error code: InvalidPartOrder Description: The list of parts was not
214//    in ascending order. The parts list must be specified in order by part
215//    number. 400 Bad Request
216//
217//    * Error code: NoSuchUpload Description: The specified multipart upload
218//    does not exist. The upload ID might be invalid, or the multipart upload
219//    might have been aborted or completed. 404 Not Found
220//
221// The following operations are related to CompleteMultipartUpload:
222//
223//    * CreateMultipartUpload
224//
225//    * UploadPart
226//
227//    * AbortMultipartUpload
228//
229//    * ListParts
230//
231//    * ListMultipartUploads
232//
233// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
234// with awserr.Error's Code and Message methods to get detailed information about
235// the error.
236//
237// See the AWS API reference guide for Amazon Simple Storage Service's
238// API operation CompleteMultipartUpload for usage and error information.
239// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
240func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput) (*CompleteMultipartUploadOutput, error) {
241	req, out := c.CompleteMultipartUploadRequest(input)
242	return out, req.Send()
243}
244
245// CompleteMultipartUploadWithContext is the same as CompleteMultipartUpload with the addition of
246// the ability to pass a context and additional request options.
247//
248// See CompleteMultipartUpload for details on how to use this API operation.
249//
250// The context must be non-nil and will be used for request cancellation. If
251// the context is nil a panic will occur. In the future the SDK may create
252// sub-contexts for http.Requests. See https://golang.org/pkg/context/
253// for more information on using Contexts.
254func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *CompleteMultipartUploadInput, opts ...request.Option) (*CompleteMultipartUploadOutput, error) {
255	req, out := c.CompleteMultipartUploadRequest(input)
256	req.SetContext(ctx)
257	req.ApplyOptions(opts...)
258	return out, req.Send()
259}
260
261const opCopyObject = "CopyObject"
262
263// CopyObjectRequest generates a "aws/request.Request" representing the
264// client's request for the CopyObject operation. The "output" return
265// value will be populated with the request's response once the request completes
266// successfully.
267//
268// Use "Send" method on the returned Request to send the API call to the service.
269// the "output" return value is not valid until after Send returns without error.
270//
271// See CopyObject for more information on using the CopyObject
272// API call, and error handling.
273//
274// This method is useful when you want to inject custom logic or configuration
275// into the SDK's request lifecycle. Such as custom headers, or retry logic.
276//
277//
278//    // Example sending a request using the CopyObjectRequest method.
279//    req, resp := client.CopyObjectRequest(params)
280//
281//    err := req.Send()
282//    if err == nil { // resp is now filled
283//        fmt.Println(resp)
284//    }
285//
286// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
287func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, output *CopyObjectOutput) {
288	op := &request.Operation{
289		Name:       opCopyObject,
290		HTTPMethod: "PUT",
291		HTTPPath:   "/{Bucket}/{Key+}",
292	}
293
294	if input == nil {
295		input = &CopyObjectInput{}
296	}
297
298	output = &CopyObjectOutput{}
299	req = c.newRequest(op, input, output)
300	return
301}
302
303// CopyObject API operation for Amazon Simple Storage Service.
304//
305// Creates a copy of an object that is already stored in Amazon S3.
306//
307// You can store individual objects of up to 5 TB in Amazon S3. You create a
308// copy of your object up to 5 GB in size in a single atomic operation using
309// this API. However, to copy an object greater than 5 GB, you must use the
310// multipart upload Upload Part - Copy API. For more information, see Copy Object
311// Using the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html).
312//
313// All copy requests must be authenticated. Additionally, you must have read
314// access to the source object and write access to the destination bucket. For
315// more information, see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
316// Both the Region that you want to copy the object from and the Region that
317// you want to copy the object to must be enabled for your account.
318//
319// A copy request might return an error when Amazon S3 receives the copy request
320// or while Amazon S3 is copying the files. If the error occurs before the copy
321// operation starts, you receive a standard Amazon S3 error. If the error occurs
322// during the copy operation, the error response is embedded in the 200 OK response.
323// This means that a 200 OK response can contain either a success or an error.
324// Design your application to parse the contents of the response and handle
325// it appropriately.
326//
327// If the copy is successful, you receive a response with information about
328// the copied object.
329//
330// If the request is an HTTP 1.1 request, the response is chunk encoded. If
331// it were not, it would not contain the content-length, and you would need
332// to read the entire body.
333//
334// The copy request charge is based on the storage class and Region that you
335// specify for the destination object. For pricing information, see Amazon S3
336// pricing (https://aws.amazon.com/s3/pricing/).
337//
338// Amazon S3 transfer acceleration does not support cross-Region copies. If
339// you request a cross-Region copy using a transfer acceleration endpoint, you
340// get a 400 Bad Request error. For more information, see Transfer Acceleration
341// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
342//
343// Metadata
344//
345// When copying an object, you can preserve all metadata (default) or specify
346// new metadata. However, the ACL is not preserved and is set to private for
347// the user making the request. To override the default ACL setting, specify
348// a new ACL when generating a copy request. For more information, see Using
349// ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
350//
351// To specify whether you want the object metadata copied from the source object
352// or replaced with metadata provided in the request, you can optionally add
353// the x-amz-metadata-directive header. When you grant permissions, you can
354// use the s3:x-amz-metadata-directive condition key to enforce certain metadata
355// behavior when objects are uploaded. For more information, see Specifying
356// Conditions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html)
357// in the Amazon S3 Developer Guide. For a complete list of Amazon S3-specific
358// condition keys, see Actions, Resources, and Condition Keys for Amazon S3
359// (https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).
360//
361//  x-amz-copy-source-if Headers
362//
363// To only copy an object under certain conditions, such as whether the Etag
364// matches or whether the object was modified before or after a specified date,
365// use the following request parameters:
366//
367//    * x-amz-copy-source-if-match
368//
369//    * x-amz-copy-source-if-none-match
370//
371//    * x-amz-copy-source-if-unmodified-since
372//
373//    * x-amz-copy-source-if-modified-since
374//
375// If both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
376// headers are present in the request and evaluate as follows, Amazon S3 returns
377// 200 OK and copies the data:
378//
379//    * x-amz-copy-source-if-match condition evaluates to true
380//
381//    * x-amz-copy-source-if-unmodified-since condition evaluates to false
382//
383// If both the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since
384// headers are present in the request and evaluate as follows, Amazon S3 returns
385// the 412 Precondition Failed response code:
386//
387//    * x-amz-copy-source-if-none-match condition evaluates to false
388//
389//    * x-amz-copy-source-if-modified-since condition evaluates to true
390//
391// All headers with the x-amz- prefix, including x-amz-copy-source, must be
392// signed.
393//
394// Encryption
395//
396// The source object that you are copying can be encrypted or unencrypted. The
397// source object can be encrypted with server-side encryption using AWS managed
398// encryption keys (SSE-S3 or SSE-KMS) or by using a customer-provided encryption
399// key. With server-side encryption, Amazon S3 encrypts your data as it writes
400// it to disks in its data centers and decrypts the data when you access it.
401//
402// You can optionally use the appropriate encryption-related headers to request
403// server-side encryption for the target object. You have the option to provide
404// your own encryption key or use SSE-S3 or SSE-KMS, regardless of the form
405// of server-side encryption that was used to encrypt the source object. You
406// can even request encryption if the source object was not encrypted. For more
407// information about server-side encryption, see Using Server-Side Encryption
408// (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
409//
410// Access Control List (ACL)-Specific Request Headers
411//
412// When copying an object, you can optionally use headers to grant ACL-based
413// permissions. By default, all objects are private. Only the owner has full
414// access control. When adding a new object, you can grant permissions to individual
415// AWS accounts or to predefined groups defined by Amazon S3. These permissions
416// are then added to the ACL on the object. For more information, see Access
417// Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
418// and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
419//
420// Storage Class Options
421//
422// You can use the CopyObject operation to change the storage class of an object
423// that is already stored in Amazon S3 using the StorageClass parameter. For
424// more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
425// in the Amazon S3 Service Developer Guide.
426//
427// Versioning
428//
429// By default, x-amz-copy-source identifies the current version of an object
430// to copy. If the current version is a delete marker, Amazon S3 behaves as
431// if the object was deleted. To copy a different version, use the versionId
432// subresource.
433//
434// If you enable versioning on the target bucket, Amazon S3 generates a unique
435// version ID for the object being copied. This version ID is different from
436// the version ID of the source object. Amazon S3 returns the version ID of
437// the copied object in the x-amz-version-id response header in the response.
438//
439// If you do not enable versioning or suspend it on the target bucket, the version
440// ID that Amazon S3 generates is always null.
441//
442// If the source object's storage class is GLACIER, you must restore a copy
443// of this object before you can use it as a source object for the copy operation.
444// For more information, see .
445//
446// The following operations are related to CopyObject:
447//
448//    * PutObject
449//
450//    * GetObject
451//
452// For more information, see Copying Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html).
453//
454// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
455// with awserr.Error's Code and Message methods to get detailed information about
456// the error.
457//
458// See the AWS API reference guide for Amazon Simple Storage Service's
459// API operation CopyObject for usage and error information.
460//
461// Returned Error Codes:
462//   * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError"
463//   The source object of the COPY operation is not in the active tier and is
464//   only stored in Amazon S3 Glacier.
465//
466// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
467func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) {
468	req, out := c.CopyObjectRequest(input)
469	return out, req.Send()
470}
471
472// CopyObjectWithContext is the same as CopyObject with the addition of
473// the ability to pass a context and additional request options.
474//
475// See CopyObject for details on how to use this API operation.
476//
477// The context must be non-nil and will be used for request cancellation. If
478// the context is nil a panic will occur. In the future the SDK may create
479// sub-contexts for http.Requests. See https://golang.org/pkg/context/
480// for more information on using Contexts.
481func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) {
482	req, out := c.CopyObjectRequest(input)
483	req.SetContext(ctx)
484	req.ApplyOptions(opts...)
485	return out, req.Send()
486}
487
488const opCreateBucket = "CreateBucket"
489
490// CreateBucketRequest generates a "aws/request.Request" representing the
491// client's request for the CreateBucket operation. The "output" return
492// value will be populated with the request's response once the request completes
493// successfully.
494//
495// Use "Send" method on the returned Request to send the API call to the service.
496// the "output" return value is not valid until after Send returns without error.
497//
498// See CreateBucket for more information on using the CreateBucket
499// API call, and error handling.
500//
501// This method is useful when you want to inject custom logic or configuration
502// into the SDK's request lifecycle. Such as custom headers, or retry logic.
503//
504//
505//    // Example sending a request using the CreateBucketRequest method.
506//    req, resp := client.CreateBucketRequest(params)
507//
508//    err := req.Send()
509//    if err == nil { // resp is now filled
510//        fmt.Println(resp)
511//    }
512//
513// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
514func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) {
515	op := &request.Operation{
516		Name:       opCreateBucket,
517		HTTPMethod: "PUT",
518		HTTPPath:   "/{Bucket}",
519	}
520
521	if input == nil {
522		input = &CreateBucketInput{}
523	}
524
525	output = &CreateBucketOutput{}
526	req = c.newRequest(op, input, output)
527	return
528}
529
530// CreateBucket API operation for Amazon Simple Storage Service.
531//
532// Creates a new bucket. To create a bucket, you must register with Amazon S3
533// and have a valid AWS Access Key ID to authenticate requests. Anonymous requests
534// are never allowed to create buckets. By creating the bucket, you become the
535// bucket owner.
536//
537// Not every string is an acceptable bucket name. For information on bucket
538// naming restrictions, see Working with Amazon S3 Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html).
539//
540// By default, the bucket is created in the US East (N. Virginia) Region. You
541// can optionally specify a Region in the request body. You might choose a Region
542// to optimize latency, minimize costs, or address regulatory requirements.
543// For example, if you reside in Europe, you will probably find it advantageous
544// to create buckets in the Europe (Ireland) Region. For more information, see
545// How to Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
546//
547// If you send your create bucket request to the s3.amazonaws.com endpoint,
548// the request goes to the us-east-1 Region. Accordingly, the signature calculations
549// in Signature Version 4 must use us-east-1 as the Region, even if the location
550// constraint in the request specifies another Region where the bucket is to
551// be created. If you create a bucket in a Region other than US East (N. Virginia),
552// your application must be able to handle 307 redirect. For more information,
553// see Virtual Hosting of Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).
554//
555// When creating a bucket using this operation, you can optionally specify the
556// accounts or groups that should be granted specific permissions on the bucket.
557// There are two ways to grant the appropriate permissions using the request
558// headers.
559//
560//    * Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports
561//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
562//    predefined set of grantees and permissions. For more information, see
563//    Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
564//
565//    * Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write,
566//    x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
567//    headers. These headers map to the set of permissions Amazon S3 supports
568//    in an ACL. For more information, see Access Control List (ACL) Overview
569//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You
570//    specify each grantee as a type=value pair, where the type is one of the
571//    following: id – if the value specified is the canonical user ID of an
572//    AWS account uri – if you are granting permissions to a predefined group
573//    emailAddress – if the value specified is the email address of an AWS
574//    account Using email addresses to specify a grantee is only supported in
575//    the following AWS Regions: US East (N. Virginia) US West (N. California)
576//    US West (Oregon) Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific
577//    (Tokyo) Europe (Ireland) South America (São Paulo) For a list of all
578//    the Amazon S3 supported Regions and endpoints, see Regions and Endpoints
579//    (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in
580//    the AWS General Reference. For example, the following x-amz-grant-read
581//    header grants the AWS accounts identified by account IDs permissions to
582//    read object data and its metadata: x-amz-grant-read: id="11112222333",
583//    id="444455556666"
584//
585// You can use either a canned ACL or specify access permissions explicitly.
586// You cannot do both.
587//
588// The following operations are related to CreateBucket:
589//
590//    * PutObject
591//
592//    * DeleteBucket
593//
594// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
595// with awserr.Error's Code and Message methods to get detailed information about
596// the error.
597//
598// See the AWS API reference guide for Amazon Simple Storage Service's
599// API operation CreateBucket for usage and error information.
600//
601// Returned Error Codes:
602//   * ErrCodeBucketAlreadyExists "BucketAlreadyExists"
603//   The requested bucket name is not available. The bucket namespace is shared
604//   by all users of the system. Please select a different name and try again.
605//
606//   * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou"
607//   The bucket you tried to create already exists, and you own it. Amazon S3
608//   returns this error in all AWS Regions except in the North Virginia Region.
609//   For legacy compatibility, if you re-create an existing bucket that you already
610//   own in the North Virginia Region, Amazon S3 returns 200 OK and resets the
611//   bucket access control lists (ACLs).
612//
613// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
614func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
615	req, out := c.CreateBucketRequest(input)
616	return out, req.Send()
617}
618
619// CreateBucketWithContext is the same as CreateBucket with the addition of
620// the ability to pass a context and additional request options.
621//
622// See CreateBucket for details on how to use this API operation.
623//
624// The context must be non-nil and will be used for request cancellation. If
625// the context is nil a panic will occur. In the future the SDK may create
626// sub-contexts for http.Requests. See https://golang.org/pkg/context/
627// for more information on using Contexts.
628func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) {
629	req, out := c.CreateBucketRequest(input)
630	req.SetContext(ctx)
631	req.ApplyOptions(opts...)
632	return out, req.Send()
633}
634
635const opCreateMultipartUpload = "CreateMultipartUpload"
636
637// CreateMultipartUploadRequest generates a "aws/request.Request" representing the
638// client's request for the CreateMultipartUpload operation. The "output" return
639// value will be populated with the request's response once the request completes
640// successfully.
641//
642// Use "Send" method on the returned Request to send the API call to the service.
643// the "output" return value is not valid until after Send returns without error.
644//
645// See CreateMultipartUpload for more information on using the CreateMultipartUpload
646// API call, and error handling.
647//
648// This method is useful when you want to inject custom logic or configuration
649// into the SDK's request lifecycle. Such as custom headers, or retry logic.
650//
651//
652//    // Example sending a request using the CreateMultipartUploadRequest method.
653//    req, resp := client.CreateMultipartUploadRequest(params)
654//
655//    err := req.Send()
656//    if err == nil { // resp is now filled
657//        fmt.Println(resp)
658//    }
659//
660// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
661func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) {
662	op := &request.Operation{
663		Name:       opCreateMultipartUpload,
664		HTTPMethod: "POST",
665		HTTPPath:   "/{Bucket}/{Key+}?uploads",
666	}
667
668	if input == nil {
669		input = &CreateMultipartUploadInput{}
670	}
671
672	output = &CreateMultipartUploadOutput{}
673	req = c.newRequest(op, input, output)
674	return
675}
676
677// CreateMultipartUpload API operation for Amazon Simple Storage Service.
678//
679// This operation initiates a multipart upload and returns an upload ID. This
680// upload ID is used to associate all of the parts in the specific multipart
681// upload. You specify this upload ID in each of your subsequent upload part
682// requests (see UploadPart). You also include this upload ID in the final request
683// to either complete or abort the multipart upload request.
684//
685// For more information about multipart uploads, see Multipart Upload Overview
686// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html).
687//
688// If you have configured a lifecycle rule to abort incomplete multipart uploads,
689// the upload must complete within the number of days specified in the bucket
690// lifecycle configuration. Otherwise, the incomplete multipart upload becomes
691// eligible for an abort operation and Amazon S3 aborts the multipart upload.
692// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
693// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
694//
695// For information about the permissions required to use the multipart upload
696// API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
697//
698// For request signing, multipart upload is just a series of regular requests.
699// You initiate a multipart upload, send one or more requests to upload parts,
700// and then complete the multipart upload process. You sign each request individually.
701// There is nothing special about signing multipart upload requests. For more
702// information about signing, see Authenticating Requests (AWS Signature Version
703// 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
704//
705// After you initiate a multipart upload and upload one or more parts, to stop
706// being charged for storing the uploaded parts, you must either complete or
707// abort the multipart upload. Amazon S3 frees up the space used to store the
708// parts and stop charging you for storing them only after you either complete
709// or abort a multipart upload.
710//
711// You can optionally request server-side encryption. For server-side encryption,
712// Amazon S3 encrypts your data as it writes it to disks in its data centers
713// and decrypts it when you access it. You can provide your own encryption key,
714// or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or
715// Amazon S3-managed encryption keys. If you choose to provide your own encryption
716// key, the request headers you provide in UploadPart) and UploadPartCopy) requests
717// must match the headers you used in the request to initiate the upload by
718// using CreateMultipartUpload.
719//
720// To perform a multipart upload with encryption using an AWS KMS CMK, the requester
721// must have permission to the kms:Encrypt, kms:Decrypt, kms:ReEncrypt*, kms:GenerateDataKey*,
722// and kms:DescribeKey actions on the key. These permissions are required because
723// Amazon S3 must decrypt and read data from the encrypted file parts before
724// it completes the multipart upload.
725//
726// If your AWS Identity and Access Management (IAM) user or role is in the same
727// AWS account as the AWS KMS CMK, then you must have these permissions on the
728// key policy. If your IAM user or role belongs to a different account than
729// the key, then you must have the permissions on both the key policy and your
730// IAM user or role.
731//
732// For more information, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
733//
734// Access Permissions
735//
736// When copying an object, you can optionally specify the accounts or groups
737// that should be granted specific permissions on the new object. There are
738// two ways to grant the permissions using the request headers:
739//
740//    * Specify a canned ACL with the x-amz-acl request header. For more information,
741//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
742//
743//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
744//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
745//    map to the set of permissions that Amazon S3 supports in an ACL. For more
746//    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
747//
748// You can use either a canned ACL or specify access permissions explicitly.
749// You cannot do both.
750//
751// Server-Side- Encryption-Specific Request Headers
752//
753// You can optionally tell Amazon S3 to encrypt data at rest using server-side
754// encryption. Server-side encryption is for data encryption at rest. Amazon
755// S3 encrypts your data as it writes it to disks in its data centers and decrypts
756// it when you access it. The option you use depends on whether you want to
757// use AWS managed encryption keys or provide your own encryption key.
758//
759//    * Use encryption keys managed by Amazon S3 or customer master keys (CMKs)
760//    stored in AWS Key Management Service (AWS KMS) – If you want AWS to
761//    manage the keys used to encrypt data, specify the following headers in
762//    the request. x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id
763//    x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms,
764//    but don't provide x-amz-server-side-encryption-aws-kms-key-id, Amazon
765//    S3 uses the AWS managed CMK in AWS KMS to protect the data. All GET and
766//    PUT requests for an object protected by AWS KMS fail if you don't make
767//    them with SSL or by using SigV4. For more information about server-side
768//    encryption with CMKs stored in AWS KMS (SSE-KMS), see Protecting Data
769//    Using Server-Side Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
770//
771//    * Use customer-provided encryption keys – If you want to manage your
772//    own encryption keys, provide all the following headers in the request.
773//    x-amz-server-side​-encryption​-customer-algorithm x-amz-server-side​-encryption​-customer-key
774//    x-amz-server-side​-encryption​-customer-key-MD5 For more information
775//    about server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see
776//    Protecting Data Using Server-Side Encryption with CMKs stored in AWS KMS
777//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
778//
779// Access-Control-List (ACL)-Specific Request Headers
780//
781// You also can use the following access control–related headers with this
782// operation. By default, all objects are private. Only the owner has full access
783// control. When adding a new object, you can grant permissions to individual
784// AWS accounts or to predefined groups defined by Amazon S3. These permissions
785// are then added to the access control list (ACL) on the object. For more information,
786// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
787// With this operation, you can grant access permissions using one of the following
788// two methods:
789//
790//    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
791//    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
792//    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
793//
794//    * Specify access permissions explicitly — To explicitly grant access
795//    permissions to specific AWS accounts or groups, use the following headers.
796//    Each header maps to specific permissions that Amazon S3 supports in an
797//    ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
798//    In the header, you specify a list of grantees who get the specific permission.
799//    To grant permissions explicitly, use: x-amz-grant-read x-amz-grant-write
800//    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
801//    specify each grantee as a type=value pair, where the type is one of the
802//    following: id – if the value specified is the canonical user ID of an
803//    AWS account uri – if you are granting permissions to a predefined group
804//    emailAddress – if the value specified is the email address of an AWS
805//    account Using email addresses to specify a grantee is only supported in
806//    the following AWS Regions: US East (N. Virginia) US West (N. California)
807//    US West (Oregon) Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific
808//    (Tokyo) Europe (Ireland) South America (São Paulo) For a list of all
809//    the Amazon S3 supported Regions and endpoints, see Regions and Endpoints
810//    (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in
811//    the AWS General Reference. For example, the following x-amz-grant-read
812//    header grants the AWS accounts identified by account IDs permissions to
813//    read object data and its metadata: x-amz-grant-read: id="11112222333",
814//    id="444455556666"
815//
816// The following operations are related to CreateMultipartUpload:
817//
818//    * UploadPart
819//
820//    * CompleteMultipartUpload
821//
822//    * AbortMultipartUpload
823//
824//    * ListParts
825//
826//    * ListMultipartUploads
827//
828// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
829// with awserr.Error's Code and Message methods to get detailed information about
830// the error.
831//
832// See the AWS API reference guide for Amazon Simple Storage Service's
833// API operation CreateMultipartUpload for usage and error information.
834// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
835func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) {
836	req, out := c.CreateMultipartUploadRequest(input)
837	return out, req.Send()
838}
839
840// CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of
841// the ability to pass a context and additional request options.
842//
843// See CreateMultipartUpload for details on how to use this API operation.
844//
845// The context must be non-nil and will be used for request cancellation. If
846// the context is nil a panic will occur. In the future the SDK may create
847// sub-contexts for http.Requests. See https://golang.org/pkg/context/
848// for more information on using Contexts.
849func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) {
850	req, out := c.CreateMultipartUploadRequest(input)
851	req.SetContext(ctx)
852	req.ApplyOptions(opts...)
853	return out, req.Send()
854}
855
856const opDeleteBucket = "DeleteBucket"
857
858// DeleteBucketRequest generates a "aws/request.Request" representing the
859// client's request for the DeleteBucket operation. The "output" return
860// value will be populated with the request's response once the request completes
861// successfully.
862//
863// Use "Send" method on the returned Request to send the API call to the service.
864// the "output" return value is not valid until after Send returns without error.
865//
866// See DeleteBucket for more information on using the DeleteBucket
867// API call, and error handling.
868//
869// This method is useful when you want to inject custom logic or configuration
870// into the SDK's request lifecycle. Such as custom headers, or retry logic.
871//
872//
873//    // Example sending a request using the DeleteBucketRequest method.
874//    req, resp := client.DeleteBucketRequest(params)
875//
876//    err := req.Send()
877//    if err == nil { // resp is now filled
878//        fmt.Println(resp)
879//    }
880//
881// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
882func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) {
883	op := &request.Operation{
884		Name:       opDeleteBucket,
885		HTTPMethod: "DELETE",
886		HTTPPath:   "/{Bucket}",
887	}
888
889	if input == nil {
890		input = &DeleteBucketInput{}
891	}
892
893	output = &DeleteBucketOutput{}
894	req = c.newRequest(op, input, output)
895	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
896	return
897}
898
899// DeleteBucket API operation for Amazon Simple Storage Service.
900//
901// Deletes the bucket. All objects (including all object versions and delete
902// markers) in the bucket must be deleted before the bucket itself can be deleted.
903//
904// Related Resources
905//
906//    *
907//
908//    *
909//
910// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
911// with awserr.Error's Code and Message methods to get detailed information about
912// the error.
913//
914// See the AWS API reference guide for Amazon Simple Storage Service's
915// API operation DeleteBucket for usage and error information.
916// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
917func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
918	req, out := c.DeleteBucketRequest(input)
919	return out, req.Send()
920}
921
922// DeleteBucketWithContext is the same as DeleteBucket with the addition of
923// the ability to pass a context and additional request options.
924//
925// See DeleteBucket for details on how to use this API operation.
926//
927// The context must be non-nil and will be used for request cancellation. If
928// the context is nil a panic will occur. In the future the SDK may create
929// sub-contexts for http.Requests. See https://golang.org/pkg/context/
930// for more information on using Contexts.
931func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
932	req, out := c.DeleteBucketRequest(input)
933	req.SetContext(ctx)
934	req.ApplyOptions(opts...)
935	return out, req.Send()
936}
937
938const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
939
940// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
941// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
942// value will be populated with the request's response once the request completes
943// successfully.
944//
945// Use "Send" method on the returned Request to send the API call to the service.
946// the "output" return value is not valid until after Send returns without error.
947//
948// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
949// API call, and error handling.
950//
951// This method is useful when you want to inject custom logic or configuration
952// into the SDK's request lifecycle. Such as custom headers, or retry logic.
953//
954//
955//    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
956//    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
957//
958//    err := req.Send()
959//    if err == nil { // resp is now filled
960//        fmt.Println(resp)
961//    }
962//
963// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
964func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
965	op := &request.Operation{
966		Name:       opDeleteBucketAnalyticsConfiguration,
967		HTTPMethod: "DELETE",
968		HTTPPath:   "/{Bucket}?analytics",
969	}
970
971	if input == nil {
972		input = &DeleteBucketAnalyticsConfigurationInput{}
973	}
974
975	output = &DeleteBucketAnalyticsConfigurationOutput{}
976	req = c.newRequest(op, input, output)
977	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
978	return
979}
980
981// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
982//
983// Deletes an analytics configuration for the bucket (specified by the analytics
984// configuration ID).
985//
986// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
987// action. The bucket owner has this permission by default. The bucket owner
988// can grant this permission to others. For more information about permissions,
989// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
990// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
991//
992// For information about the Amazon S3 analytics feature, see Amazon S3 Analytics
993// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
994//
995// The following operations are related to DeleteBucketAnalyticsConfiguration:
996//
997//    *
998//
999//    *
1000//
1001//    *
1002//
1003// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1004// with awserr.Error's Code and Message methods to get detailed information about
1005// the error.
1006//
1007// See the AWS API reference guide for Amazon Simple Storage Service's
1008// API operation DeleteBucketAnalyticsConfiguration for usage and error information.
1009// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
1010func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1011	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1012	return out, req.Send()
1013}
1014
1015// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
1016// the ability to pass a context and additional request options.
1017//
1018// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
1019//
1020// The context must be non-nil and will be used for request cancellation. If
1021// the context is nil a panic will occur. In the future the SDK may create
1022// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1023// for more information on using Contexts.
1024func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1025	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1026	req.SetContext(ctx)
1027	req.ApplyOptions(opts...)
1028	return out, req.Send()
1029}
1030
1031const opDeleteBucketCors = "DeleteBucketCors"
1032
1033// DeleteBucketCorsRequest generates a "aws/request.Request" representing the
1034// client's request for the DeleteBucketCors operation. The "output" return
1035// value will be populated with the request's response once the request completes
1036// successfully.
1037//
1038// Use "Send" method on the returned Request to send the API call to the service.
1039// the "output" return value is not valid until after Send returns without error.
1040//
1041// See DeleteBucketCors for more information on using the DeleteBucketCors
1042// API call, and error handling.
1043//
1044// This method is useful when you want to inject custom logic or configuration
1045// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1046//
1047//
1048//    // Example sending a request using the DeleteBucketCorsRequest method.
1049//    req, resp := client.DeleteBucketCorsRequest(params)
1050//
1051//    err := req.Send()
1052//    if err == nil { // resp is now filled
1053//        fmt.Println(resp)
1054//    }
1055//
1056// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1057func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
1058	op := &request.Operation{
1059		Name:       opDeleteBucketCors,
1060		HTTPMethod: "DELETE",
1061		HTTPPath:   "/{Bucket}?cors",
1062	}
1063
1064	if input == nil {
1065		input = &DeleteBucketCorsInput{}
1066	}
1067
1068	output = &DeleteBucketCorsOutput{}
1069	req = c.newRequest(op, input, output)
1070	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1071	return
1072}
1073
1074// DeleteBucketCors API operation for Amazon Simple Storage Service.
1075//
1076// Deletes the cors configuration information set for the bucket.
1077//
1078// To use this operation, you must have permission to perform the s3:PutBucketCORS
1079// action. The bucket owner has this permission by default and can grant this
1080// permission to others.
1081//
1082// For information about cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)
1083// in the Amazon Simple Storage Service Developer Guide.
1084//
1085// Related Resources:
1086//
1087//    *
1088//
1089//    * RESTOPTIONSobject
1090//
1091// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1092// with awserr.Error's Code and Message methods to get detailed information about
1093// the error.
1094//
1095// See the AWS API reference guide for Amazon Simple Storage Service's
1096// API operation DeleteBucketCors for usage and error information.
1097// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1098func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
1099	req, out := c.DeleteBucketCorsRequest(input)
1100	return out, req.Send()
1101}
1102
1103// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
1104// the ability to pass a context and additional request options.
1105//
1106// See DeleteBucketCors for details on how to use this API operation.
1107//
1108// The context must be non-nil and will be used for request cancellation. If
1109// the context is nil a panic will occur. In the future the SDK may create
1110// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1111// for more information on using Contexts.
1112func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
1113	req, out := c.DeleteBucketCorsRequest(input)
1114	req.SetContext(ctx)
1115	req.ApplyOptions(opts...)
1116	return out, req.Send()
1117}
1118
1119const opDeleteBucketEncryption = "DeleteBucketEncryption"
1120
1121// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
1122// client's request for the DeleteBucketEncryption operation. The "output" return
1123// value will be populated with the request's response once the request completes
1124// successfully.
1125//
1126// Use "Send" method on the returned Request to send the API call to the service.
1127// the "output" return value is not valid until after Send returns without error.
1128//
1129// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
1130// API call, and error handling.
1131//
1132// This method is useful when you want to inject custom logic or configuration
1133// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1134//
1135//
1136//    // Example sending a request using the DeleteBucketEncryptionRequest method.
1137//    req, resp := client.DeleteBucketEncryptionRequest(params)
1138//
1139//    err := req.Send()
1140//    if err == nil { // resp is now filled
1141//        fmt.Println(resp)
1142//    }
1143//
1144// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1145func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
1146	op := &request.Operation{
1147		Name:       opDeleteBucketEncryption,
1148		HTTPMethod: "DELETE",
1149		HTTPPath:   "/{Bucket}?encryption",
1150	}
1151
1152	if input == nil {
1153		input = &DeleteBucketEncryptionInput{}
1154	}
1155
1156	output = &DeleteBucketEncryptionOutput{}
1157	req = c.newRequest(op, input, output)
1158	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1159	return
1160}
1161
1162// DeleteBucketEncryption API operation for Amazon Simple Storage Service.
1163//
1164// This implementation of the DELETE operation removes default encryption from
1165// the bucket. For information about the Amazon S3 default encryption feature,
1166// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
1167// in the Amazon Simple Storage Service Developer Guide.
1168//
1169// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
1170// action. The bucket owner has this permission by default. The bucket owner
1171// can grant this permission to others. For more information about permissions,
1172// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1173// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
1174// in the Amazon Simple Storage Service Developer Guide.
1175//
1176// Related Resources
1177//
1178//    * PutBucketEncryption
1179//
1180//    * GetBucketEncryption
1181//
1182// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1183// with awserr.Error's Code and Message methods to get detailed information about
1184// the error.
1185//
1186// See the AWS API reference guide for Amazon Simple Storage Service's
1187// API operation DeleteBucketEncryption for usage and error information.
1188// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1189func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
1190	req, out := c.DeleteBucketEncryptionRequest(input)
1191	return out, req.Send()
1192}
1193
1194// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
1195// the ability to pass a context and additional request options.
1196//
1197// See DeleteBucketEncryption for details on how to use this API operation.
1198//
1199// The context must be non-nil and will be used for request cancellation. If
1200// the context is nil a panic will occur. In the future the SDK may create
1201// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1202// for more information on using Contexts.
1203func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
1204	req, out := c.DeleteBucketEncryptionRequest(input)
1205	req.SetContext(ctx)
1206	req.ApplyOptions(opts...)
1207	return out, req.Send()
1208}
1209
1210const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
1211
1212// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
1213// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
1214// value will be populated with the request's response once the request completes
1215// successfully.
1216//
1217// Use "Send" method on the returned Request to send the API call to the service.
1218// the "output" return value is not valid until after Send returns without error.
1219//
1220// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
1221// API call, and error handling.
1222//
1223// This method is useful when you want to inject custom logic or configuration
1224// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1225//
1226//
1227//    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
1228//    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
1229//
1230//    err := req.Send()
1231//    if err == nil { // resp is now filled
1232//        fmt.Println(resp)
1233//    }
1234//
1235// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1236func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
1237	op := &request.Operation{
1238		Name:       opDeleteBucketInventoryConfiguration,
1239		HTTPMethod: "DELETE",
1240		HTTPPath:   "/{Bucket}?inventory",
1241	}
1242
1243	if input == nil {
1244		input = &DeleteBucketInventoryConfigurationInput{}
1245	}
1246
1247	output = &DeleteBucketInventoryConfigurationOutput{}
1248	req = c.newRequest(op, input, output)
1249	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1250	return
1251}
1252
1253// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
1254//
1255// Deletes an inventory configuration (identified by the inventory ID) from
1256// the bucket.
1257//
1258// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
1259// action. The bucket owner has this permission by default. The bucket owner
1260// can grant this permission to others. For more information about permissions,
1261// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1262// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1263//
1264// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
1265// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
1266//
1267// Operations related to DeleteBucketInventoryConfiguration include:
1268//
1269//    * GetBucketInventoryConfiguration
1270//
1271//    * PutBucketInventoryConfiguration
1272//
1273//    * ListBucketInventoryConfigurations
1274//
1275// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1276// with awserr.Error's Code and Message methods to get detailed information about
1277// the error.
1278//
1279// See the AWS API reference guide for Amazon Simple Storage Service's
1280// API operation DeleteBucketInventoryConfiguration for usage and error information.
1281// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1282func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
1283	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1284	return out, req.Send()
1285}
1286
1287// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
1288// the ability to pass a context and additional request options.
1289//
1290// See DeleteBucketInventoryConfiguration for details on how to use this API operation.
1291//
1292// The context must be non-nil and will be used for request cancellation. If
1293// the context is nil a panic will occur. In the future the SDK may create
1294// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1295// for more information on using Contexts.
1296func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
1297	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1298	req.SetContext(ctx)
1299	req.ApplyOptions(opts...)
1300	return out, req.Send()
1301}
1302
1303const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
1304
1305// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
1306// client's request for the DeleteBucketLifecycle operation. The "output" return
1307// value will be populated with the request's response once the request completes
1308// successfully.
1309//
1310// Use "Send" method on the returned Request to send the API call to the service.
1311// the "output" return value is not valid until after Send returns without error.
1312//
1313// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
1314// API call, and error handling.
1315//
1316// This method is useful when you want to inject custom logic or configuration
1317// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1318//
1319//
1320//    // Example sending a request using the DeleteBucketLifecycleRequest method.
1321//    req, resp := client.DeleteBucketLifecycleRequest(params)
1322//
1323//    err := req.Send()
1324//    if err == nil { // resp is now filled
1325//        fmt.Println(resp)
1326//    }
1327//
1328// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1329func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
1330	op := &request.Operation{
1331		Name:       opDeleteBucketLifecycle,
1332		HTTPMethod: "DELETE",
1333		HTTPPath:   "/{Bucket}?lifecycle",
1334	}
1335
1336	if input == nil {
1337		input = &DeleteBucketLifecycleInput{}
1338	}
1339
1340	output = &DeleteBucketLifecycleOutput{}
1341	req = c.newRequest(op, input, output)
1342	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1343	return
1344}
1345
1346// DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
1347//
1348// Deletes the lifecycle configuration from the specified bucket. Amazon S3
1349// removes all the lifecycle configuration rules in the lifecycle subresource
1350// associated with the bucket. Your objects never expire, and Amazon S3 no longer
1351// automatically deletes any objects on the basis of rules contained in the
1352// deleted lifecycle configuration.
1353//
1354// To use this operation, you must have permission to perform the s3:PutLifecycleConfiguration
1355// action. By default, the bucket owner has this permission and the bucket owner
1356// can grant this permission to others.
1357//
1358// There is usually some time lag before lifecycle configuration deletion is
1359// fully propagated to all the Amazon S3 systems.
1360//
1361// For more information about the object expiration, see Elements to Describe
1362// Lifecycle Actions (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions).
1363//
1364// Related actions include:
1365//
1366//    * PutBucketLifecycleConfiguration
1367//
1368//    * GetBucketLifecycleConfiguration
1369//
1370// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1371// with awserr.Error's Code and Message methods to get detailed information about
1372// the error.
1373//
1374// See the AWS API reference guide for Amazon Simple Storage Service's
1375// API operation DeleteBucketLifecycle for usage and error information.
1376// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1377func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
1378	req, out := c.DeleteBucketLifecycleRequest(input)
1379	return out, req.Send()
1380}
1381
1382// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
1383// the ability to pass a context and additional request options.
1384//
1385// See DeleteBucketLifecycle for details on how to use this API operation.
1386//
1387// The context must be non-nil and will be used for request cancellation. If
1388// the context is nil a panic will occur. In the future the SDK may create
1389// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1390// for more information on using Contexts.
1391func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
1392	req, out := c.DeleteBucketLifecycleRequest(input)
1393	req.SetContext(ctx)
1394	req.ApplyOptions(opts...)
1395	return out, req.Send()
1396}
1397
1398const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
1399
1400// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
1401// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
1402// value will be populated with the request's response once the request completes
1403// successfully.
1404//
1405// Use "Send" method on the returned Request to send the API call to the service.
1406// the "output" return value is not valid until after Send returns without error.
1407//
1408// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
1409// API call, and error handling.
1410//
1411// This method is useful when you want to inject custom logic or configuration
1412// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1413//
1414//
1415//    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
1416//    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
1417//
1418//    err := req.Send()
1419//    if err == nil { // resp is now filled
1420//        fmt.Println(resp)
1421//    }
1422//
1423// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1424func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
1425	op := &request.Operation{
1426		Name:       opDeleteBucketMetricsConfiguration,
1427		HTTPMethod: "DELETE",
1428		HTTPPath:   "/{Bucket}?metrics",
1429	}
1430
1431	if input == nil {
1432		input = &DeleteBucketMetricsConfigurationInput{}
1433	}
1434
1435	output = &DeleteBucketMetricsConfigurationOutput{}
1436	req = c.newRequest(op, input, output)
1437	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1438	return
1439}
1440
1441// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
1442//
1443// Deletes a metrics configuration for the Amazon CloudWatch request metrics
1444// (specified by the metrics configuration ID) from the bucket. Note that this
1445// doesn't include the daily storage metrics.
1446//
1447// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
1448// action. The bucket owner has this permission by default. The bucket owner
1449// can grant this permission to others. For more information about permissions,
1450// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1451// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1452//
1453// For information about CloudWatch request metrics for Amazon S3, see Monitoring
1454// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
1455//
1456// The following operations are related to DeleteBucketMetricsConfiguration:
1457//
1458//    * GetBucketMetricsConfiguration
1459//
1460//    * PutBucketMetricsConfiguration
1461//
1462//    * ListBucketMetricsConfigurations
1463//
1464//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
1465//
1466// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1467// with awserr.Error's Code and Message methods to get detailed information about
1468// the error.
1469//
1470// See the AWS API reference guide for Amazon Simple Storage Service's
1471// API operation DeleteBucketMetricsConfiguration for usage and error information.
1472// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1473func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
1474	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1475	return out, req.Send()
1476}
1477
1478// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
1479// the ability to pass a context and additional request options.
1480//
1481// See DeleteBucketMetricsConfiguration for details on how to use this API operation.
1482//
1483// The context must be non-nil and will be used for request cancellation. If
1484// the context is nil a panic will occur. In the future the SDK may create
1485// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1486// for more information on using Contexts.
1487func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
1488	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1489	req.SetContext(ctx)
1490	req.ApplyOptions(opts...)
1491	return out, req.Send()
1492}
1493
1494const opDeleteBucketPolicy = "DeleteBucketPolicy"
1495
1496// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
1497// client's request for the DeleteBucketPolicy operation. The "output" return
1498// value will be populated with the request's response once the request completes
1499// successfully.
1500//
1501// Use "Send" method on the returned Request to send the API call to the service.
1502// the "output" return value is not valid until after Send returns without error.
1503//
1504// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
1505// API call, and error handling.
1506//
1507// This method is useful when you want to inject custom logic or configuration
1508// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1509//
1510//
1511//    // Example sending a request using the DeleteBucketPolicyRequest method.
1512//    req, resp := client.DeleteBucketPolicyRequest(params)
1513//
1514//    err := req.Send()
1515//    if err == nil { // resp is now filled
1516//        fmt.Println(resp)
1517//    }
1518//
1519// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1520func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
1521	op := &request.Operation{
1522		Name:       opDeleteBucketPolicy,
1523		HTTPMethod: "DELETE",
1524		HTTPPath:   "/{Bucket}?policy",
1525	}
1526
1527	if input == nil {
1528		input = &DeleteBucketPolicyInput{}
1529	}
1530
1531	output = &DeleteBucketPolicyOutput{}
1532	req = c.newRequest(op, input, output)
1533	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1534	return
1535}
1536
1537// DeleteBucketPolicy API operation for Amazon Simple Storage Service.
1538//
1539// This implementation of the DELETE operation uses the policy subresource to
1540// delete the policy of a specified bucket. If you are using an identity other
1541// than the root user of the AWS account that owns the bucket, the calling identity
1542// must have the DeleteBucketPolicy permissions on the specified bucket and
1543// belong to the bucket owner's account to use this operation.
1544//
1545// If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403
1546// Access Denied error. If you have the correct permissions, but you're not
1547// using an identity that belongs to the bucket owner's account, Amazon S3 returns
1548// a 405 Method Not Allowed error.
1549//
1550// As a security precaution, the root user of the AWS account that owns a bucket
1551// can always use this operation, even if the policy explicitly denies the root
1552// user the ability to perform this action.
1553//
1554// For more information about bucket policies, see Using Bucket Policies and
1555// UserPolicies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
1556//
1557// The following operations are related to DeleteBucketPolicy
1558//
1559//    * CreateBucket
1560//
1561//    * DeleteObject
1562//
1563// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1564// with awserr.Error's Code and Message methods to get detailed information about
1565// the error.
1566//
1567// See the AWS API reference guide for Amazon Simple Storage Service's
1568// API operation DeleteBucketPolicy for usage and error information.
1569// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1570func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
1571	req, out := c.DeleteBucketPolicyRequest(input)
1572	return out, req.Send()
1573}
1574
1575// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
1576// the ability to pass a context and additional request options.
1577//
1578// See DeleteBucketPolicy for details on how to use this API operation.
1579//
1580// The context must be non-nil and will be used for request cancellation. If
1581// the context is nil a panic will occur. In the future the SDK may create
1582// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1583// for more information on using Contexts.
1584func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
1585	req, out := c.DeleteBucketPolicyRequest(input)
1586	req.SetContext(ctx)
1587	req.ApplyOptions(opts...)
1588	return out, req.Send()
1589}
1590
1591const opDeleteBucketReplication = "DeleteBucketReplication"
1592
1593// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
1594// client's request for the DeleteBucketReplication operation. The "output" return
1595// value will be populated with the request's response once the request completes
1596// successfully.
1597//
1598// Use "Send" method on the returned Request to send the API call to the service.
1599// the "output" return value is not valid until after Send returns without error.
1600//
1601// See DeleteBucketReplication for more information on using the DeleteBucketReplication
1602// API call, and error handling.
1603//
1604// This method is useful when you want to inject custom logic or configuration
1605// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1606//
1607//
1608//    // Example sending a request using the DeleteBucketReplicationRequest method.
1609//    req, resp := client.DeleteBucketReplicationRequest(params)
1610//
1611//    err := req.Send()
1612//    if err == nil { // resp is now filled
1613//        fmt.Println(resp)
1614//    }
1615//
1616// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1617func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
1618	op := &request.Operation{
1619		Name:       opDeleteBucketReplication,
1620		HTTPMethod: "DELETE",
1621		HTTPPath:   "/{Bucket}?replication",
1622	}
1623
1624	if input == nil {
1625		input = &DeleteBucketReplicationInput{}
1626	}
1627
1628	output = &DeleteBucketReplicationOutput{}
1629	req = c.newRequest(op, input, output)
1630	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1631	return
1632}
1633
1634// DeleteBucketReplication API operation for Amazon Simple Storage Service.
1635//
1636// Deletes the replication configuration from the bucket.
1637//
1638// To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration
1639// action. The bucket owner has these permissions by default and can grant it
1640// to others. For more information about permissions, see Permissions Related
1641// to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1642// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1643//
1644// It can take a while for the deletion of a replication configuration to fully
1645// propagate.
1646//
1647// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
1648// in the Amazon S3 Developer Guide.
1649//
1650// The following operations are related to DeleteBucketReplication:
1651//
1652//    * PutBucketReplication
1653//
1654//    * GetBucketReplication
1655//
1656// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1657// with awserr.Error's Code and Message methods to get detailed information about
1658// the error.
1659//
1660// See the AWS API reference guide for Amazon Simple Storage Service's
1661// API operation DeleteBucketReplication for usage and error information.
1662// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1663func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
1664	req, out := c.DeleteBucketReplicationRequest(input)
1665	return out, req.Send()
1666}
1667
1668// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
1669// the ability to pass a context and additional request options.
1670//
1671// See DeleteBucketReplication for details on how to use this API operation.
1672//
1673// The context must be non-nil and will be used for request cancellation. If
1674// the context is nil a panic will occur. In the future the SDK may create
1675// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1676// for more information on using Contexts.
1677func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
1678	req, out := c.DeleteBucketReplicationRequest(input)
1679	req.SetContext(ctx)
1680	req.ApplyOptions(opts...)
1681	return out, req.Send()
1682}
1683
1684const opDeleteBucketTagging = "DeleteBucketTagging"
1685
1686// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
1687// client's request for the DeleteBucketTagging operation. The "output" return
1688// value will be populated with the request's response once the request completes
1689// successfully.
1690//
1691// Use "Send" method on the returned Request to send the API call to the service.
1692// the "output" return value is not valid until after Send returns without error.
1693//
1694// See DeleteBucketTagging for more information on using the DeleteBucketTagging
1695// API call, and error handling.
1696//
1697// This method is useful when you want to inject custom logic or configuration
1698// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1699//
1700//
1701//    // Example sending a request using the DeleteBucketTaggingRequest method.
1702//    req, resp := client.DeleteBucketTaggingRequest(params)
1703//
1704//    err := req.Send()
1705//    if err == nil { // resp is now filled
1706//        fmt.Println(resp)
1707//    }
1708//
1709// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1710func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
1711	op := &request.Operation{
1712		Name:       opDeleteBucketTagging,
1713		HTTPMethod: "DELETE",
1714		HTTPPath:   "/{Bucket}?tagging",
1715	}
1716
1717	if input == nil {
1718		input = &DeleteBucketTaggingInput{}
1719	}
1720
1721	output = &DeleteBucketTaggingOutput{}
1722	req = c.newRequest(op, input, output)
1723	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1724	return
1725}
1726
1727// DeleteBucketTagging API operation for Amazon Simple Storage Service.
1728//
1729// Deletes the tags from the bucket.
1730//
1731// To use this operation, you must have permission to perform the s3:PutBucketTagging
1732// action. By default, the bucket owner has this permission and can grant this
1733// permission to others.
1734//
1735// The following operations are related to DeleteBucketTagging:
1736//
1737//    * GetBucketTagging
1738//
1739//    * PutBucketTagging
1740//
1741// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1742// with awserr.Error's Code and Message methods to get detailed information about
1743// the error.
1744//
1745// See the AWS API reference guide for Amazon Simple Storage Service's
1746// API operation DeleteBucketTagging for usage and error information.
1747// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1748func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
1749	req, out := c.DeleteBucketTaggingRequest(input)
1750	return out, req.Send()
1751}
1752
1753// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
1754// the ability to pass a context and additional request options.
1755//
1756// See DeleteBucketTagging for details on how to use this API operation.
1757//
1758// The context must be non-nil and will be used for request cancellation. If
1759// the context is nil a panic will occur. In the future the SDK may create
1760// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1761// for more information on using Contexts.
1762func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
1763	req, out := c.DeleteBucketTaggingRequest(input)
1764	req.SetContext(ctx)
1765	req.ApplyOptions(opts...)
1766	return out, req.Send()
1767}
1768
1769const opDeleteBucketWebsite = "DeleteBucketWebsite"
1770
1771// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
1772// client's request for the DeleteBucketWebsite operation. The "output" return
1773// value will be populated with the request's response once the request completes
1774// successfully.
1775//
1776// Use "Send" method on the returned Request to send the API call to the service.
1777// the "output" return value is not valid until after Send returns without error.
1778//
1779// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
1780// API call, and error handling.
1781//
1782// This method is useful when you want to inject custom logic or configuration
1783// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1784//
1785//
1786//    // Example sending a request using the DeleteBucketWebsiteRequest method.
1787//    req, resp := client.DeleteBucketWebsiteRequest(params)
1788//
1789//    err := req.Send()
1790//    if err == nil { // resp is now filled
1791//        fmt.Println(resp)
1792//    }
1793//
1794// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1795func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
1796	op := &request.Operation{
1797		Name:       opDeleteBucketWebsite,
1798		HTTPMethod: "DELETE",
1799		HTTPPath:   "/{Bucket}?website",
1800	}
1801
1802	if input == nil {
1803		input = &DeleteBucketWebsiteInput{}
1804	}
1805
1806	output = &DeleteBucketWebsiteOutput{}
1807	req = c.newRequest(op, input, output)
1808	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1809	return
1810}
1811
1812// DeleteBucketWebsite API operation for Amazon Simple Storage Service.
1813//
1814// This operation removes the website configuration for a bucket. Amazon S3
1815// returns a 200 OK response upon successfully deleting a website configuration
1816// on the specified bucket. You will get a 200 OK response if the website configuration
1817// you are trying to delete does not exist on the bucket. Amazon S3 returns
1818// a 404 response if the bucket specified in the request does not exist.
1819//
1820// This DELETE operation requires the S3:DeleteBucketWebsite permission. By
1821// default, only the bucket owner can delete the website configuration attached
1822// to a bucket. However, bucket owners can grant other users permission to delete
1823// the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite
1824// permission.
1825//
1826// For more information about hosting websites, see Hosting Websites on Amazon
1827// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
1828//
1829// The following operations are related to DeleteBucketWebsite:
1830//
1831//    * GetBucketWebsite
1832//
1833//    * PutBucketWebsite
1834//
1835// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1836// with awserr.Error's Code and Message methods to get detailed information about
1837// the error.
1838//
1839// See the AWS API reference guide for Amazon Simple Storage Service's
1840// API operation DeleteBucketWebsite for usage and error information.
1841// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1842func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
1843	req, out := c.DeleteBucketWebsiteRequest(input)
1844	return out, req.Send()
1845}
1846
1847// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
1848// the ability to pass a context and additional request options.
1849//
1850// See DeleteBucketWebsite for details on how to use this API operation.
1851//
1852// The context must be non-nil and will be used for request cancellation. If
1853// the context is nil a panic will occur. In the future the SDK may create
1854// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1855// for more information on using Contexts.
1856func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
1857	req, out := c.DeleteBucketWebsiteRequest(input)
1858	req.SetContext(ctx)
1859	req.ApplyOptions(opts...)
1860	return out, req.Send()
1861}
1862
1863const opDeleteObject = "DeleteObject"
1864
1865// DeleteObjectRequest generates a "aws/request.Request" representing the
1866// client's request for the DeleteObject operation. The "output" return
1867// value will be populated with the request's response once the request completes
1868// successfully.
1869//
1870// Use "Send" method on the returned Request to send the API call to the service.
1871// the "output" return value is not valid until after Send returns without error.
1872//
1873// See DeleteObject for more information on using the DeleteObject
1874// API call, and error handling.
1875//
1876// This method is useful when you want to inject custom logic or configuration
1877// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1878//
1879//
1880//    // Example sending a request using the DeleteObjectRequest method.
1881//    req, resp := client.DeleteObjectRequest(params)
1882//
1883//    err := req.Send()
1884//    if err == nil { // resp is now filled
1885//        fmt.Println(resp)
1886//    }
1887//
1888// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1889func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
1890	op := &request.Operation{
1891		Name:       opDeleteObject,
1892		HTTPMethod: "DELETE",
1893		HTTPPath:   "/{Bucket}/{Key+}",
1894	}
1895
1896	if input == nil {
1897		input = &DeleteObjectInput{}
1898	}
1899
1900	output = &DeleteObjectOutput{}
1901	req = c.newRequest(op, input, output)
1902	return
1903}
1904
1905// DeleteObject API operation for Amazon Simple Storage Service.
1906//
1907// Removes the null version (if there is one) of an object and inserts a delete
1908// marker, which becomes the latest version of the object. If there isn't a
1909// null version, Amazon S3 does not remove any objects.
1910//
1911// To remove a specific version, you must be the bucket owner and you must use
1912// the version Id subresource. Using this subresource permanently deletes the
1913// version. If the object deleted is a delete marker, Amazon S3 sets the response
1914// header, x-amz-delete-marker, to true.
1915//
1916// If the object you want to delete is in a bucket where the bucket versioning
1917// configuration is MFA Delete enabled, you must include the x-amz-mfa request
1918// header in the DELETE versionId request. Requests that include x-amz-mfa must
1919// use HTTPS.
1920//
1921// For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html).
1922// To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
1923//
1924// You can delete objects by explicitly calling the DELETE Object API or configure
1925// its lifecycle (PutBucketLifecycle) to enable Amazon S3 to remove them for
1926// you. If you want to block users or accounts from removing or deleting objects
1927// from your bucket, you must deny them the s3:DeleteObject, s3:DeleteObjectVersion,
1928// and s3:PutLifeCycleConfiguration actions.
1929//
1930// The following operation is related to DeleteObject:
1931//
1932//    * PutObject
1933//
1934// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1935// with awserr.Error's Code and Message methods to get detailed information about
1936// the error.
1937//
1938// See the AWS API reference guide for Amazon Simple Storage Service's
1939// API operation DeleteObject for usage and error information.
1940// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1941func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
1942	req, out := c.DeleteObjectRequest(input)
1943	return out, req.Send()
1944}
1945
1946// DeleteObjectWithContext is the same as DeleteObject with the addition of
1947// the ability to pass a context and additional request options.
1948//
1949// See DeleteObject for details on how to use this API operation.
1950//
1951// The context must be non-nil and will be used for request cancellation. If
1952// the context is nil a panic will occur. In the future the SDK may create
1953// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1954// for more information on using Contexts.
1955func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
1956	req, out := c.DeleteObjectRequest(input)
1957	req.SetContext(ctx)
1958	req.ApplyOptions(opts...)
1959	return out, req.Send()
1960}
1961
1962const opDeleteObjectTagging = "DeleteObjectTagging"
1963
1964// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
1965// client's request for the DeleteObjectTagging operation. The "output" return
1966// value will be populated with the request's response once the request completes
1967// successfully.
1968//
1969// Use "Send" method on the returned Request to send the API call to the service.
1970// the "output" return value is not valid until after Send returns without error.
1971//
1972// See DeleteObjectTagging for more information on using the DeleteObjectTagging
1973// API call, and error handling.
1974//
1975// This method is useful when you want to inject custom logic or configuration
1976// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1977//
1978//
1979//    // Example sending a request using the DeleteObjectTaggingRequest method.
1980//    req, resp := client.DeleteObjectTaggingRequest(params)
1981//
1982//    err := req.Send()
1983//    if err == nil { // resp is now filled
1984//        fmt.Println(resp)
1985//    }
1986//
1987// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
1988func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
1989	op := &request.Operation{
1990		Name:       opDeleteObjectTagging,
1991		HTTPMethod: "DELETE",
1992		HTTPPath:   "/{Bucket}/{Key+}?tagging",
1993	}
1994
1995	if input == nil {
1996		input = &DeleteObjectTaggingInput{}
1997	}
1998
1999	output = &DeleteObjectTaggingOutput{}
2000	req = c.newRequest(op, input, output)
2001	return
2002}
2003
2004// DeleteObjectTagging API operation for Amazon Simple Storage Service.
2005//
2006// Removes the entire tag set from the specified object. For more information
2007// about managing object tags, see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
2008//
2009// To use this operation, you must have permission to perform the s3:DeleteObjectTagging
2010// action.
2011//
2012// To delete tags of a specific object version, add the versionId query parameter
2013// in the request. You will need permission for the s3:DeleteObjectVersionTagging
2014// action.
2015//
2016// The following operations are related to DeleteBucketMetricsConfiguration:
2017//
2018//    * PutObjectTagging
2019//
2020//    * GetObjectTagging
2021//
2022// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2023// with awserr.Error's Code and Message methods to get detailed information about
2024// the error.
2025//
2026// See the AWS API reference guide for Amazon Simple Storage Service's
2027// API operation DeleteObjectTagging for usage and error information.
2028// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2029func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
2030	req, out := c.DeleteObjectTaggingRequest(input)
2031	return out, req.Send()
2032}
2033
2034// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
2035// the ability to pass a context and additional request options.
2036//
2037// See DeleteObjectTagging for details on how to use this API operation.
2038//
2039// The context must be non-nil and will be used for request cancellation. If
2040// the context is nil a panic will occur. In the future the SDK may create
2041// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2042// for more information on using Contexts.
2043func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
2044	req, out := c.DeleteObjectTaggingRequest(input)
2045	req.SetContext(ctx)
2046	req.ApplyOptions(opts...)
2047	return out, req.Send()
2048}
2049
2050const opDeleteObjects = "DeleteObjects"
2051
2052// DeleteObjectsRequest generates a "aws/request.Request" representing the
2053// client's request for the DeleteObjects operation. The "output" return
2054// value will be populated with the request's response once the request completes
2055// successfully.
2056//
2057// Use "Send" method on the returned Request to send the API call to the service.
2058// the "output" return value is not valid until after Send returns without error.
2059//
2060// See DeleteObjects for more information on using the DeleteObjects
2061// API call, and error handling.
2062//
2063// This method is useful when you want to inject custom logic or configuration
2064// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2065//
2066//
2067//    // Example sending a request using the DeleteObjectsRequest method.
2068//    req, resp := client.DeleteObjectsRequest(params)
2069//
2070//    err := req.Send()
2071//    if err == nil { // resp is now filled
2072//        fmt.Println(resp)
2073//    }
2074//
2075// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2076func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
2077	op := &request.Operation{
2078		Name:       opDeleteObjects,
2079		HTTPMethod: "POST",
2080		HTTPPath:   "/{Bucket}?delete",
2081	}
2082
2083	if input == nil {
2084		input = &DeleteObjectsInput{}
2085	}
2086
2087	output = &DeleteObjectsOutput{}
2088	req = c.newRequest(op, input, output)
2089	req.Handlers.Build.PushBackNamed(request.NamedHandler{
2090		Name: "contentMd5Handler",
2091		Fn:   checksum.AddBodyContentMD5Handler,
2092	})
2093	return
2094}
2095
2096// DeleteObjects API operation for Amazon Simple Storage Service.
2097//
2098// This operation enables you to delete multiple objects from a bucket using
2099// a single HTTP request. If you know the object keys that you want to delete,
2100// then this operation provides a suitable alternative to sending individual
2101// delete requests, reducing per-request overhead.
2102//
2103// The request contains a list of up to 1000 keys that you want to delete. In
2104// the XML, you provide the object key names, and optionally, version IDs if
2105// you want to delete a specific version of the object from a versioning-enabled
2106// bucket. For each key, Amazon S3 performs a delete operation and returns the
2107// result of that delete, success, or failure, in the response. Note that if
2108// the object specified in the request is not found, Amazon S3 returns the result
2109// as deleted.
2110//
2111// The operation supports two modes for the response: verbose and quiet. By
2112// default, the operation uses verbose mode in which the response includes the
2113// result of deletion of each key in your request. In quiet mode the response
2114// includes only keys where the delete operation encountered an error. For a
2115// successful deletion, the operation does not return any information about
2116// the delete in the response body.
2117//
2118// When performing this operation on an MFA Delete enabled bucket, that attempts
2119// to delete any versioned objects, you must include an MFA token. If you do
2120// not provide one, the entire request will fail, even if there are non-versioned
2121// objects you are trying to delete. If you provide an invalid token, whether
2122// there are versioned keys in the request or not, the entire Multi-Object Delete
2123// request will fail. For information about MFA Delete, see MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
2124//
2125// Finally, the Content-MD5 header is required for all Multi-Object Delete requests.
2126// Amazon S3 uses the header value to ensure that your request body has not
2127// been altered in transit.
2128//
2129// The following operations are related to DeleteObjects:
2130//
2131//    * CreateMultipartUpload
2132//
2133//    * UploadPart
2134//
2135//    * CompleteMultipartUpload
2136//
2137//    * ListParts
2138//
2139//    * AbortMultipartUpload
2140//
2141// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2142// with awserr.Error's Code and Message methods to get detailed information about
2143// the error.
2144//
2145// See the AWS API reference guide for Amazon Simple Storage Service's
2146// API operation DeleteObjects for usage and error information.
2147// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2148func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
2149	req, out := c.DeleteObjectsRequest(input)
2150	return out, req.Send()
2151}
2152
2153// DeleteObjectsWithContext is the same as DeleteObjects with the addition of
2154// the ability to pass a context and additional request options.
2155//
2156// See DeleteObjects for details on how to use this API operation.
2157//
2158// The context must be non-nil and will be used for request cancellation. If
2159// the context is nil a panic will occur. In the future the SDK may create
2160// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2161// for more information on using Contexts.
2162func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
2163	req, out := c.DeleteObjectsRequest(input)
2164	req.SetContext(ctx)
2165	req.ApplyOptions(opts...)
2166	return out, req.Send()
2167}
2168
2169const opDeletePublicAccessBlock = "DeletePublicAccessBlock"
2170
2171// DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the
2172// client's request for the DeletePublicAccessBlock operation. The "output" return
2173// value will be populated with the request's response once the request completes
2174// successfully.
2175//
2176// Use "Send" method on the returned Request to send the API call to the service.
2177// the "output" return value is not valid until after Send returns without error.
2178//
2179// See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock
2180// API call, and error handling.
2181//
2182// This method is useful when you want to inject custom logic or configuration
2183// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2184//
2185//
2186//    // Example sending a request using the DeletePublicAccessBlockRequest method.
2187//    req, resp := client.DeletePublicAccessBlockRequest(params)
2188//
2189//    err := req.Send()
2190//    if err == nil { // resp is now filled
2191//        fmt.Println(resp)
2192//    }
2193//
2194// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2195func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) {
2196	op := &request.Operation{
2197		Name:       opDeletePublicAccessBlock,
2198		HTTPMethod: "DELETE",
2199		HTTPPath:   "/{Bucket}?publicAccessBlock",
2200	}
2201
2202	if input == nil {
2203		input = &DeletePublicAccessBlockInput{}
2204	}
2205
2206	output = &DeletePublicAccessBlockOutput{}
2207	req = c.newRequest(op, input, output)
2208	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2209	return
2210}
2211
2212// DeletePublicAccessBlock API operation for Amazon Simple Storage Service.
2213//
2214// Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use
2215// this operation, you must have the s3:PutBucketPublicAccessBlock permission.
2216// For more information about permissions, see Permissions Related to Bucket
2217// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2218// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2219//
2220// The following operations are related to DeletePublicAccessBlock:
2221//
2222//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
2223//
2224//    * GetPublicAccessBlock
2225//
2226//    * PutPublicAccessBlock
2227//
2228//    * GetBucketPolicyStatus
2229//
2230// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2231// with awserr.Error's Code and Message methods to get detailed information about
2232// the error.
2233//
2234// See the AWS API reference guide for Amazon Simple Storage Service's
2235// API operation DeletePublicAccessBlock for usage and error information.
2236// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2237func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) {
2238	req, out := c.DeletePublicAccessBlockRequest(input)
2239	return out, req.Send()
2240}
2241
2242// DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of
2243// the ability to pass a context and additional request options.
2244//
2245// See DeletePublicAccessBlock for details on how to use this API operation.
2246//
2247// The context must be non-nil and will be used for request cancellation. If
2248// the context is nil a panic will occur. In the future the SDK may create
2249// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2250// for more information on using Contexts.
2251func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) {
2252	req, out := c.DeletePublicAccessBlockRequest(input)
2253	req.SetContext(ctx)
2254	req.ApplyOptions(opts...)
2255	return out, req.Send()
2256}
2257
2258const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
2259
2260// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
2261// client's request for the GetBucketAccelerateConfiguration operation. The "output" return
2262// value will be populated with the request's response once the request completes
2263// successfully.
2264//
2265// Use "Send" method on the returned Request to send the API call to the service.
2266// the "output" return value is not valid until after Send returns without error.
2267//
2268// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
2269// API call, and error handling.
2270//
2271// This method is useful when you want to inject custom logic or configuration
2272// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2273//
2274//
2275//    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
2276//    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
2277//
2278//    err := req.Send()
2279//    if err == nil { // resp is now filled
2280//        fmt.Println(resp)
2281//    }
2282//
2283// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2284func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
2285	op := &request.Operation{
2286		Name:       opGetBucketAccelerateConfiguration,
2287		HTTPMethod: "GET",
2288		HTTPPath:   "/{Bucket}?accelerate",
2289	}
2290
2291	if input == nil {
2292		input = &GetBucketAccelerateConfigurationInput{}
2293	}
2294
2295	output = &GetBucketAccelerateConfigurationOutput{}
2296	req = c.newRequest(op, input, output)
2297	return
2298}
2299
2300// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
2301//
2302// This implementation of the GET operation uses the accelerate subresource
2303// to return the Transfer Acceleration state of a bucket, which is either Enabled
2304// or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that
2305// enables you to perform faster data transfers to and from Amazon S3.
2306//
2307// To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration
2308// action. The bucket owner has this permission by default. The bucket owner
2309// can grant this permission to others. For more information about permissions,
2310// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2311// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
2312// in the Amazon Simple Storage Service Developer Guide.
2313//
2314// You set the Transfer Acceleration state of an existing bucket to Enabled
2315// or Suspended by using the PutBucketAccelerateConfiguration operation.
2316//
2317// A GET accelerate request does not return a state value for a bucket that
2318// has no transfer acceleration state. A bucket has no Transfer Acceleration
2319// state if a state has never been set on the bucket.
2320//
2321// For more information about transfer acceleration, see Transfer Acceleration
2322// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
2323// in the Amazon Simple Storage Service Developer Guide.
2324//
2325// Related Resources
2326//
2327//    * PutBucketAccelerateConfiguration
2328//
2329// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2330// with awserr.Error's Code and Message methods to get detailed information about
2331// the error.
2332//
2333// See the AWS API reference guide for Amazon Simple Storage Service's
2334// API operation GetBucketAccelerateConfiguration for usage and error information.
2335// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2336func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
2337	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2338	return out, req.Send()
2339}
2340
2341// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
2342// the ability to pass a context and additional request options.
2343//
2344// See GetBucketAccelerateConfiguration for details on how to use this API operation.
2345//
2346// The context must be non-nil and will be used for request cancellation. If
2347// the context is nil a panic will occur. In the future the SDK may create
2348// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2349// for more information on using Contexts.
2350func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
2351	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2352	req.SetContext(ctx)
2353	req.ApplyOptions(opts...)
2354	return out, req.Send()
2355}
2356
2357const opGetBucketAcl = "GetBucketAcl"
2358
2359// GetBucketAclRequest generates a "aws/request.Request" representing the
2360// client's request for the GetBucketAcl operation. The "output" return
2361// value will be populated with the request's response once the request completes
2362// successfully.
2363//
2364// Use "Send" method on the returned Request to send the API call to the service.
2365// the "output" return value is not valid until after Send returns without error.
2366//
2367// See GetBucketAcl for more information on using the GetBucketAcl
2368// API call, and error handling.
2369//
2370// This method is useful when you want to inject custom logic or configuration
2371// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2372//
2373//
2374//    // Example sending a request using the GetBucketAclRequest method.
2375//    req, resp := client.GetBucketAclRequest(params)
2376//
2377//    err := req.Send()
2378//    if err == nil { // resp is now filled
2379//        fmt.Println(resp)
2380//    }
2381//
2382// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2383func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
2384	op := &request.Operation{
2385		Name:       opGetBucketAcl,
2386		HTTPMethod: "GET",
2387		HTTPPath:   "/{Bucket}?acl",
2388	}
2389
2390	if input == nil {
2391		input = &GetBucketAclInput{}
2392	}
2393
2394	output = &GetBucketAclOutput{}
2395	req = c.newRequest(op, input, output)
2396	return
2397}
2398
2399// GetBucketAcl API operation for Amazon Simple Storage Service.
2400//
2401// This implementation of the GET operation uses the acl subresource to return
2402// the access control list (ACL) of a bucket. To use GET to return the ACL of
2403// the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission
2404// is granted to the anonymous user, you can return the ACL of the bucket without
2405// using an authorization header.
2406//
2407// Related Resources
2408//
2409//    *
2410//
2411// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2412// with awserr.Error's Code and Message methods to get detailed information about
2413// the error.
2414//
2415// See the AWS API reference guide for Amazon Simple Storage Service's
2416// API operation GetBucketAcl for usage and error information.
2417// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2418func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
2419	req, out := c.GetBucketAclRequest(input)
2420	return out, req.Send()
2421}
2422
2423// GetBucketAclWithContext is the same as GetBucketAcl with the addition of
2424// the ability to pass a context and additional request options.
2425//
2426// See GetBucketAcl for details on how to use this API operation.
2427//
2428// The context must be non-nil and will be used for request cancellation. If
2429// the context is nil a panic will occur. In the future the SDK may create
2430// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2431// for more information on using Contexts.
2432func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
2433	req, out := c.GetBucketAclRequest(input)
2434	req.SetContext(ctx)
2435	req.ApplyOptions(opts...)
2436	return out, req.Send()
2437}
2438
2439const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
2440
2441// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
2442// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
2443// value will be populated with the request's response once the request completes
2444// successfully.
2445//
2446// Use "Send" method on the returned Request to send the API call to the service.
2447// the "output" return value is not valid until after Send returns without error.
2448//
2449// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
2450// API call, and error handling.
2451//
2452// This method is useful when you want to inject custom logic or configuration
2453// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2454//
2455//
2456//    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
2457//    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
2458//
2459//    err := req.Send()
2460//    if err == nil { // resp is now filled
2461//        fmt.Println(resp)
2462//    }
2463//
2464// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2465func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
2466	op := &request.Operation{
2467		Name:       opGetBucketAnalyticsConfiguration,
2468		HTTPMethod: "GET",
2469		HTTPPath:   "/{Bucket}?analytics",
2470	}
2471
2472	if input == nil {
2473		input = &GetBucketAnalyticsConfigurationInput{}
2474	}
2475
2476	output = &GetBucketAnalyticsConfigurationOutput{}
2477	req = c.newRequest(op, input, output)
2478	return
2479}
2480
2481// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
2482//
2483// This implementation of the GET operation returns an analytics configuration
2484// (identified by the analytics configuration ID) from the bucket.
2485//
2486// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
2487// action. The bucket owner has this permission by default. The bucket owner
2488// can grant this permission to others. For more information about permissions,
2489// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2490// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
2491// in the Amazon Simple Storage Service Developer Guide.
2492//
2493// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
2494// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html)
2495// in the Amazon Simple Storage Service Developer Guide.
2496//
2497// Related Resources
2498//
2499//    *
2500//
2501//    *
2502//
2503//    *
2504//
2505// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2506// with awserr.Error's Code and Message methods to get detailed information about
2507// the error.
2508//
2509// See the AWS API reference guide for Amazon Simple Storage Service's
2510// API operation GetBucketAnalyticsConfiguration for usage and error information.
2511// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2512func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
2513	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2514	return out, req.Send()
2515}
2516
2517// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
2518// the ability to pass a context and additional request options.
2519//
2520// See GetBucketAnalyticsConfiguration for details on how to use this API operation.
2521//
2522// The context must be non-nil and will be used for request cancellation. If
2523// the context is nil a panic will occur. In the future the SDK may create
2524// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2525// for more information on using Contexts.
2526func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
2527	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2528	req.SetContext(ctx)
2529	req.ApplyOptions(opts...)
2530	return out, req.Send()
2531}
2532
2533const opGetBucketCors = "GetBucketCors"
2534
2535// GetBucketCorsRequest generates a "aws/request.Request" representing the
2536// client's request for the GetBucketCors operation. The "output" return
2537// value will be populated with the request's response once the request completes
2538// successfully.
2539//
2540// Use "Send" method on the returned Request to send the API call to the service.
2541// the "output" return value is not valid until after Send returns without error.
2542//
2543// See GetBucketCors for more information on using the GetBucketCors
2544// API call, and error handling.
2545//
2546// This method is useful when you want to inject custom logic or configuration
2547// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2548//
2549//
2550//    // Example sending a request using the GetBucketCorsRequest method.
2551//    req, resp := client.GetBucketCorsRequest(params)
2552//
2553//    err := req.Send()
2554//    if err == nil { // resp is now filled
2555//        fmt.Println(resp)
2556//    }
2557//
2558// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2559func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
2560	op := &request.Operation{
2561		Name:       opGetBucketCors,
2562		HTTPMethod: "GET",
2563		HTTPPath:   "/{Bucket}?cors",
2564	}
2565
2566	if input == nil {
2567		input = &GetBucketCorsInput{}
2568	}
2569
2570	output = &GetBucketCorsOutput{}
2571	req = c.newRequest(op, input, output)
2572	return
2573}
2574
2575// GetBucketCors API operation for Amazon Simple Storage Service.
2576//
2577// Returns the cors configuration information set for the bucket.
2578//
2579// To use this operation, you must have permission to perform the s3:GetBucketCORS
2580// action. By default, the bucket owner has this permission and can grant it
2581// to others.
2582//
2583// For more information about cors, see Enabling Cross-Origin Resource Sharing
2584// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html).
2585//
2586// The following operations are related to GetBucketCors:
2587//
2588//    * PutBucketCors
2589//
2590//    * DeleteBucketCors
2591//
2592// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2593// with awserr.Error's Code and Message methods to get detailed information about
2594// the error.
2595//
2596// See the AWS API reference guide for Amazon Simple Storage Service's
2597// API operation GetBucketCors for usage and error information.
2598// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2599func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
2600	req, out := c.GetBucketCorsRequest(input)
2601	return out, req.Send()
2602}
2603
2604// GetBucketCorsWithContext is the same as GetBucketCors with the addition of
2605// the ability to pass a context and additional request options.
2606//
2607// See GetBucketCors for details on how to use this API operation.
2608//
2609// The context must be non-nil and will be used for request cancellation. If
2610// the context is nil a panic will occur. In the future the SDK may create
2611// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2612// for more information on using Contexts.
2613func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
2614	req, out := c.GetBucketCorsRequest(input)
2615	req.SetContext(ctx)
2616	req.ApplyOptions(opts...)
2617	return out, req.Send()
2618}
2619
2620const opGetBucketEncryption = "GetBucketEncryption"
2621
2622// GetBucketEncryptionRequest generates a "aws/request.Request" representing the
2623// client's request for the GetBucketEncryption operation. The "output" return
2624// value will be populated with the request's response once the request completes
2625// successfully.
2626//
2627// Use "Send" method on the returned Request to send the API call to the service.
2628// the "output" return value is not valid until after Send returns without error.
2629//
2630// See GetBucketEncryption for more information on using the GetBucketEncryption
2631// API call, and error handling.
2632//
2633// This method is useful when you want to inject custom logic or configuration
2634// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2635//
2636//
2637//    // Example sending a request using the GetBucketEncryptionRequest method.
2638//    req, resp := client.GetBucketEncryptionRequest(params)
2639//
2640//    err := req.Send()
2641//    if err == nil { // resp is now filled
2642//        fmt.Println(resp)
2643//    }
2644//
2645// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2646func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
2647	op := &request.Operation{
2648		Name:       opGetBucketEncryption,
2649		HTTPMethod: "GET",
2650		HTTPPath:   "/{Bucket}?encryption",
2651	}
2652
2653	if input == nil {
2654		input = &GetBucketEncryptionInput{}
2655	}
2656
2657	output = &GetBucketEncryptionOutput{}
2658	req = c.newRequest(op, input, output)
2659	return
2660}
2661
2662// GetBucketEncryption API operation for Amazon Simple Storage Service.
2663//
2664// Returns the default encryption configuration for an Amazon S3 bucket. For
2665// information about the Amazon S3 default encryption feature, see Amazon S3
2666// Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html).
2667//
2668// To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration
2669// action. The bucket owner has this permission by default. The bucket owner
2670// can grant this permission to others. For more information about permissions,
2671// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2672// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2673//
2674// The following operations are related to GetBucketEncryption:
2675//
2676//    * PutBucketEncryption
2677//
2678//    * DeleteBucketEncryption
2679//
2680// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2681// with awserr.Error's Code and Message methods to get detailed information about
2682// the error.
2683//
2684// See the AWS API reference guide for Amazon Simple Storage Service's
2685// API operation GetBucketEncryption for usage and error information.
2686// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2687func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
2688	req, out := c.GetBucketEncryptionRequest(input)
2689	return out, req.Send()
2690}
2691
2692// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
2693// the ability to pass a context and additional request options.
2694//
2695// See GetBucketEncryption for details on how to use this API operation.
2696//
2697// The context must be non-nil and will be used for request cancellation. If
2698// the context is nil a panic will occur. In the future the SDK may create
2699// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2700// for more information on using Contexts.
2701func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
2702	req, out := c.GetBucketEncryptionRequest(input)
2703	req.SetContext(ctx)
2704	req.ApplyOptions(opts...)
2705	return out, req.Send()
2706}
2707
2708const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
2709
2710// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
2711// client's request for the GetBucketInventoryConfiguration operation. The "output" return
2712// value will be populated with the request's response once the request completes
2713// successfully.
2714//
2715// Use "Send" method on the returned Request to send the API call to the service.
2716// the "output" return value is not valid until after Send returns without error.
2717//
2718// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
2719// API call, and error handling.
2720//
2721// This method is useful when you want to inject custom logic or configuration
2722// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2723//
2724//
2725//    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
2726//    req, resp := client.GetBucketInventoryConfigurationRequest(params)
2727//
2728//    err := req.Send()
2729//    if err == nil { // resp is now filled
2730//        fmt.Println(resp)
2731//    }
2732//
2733// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
2734func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
2735	op := &request.Operation{
2736		Name:       opGetBucketInventoryConfiguration,
2737		HTTPMethod: "GET",
2738		HTTPPath:   "/{Bucket}?inventory",
2739	}
2740
2741	if input == nil {
2742		input = &GetBucketInventoryConfigurationInput{}
2743	}
2744
2745	output = &GetBucketInventoryConfigurationOutput{}
2746	req = c.newRequest(op, input, output)
2747	return
2748}
2749
2750// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
2751//
2752// Returns an inventory configuration (identified by the inventory configuration
2753// ID) from the bucket.
2754//
2755// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
2756// action. The bucket owner has this permission by default and can grant this
2757// permission to others. For more information about permissions, see Permissions
2758// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2759// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2760//
2761// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
2762// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
2763//
2764// The following operations are related to GetBucketInventoryConfiguration:
2765//
2766//    * DeleteBucketInventoryConfiguration
2767//
2768//    * ListBucketInventoryConfigurations
2769//
2770//    * PutBucketInventoryConfiguration
2771//
2772// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2773// with awserr.Error's Code and Message methods to get detailed information about
2774// the error.
2775//
2776// See the AWS API reference guide for Amazon Simple Storage Service's
2777// API operation GetBucketInventoryConfiguration for usage and error information.
2778// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
2779func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
2780	req, out := c.GetBucketInventoryConfigurationRequest(input)
2781	return out, req.Send()
2782}
2783
2784// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
2785// the ability to pass a context and additional request options.
2786//
2787// See GetBucketInventoryConfiguration for details on how to use this API operation.
2788//
2789// The context must be non-nil and will be used for request cancellation. If
2790// the context is nil a panic will occur. In the future the SDK may create
2791// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2792// for more information on using Contexts.
2793func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
2794	req, out := c.GetBucketInventoryConfigurationRequest(input)
2795	req.SetContext(ctx)
2796	req.ApplyOptions(opts...)
2797	return out, req.Send()
2798}
2799
2800const opGetBucketLifecycle = "GetBucketLifecycle"
2801
2802// GetBucketLifecycleRequest generates a "aws/request.Request" representing the
2803// client's request for the GetBucketLifecycle operation. The "output" return
2804// value will be populated with the request's response once the request completes
2805// successfully.
2806//
2807// Use "Send" method on the returned Request to send the API call to the service.
2808// the "output" return value is not valid until after Send returns without error.
2809//
2810// See GetBucketLifecycle for more information on using the GetBucketLifecycle
2811// API call, and error handling.
2812//
2813// This method is useful when you want to inject custom logic or configuration
2814// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2815//
2816//
2817//    // Example sending a request using the GetBucketLifecycleRequest method.
2818//    req, resp := client.GetBucketLifecycleRequest(params)
2819//
2820//    err := req.Send()
2821//    if err == nil { // resp is now filled
2822//        fmt.Println(resp)
2823//    }
2824//
2825// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
2826//
2827// Deprecated: GetBucketLifecycle has been deprecated
2828func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
2829	if c.Client.Config.Logger != nil {
2830		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
2831	}
2832	op := &request.Operation{
2833		Name:       opGetBucketLifecycle,
2834		HTTPMethod: "GET",
2835		HTTPPath:   "/{Bucket}?lifecycle",
2836	}
2837
2838	if input == nil {
2839		input = &GetBucketLifecycleInput{}
2840	}
2841
2842	output = &GetBucketLifecycleOutput{}
2843	req = c.newRequest(op, input, output)
2844	return
2845}
2846
2847// GetBucketLifecycle API operation for Amazon Simple Storage Service.
2848//
2849//
2850// For an updated version of this API, see GetBucketLifecycleConfiguration.
2851// If you configured a bucket lifecycle using the filter element, you should
2852// see the updated version of this topic. This topic is provided for backward
2853// compatibility.
2854//
2855// Returns the lifecycle configuration information set on the bucket. For information
2856// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
2857//
2858// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
2859// action. The bucket owner has this permission by default. The bucket owner
2860// can grant this permission to others. For more information about permissions,
2861// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2862// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2863//
2864// GetBucketLifecycle has the following special error:
2865//
2866//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
2867//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
2868//    Code Prefix: Client
2869//
2870// The following operations are related to GetBucketLifecycle:
2871//
2872//    * GetBucketLifecycleConfiguration
2873//
2874//    * PutBucketLifecycle
2875//
2876//    * DeleteBucketLifecycle
2877//
2878// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2879// with awserr.Error's Code and Message methods to get detailed information about
2880// the error.
2881//
2882// See the AWS API reference guide for Amazon Simple Storage Service's
2883// API operation GetBucketLifecycle for usage and error information.
2884// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
2885//
2886// Deprecated: GetBucketLifecycle has been deprecated
2887func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
2888	req, out := c.GetBucketLifecycleRequest(input)
2889	return out, req.Send()
2890}
2891
2892// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
2893// the ability to pass a context and additional request options.
2894//
2895// See GetBucketLifecycle for details on how to use this API operation.
2896//
2897// The context must be non-nil and will be used for request cancellation. If
2898// the context is nil a panic will occur. In the future the SDK may create
2899// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2900// for more information on using Contexts.
2901//
2902// Deprecated: GetBucketLifecycleWithContext has been deprecated
2903func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
2904	req, out := c.GetBucketLifecycleRequest(input)
2905	req.SetContext(ctx)
2906	req.ApplyOptions(opts...)
2907	return out, req.Send()
2908}
2909
2910const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
2911
2912// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
2913// client's request for the GetBucketLifecycleConfiguration operation. The "output" return
2914// value will be populated with the request's response once the request completes
2915// successfully.
2916//
2917// Use "Send" method on the returned Request to send the API call to the service.
2918// the "output" return value is not valid until after Send returns without error.
2919//
2920// See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
2921// API call, and error handling.
2922//
2923// This method is useful when you want to inject custom logic or configuration
2924// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2925//
2926//
2927//    // Example sending a request using the GetBucketLifecycleConfigurationRequest method.
2928//    req, resp := client.GetBucketLifecycleConfigurationRequest(params)
2929//
2930//    err := req.Send()
2931//    if err == nil { // resp is now filled
2932//        fmt.Println(resp)
2933//    }
2934//
2935// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
2936func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
2937	op := &request.Operation{
2938		Name:       opGetBucketLifecycleConfiguration,
2939		HTTPMethod: "GET",
2940		HTTPPath:   "/{Bucket}?lifecycle",
2941	}
2942
2943	if input == nil {
2944		input = &GetBucketLifecycleConfigurationInput{}
2945	}
2946
2947	output = &GetBucketLifecycleConfigurationOutput{}
2948	req = c.newRequest(op, input, output)
2949	return
2950}
2951
2952// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
2953//
2954//
2955// Bucket lifecycle configuration now supports specifying a lifecycle rule using
2956// an object key name prefix, one or more object tags, or a combination of both.
2957// Accordingly, this section describes the latest API. The response describes
2958// the new filter element that you can use to specify a filter to select a subset
2959// of objects to which the rule applies. If you are still using previous version
2960// of the lifecycle configuration, it works. For the earlier API description,
2961// see GetBucketLifecycle.
2962//
2963// Returns the lifecycle configuration information set on the bucket. For information
2964// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
2965//
2966// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
2967// action. The bucket owner has this permission, by default. The bucket owner
2968// can grant this permission to others. For more information about permissions,
2969// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2970// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2971//
2972// GetBucketLifecycleConfiguration has the following special error:
2973//
2974//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
2975//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
2976//    Code Prefix: Client
2977//
2978// The following operations are related to GetBucketLifecycleConfiguration:
2979//
2980//    * GetBucketLifecycle
2981//
2982//    * PutBucketLifecycle
2983//
2984//    * DeleteBucketLifecycle
2985//
2986// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2987// with awserr.Error's Code and Message methods to get detailed information about
2988// the error.
2989//
2990// See the AWS API reference guide for Amazon Simple Storage Service's
2991// API operation GetBucketLifecycleConfiguration for usage and error information.
2992// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
2993func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
2994	req, out := c.GetBucketLifecycleConfigurationRequest(input)
2995	return out, req.Send()
2996}
2997
2998// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
2999// the ability to pass a context and additional request options.
3000//
3001// See GetBucketLifecycleConfiguration for details on how to use this API operation.
3002//
3003// The context must be non-nil and will be used for request cancellation. If
3004// the context is nil a panic will occur. In the future the SDK may create
3005// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3006// for more information on using Contexts.
3007func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
3008	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3009	req.SetContext(ctx)
3010	req.ApplyOptions(opts...)
3011	return out, req.Send()
3012}
3013
3014const opGetBucketLocation = "GetBucketLocation"
3015
3016// GetBucketLocationRequest generates a "aws/request.Request" representing the
3017// client's request for the GetBucketLocation operation. The "output" return
3018// value will be populated with the request's response once the request completes
3019// successfully.
3020//
3021// Use "Send" method on the returned Request to send the API call to the service.
3022// the "output" return value is not valid until after Send returns without error.
3023//
3024// See GetBucketLocation for more information on using the GetBucketLocation
3025// API call, and error handling.
3026//
3027// This method is useful when you want to inject custom logic or configuration
3028// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3029//
3030//
3031//    // Example sending a request using the GetBucketLocationRequest method.
3032//    req, resp := client.GetBucketLocationRequest(params)
3033//
3034//    err := req.Send()
3035//    if err == nil { // resp is now filled
3036//        fmt.Println(resp)
3037//    }
3038//
3039// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3040func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
3041	op := &request.Operation{
3042		Name:       opGetBucketLocation,
3043		HTTPMethod: "GET",
3044		HTTPPath:   "/{Bucket}?location",
3045	}
3046
3047	if input == nil {
3048		input = &GetBucketLocationInput{}
3049	}
3050
3051	output = &GetBucketLocationOutput{}
3052	req = c.newRequest(op, input, output)
3053	return
3054}
3055
3056// GetBucketLocation API operation for Amazon Simple Storage Service.
3057//
3058// Returns the Region the bucket resides in. You set the bucket's Region using
3059// the LocationConstraint request parameter in a CreateBucket request. For more
3060// information, see CreateBucket.
3061//
3062// To use this implementation of the operation, you must be the bucket owner.
3063//
3064// The following operations are related to GetBucketLocation:
3065//
3066//    * GetObject
3067//
3068//    * CreateBucket
3069//
3070// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3071// with awserr.Error's Code and Message methods to get detailed information about
3072// the error.
3073//
3074// See the AWS API reference guide for Amazon Simple Storage Service's
3075// API operation GetBucketLocation for usage and error information.
3076// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3077func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
3078	req, out := c.GetBucketLocationRequest(input)
3079	return out, req.Send()
3080}
3081
3082// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
3083// the ability to pass a context and additional request options.
3084//
3085// See GetBucketLocation for details on how to use this API operation.
3086//
3087// The context must be non-nil and will be used for request cancellation. If
3088// the context is nil a panic will occur. In the future the SDK may create
3089// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3090// for more information on using Contexts.
3091func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
3092	req, out := c.GetBucketLocationRequest(input)
3093	req.SetContext(ctx)
3094	req.ApplyOptions(opts...)
3095	return out, req.Send()
3096}
3097
3098const opGetBucketLogging = "GetBucketLogging"
3099
3100// GetBucketLoggingRequest generates a "aws/request.Request" representing the
3101// client's request for the GetBucketLogging operation. The "output" return
3102// value will be populated with the request's response once the request completes
3103// successfully.
3104//
3105// Use "Send" method on the returned Request to send the API call to the service.
3106// the "output" return value is not valid until after Send returns without error.
3107//
3108// See GetBucketLogging for more information on using the GetBucketLogging
3109// API call, and error handling.
3110//
3111// This method is useful when you want to inject custom logic or configuration
3112// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3113//
3114//
3115//    // Example sending a request using the GetBucketLoggingRequest method.
3116//    req, resp := client.GetBucketLoggingRequest(params)
3117//
3118//    err := req.Send()
3119//    if err == nil { // resp is now filled
3120//        fmt.Println(resp)
3121//    }
3122//
3123// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3124func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
3125	op := &request.Operation{
3126		Name:       opGetBucketLogging,
3127		HTTPMethod: "GET",
3128		HTTPPath:   "/{Bucket}?logging",
3129	}
3130
3131	if input == nil {
3132		input = &GetBucketLoggingInput{}
3133	}
3134
3135	output = &GetBucketLoggingOutput{}
3136	req = c.newRequest(op, input, output)
3137	return
3138}
3139
3140// GetBucketLogging API operation for Amazon Simple Storage Service.
3141//
3142// Returns the logging status of a bucket and the permissions users have to
3143// view and modify that status. To use GET, you must be the bucket owner.
3144//
3145// The following operations are related to GetBucketLogging:
3146//
3147//    * CreateBucket
3148//
3149//    * PutBucketLogging
3150//
3151// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3152// with awserr.Error's Code and Message methods to get detailed information about
3153// the error.
3154//
3155// See the AWS API reference guide for Amazon Simple Storage Service's
3156// API operation GetBucketLogging for usage and error information.
3157// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3158func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
3159	req, out := c.GetBucketLoggingRequest(input)
3160	return out, req.Send()
3161}
3162
3163// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
3164// the ability to pass a context and additional request options.
3165//
3166// See GetBucketLogging for details on how to use this API operation.
3167//
3168// The context must be non-nil and will be used for request cancellation. If
3169// the context is nil a panic will occur. In the future the SDK may create
3170// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3171// for more information on using Contexts.
3172func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
3173	req, out := c.GetBucketLoggingRequest(input)
3174	req.SetContext(ctx)
3175	req.ApplyOptions(opts...)
3176	return out, req.Send()
3177}
3178
3179const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
3180
3181// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
3182// client's request for the GetBucketMetricsConfiguration operation. The "output" return
3183// value will be populated with the request's response once the request completes
3184// successfully.
3185//
3186// Use "Send" method on the returned Request to send the API call to the service.
3187// the "output" return value is not valid until after Send returns without error.
3188//
3189// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
3190// API call, and error handling.
3191//
3192// This method is useful when you want to inject custom logic or configuration
3193// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3194//
3195//
3196//    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
3197//    req, resp := client.GetBucketMetricsConfigurationRequest(params)
3198//
3199//    err := req.Send()
3200//    if err == nil { // resp is now filled
3201//        fmt.Println(resp)
3202//    }
3203//
3204// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3205func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
3206	op := &request.Operation{
3207		Name:       opGetBucketMetricsConfiguration,
3208		HTTPMethod: "GET",
3209		HTTPPath:   "/{Bucket}?metrics",
3210	}
3211
3212	if input == nil {
3213		input = &GetBucketMetricsConfigurationInput{}
3214	}
3215
3216	output = &GetBucketMetricsConfigurationOutput{}
3217	req = c.newRequest(op, input, output)
3218	return
3219}
3220
3221// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
3222//
3223// Gets a metrics configuration (specified by the metrics configuration ID)
3224// from the bucket. Note that this doesn't include the daily storage metrics.
3225//
3226// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
3227// action. The bucket owner has this permission by default. The bucket owner
3228// can grant this permission to others. For more information about permissions,
3229// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
3230// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
3231//
3232// For information about CloudWatch request metrics for Amazon S3, see Monitoring
3233// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
3234//
3235// The following operations are related to GetBucketMetricsConfiguration:
3236//
3237//    * PutBucketMetricsConfiguration
3238//
3239//    * DeleteBucketMetricsConfiguration
3240//
3241//    * ListBucketMetricsConfigurations
3242//
3243//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
3244//
3245// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3246// with awserr.Error's Code and Message methods to get detailed information about
3247// the error.
3248//
3249// See the AWS API reference guide for Amazon Simple Storage Service's
3250// API operation GetBucketMetricsConfiguration for usage and error information.
3251// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3252func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
3253	req, out := c.GetBucketMetricsConfigurationRequest(input)
3254	return out, req.Send()
3255}
3256
3257// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
3258// the ability to pass a context and additional request options.
3259//
3260// See GetBucketMetricsConfiguration for details on how to use this API operation.
3261//
3262// The context must be non-nil and will be used for request cancellation. If
3263// the context is nil a panic will occur. In the future the SDK may create
3264// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3265// for more information on using Contexts.
3266func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
3267	req, out := c.GetBucketMetricsConfigurationRequest(input)
3268	req.SetContext(ctx)
3269	req.ApplyOptions(opts...)
3270	return out, req.Send()
3271}
3272
3273const opGetBucketNotification = "GetBucketNotification"
3274
3275// GetBucketNotificationRequest generates a "aws/request.Request" representing the
3276// client's request for the GetBucketNotification operation. The "output" return
3277// value will be populated with the request's response once the request completes
3278// successfully.
3279//
3280// Use "Send" method on the returned Request to send the API call to the service.
3281// the "output" return value is not valid until after Send returns without error.
3282//
3283// See GetBucketNotification for more information on using the GetBucketNotification
3284// API call, and error handling.
3285//
3286// This method is useful when you want to inject custom logic or configuration
3287// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3288//
3289//
3290//    // Example sending a request using the GetBucketNotificationRequest method.
3291//    req, resp := client.GetBucketNotificationRequest(params)
3292//
3293//    err := req.Send()
3294//    if err == nil { // resp is now filled
3295//        fmt.Println(resp)
3296//    }
3297//
3298// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3299//
3300// Deprecated: GetBucketNotification has been deprecated
3301func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
3302	if c.Client.Config.Logger != nil {
3303		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
3304	}
3305	op := &request.Operation{
3306		Name:       opGetBucketNotification,
3307		HTTPMethod: "GET",
3308		HTTPPath:   "/{Bucket}?notification",
3309	}
3310
3311	if input == nil {
3312		input = &GetBucketNotificationConfigurationRequest{}
3313	}
3314
3315	output = &NotificationConfigurationDeprecated{}
3316	req = c.newRequest(op, input, output)
3317	return
3318}
3319
3320// GetBucketNotification API operation for Amazon Simple Storage Service.
3321//
3322// No longer used, see GetBucketNotificationConfiguration.
3323//
3324// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3325// with awserr.Error's Code and Message methods to get detailed information about
3326// the error.
3327//
3328// See the AWS API reference guide for Amazon Simple Storage Service's
3329// API operation GetBucketNotification for usage and error information.
3330// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3331//
3332// Deprecated: GetBucketNotification has been deprecated
3333func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
3334	req, out := c.GetBucketNotificationRequest(input)
3335	return out, req.Send()
3336}
3337
3338// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
3339// the ability to pass a context and additional request options.
3340//
3341// See GetBucketNotification for details on how to use this API operation.
3342//
3343// The context must be non-nil and will be used for request cancellation. If
3344// the context is nil a panic will occur. In the future the SDK may create
3345// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3346// for more information on using Contexts.
3347//
3348// Deprecated: GetBucketNotificationWithContext has been deprecated
3349func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
3350	req, out := c.GetBucketNotificationRequest(input)
3351	req.SetContext(ctx)
3352	req.ApplyOptions(opts...)
3353	return out, req.Send()
3354}
3355
3356const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
3357
3358// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
3359// client's request for the GetBucketNotificationConfiguration operation. The "output" return
3360// value will be populated with the request's response once the request completes
3361// successfully.
3362//
3363// Use "Send" method on the returned Request to send the API call to the service.
3364// the "output" return value is not valid until after Send returns without error.
3365//
3366// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
3367// API call, and error handling.
3368//
3369// This method is useful when you want to inject custom logic or configuration
3370// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3371//
3372//
3373//    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
3374//    req, resp := client.GetBucketNotificationConfigurationRequest(params)
3375//
3376//    err := req.Send()
3377//    if err == nil { // resp is now filled
3378//        fmt.Println(resp)
3379//    }
3380//
3381// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3382func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
3383	op := &request.Operation{
3384		Name:       opGetBucketNotificationConfiguration,
3385		HTTPMethod: "GET",
3386		HTTPPath:   "/{Bucket}?notification",
3387	}
3388
3389	if input == nil {
3390		input = &GetBucketNotificationConfigurationRequest{}
3391	}
3392
3393	output = &NotificationConfiguration{}
3394	req = c.newRequest(op, input, output)
3395	return
3396}
3397
3398// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
3399//
3400// Returns the notification configuration of a bucket.
3401//
3402// If notifications are not enabled on the bucket, the operation returns an
3403// empty NotificationConfiguration element.
3404//
3405// By default, you must be the bucket owner to read the notification configuration
3406// of a bucket. However, the bucket owner can use a bucket policy to grant permission
3407// to other users to read this configuration with the s3:GetBucketNotification
3408// permission.
3409//
3410// For more information about setting and reading the notification configuration
3411// on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
3412// For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3413//
3414// The following operation is related to GetBucketNotification:
3415//
3416//    * PutBucketNotification
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 GetBucketNotificationConfiguration for usage and error information.
3424// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3425func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
3426	req, out := c.GetBucketNotificationConfigurationRequest(input)
3427	return out, req.Send()
3428}
3429
3430// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
3431// the ability to pass a context and additional request options.
3432//
3433// See GetBucketNotificationConfiguration 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) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
3440	req, out := c.GetBucketNotificationConfigurationRequest(input)
3441	req.SetContext(ctx)
3442	req.ApplyOptions(opts...)
3443	return out, req.Send()
3444}
3445
3446const opGetBucketPolicy = "GetBucketPolicy"
3447
3448// GetBucketPolicyRequest generates a "aws/request.Request" representing the
3449// client's request for the GetBucketPolicy operation. The "output" return
3450// value will be populated with the request's response once the request completes
3451// successfully.
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 GetBucketPolicy for more information on using the GetBucketPolicy
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 GetBucketPolicyRequest method.
3464//    req, resp := client.GetBucketPolicyRequest(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/GetBucketPolicy
3472func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
3473	op := &request.Operation{
3474		Name:       opGetBucketPolicy,
3475		HTTPMethod: "GET",
3476		HTTPPath:   "/{Bucket}?policy",
3477	}
3478
3479	if input == nil {
3480		input = &GetBucketPolicyInput{}
3481	}
3482
3483	output = &GetBucketPolicyOutput{}
3484	req = c.newRequest(op, input, output)
3485	return
3486}
3487
3488// GetBucketPolicy API operation for Amazon Simple Storage Service.
3489//
3490// Returns the policy of a specified bucket. If you are using an identity other
3491// than the root user of the AWS account that owns the bucket, the calling identity
3492// must have the GetBucketPolicy permissions on the specified bucket and belong
3493// to the bucket owner's account in order to use this operation.
3494//
3495// If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access
3496// Denied error. If you have the correct permissions, but you're not using an
3497// identity that belongs to the bucket owner's account, Amazon S3 returns a
3498// 405 Method Not Allowed error.
3499//
3500// As a security precaution, the root user of the AWS account that owns a bucket
3501// can always use this operation, even if the policy explicitly denies the root
3502// user the ability to perform this action.
3503//
3504// For more information about bucket policies, see Using Bucket Policies and
3505// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3506//
3507// The following operation is related to GetBucketPolicy:
3508//
3509//    * GetObject
3510//
3511// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3512// with awserr.Error's Code and Message methods to get detailed information about
3513// the error.
3514//
3515// See the AWS API reference guide for Amazon Simple Storage Service's
3516// API operation GetBucketPolicy for usage and error information.
3517// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3518func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
3519	req, out := c.GetBucketPolicyRequest(input)
3520	return out, req.Send()
3521}
3522
3523// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
3524// the ability to pass a context and additional request options.
3525//
3526// See GetBucketPolicy for details on how to use this API operation.
3527//
3528// The context must be non-nil and will be used for request cancellation. If
3529// the context is nil a panic will occur. In the future the SDK may create
3530// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3531// for more information on using Contexts.
3532func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
3533	req, out := c.GetBucketPolicyRequest(input)
3534	req.SetContext(ctx)
3535	req.ApplyOptions(opts...)
3536	return out, req.Send()
3537}
3538
3539const opGetBucketPolicyStatus = "GetBucketPolicyStatus"
3540
3541// GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the
3542// client's request for the GetBucketPolicyStatus operation. The "output" return
3543// value will be populated with the request's response once the request completes
3544// successfully.
3545//
3546// Use "Send" method on the returned Request to send the API call to the service.
3547// the "output" return value is not valid until after Send returns without error.
3548//
3549// See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus
3550// API call, and error handling.
3551//
3552// This method is useful when you want to inject custom logic or configuration
3553// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3554//
3555//
3556//    // Example sending a request using the GetBucketPolicyStatusRequest method.
3557//    req, resp := client.GetBucketPolicyStatusRequest(params)
3558//
3559//    err := req.Send()
3560//    if err == nil { // resp is now filled
3561//        fmt.Println(resp)
3562//    }
3563//
3564// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
3565func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) {
3566	op := &request.Operation{
3567		Name:       opGetBucketPolicyStatus,
3568		HTTPMethod: "GET",
3569		HTTPPath:   "/{Bucket}?policyStatus",
3570	}
3571
3572	if input == nil {
3573		input = &GetBucketPolicyStatusInput{}
3574	}
3575
3576	output = &GetBucketPolicyStatusOutput{}
3577	req = c.newRequest(op, input, output)
3578	return
3579}
3580
3581// GetBucketPolicyStatus API operation for Amazon Simple Storage Service.
3582//
3583// Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3584// bucket is public. In order to use this operation, you must have the s3:GetBucketPolicyStatus
3585// permission. For more information about Amazon S3 permissions, see Specifying
3586// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
3587//
3588// For more information about when Amazon S3 considers a bucket public, see
3589// The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status).
3590//
3591// The following operations are related to GetBucketPolicyStatus:
3592//
3593//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
3594//
3595//    * GetPublicAccessBlock
3596//
3597//    * PutPublicAccessBlock
3598//
3599//    * DeletePublicAccessBlock
3600//
3601// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3602// with awserr.Error's Code and Message methods to get detailed information about
3603// the error.
3604//
3605// See the AWS API reference guide for Amazon Simple Storage Service's
3606// API operation GetBucketPolicyStatus for usage and error information.
3607// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
3608func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) {
3609	req, out := c.GetBucketPolicyStatusRequest(input)
3610	return out, req.Send()
3611}
3612
3613// GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of
3614// the ability to pass a context and additional request options.
3615//
3616// See GetBucketPolicyStatus for details on how to use this API operation.
3617//
3618// The context must be non-nil and will be used for request cancellation. If
3619// the context is nil a panic will occur. In the future the SDK may create
3620// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3621// for more information on using Contexts.
3622func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) {
3623	req, out := c.GetBucketPolicyStatusRequest(input)
3624	req.SetContext(ctx)
3625	req.ApplyOptions(opts...)
3626	return out, req.Send()
3627}
3628
3629const opGetBucketReplication = "GetBucketReplication"
3630
3631// GetBucketReplicationRequest generates a "aws/request.Request" representing the
3632// client's request for the GetBucketReplication operation. The "output" return
3633// value will be populated with the request's response once the request completes
3634// successfully.
3635//
3636// Use "Send" method on the returned Request to send the API call to the service.
3637// the "output" return value is not valid until after Send returns without error.
3638//
3639// See GetBucketReplication for more information on using the GetBucketReplication
3640// API call, and error handling.
3641//
3642// This method is useful when you want to inject custom logic or configuration
3643// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3644//
3645//
3646//    // Example sending a request using the GetBucketReplicationRequest method.
3647//    req, resp := client.GetBucketReplicationRequest(params)
3648//
3649//    err := req.Send()
3650//    if err == nil { // resp is now filled
3651//        fmt.Println(resp)
3652//    }
3653//
3654// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
3655func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
3656	op := &request.Operation{
3657		Name:       opGetBucketReplication,
3658		HTTPMethod: "GET",
3659		HTTPPath:   "/{Bucket}?replication",
3660	}
3661
3662	if input == nil {
3663		input = &GetBucketReplicationInput{}
3664	}
3665
3666	output = &GetBucketReplicationOutput{}
3667	req = c.newRequest(op, input, output)
3668	return
3669}
3670
3671// GetBucketReplication API operation for Amazon Simple Storage Service.
3672//
3673// Returns the replication configuration of a bucket.
3674//
3675// It can take a while to propagate the put or delete a replication configuration
3676// to all Amazon S3 systems. Therefore, a get request soon after put or delete
3677// can return a wrong result.
3678//
3679// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
3680// in the Amazon Simple Storage Service Developer Guide.
3681//
3682// This operation requires permissions for the s3:GetReplicationConfiguration
3683// action. For more information about permissions, see Using Bucket Policies
3684// and User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3685//
3686// If you include the Filter element in a replication configuration, you must
3687// also include the DeleteMarkerReplication and Priority elements. The response
3688// also returns those elements.
3689//
3690// For information about GetBucketReplication errors, see ReplicationErrorCodeList
3691//
3692// The following operations are related to GetBucketReplication:
3693//
3694//    * PutBucketReplication
3695//
3696//    * DeleteBucketReplication
3697//
3698// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3699// with awserr.Error's Code and Message methods to get detailed information about
3700// the error.
3701//
3702// See the AWS API reference guide for Amazon Simple Storage Service's
3703// API operation GetBucketReplication for usage and error information.
3704// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
3705func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
3706	req, out := c.GetBucketReplicationRequest(input)
3707	return out, req.Send()
3708}
3709
3710// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
3711// the ability to pass a context and additional request options.
3712//
3713// See GetBucketReplication for details on how to use this API operation.
3714//
3715// The context must be non-nil and will be used for request cancellation. If
3716// the context is nil a panic will occur. In the future the SDK may create
3717// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3718// for more information on using Contexts.
3719func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
3720	req, out := c.GetBucketReplicationRequest(input)
3721	req.SetContext(ctx)
3722	req.ApplyOptions(opts...)
3723	return out, req.Send()
3724}
3725
3726const opGetBucketRequestPayment = "GetBucketRequestPayment"
3727
3728// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
3729// client's request for the GetBucketRequestPayment operation. The "output" return
3730// value will be populated with the request's response once the request completes
3731// successfully.
3732//
3733// Use "Send" method on the returned Request to send the API call to the service.
3734// the "output" return value is not valid until after Send returns without error.
3735//
3736// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
3737// API call, and error handling.
3738//
3739// This method is useful when you want to inject custom logic or configuration
3740// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3741//
3742//
3743//    // Example sending a request using the GetBucketRequestPaymentRequest method.
3744//    req, resp := client.GetBucketRequestPaymentRequest(params)
3745//
3746//    err := req.Send()
3747//    if err == nil { // resp is now filled
3748//        fmt.Println(resp)
3749//    }
3750//
3751// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
3752func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
3753	op := &request.Operation{
3754		Name:       opGetBucketRequestPayment,
3755		HTTPMethod: "GET",
3756		HTTPPath:   "/{Bucket}?requestPayment",
3757	}
3758
3759	if input == nil {
3760		input = &GetBucketRequestPaymentInput{}
3761	}
3762
3763	output = &GetBucketRequestPaymentOutput{}
3764	req = c.newRequest(op, input, output)
3765	return
3766}
3767
3768// GetBucketRequestPayment API operation for Amazon Simple Storage Service.
3769//
3770// Returns the request payment configuration of a bucket. To use this version
3771// of the operation, you must be the bucket owner. For more information, see
3772// Requester Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
3773//
3774// The following operations are related to GetBucketRequestPayment:
3775//
3776//    * ListObjects
3777//
3778// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3779// with awserr.Error's Code and Message methods to get detailed information about
3780// the error.
3781//
3782// See the AWS API reference guide for Amazon Simple Storage Service's
3783// API operation GetBucketRequestPayment for usage and error information.
3784// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
3785func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
3786	req, out := c.GetBucketRequestPaymentRequest(input)
3787	return out, req.Send()
3788}
3789
3790// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
3791// the ability to pass a context and additional request options.
3792//
3793// See GetBucketRequestPayment for details on how to use this API operation.
3794//
3795// The context must be non-nil and will be used for request cancellation. If
3796// the context is nil a panic will occur. In the future the SDK may create
3797// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3798// for more information on using Contexts.
3799func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
3800	req, out := c.GetBucketRequestPaymentRequest(input)
3801	req.SetContext(ctx)
3802	req.ApplyOptions(opts...)
3803	return out, req.Send()
3804}
3805
3806const opGetBucketTagging = "GetBucketTagging"
3807
3808// GetBucketTaggingRequest generates a "aws/request.Request" representing the
3809// client's request for the GetBucketTagging operation. The "output" return
3810// value will be populated with the request's response once the request completes
3811// successfully.
3812//
3813// Use "Send" method on the returned Request to send the API call to the service.
3814// the "output" return value is not valid until after Send returns without error.
3815//
3816// See GetBucketTagging for more information on using the GetBucketTagging
3817// API call, and error handling.
3818//
3819// This method is useful when you want to inject custom logic or configuration
3820// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3821//
3822//
3823//    // Example sending a request using the GetBucketTaggingRequest method.
3824//    req, resp := client.GetBucketTaggingRequest(params)
3825//
3826//    err := req.Send()
3827//    if err == nil { // resp is now filled
3828//        fmt.Println(resp)
3829//    }
3830//
3831// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
3832func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
3833	op := &request.Operation{
3834		Name:       opGetBucketTagging,
3835		HTTPMethod: "GET",
3836		HTTPPath:   "/{Bucket}?tagging",
3837	}
3838
3839	if input == nil {
3840		input = &GetBucketTaggingInput{}
3841	}
3842
3843	output = &GetBucketTaggingOutput{}
3844	req = c.newRequest(op, input, output)
3845	return
3846}
3847
3848// GetBucketTagging API operation for Amazon Simple Storage Service.
3849//
3850// Returns the tag set associated with the bucket.
3851//
3852// To use this operation, you must have permission to perform the s3:GetBucketTagging
3853// action. By default, the bucket owner has this permission and can grant this
3854// permission to others.
3855//
3856// GetBucketTagging has the following special error:
3857//
3858//    * Error code: NoSuchTagSetError Description: There is no tag set associated
3859//    with the bucket.
3860//
3861// The following operations are related to GetBucketTagging:
3862//
3863//    * PutBucketTagging
3864//
3865//    * DeleteBucketTagging
3866//
3867// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3868// with awserr.Error's Code and Message methods to get detailed information about
3869// the error.
3870//
3871// See the AWS API reference guide for Amazon Simple Storage Service's
3872// API operation GetBucketTagging for usage and error information.
3873// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
3874func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
3875	req, out := c.GetBucketTaggingRequest(input)
3876	return out, req.Send()
3877}
3878
3879// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
3880// the ability to pass a context and additional request options.
3881//
3882// See GetBucketTagging for details on how to use this API operation.
3883//
3884// The context must be non-nil and will be used for request cancellation. If
3885// the context is nil a panic will occur. In the future the SDK may create
3886// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3887// for more information on using Contexts.
3888func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
3889	req, out := c.GetBucketTaggingRequest(input)
3890	req.SetContext(ctx)
3891	req.ApplyOptions(opts...)
3892	return out, req.Send()
3893}
3894
3895const opGetBucketVersioning = "GetBucketVersioning"
3896
3897// GetBucketVersioningRequest generates a "aws/request.Request" representing the
3898// client's request for the GetBucketVersioning operation. The "output" return
3899// value will be populated with the request's response once the request completes
3900// successfully.
3901//
3902// Use "Send" method on the returned Request to send the API call to the service.
3903// the "output" return value is not valid until after Send returns without error.
3904//
3905// See GetBucketVersioning for more information on using the GetBucketVersioning
3906// API call, and error handling.
3907//
3908// This method is useful when you want to inject custom logic or configuration
3909// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3910//
3911//
3912//    // Example sending a request using the GetBucketVersioningRequest method.
3913//    req, resp := client.GetBucketVersioningRequest(params)
3914//
3915//    err := req.Send()
3916//    if err == nil { // resp is now filled
3917//        fmt.Println(resp)
3918//    }
3919//
3920// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
3921func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
3922	op := &request.Operation{
3923		Name:       opGetBucketVersioning,
3924		HTTPMethod: "GET",
3925		HTTPPath:   "/{Bucket}?versioning",
3926	}
3927
3928	if input == nil {
3929		input = &GetBucketVersioningInput{}
3930	}
3931
3932	output = &GetBucketVersioningOutput{}
3933	req = c.newRequest(op, input, output)
3934	return
3935}
3936
3937// GetBucketVersioning API operation for Amazon Simple Storage Service.
3938//
3939// Returns the versioning state of a bucket.
3940//
3941// To retrieve the versioning state of a bucket, you must be the bucket owner.
3942//
3943// This implementation also returns the MFA Delete status of the versioning
3944// state. If the MFA Delete status is enabled, the bucket owner must use an
3945// authentication device to change the versioning state of the bucket.
3946//
3947// The following operations are related to GetBucketVersioning:
3948//
3949//    * GetObject
3950//
3951//    * PutObject
3952//
3953//    * DeleteObject
3954//
3955// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3956// with awserr.Error's Code and Message methods to get detailed information about
3957// the error.
3958//
3959// See the AWS API reference guide for Amazon Simple Storage Service's
3960// API operation GetBucketVersioning for usage and error information.
3961// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
3962func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
3963	req, out := c.GetBucketVersioningRequest(input)
3964	return out, req.Send()
3965}
3966
3967// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
3968// the ability to pass a context and additional request options.
3969//
3970// See GetBucketVersioning for details on how to use this API operation.
3971//
3972// The context must be non-nil and will be used for request cancellation. If
3973// the context is nil a panic will occur. In the future the SDK may create
3974// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3975// for more information on using Contexts.
3976func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
3977	req, out := c.GetBucketVersioningRequest(input)
3978	req.SetContext(ctx)
3979	req.ApplyOptions(opts...)
3980	return out, req.Send()
3981}
3982
3983const opGetBucketWebsite = "GetBucketWebsite"
3984
3985// GetBucketWebsiteRequest generates a "aws/request.Request" representing the
3986// client's request for the GetBucketWebsite operation. The "output" return
3987// value will be populated with the request's response once the request completes
3988// successfully.
3989//
3990// Use "Send" method on the returned Request to send the API call to the service.
3991// the "output" return value is not valid until after Send returns without error.
3992//
3993// See GetBucketWebsite for more information on using the GetBucketWebsite
3994// API call, and error handling.
3995//
3996// This method is useful when you want to inject custom logic or configuration
3997// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3998//
3999//
4000//    // Example sending a request using the GetBucketWebsiteRequest method.
4001//    req, resp := client.GetBucketWebsiteRequest(params)
4002//
4003//    err := req.Send()
4004//    if err == nil { // resp is now filled
4005//        fmt.Println(resp)
4006//    }
4007//
4008// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4009func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
4010	op := &request.Operation{
4011		Name:       opGetBucketWebsite,
4012		HTTPMethod: "GET",
4013		HTTPPath:   "/{Bucket}?website",
4014	}
4015
4016	if input == nil {
4017		input = &GetBucketWebsiteInput{}
4018	}
4019
4020	output = &GetBucketWebsiteOutput{}
4021	req = c.newRequest(op, input, output)
4022	return
4023}
4024
4025// GetBucketWebsite API operation for Amazon Simple Storage Service.
4026//
4027// Returns the website configuration for a bucket. To host website on Amazon
4028// S3, you can configure a bucket as website by adding a website configuration.
4029// For more information about hosting websites, see Hosting Websites on Amazon
4030// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
4031//
4032// This GET operation requires the S3:GetBucketWebsite permission. By default,
4033// only the bucket owner can read the bucket website configuration. However,
4034// bucket owners can allow other users to read the website configuration by
4035// writing a bucket policy granting them the S3:GetBucketWebsite permission.
4036//
4037// The following operations are related to DeleteBucketWebsite:
4038//
4039//    * DeleteBucketWebsite
4040//
4041//    * PutBucketWebsite
4042//
4043// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4044// with awserr.Error's Code and Message methods to get detailed information about
4045// the error.
4046//
4047// See the AWS API reference guide for Amazon Simple Storage Service's
4048// API operation GetBucketWebsite for usage and error information.
4049// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4050func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
4051	req, out := c.GetBucketWebsiteRequest(input)
4052	return out, req.Send()
4053}
4054
4055// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
4056// the ability to pass a context and additional request options.
4057//
4058// See GetBucketWebsite for details on how to use this API operation.
4059//
4060// The context must be non-nil and will be used for request cancellation. If
4061// the context is nil a panic will occur. In the future the SDK may create
4062// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4063// for more information on using Contexts.
4064func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
4065	req, out := c.GetBucketWebsiteRequest(input)
4066	req.SetContext(ctx)
4067	req.ApplyOptions(opts...)
4068	return out, req.Send()
4069}
4070
4071const opGetObject = "GetObject"
4072
4073// GetObjectRequest generates a "aws/request.Request" representing the
4074// client's request for the GetObject operation. The "output" return
4075// value will be populated with the request's response once the request completes
4076// successfully.
4077//
4078// Use "Send" method on the returned Request to send the API call to the service.
4079// the "output" return value is not valid until after Send returns without error.
4080//
4081// See GetObject for more information on using the GetObject
4082// API call, and error handling.
4083//
4084// This method is useful when you want to inject custom logic or configuration
4085// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4086//
4087//
4088//    // Example sending a request using the GetObjectRequest method.
4089//    req, resp := client.GetObjectRequest(params)
4090//
4091//    err := req.Send()
4092//    if err == nil { // resp is now filled
4093//        fmt.Println(resp)
4094//    }
4095//
4096// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4097func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
4098	op := &request.Operation{
4099		Name:       opGetObject,
4100		HTTPMethod: "GET",
4101		HTTPPath:   "/{Bucket}/{Key+}",
4102	}
4103
4104	if input == nil {
4105		input = &GetObjectInput{}
4106	}
4107
4108	output = &GetObjectOutput{}
4109	req = c.newRequest(op, input, output)
4110	return
4111}
4112
4113// GetObject API operation for Amazon Simple Storage Service.
4114//
4115// Retrieves objects from Amazon S3. To use GET, you must have READ access to
4116// the object. If you grant READ access to the anonymous user, you can return
4117// the object without using an authorization header.
4118//
4119// An Amazon S3 bucket has no directory hierarchy such as you would find in
4120// a typical computer file system. You can, however, create a logical hierarchy
4121// by using object key names that imply a folder structure. For example, instead
4122// of naming an object sample.jpg, you can name it photos/2006/February/sample.jpg.
4123//
4124// To get an object from such a logical hierarchy, specify the full key name
4125// for the object in the GET operation. For a virtual hosted-style request example,
4126// if you have the object photos/2006/February/sample.jpg, specify the resource
4127// as /photos/2006/February/sample.jpg. For a path-style request example, if
4128// you have the object photos/2006/February/sample.jpg in the bucket named examplebucket,
4129// specify the resource as /examplebucket/photos/2006/February/sample.jpg. For
4130// more information about request types, see HTTP Host Header Bucket Specification
4131// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket).
4132//
4133// To distribute large files to many people, you can save bandwidth costs by
4134// using BitTorrent. For more information, see Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
4135// For more information about returning the ACL of an object, see GetObjectAcl.
4136//
4137// If the object you are retrieving is stored in the GLACIER or DEEP_ARCHIVE
4138// storage classes, before you can retrieve the object you must first restore
4139// a copy using . Otherwise, this operation returns an InvalidObjectStateError
4140// error. For information about restoring archived objects, see Restoring Archived
4141// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
4142//
4143// Encryption request headers, like x-amz-server-side-encryption, should not
4144// be sent for GET requests if your object uses server-side encryption with
4145// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed
4146// encryption keys (SSE-S3). If your object does use these types of keys, you’ll
4147// get an HTTP 400 BadRequest error.
4148//
4149// If you encrypt an object by using server-side encryption with customer-provided
4150// encryption keys (SSE-C) when you store the object in Amazon S3, then when
4151// you GET the object, you must use the following headers:
4152//
4153//    * x-amz-server-side​-encryption​-customer-algorithm
4154//
4155//    * x-amz-server-side​-encryption​-customer-key
4156//
4157//    * x-amz-server-side​-encryption​-customer-key-MD5
4158//
4159// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
4160// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
4161//
4162// Assuming you have permission to read object tags (permission for the s3:GetObjectVersionTagging
4163// action), the response also returns the x-amz-tagging-count header that provides
4164// the count of number of tags associated with the object. You can use GetObjectTagging
4165// to retrieve the tag set associated with an object.
4166//
4167// Permissions
4168//
4169// You need the s3:GetObject permission for this operation. For more information,
4170// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
4171// If the object you request does not exist, the error Amazon S3 returns depends
4172// on whether you also have the s3:ListBucket permission.
4173//
4174//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 will
4175//    return an HTTP status code 404 ("no such key") error.
4176//
4177//    * If you don’t have the s3:ListBucket permission, Amazon S3 will return
4178//    an HTTP status code 403 ("access denied") error.
4179//
4180// Versioning
4181//
4182// By default, the GET operation returns the current version of an object. To
4183// return a different version, use the versionId subresource.
4184//
4185// If the current version of the object is a delete marker, Amazon S3 behaves
4186// as if the object was deleted and includes x-amz-delete-marker: true in the
4187// response.
4188//
4189// For more information about versioning, see PutBucketVersioning.
4190//
4191// Overriding Response Header Values
4192//
4193// There are times when you want to override certain response header values
4194// in a GET response. For example, you might override the Content-Disposition
4195// response header value in your GET request.
4196//
4197// You can override values for a set of response headers using the following
4198// query parameters. These response header values are sent only on a successful
4199// request, that is, when status code 200 OK is returned. The set of headers
4200// you can override using these parameters is a subset of the headers that Amazon
4201// S3 accepts when you create an object. The response headers that you can override
4202// for the GET response are Content-Type, Content-Language, Expires, Cache-Control,
4203// Content-Disposition, and Content-Encoding. To override these header values
4204// in the GET response, you use the following request parameters.
4205//
4206// You must sign the request, either using an Authorization header or a presigned
4207// URL, when using these parameters. They cannot be used with an unsigned (anonymous)
4208// request.
4209//
4210//    * response-content-type
4211//
4212//    * response-content-language
4213//
4214//    * response-expires
4215//
4216//    * response-cache-control
4217//
4218//    * response-content-disposition
4219//
4220//    * response-content-encoding
4221//
4222// Additional Considerations about Request Headers
4223//
4224// If both of the If-Match and If-Unmodified-Since headers are present in the
4225// request as follows: If-Match condition evaluates to true, and; If-Unmodified-Since
4226// condition evaluates to false; then, S3 returns 200 OK and the data requested.
4227//
4228// If both of the If-None-Match and If-Modified-Since headers are present in
4229// the request as follows:If-None-Match condition evaluates to false, and; If-Modified-Since
4230// condition evaluates to true; then, S3 returns 304 Not Modified response code.
4231//
4232// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
4233//
4234// The following operations are related to GetObject:
4235//
4236//    * ListBuckets
4237//
4238//    * GetObjectAcl
4239//
4240// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4241// with awserr.Error's Code and Message methods to get detailed information about
4242// the error.
4243//
4244// See the AWS API reference guide for Amazon Simple Storage Service's
4245// API operation GetObject for usage and error information.
4246//
4247// Returned Error Codes:
4248//   * ErrCodeNoSuchKey "NoSuchKey"
4249//   The specified key does not exist.
4250//
4251// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4252func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
4253	req, out := c.GetObjectRequest(input)
4254	return out, req.Send()
4255}
4256
4257// GetObjectWithContext is the same as GetObject with the addition of
4258// the ability to pass a context and additional request options.
4259//
4260// See GetObject for details on how to use this API operation.
4261//
4262// The context must be non-nil and will be used for request cancellation. If
4263// the context is nil a panic will occur. In the future the SDK may create
4264// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4265// for more information on using Contexts.
4266func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
4267	req, out := c.GetObjectRequest(input)
4268	req.SetContext(ctx)
4269	req.ApplyOptions(opts...)
4270	return out, req.Send()
4271}
4272
4273const opGetObjectAcl = "GetObjectAcl"
4274
4275// GetObjectAclRequest generates a "aws/request.Request" representing the
4276// client's request for the GetObjectAcl operation. The "output" return
4277// value will be populated with the request's response once the request completes
4278// successfully.
4279//
4280// Use "Send" method on the returned Request to send the API call to the service.
4281// the "output" return value is not valid until after Send returns without error.
4282//
4283// See GetObjectAcl for more information on using the GetObjectAcl
4284// API call, and error handling.
4285//
4286// This method is useful when you want to inject custom logic or configuration
4287// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4288//
4289//
4290//    // Example sending a request using the GetObjectAclRequest method.
4291//    req, resp := client.GetObjectAclRequest(params)
4292//
4293//    err := req.Send()
4294//    if err == nil { // resp is now filled
4295//        fmt.Println(resp)
4296//    }
4297//
4298// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4299func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
4300	op := &request.Operation{
4301		Name:       opGetObjectAcl,
4302		HTTPMethod: "GET",
4303		HTTPPath:   "/{Bucket}/{Key+}?acl",
4304	}
4305
4306	if input == nil {
4307		input = &GetObjectAclInput{}
4308	}
4309
4310	output = &GetObjectAclOutput{}
4311	req = c.newRequest(op, input, output)
4312	return
4313}
4314
4315// GetObjectAcl API operation for Amazon Simple Storage Service.
4316//
4317// Returns the access control list (ACL) of an object. To use this operation,
4318// you must have READ_ACP access to the object.
4319//
4320// Versioning
4321//
4322// By default, GET returns ACL information about the current version of an object.
4323// To return ACL information about a different version, use the versionId subresource.
4324//
4325// The following operations are related to GetObjectAcl:
4326//
4327//    * GetObject
4328//
4329//    * DeleteObject
4330//
4331//    * PutObject
4332//
4333// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4334// with awserr.Error's Code and Message methods to get detailed information about
4335// the error.
4336//
4337// See the AWS API reference guide for Amazon Simple Storage Service's
4338// API operation GetObjectAcl for usage and error information.
4339//
4340// Returned Error Codes:
4341//   * ErrCodeNoSuchKey "NoSuchKey"
4342//   The specified key does not exist.
4343//
4344// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4345func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
4346	req, out := c.GetObjectAclRequest(input)
4347	return out, req.Send()
4348}
4349
4350// GetObjectAclWithContext is the same as GetObjectAcl with the addition of
4351// the ability to pass a context and additional request options.
4352//
4353// See GetObjectAcl for details on how to use this API operation.
4354//
4355// The context must be non-nil and will be used for request cancellation. If
4356// the context is nil a panic will occur. In the future the SDK may create
4357// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4358// for more information on using Contexts.
4359func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
4360	req, out := c.GetObjectAclRequest(input)
4361	req.SetContext(ctx)
4362	req.ApplyOptions(opts...)
4363	return out, req.Send()
4364}
4365
4366const opGetObjectLegalHold = "GetObjectLegalHold"
4367
4368// GetObjectLegalHoldRequest generates a "aws/request.Request" representing the
4369// client's request for the GetObjectLegalHold operation. The "output" return
4370// value will be populated with the request's response once the request completes
4371// successfully.
4372//
4373// Use "Send" method on the returned Request to send the API call to the service.
4374// the "output" return value is not valid until after Send returns without error.
4375//
4376// See GetObjectLegalHold for more information on using the GetObjectLegalHold
4377// API call, and error handling.
4378//
4379// This method is useful when you want to inject custom logic or configuration
4380// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4381//
4382//
4383//    // Example sending a request using the GetObjectLegalHoldRequest method.
4384//    req, resp := client.GetObjectLegalHoldRequest(params)
4385//
4386//    err := req.Send()
4387//    if err == nil { // resp is now filled
4388//        fmt.Println(resp)
4389//    }
4390//
4391// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4392func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) {
4393	op := &request.Operation{
4394		Name:       opGetObjectLegalHold,
4395		HTTPMethod: "GET",
4396		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
4397	}
4398
4399	if input == nil {
4400		input = &GetObjectLegalHoldInput{}
4401	}
4402
4403	output = &GetObjectLegalHoldOutput{}
4404	req = c.newRequest(op, input, output)
4405	return
4406}
4407
4408// GetObjectLegalHold API operation for Amazon Simple Storage Service.
4409//
4410// Gets an object's current Legal Hold status. For more information, see Locking
4411// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4412//
4413// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4414// with awserr.Error's Code and Message methods to get detailed information about
4415// the error.
4416//
4417// See the AWS API reference guide for Amazon Simple Storage Service's
4418// API operation GetObjectLegalHold for usage and error information.
4419// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4420func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) {
4421	req, out := c.GetObjectLegalHoldRequest(input)
4422	return out, req.Send()
4423}
4424
4425// GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of
4426// the ability to pass a context and additional request options.
4427//
4428// See GetObjectLegalHold for details on how to use this API operation.
4429//
4430// The context must be non-nil and will be used for request cancellation. If
4431// the context is nil a panic will occur. In the future the SDK may create
4432// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4433// for more information on using Contexts.
4434func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) {
4435	req, out := c.GetObjectLegalHoldRequest(input)
4436	req.SetContext(ctx)
4437	req.ApplyOptions(opts...)
4438	return out, req.Send()
4439}
4440
4441const opGetObjectLockConfiguration = "GetObjectLockConfiguration"
4442
4443// GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the
4444// client's request for the GetObjectLockConfiguration operation. The "output" return
4445// value will be populated with the request's response once the request completes
4446// successfully.
4447//
4448// Use "Send" method on the returned Request to send the API call to the service.
4449// the "output" return value is not valid until after Send returns without error.
4450//
4451// See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration
4452// API call, and error handling.
4453//
4454// This method is useful when you want to inject custom logic or configuration
4455// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4456//
4457//
4458//    // Example sending a request using the GetObjectLockConfigurationRequest method.
4459//    req, resp := client.GetObjectLockConfigurationRequest(params)
4460//
4461//    err := req.Send()
4462//    if err == nil { // resp is now filled
4463//        fmt.Println(resp)
4464//    }
4465//
4466// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4467func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) {
4468	op := &request.Operation{
4469		Name:       opGetObjectLockConfiguration,
4470		HTTPMethod: "GET",
4471		HTTPPath:   "/{Bucket}?object-lock",
4472	}
4473
4474	if input == nil {
4475		input = &GetObjectLockConfigurationInput{}
4476	}
4477
4478	output = &GetObjectLockConfigurationOutput{}
4479	req = c.newRequest(op, input, output)
4480	return
4481}
4482
4483// GetObjectLockConfiguration API operation for Amazon Simple Storage Service.
4484//
4485// Gets the Object Lock configuration for a bucket. The rule specified in the
4486// Object Lock configuration will be applied by default to every new object
4487// placed in the specified bucket. For more information, see Locking Objects
4488// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4489//
4490// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4491// with awserr.Error's Code and Message methods to get detailed information about
4492// the error.
4493//
4494// See the AWS API reference guide for Amazon Simple Storage Service's
4495// API operation GetObjectLockConfiguration for usage and error information.
4496// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4497func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) {
4498	req, out := c.GetObjectLockConfigurationRequest(input)
4499	return out, req.Send()
4500}
4501
4502// GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of
4503// the ability to pass a context and additional request options.
4504//
4505// See GetObjectLockConfiguration for details on how to use this API operation.
4506//
4507// The context must be non-nil and will be used for request cancellation. If
4508// the context is nil a panic will occur. In the future the SDK may create
4509// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4510// for more information on using Contexts.
4511func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) {
4512	req, out := c.GetObjectLockConfigurationRequest(input)
4513	req.SetContext(ctx)
4514	req.ApplyOptions(opts...)
4515	return out, req.Send()
4516}
4517
4518const opGetObjectRetention = "GetObjectRetention"
4519
4520// GetObjectRetentionRequest generates a "aws/request.Request" representing the
4521// client's request for the GetObjectRetention operation. The "output" return
4522// value will be populated with the request's response once the request completes
4523// successfully.
4524//
4525// Use "Send" method on the returned Request to send the API call to the service.
4526// the "output" return value is not valid until after Send returns without error.
4527//
4528// See GetObjectRetention for more information on using the GetObjectRetention
4529// API call, and error handling.
4530//
4531// This method is useful when you want to inject custom logic or configuration
4532// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4533//
4534//
4535//    // Example sending a request using the GetObjectRetentionRequest method.
4536//    req, resp := client.GetObjectRetentionRequest(params)
4537//
4538//    err := req.Send()
4539//    if err == nil { // resp is now filled
4540//        fmt.Println(resp)
4541//    }
4542//
4543// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4544func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) {
4545	op := &request.Operation{
4546		Name:       opGetObjectRetention,
4547		HTTPMethod: "GET",
4548		HTTPPath:   "/{Bucket}/{Key+}?retention",
4549	}
4550
4551	if input == nil {
4552		input = &GetObjectRetentionInput{}
4553	}
4554
4555	output = &GetObjectRetentionOutput{}
4556	req = c.newRequest(op, input, output)
4557	return
4558}
4559
4560// GetObjectRetention API operation for Amazon Simple Storage Service.
4561//
4562// Retrieves an object's retention settings. For more information, see Locking
4563// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4564//
4565// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4566// with awserr.Error's Code and Message methods to get detailed information about
4567// the error.
4568//
4569// See the AWS API reference guide for Amazon Simple Storage Service's
4570// API operation GetObjectRetention for usage and error information.
4571// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4572func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) {
4573	req, out := c.GetObjectRetentionRequest(input)
4574	return out, req.Send()
4575}
4576
4577// GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of
4578// the ability to pass a context and additional request options.
4579//
4580// See GetObjectRetention for details on how to use this API operation.
4581//
4582// The context must be non-nil and will be used for request cancellation. If
4583// the context is nil a panic will occur. In the future the SDK may create
4584// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4585// for more information on using Contexts.
4586func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) {
4587	req, out := c.GetObjectRetentionRequest(input)
4588	req.SetContext(ctx)
4589	req.ApplyOptions(opts...)
4590	return out, req.Send()
4591}
4592
4593const opGetObjectTagging = "GetObjectTagging"
4594
4595// GetObjectTaggingRequest generates a "aws/request.Request" representing the
4596// client's request for the GetObjectTagging operation. The "output" return
4597// value will be populated with the request's response once the request completes
4598// successfully.
4599//
4600// Use "Send" method on the returned Request to send the API call to the service.
4601// the "output" return value is not valid until after Send returns without error.
4602//
4603// See GetObjectTagging for more information on using the GetObjectTagging
4604// API call, and error handling.
4605//
4606// This method is useful when you want to inject custom logic or configuration
4607// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4608//
4609//
4610//    // Example sending a request using the GetObjectTaggingRequest method.
4611//    req, resp := client.GetObjectTaggingRequest(params)
4612//
4613//    err := req.Send()
4614//    if err == nil { // resp is now filled
4615//        fmt.Println(resp)
4616//    }
4617//
4618// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
4619func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
4620	op := &request.Operation{
4621		Name:       opGetObjectTagging,
4622		HTTPMethod: "GET",
4623		HTTPPath:   "/{Bucket}/{Key+}?tagging",
4624	}
4625
4626	if input == nil {
4627		input = &GetObjectTaggingInput{}
4628	}
4629
4630	output = &GetObjectTaggingOutput{}
4631	req = c.newRequest(op, input, output)
4632	return
4633}
4634
4635// GetObjectTagging API operation for Amazon Simple Storage Service.
4636//
4637// Returns the tag-set of an object. You send the GET request against the tagging
4638// subresource associated with the object.
4639//
4640// To use this operation, you must have permission to perform the s3:GetObjectTagging
4641// action. By default, the GET operation returns information about current version
4642// of an object. For a versioned bucket, you can have multiple versions of an
4643// object in your bucket. To retrieve tags of any other version, use the versionId
4644// query parameter. You also need permission for the s3:GetObjectVersionTagging
4645// action.
4646//
4647// By default, the bucket owner has this permission and can grant this permission
4648// to others.
4649//
4650// For information about the Amazon S3 object tagging feature, see Object Tagging
4651// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
4652//
4653// The following operation is related to GetObjectTagging:
4654//
4655//    * PutObjectTagging
4656//
4657// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4658// with awserr.Error's Code and Message methods to get detailed information about
4659// the error.
4660//
4661// See the AWS API reference guide for Amazon Simple Storage Service's
4662// API operation GetObjectTagging for usage and error information.
4663// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
4664func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
4665	req, out := c.GetObjectTaggingRequest(input)
4666	return out, req.Send()
4667}
4668
4669// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
4670// the ability to pass a context and additional request options.
4671//
4672// See GetObjectTagging for details on how to use this API operation.
4673//
4674// The context must be non-nil and will be used for request cancellation. If
4675// the context is nil a panic will occur. In the future the SDK may create
4676// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4677// for more information on using Contexts.
4678func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
4679	req, out := c.GetObjectTaggingRequest(input)
4680	req.SetContext(ctx)
4681	req.ApplyOptions(opts...)
4682	return out, req.Send()
4683}
4684
4685const opGetObjectTorrent = "GetObjectTorrent"
4686
4687// GetObjectTorrentRequest generates a "aws/request.Request" representing the
4688// client's request for the GetObjectTorrent operation. The "output" return
4689// value will be populated with the request's response once the request completes
4690// successfully.
4691//
4692// Use "Send" method on the returned Request to send the API call to the service.
4693// the "output" return value is not valid until after Send returns without error.
4694//
4695// See GetObjectTorrent for more information on using the GetObjectTorrent
4696// API call, and error handling.
4697//
4698// This method is useful when you want to inject custom logic or configuration
4699// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4700//
4701//
4702//    // Example sending a request using the GetObjectTorrentRequest method.
4703//    req, resp := client.GetObjectTorrentRequest(params)
4704//
4705//    err := req.Send()
4706//    if err == nil { // resp is now filled
4707//        fmt.Println(resp)
4708//    }
4709//
4710// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
4711func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
4712	op := &request.Operation{
4713		Name:       opGetObjectTorrent,
4714		HTTPMethod: "GET",
4715		HTTPPath:   "/{Bucket}/{Key+}?torrent",
4716	}
4717
4718	if input == nil {
4719		input = &GetObjectTorrentInput{}
4720	}
4721
4722	output = &GetObjectTorrentOutput{}
4723	req = c.newRequest(op, input, output)
4724	return
4725}
4726
4727// GetObjectTorrent API operation for Amazon Simple Storage Service.
4728//
4729// Return torrent files from a bucket. BitTorrent can save you bandwidth when
4730// you're distributing large files. For more information about BitTorrent, see
4731// Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
4732//
4733// You can get torrent only for objects that are less than 5 GB in size and
4734// that are not encrypted using server-side encryption with customer-provided
4735// encryption key.
4736//
4737// To use GET, you must have READ access to the object.
4738//
4739// The following operation is related to GetObjectTorrent:
4740//
4741//    * GetObject
4742//
4743// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4744// with awserr.Error's Code and Message methods to get detailed information about
4745// the error.
4746//
4747// See the AWS API reference guide for Amazon Simple Storage Service's
4748// API operation GetObjectTorrent for usage and error information.
4749// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
4750func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
4751	req, out := c.GetObjectTorrentRequest(input)
4752	return out, req.Send()
4753}
4754
4755// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
4756// the ability to pass a context and additional request options.
4757//
4758// See GetObjectTorrent for details on how to use this API operation.
4759//
4760// The context must be non-nil and will be used for request cancellation. If
4761// the context is nil a panic will occur. In the future the SDK may create
4762// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4763// for more information on using Contexts.
4764func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
4765	req, out := c.GetObjectTorrentRequest(input)
4766	req.SetContext(ctx)
4767	req.ApplyOptions(opts...)
4768	return out, req.Send()
4769}
4770
4771const opGetPublicAccessBlock = "GetPublicAccessBlock"
4772
4773// GetPublicAccessBlockRequest generates a "aws/request.Request" representing the
4774// client's request for the GetPublicAccessBlock operation. The "output" return
4775// value will be populated with the request's response once the request completes
4776// successfully.
4777//
4778// Use "Send" method on the returned Request to send the API call to the service.
4779// the "output" return value is not valid until after Send returns without error.
4780//
4781// See GetPublicAccessBlock for more information on using the GetPublicAccessBlock
4782// API call, and error handling.
4783//
4784// This method is useful when you want to inject custom logic or configuration
4785// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4786//
4787//
4788//    // Example sending a request using the GetPublicAccessBlockRequest method.
4789//    req, resp := client.GetPublicAccessBlockRequest(params)
4790//
4791//    err := req.Send()
4792//    if err == nil { // resp is now filled
4793//        fmt.Println(resp)
4794//    }
4795//
4796// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
4797func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) {
4798	op := &request.Operation{
4799		Name:       opGetPublicAccessBlock,
4800		HTTPMethod: "GET",
4801		HTTPPath:   "/{Bucket}?publicAccessBlock",
4802	}
4803
4804	if input == nil {
4805		input = &GetPublicAccessBlockInput{}
4806	}
4807
4808	output = &GetPublicAccessBlockOutput{}
4809	req = c.newRequest(op, input, output)
4810	return
4811}
4812
4813// GetPublicAccessBlock API operation for Amazon Simple Storage Service.
4814//
4815// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. To
4816// use this operation, you must have the s3:GetBucketPublicAccessBlock permission.
4817// For more information about Amazon S3 permissions, see Specifying Permissions
4818// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
4819//
4820// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
4821// or an object, it checks the PublicAccessBlock configuration for both the
4822// bucket (or the bucket that contains the object) and the bucket owner's account.
4823// If the PublicAccessBlock settings are different between the bucket and the
4824// account, Amazon S3 uses the most restrictive combination of the bucket-level
4825// and account-level settings.
4826//
4827// For more information about when Amazon S3 considers a bucket or an object
4828// public, see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status).
4829//
4830// The following operations are related to GetPublicAccessBlock:
4831//
4832//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
4833//
4834//    * PutPublicAccessBlock
4835//
4836//    * GetPublicAccessBlock
4837//
4838//    * DeletePublicAccessBlock
4839//
4840// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4841// with awserr.Error's Code and Message methods to get detailed information about
4842// the error.
4843//
4844// See the AWS API reference guide for Amazon Simple Storage Service's
4845// API operation GetPublicAccessBlock for usage and error information.
4846// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
4847func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) {
4848	req, out := c.GetPublicAccessBlockRequest(input)
4849	return out, req.Send()
4850}
4851
4852// GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of
4853// the ability to pass a context and additional request options.
4854//
4855// See GetPublicAccessBlock for details on how to use this API operation.
4856//
4857// The context must be non-nil and will be used for request cancellation. If
4858// the context is nil a panic will occur. In the future the SDK may create
4859// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4860// for more information on using Contexts.
4861func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) {
4862	req, out := c.GetPublicAccessBlockRequest(input)
4863	req.SetContext(ctx)
4864	req.ApplyOptions(opts...)
4865	return out, req.Send()
4866}
4867
4868const opHeadBucket = "HeadBucket"
4869
4870// HeadBucketRequest generates a "aws/request.Request" representing the
4871// client's request for the HeadBucket operation. The "output" return
4872// value will be populated with the request's response once the request completes
4873// successfully.
4874//
4875// Use "Send" method on the returned Request to send the API call to the service.
4876// the "output" return value is not valid until after Send returns without error.
4877//
4878// See HeadBucket for more information on using the HeadBucket
4879// API call, and error handling.
4880//
4881// This method is useful when you want to inject custom logic or configuration
4882// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4883//
4884//
4885//    // Example sending a request using the HeadBucketRequest method.
4886//    req, resp := client.HeadBucketRequest(params)
4887//
4888//    err := req.Send()
4889//    if err == nil { // resp is now filled
4890//        fmt.Println(resp)
4891//    }
4892//
4893// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
4894func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
4895	op := &request.Operation{
4896		Name:       opHeadBucket,
4897		HTTPMethod: "HEAD",
4898		HTTPPath:   "/{Bucket}",
4899	}
4900
4901	if input == nil {
4902		input = &HeadBucketInput{}
4903	}
4904
4905	output = &HeadBucketOutput{}
4906	req = c.newRequest(op, input, output)
4907	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4908	return
4909}
4910
4911// HeadBucket API operation for Amazon Simple Storage Service.
4912//
4913// This operation is useful to determine if a bucket exists and you have permission
4914// to access it. The operation returns a 200 OK if the bucket exists and you
4915// have permission to access it. Otherwise, the operation might return responses
4916// such as 404 Not Found and 403 Forbidden.
4917//
4918// To use this operation, you must have permissions to perform the s3:ListBucket
4919// action. The bucket owner has this permission by default and can grant this
4920// permission to others. For more information about permissions, see Permissions
4921// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
4922// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
4923//
4924// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4925// with awserr.Error's Code and Message methods to get detailed information about
4926// the error.
4927//
4928// See the AWS API reference guide for Amazon Simple Storage Service's
4929// API operation HeadBucket for usage and error information.
4930//
4931// Returned Error Codes:
4932//   * ErrCodeNoSuchBucket "NoSuchBucket"
4933//   The specified bucket does not exist.
4934//
4935// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
4936func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
4937	req, out := c.HeadBucketRequest(input)
4938	return out, req.Send()
4939}
4940
4941// HeadBucketWithContext is the same as HeadBucket with the addition of
4942// the ability to pass a context and additional request options.
4943//
4944// See HeadBucket for details on how to use this API operation.
4945//
4946// The context must be non-nil and will be used for request cancellation. If
4947// the context is nil a panic will occur. In the future the SDK may create
4948// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4949// for more information on using Contexts.
4950func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
4951	req, out := c.HeadBucketRequest(input)
4952	req.SetContext(ctx)
4953	req.ApplyOptions(opts...)
4954	return out, req.Send()
4955}
4956
4957const opHeadObject = "HeadObject"
4958
4959// HeadObjectRequest generates a "aws/request.Request" representing the
4960// client's request for the HeadObject operation. The "output" return
4961// value will be populated with the request's response once the request completes
4962// successfully.
4963//
4964// Use "Send" method on the returned Request to send the API call to the service.
4965// the "output" return value is not valid until after Send returns without error.
4966//
4967// See HeadObject for more information on using the HeadObject
4968// API call, and error handling.
4969//
4970// This method is useful when you want to inject custom logic or configuration
4971// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4972//
4973//
4974//    // Example sending a request using the HeadObjectRequest method.
4975//    req, resp := client.HeadObjectRequest(params)
4976//
4977//    err := req.Send()
4978//    if err == nil { // resp is now filled
4979//        fmt.Println(resp)
4980//    }
4981//
4982// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
4983func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
4984	op := &request.Operation{
4985		Name:       opHeadObject,
4986		HTTPMethod: "HEAD",
4987		HTTPPath:   "/{Bucket}/{Key+}",
4988	}
4989
4990	if input == nil {
4991		input = &HeadObjectInput{}
4992	}
4993
4994	output = &HeadObjectOutput{}
4995	req = c.newRequest(op, input, output)
4996	return
4997}
4998
4999// HeadObject API operation for Amazon Simple Storage Service.
5000//
5001// The HEAD operation retrieves metadata from an object without returning the
5002// object itself. This operation is useful if you're only interested in an object's
5003// metadata. To use HEAD, you must have READ access to the object.
5004//
5005// A HEAD request has the same options as a GET operation on an object. The
5006// response is identical to the GET response except that there is no response
5007// body.
5008//
5009// If you encrypt an object by using server-side encryption with customer-provided
5010// encryption keys (SSE-C) when you store the object in Amazon S3, then when
5011// you retrieve the metadata from the object, you must use the following headers:
5012//
5013//    * x-amz-server-side​-encryption​-customer-algorithm
5014//
5015//    * x-amz-server-side​-encryption​-customer-key
5016//
5017//    * x-amz-server-side​-encryption​-customer-key-MD5
5018//
5019// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
5020// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
5021//
5022// Encryption request headers, like x-amz-server-side-encryption, should not
5023// be sent for GET requests if your object uses server-side encryption with
5024// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed
5025// encryption keys (SSE-S3). If your object does use these types of keys, you’ll
5026// get an HTTP 400 BadRequest error.
5027//
5028// Request headers are limited to 8 KB in size. For more information, see Common
5029// Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html).
5030//
5031// Consider the following when using request headers:
5032//
5033//    * Consideration 1 – If both of the If-Match and If-Unmodified-Since
5034//    headers are present in the request as follows: If-Match condition evaluates
5035//    to true, and; If-Unmodified-Since condition evaluates to false; Then Amazon
5036//    S3 returns 200 OK and the data requested.
5037//
5038//    * Consideration 2 – If both of the If-None-Match and If-Modified-Since
5039//    headers are present in the request as follows: If-None-Match condition
5040//    evaluates to false, and; If-Modified-Since condition evaluates to true;
5041//    Then Amazon S3 returns the 304 Not Modified response code.
5042//
5043// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
5044//
5045// Permissions
5046//
5047// You need the s3:GetObject permission for this operation. For more information,
5048// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
5049// If the object you request does not exist, the error Amazon S3 returns depends
5050// on whether you also have the s3:ListBucket permission.
5051//
5052//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 returns
5053//    an HTTP status code 404 ("no such key") error.
5054//
5055//    * If you don’t have the s3:ListBucket permission, Amazon S3 returns
5056//    an HTTP status code 403 ("access denied") error.
5057//
5058// The following operation is related to HeadObject:
5059//
5060//    * GetObject
5061//
5062// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
5063// for more information on returned errors.
5064//
5065// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5066// with awserr.Error's Code and Message methods to get detailed information about
5067// the error.
5068//
5069// See the AWS API reference guide for Amazon Simple Storage Service's
5070// API operation HeadObject for usage and error information.
5071// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5072func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
5073	req, out := c.HeadObjectRequest(input)
5074	return out, req.Send()
5075}
5076
5077// HeadObjectWithContext is the same as HeadObject with the addition of
5078// the ability to pass a context and additional request options.
5079//
5080// See HeadObject for details on how to use this API operation.
5081//
5082// The context must be non-nil and will be used for request cancellation. If
5083// the context is nil a panic will occur. In the future the SDK may create
5084// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5085// for more information on using Contexts.
5086func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
5087	req, out := c.HeadObjectRequest(input)
5088	req.SetContext(ctx)
5089	req.ApplyOptions(opts...)
5090	return out, req.Send()
5091}
5092
5093const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
5094
5095// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
5096// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
5097// value will be populated with the request's response once the request completes
5098// successfully.
5099//
5100// Use "Send" method on the returned Request to send the API call to the service.
5101// the "output" return value is not valid until after Send returns without error.
5102//
5103// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
5104// API call, and error handling.
5105//
5106// This method is useful when you want to inject custom logic or configuration
5107// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5108//
5109//
5110//    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
5111//    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
5112//
5113//    err := req.Send()
5114//    if err == nil { // resp is now filled
5115//        fmt.Println(resp)
5116//    }
5117//
5118// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5119func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
5120	op := &request.Operation{
5121		Name:       opListBucketAnalyticsConfigurations,
5122		HTTPMethod: "GET",
5123		HTTPPath:   "/{Bucket}?analytics",
5124	}
5125
5126	if input == nil {
5127		input = &ListBucketAnalyticsConfigurationsInput{}
5128	}
5129
5130	output = &ListBucketAnalyticsConfigurationsOutput{}
5131	req = c.newRequest(op, input, output)
5132	return
5133}
5134
5135// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
5136//
5137// Lists the analytics configurations for the bucket. You can have up to 1,000
5138// analytics configurations per bucket.
5139//
5140// This operation supports list pagination and does not return more than 100
5141// configurations at a time. You should always check the IsTruncated element
5142// in the response. If there are no more configurations to list, IsTruncated
5143// is set to false. If there are more configurations to list, IsTruncated is
5144// set to true, and there will be a value in NextContinuationToken. You use
5145// the NextContinuationToken value to continue the pagination of the list by
5146// passing the value in continuation-token in the request to GET the next page.
5147//
5148// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
5149// action. The bucket owner has this permission by default. The bucket owner
5150// can grant this permission to others. For more information about permissions,
5151// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5152// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
5153//
5154// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
5155// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
5156//
5157// The following operations are related to ListBucketAnalyticsConfigurations:
5158//
5159//    * GetBucketAnalyticsConfiguration
5160//
5161//    * DeleteBucketAnalyticsConfiguration
5162//
5163//    * PutBucketAnalyticsConfiguration
5164//
5165// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5166// with awserr.Error's Code and Message methods to get detailed information about
5167// the error.
5168//
5169// See the AWS API reference guide for Amazon Simple Storage Service's
5170// API operation ListBucketAnalyticsConfigurations for usage and error information.
5171// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5172func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
5173	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5174	return out, req.Send()
5175}
5176
5177// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
5178// the ability to pass a context and additional request options.
5179//
5180// See ListBucketAnalyticsConfigurations for details on how to use this API operation.
5181//
5182// The context must be non-nil and will be used for request cancellation. If
5183// the context is nil a panic will occur. In the future the SDK may create
5184// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5185// for more information on using Contexts.
5186func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
5187	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5188	req.SetContext(ctx)
5189	req.ApplyOptions(opts...)
5190	return out, req.Send()
5191}
5192
5193const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
5194
5195// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
5196// client's request for the ListBucketInventoryConfigurations operation. The "output" return
5197// value will be populated with the request's response once the request completes
5198// successfully.
5199//
5200// Use "Send" method on the returned Request to send the API call to the service.
5201// the "output" return value is not valid until after Send returns without error.
5202//
5203// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
5204// API call, and error handling.
5205//
5206// This method is useful when you want to inject custom logic or configuration
5207// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5208//
5209//
5210//    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
5211//    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
5212//
5213//    err := req.Send()
5214//    if err == nil { // resp is now filled
5215//        fmt.Println(resp)
5216//    }
5217//
5218// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5219func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
5220	op := &request.Operation{
5221		Name:       opListBucketInventoryConfigurations,
5222		HTTPMethod: "GET",
5223		HTTPPath:   "/{Bucket}?inventory",
5224	}
5225
5226	if input == nil {
5227		input = &ListBucketInventoryConfigurationsInput{}
5228	}
5229
5230	output = &ListBucketInventoryConfigurationsOutput{}
5231	req = c.newRequest(op, input, output)
5232	return
5233}
5234
5235// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
5236//
5237// Returns a list of inventory configurations for the bucket. You can have up
5238// to 1,000 analytics configurations per bucket.
5239//
5240// This operation supports list pagination and does not return more than 100
5241// configurations at a time. Always check the IsTruncated element in the response.
5242// If there are no more configurations to list, IsTruncated is set to false.
5243// If there are more configurations to list, IsTruncated is set to true, and
5244// there is a value in NextContinuationToken. You use the NextContinuationToken
5245// value to continue the pagination of the list by passing the value in continuation-token
5246// in the request to GET the next page.
5247//
5248// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
5249// action. The bucket owner has this permission by default. The bucket owner
5250// can grant this permission to others. For more information about permissions,
5251// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5252// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
5253//
5254// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
5255// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
5256//
5257// The following operations are related to ListBucketInventoryConfigurations:
5258//
5259//    * GetBucketInventoryConfiguration
5260//
5261//    * DeleteBucketInventoryConfiguration
5262//
5263//    * PutBucketInventoryConfiguration
5264//
5265// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5266// with awserr.Error's Code and Message methods to get detailed information about
5267// the error.
5268//
5269// See the AWS API reference guide for Amazon Simple Storage Service's
5270// API operation ListBucketInventoryConfigurations for usage and error information.
5271// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5272func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
5273	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5274	return out, req.Send()
5275}
5276
5277// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
5278// the ability to pass a context and additional request options.
5279//
5280// See ListBucketInventoryConfigurations for details on how to use this API operation.
5281//
5282// The context must be non-nil and will be used for request cancellation. If
5283// the context is nil a panic will occur. In the future the SDK may create
5284// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5285// for more information on using Contexts.
5286func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
5287	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5288	req.SetContext(ctx)
5289	req.ApplyOptions(opts...)
5290	return out, req.Send()
5291}
5292
5293const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
5294
5295// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
5296// client's request for the ListBucketMetricsConfigurations operation. The "output" return
5297// value will be populated with the request's response once the request completes
5298// successfully.
5299//
5300// Use "Send" method on the returned Request to send the API call to the service.
5301// the "output" return value is not valid until after Send returns without error.
5302//
5303// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
5304// API call, and error handling.
5305//
5306// This method is useful when you want to inject custom logic or configuration
5307// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5308//
5309//
5310//    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
5311//    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
5312//
5313//    err := req.Send()
5314//    if err == nil { // resp is now filled
5315//        fmt.Println(resp)
5316//    }
5317//
5318// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5319func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
5320	op := &request.Operation{
5321		Name:       opListBucketMetricsConfigurations,
5322		HTTPMethod: "GET",
5323		HTTPPath:   "/{Bucket}?metrics",
5324	}
5325
5326	if input == nil {
5327		input = &ListBucketMetricsConfigurationsInput{}
5328	}
5329
5330	output = &ListBucketMetricsConfigurationsOutput{}
5331	req = c.newRequest(op, input, output)
5332	return
5333}
5334
5335// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
5336//
5337// Lists the metrics configurations for the bucket. The metrics configurations
5338// are only for the request metrics of the bucket and do not provide information
5339// on daily storage metrics. You can have up to 1,000 configurations per bucket.
5340//
5341// This operation supports list pagination and does not return more than 100
5342// configurations at a time. Always check the IsTruncated element in the response.
5343// If there are no more configurations to list, IsTruncated is set to false.
5344// If there are more configurations to list, IsTruncated is set to true, and
5345// there is a value in NextContinuationToken. You use the NextContinuationToken
5346// value to continue the pagination of the list by passing the value in continuation-token
5347// in the request to GET the next page.
5348//
5349// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
5350// action. The bucket owner has this permission by default. The bucket owner
5351// can grant this permission to others. For more information about permissions,
5352// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5353// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
5354//
5355// For more information about metrics configurations and CloudWatch request
5356// metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
5357//
5358// The following operations are related to ListBucketMetricsConfigurations:
5359//
5360//    * PutBucketMetricsConfiguration
5361//
5362//    * GetBucketMetricsConfiguration
5363//
5364//    * DeleteBucketMetricsConfiguration
5365//
5366// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5367// with awserr.Error's Code and Message methods to get detailed information about
5368// the error.
5369//
5370// See the AWS API reference guide for Amazon Simple Storage Service's
5371// API operation ListBucketMetricsConfigurations for usage and error information.
5372// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5373func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
5374	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5375	return out, req.Send()
5376}
5377
5378// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
5379// the ability to pass a context and additional request options.
5380//
5381// See ListBucketMetricsConfigurations for details on how to use this API operation.
5382//
5383// The context must be non-nil and will be used for request cancellation. If
5384// the context is nil a panic will occur. In the future the SDK may create
5385// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5386// for more information on using Contexts.
5387func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
5388	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5389	req.SetContext(ctx)
5390	req.ApplyOptions(opts...)
5391	return out, req.Send()
5392}
5393
5394const opListBuckets = "ListBuckets"
5395
5396// ListBucketsRequest generates a "aws/request.Request" representing the
5397// client's request for the ListBuckets operation. The "output" return
5398// value will be populated with the request's response once the request completes
5399// successfully.
5400//
5401// Use "Send" method on the returned Request to send the API call to the service.
5402// the "output" return value is not valid until after Send returns without error.
5403//
5404// See ListBuckets for more information on using the ListBuckets
5405// API call, and error handling.
5406//
5407// This method is useful when you want to inject custom logic or configuration
5408// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5409//
5410//
5411//    // Example sending a request using the ListBucketsRequest method.
5412//    req, resp := client.ListBucketsRequest(params)
5413//
5414//    err := req.Send()
5415//    if err == nil { // resp is now filled
5416//        fmt.Println(resp)
5417//    }
5418//
5419// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5420func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
5421	op := &request.Operation{
5422		Name:       opListBuckets,
5423		HTTPMethod: "GET",
5424		HTTPPath:   "/",
5425	}
5426
5427	if input == nil {
5428		input = &ListBucketsInput{}
5429	}
5430
5431	output = &ListBucketsOutput{}
5432	req = c.newRequest(op, input, output)
5433	return
5434}
5435
5436// ListBuckets API operation for Amazon Simple Storage Service.
5437//
5438// Returns a list of all buckets owned by the authenticated sender of the request.
5439//
5440// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5441// with awserr.Error's Code and Message methods to get detailed information about
5442// the error.
5443//
5444// See the AWS API reference guide for Amazon Simple Storage Service's
5445// API operation ListBuckets for usage and error information.
5446// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5447func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
5448	req, out := c.ListBucketsRequest(input)
5449	return out, req.Send()
5450}
5451
5452// ListBucketsWithContext is the same as ListBuckets with the addition of
5453// the ability to pass a context and additional request options.
5454//
5455// See ListBuckets for details on how to use this API operation.
5456//
5457// The context must be non-nil and will be used for request cancellation. If
5458// the context is nil a panic will occur. In the future the SDK may create
5459// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5460// for more information on using Contexts.
5461func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
5462	req, out := c.ListBucketsRequest(input)
5463	req.SetContext(ctx)
5464	req.ApplyOptions(opts...)
5465	return out, req.Send()
5466}
5467
5468const opListMultipartUploads = "ListMultipartUploads"
5469
5470// ListMultipartUploadsRequest generates a "aws/request.Request" representing the
5471// client's request for the ListMultipartUploads operation. The "output" return
5472// value will be populated with the request's response once the request completes
5473// successfully.
5474//
5475// Use "Send" method on the returned Request to send the API call to the service.
5476// the "output" return value is not valid until after Send returns without error.
5477//
5478// See ListMultipartUploads for more information on using the ListMultipartUploads
5479// API call, and error handling.
5480//
5481// This method is useful when you want to inject custom logic or configuration
5482// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5483//
5484//
5485//    // Example sending a request using the ListMultipartUploadsRequest method.
5486//    req, resp := client.ListMultipartUploadsRequest(params)
5487//
5488//    err := req.Send()
5489//    if err == nil { // resp is now filled
5490//        fmt.Println(resp)
5491//    }
5492//
5493// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
5494func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
5495	op := &request.Operation{
5496		Name:       opListMultipartUploads,
5497		HTTPMethod: "GET",
5498		HTTPPath:   "/{Bucket}?uploads",
5499		Paginator: &request.Paginator{
5500			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
5501			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
5502			LimitToken:      "MaxUploads",
5503			TruncationToken: "IsTruncated",
5504		},
5505	}
5506
5507	if input == nil {
5508		input = &ListMultipartUploadsInput{}
5509	}
5510
5511	output = &ListMultipartUploadsOutput{}
5512	req = c.newRequest(op, input, output)
5513	return
5514}
5515
5516// ListMultipartUploads API operation for Amazon Simple Storage Service.
5517//
5518// This operation lists in-progress multipart uploads. An in-progress multipart
5519// upload is a multipart upload that has been initiated using the Initiate Multipart
5520// Upload request, but has not yet been completed or aborted.
5521//
5522// This operation returns at most 1,000 multipart uploads in the response. 1,000
5523// multipart uploads is the maximum number of uploads a response can include,
5524// which is also the default value. You can further limit the number of uploads
5525// in a response by specifying the max-uploads parameter in the response. If
5526// additional multipart uploads satisfy the list criteria, the response will
5527// contain an IsTruncated element with the value true. To list the additional
5528// multipart uploads, use the key-marker and upload-id-marker request parameters.
5529//
5530// In the response, the uploads are sorted by key. If your application has initiated
5531// more than one multipart upload using the same object key, then uploads in
5532// the response are first sorted by key. Additionally, uploads are sorted in
5533// ascending order within each key by the upload initiation time.
5534//
5535// For more information on multipart uploads, see Uploading Objects Using Multipart
5536// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
5537//
5538// For information on permissions required to use the multipart upload API,
5539// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
5540//
5541// The following operations are related to ListMultipartUploads:
5542//
5543//    * CreateMultipartUpload
5544//
5545//    * UploadPart
5546//
5547//    * CompleteMultipartUpload
5548//
5549//    * ListParts
5550//
5551//    * AbortMultipartUpload
5552//
5553// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5554// with awserr.Error's Code and Message methods to get detailed information about
5555// the error.
5556//
5557// See the AWS API reference guide for Amazon Simple Storage Service's
5558// API operation ListMultipartUploads for usage and error information.
5559// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
5560func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
5561	req, out := c.ListMultipartUploadsRequest(input)
5562	return out, req.Send()
5563}
5564
5565// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
5566// the ability to pass a context and additional request options.
5567//
5568// See ListMultipartUploads for details on how to use this API operation.
5569//
5570// The context must be non-nil and will be used for request cancellation. If
5571// the context is nil a panic will occur. In the future the SDK may create
5572// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5573// for more information on using Contexts.
5574func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
5575	req, out := c.ListMultipartUploadsRequest(input)
5576	req.SetContext(ctx)
5577	req.ApplyOptions(opts...)
5578	return out, req.Send()
5579}
5580
5581// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
5582// calling the "fn" function with the response data for each page. To stop
5583// iterating, return false from the fn function.
5584//
5585// See ListMultipartUploads method for more information on how to use this operation.
5586//
5587// Note: This operation can generate multiple requests to a service.
5588//
5589//    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
5590//    pageNum := 0
5591//    err := client.ListMultipartUploadsPages(params,
5592//        func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
5593//            pageNum++
5594//            fmt.Println(page)
5595//            return pageNum <= 3
5596//        })
5597//
5598func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
5599	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
5600}
5601
5602// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
5603// it takes a Context and allows setting request options on the pages.
5604//
5605// The context must be non-nil and will be used for request cancellation. If
5606// the context is nil a panic will occur. In the future the SDK may create
5607// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5608// for more information on using Contexts.
5609func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
5610	p := request.Pagination{
5611		NewRequest: func() (*request.Request, error) {
5612			var inCpy *ListMultipartUploadsInput
5613			if input != nil {
5614				tmp := *input
5615				inCpy = &tmp
5616			}
5617			req, _ := c.ListMultipartUploadsRequest(inCpy)
5618			req.SetContext(ctx)
5619			req.ApplyOptions(opts...)
5620			return req, nil
5621		},
5622	}
5623
5624	for p.Next() {
5625		if !fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage()) {
5626			break
5627		}
5628	}
5629
5630	return p.Err()
5631}
5632
5633const opListObjectVersions = "ListObjectVersions"
5634
5635// ListObjectVersionsRequest generates a "aws/request.Request" representing the
5636// client's request for the ListObjectVersions operation. The "output" return
5637// value will be populated with the request's response once the request completes
5638// successfully.
5639//
5640// Use "Send" method on the returned Request to send the API call to the service.
5641// the "output" return value is not valid until after Send returns without error.
5642//
5643// See ListObjectVersions for more information on using the ListObjectVersions
5644// API call, and error handling.
5645//
5646// This method is useful when you want to inject custom logic or configuration
5647// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5648//
5649//
5650//    // Example sending a request using the ListObjectVersionsRequest method.
5651//    req, resp := client.ListObjectVersionsRequest(params)
5652//
5653//    err := req.Send()
5654//    if err == nil { // resp is now filled
5655//        fmt.Println(resp)
5656//    }
5657//
5658// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
5659func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
5660	op := &request.Operation{
5661		Name:       opListObjectVersions,
5662		HTTPMethod: "GET",
5663		HTTPPath:   "/{Bucket}?versions",
5664		Paginator: &request.Paginator{
5665			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
5666			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
5667			LimitToken:      "MaxKeys",
5668			TruncationToken: "IsTruncated",
5669		},
5670	}
5671
5672	if input == nil {
5673		input = &ListObjectVersionsInput{}
5674	}
5675
5676	output = &ListObjectVersionsOutput{}
5677	req = c.newRequest(op, input, output)
5678	return
5679}
5680
5681// ListObjectVersions API operation for Amazon Simple Storage Service.
5682//
5683// Returns metadata about all of the versions of objects in a bucket. You can
5684// also use request parameters as selection criteria to return metadata about
5685// a subset of all the object versions.
5686//
5687// A 200 OK response can contain valid or invalid XML. Make sure to design your
5688// application to parse the contents of the response and handle it appropriately.
5689//
5690// To use this operation, you must have READ access to the bucket.
5691//
5692// The following operations are related to ListObjectVersions:
5693//
5694//    * ListObjectsV2
5695//
5696//    * GetObject
5697//
5698//    * PutObject
5699//
5700//    * DeleteObject
5701//
5702// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5703// with awserr.Error's Code and Message methods to get detailed information about
5704// the error.
5705//
5706// See the AWS API reference guide for Amazon Simple Storage Service's
5707// API operation ListObjectVersions for usage and error information.
5708// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
5709func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
5710	req, out := c.ListObjectVersionsRequest(input)
5711	return out, req.Send()
5712}
5713
5714// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
5715// the ability to pass a context and additional request options.
5716//
5717// See ListObjectVersions for details on how to use this API operation.
5718//
5719// The context must be non-nil and will be used for request cancellation. If
5720// the context is nil a panic will occur. In the future the SDK may create
5721// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5722// for more information on using Contexts.
5723func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
5724	req, out := c.ListObjectVersionsRequest(input)
5725	req.SetContext(ctx)
5726	req.ApplyOptions(opts...)
5727	return out, req.Send()
5728}
5729
5730// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
5731// calling the "fn" function with the response data for each page. To stop
5732// iterating, return false from the fn function.
5733//
5734// See ListObjectVersions method for more information on how to use this operation.
5735//
5736// Note: This operation can generate multiple requests to a service.
5737//
5738//    // Example iterating over at most 3 pages of a ListObjectVersions operation.
5739//    pageNum := 0
5740//    err := client.ListObjectVersionsPages(params,
5741//        func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
5742//            pageNum++
5743//            fmt.Println(page)
5744//            return pageNum <= 3
5745//        })
5746//
5747func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
5748	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
5749}
5750
5751// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
5752// it takes a Context and allows setting request options on the pages.
5753//
5754// The context must be non-nil and will be used for request cancellation. If
5755// the context is nil a panic will occur. In the future the SDK may create
5756// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5757// for more information on using Contexts.
5758func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
5759	p := request.Pagination{
5760		NewRequest: func() (*request.Request, error) {
5761			var inCpy *ListObjectVersionsInput
5762			if input != nil {
5763				tmp := *input
5764				inCpy = &tmp
5765			}
5766			req, _ := c.ListObjectVersionsRequest(inCpy)
5767			req.SetContext(ctx)
5768			req.ApplyOptions(opts...)
5769			return req, nil
5770		},
5771	}
5772
5773	for p.Next() {
5774		if !fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage()) {
5775			break
5776		}
5777	}
5778
5779	return p.Err()
5780}
5781
5782const opListObjects = "ListObjects"
5783
5784// ListObjectsRequest generates a "aws/request.Request" representing the
5785// client's request for the ListObjects operation. The "output" return
5786// value will be populated with the request's response once the request completes
5787// successfully.
5788//
5789// Use "Send" method on the returned Request to send the API call to the service.
5790// the "output" return value is not valid until after Send returns without error.
5791//
5792// See ListObjects for more information on using the ListObjects
5793// API call, and error handling.
5794//
5795// This method is useful when you want to inject custom logic or configuration
5796// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5797//
5798//
5799//    // Example sending a request using the ListObjectsRequest method.
5800//    req, resp := client.ListObjectsRequest(params)
5801//
5802//    err := req.Send()
5803//    if err == nil { // resp is now filled
5804//        fmt.Println(resp)
5805//    }
5806//
5807// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
5808func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
5809	op := &request.Operation{
5810		Name:       opListObjects,
5811		HTTPMethod: "GET",
5812		HTTPPath:   "/{Bucket}",
5813		Paginator: &request.Paginator{
5814			InputTokens:     []string{"Marker"},
5815			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
5816			LimitToken:      "MaxKeys",
5817			TruncationToken: "IsTruncated",
5818		},
5819	}
5820
5821	if input == nil {
5822		input = &ListObjectsInput{}
5823	}
5824
5825	output = &ListObjectsOutput{}
5826	req = c.newRequest(op, input, output)
5827	return
5828}
5829
5830// ListObjects API operation for Amazon Simple Storage Service.
5831//
5832// Returns some or all (up to 1,000) of the objects in a bucket. You can use
5833// the request parameters as selection criteria to return a subset of the objects
5834// in a bucket. A 200 OK response can contain valid or invalid XML. Be sure
5835// to design your application to parse the contents of the response and handle
5836// it appropriately.
5837//
5838// This API has been revised. We recommend that you use the newer version, ListObjectsV2,
5839// when developing applications. For backward compatibility, Amazon S3 continues
5840// to support ListObjects.
5841//
5842// The following operations are related to ListObjects:
5843//
5844//    * ListObjectsV2
5845//
5846//    * GetObject
5847//
5848//    * PutObject
5849//
5850//    * CreateBucket
5851//
5852//    * ListBuckets
5853//
5854// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5855// with awserr.Error's Code and Message methods to get detailed information about
5856// the error.
5857//
5858// See the AWS API reference guide for Amazon Simple Storage Service's
5859// API operation ListObjects for usage and error information.
5860//
5861// Returned Error Codes:
5862//   * ErrCodeNoSuchBucket "NoSuchBucket"
5863//   The specified bucket does not exist.
5864//
5865// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
5866func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
5867	req, out := c.ListObjectsRequest(input)
5868	return out, req.Send()
5869}
5870
5871// ListObjectsWithContext is the same as ListObjects with the addition of
5872// the ability to pass a context and additional request options.
5873//
5874// See ListObjects for details on how to use this API operation.
5875//
5876// The context must be non-nil and will be used for request cancellation. If
5877// the context is nil a panic will occur. In the future the SDK may create
5878// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5879// for more information on using Contexts.
5880func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
5881	req, out := c.ListObjectsRequest(input)
5882	req.SetContext(ctx)
5883	req.ApplyOptions(opts...)
5884	return out, req.Send()
5885}
5886
5887// ListObjectsPages iterates over the pages of a ListObjects operation,
5888// calling the "fn" function with the response data for each page. To stop
5889// iterating, return false from the fn function.
5890//
5891// See ListObjects method for more information on how to use this operation.
5892//
5893// Note: This operation can generate multiple requests to a service.
5894//
5895//    // Example iterating over at most 3 pages of a ListObjects operation.
5896//    pageNum := 0
5897//    err := client.ListObjectsPages(params,
5898//        func(page *s3.ListObjectsOutput, lastPage bool) bool {
5899//            pageNum++
5900//            fmt.Println(page)
5901//            return pageNum <= 3
5902//        })
5903//
5904func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
5905	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
5906}
5907
5908// ListObjectsPagesWithContext same as ListObjectsPages except
5909// it takes a Context and allows setting request options on the pages.
5910//
5911// The context must be non-nil and will be used for request cancellation. If
5912// the context is nil a panic will occur. In the future the SDK may create
5913// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5914// for more information on using Contexts.
5915func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
5916	p := request.Pagination{
5917		NewRequest: func() (*request.Request, error) {
5918			var inCpy *ListObjectsInput
5919			if input != nil {
5920				tmp := *input
5921				inCpy = &tmp
5922			}
5923			req, _ := c.ListObjectsRequest(inCpy)
5924			req.SetContext(ctx)
5925			req.ApplyOptions(opts...)
5926			return req, nil
5927		},
5928	}
5929
5930	for p.Next() {
5931		if !fn(p.Page().(*ListObjectsOutput), !p.HasNextPage()) {
5932			break
5933		}
5934	}
5935
5936	return p.Err()
5937}
5938
5939const opListObjectsV2 = "ListObjectsV2"
5940
5941// ListObjectsV2Request generates a "aws/request.Request" representing the
5942// client's request for the ListObjectsV2 operation. The "output" return
5943// value will be populated with the request's response once the request completes
5944// successfully.
5945//
5946// Use "Send" method on the returned Request to send the API call to the service.
5947// the "output" return value is not valid until after Send returns without error.
5948//
5949// See ListObjectsV2 for more information on using the ListObjectsV2
5950// API call, and error handling.
5951//
5952// This method is useful when you want to inject custom logic or configuration
5953// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5954//
5955//
5956//    // Example sending a request using the ListObjectsV2Request method.
5957//    req, resp := client.ListObjectsV2Request(params)
5958//
5959//    err := req.Send()
5960//    if err == nil { // resp is now filled
5961//        fmt.Println(resp)
5962//    }
5963//
5964// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
5965func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
5966	op := &request.Operation{
5967		Name:       opListObjectsV2,
5968		HTTPMethod: "GET",
5969		HTTPPath:   "/{Bucket}?list-type=2",
5970		Paginator: &request.Paginator{
5971			InputTokens:     []string{"ContinuationToken"},
5972			OutputTokens:    []string{"NextContinuationToken"},
5973			LimitToken:      "MaxKeys",
5974			TruncationToken: "",
5975		},
5976	}
5977
5978	if input == nil {
5979		input = &ListObjectsV2Input{}
5980	}
5981
5982	output = &ListObjectsV2Output{}
5983	req = c.newRequest(op, input, output)
5984	return
5985}
5986
5987// ListObjectsV2 API operation for Amazon Simple Storage Service.
5988//
5989// Returns some or all (up to 1,000) of the objects in a bucket. You can use
5990// the request parameters as selection criteria to return a subset of the objects
5991// in a bucket. A 200 OK response can contain valid or invalid XML. Make sure
5992// to design your application to parse the contents of the response and handle
5993// it appropriately.
5994//
5995// To use this operation, you must have READ access to the bucket.
5996//
5997// To use this operation in an AWS Identity and Access Management (IAM) policy,
5998// you must have permissions to perform the s3:ListBucket action. The bucket
5999// owner has this permission by default and can grant this permission to others.
6000// For more information about permissions, see Permissions Related to Bucket
6001// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6002// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
6003//
6004// This section describes the latest revision of the API. We recommend that
6005// you use this revised API for application development. For backward compatibility,
6006// Amazon S3 continues to support the prior version of this API, ListObjects.
6007//
6008// To get a list of your buckets, see ListBuckets.
6009//
6010// The following operations are related to ListObjectsV2:
6011//
6012//    * GetObject
6013//
6014//    * PutObject
6015//
6016//    * CreateBucket
6017//
6018// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6019// with awserr.Error's Code and Message methods to get detailed information about
6020// the error.
6021//
6022// See the AWS API reference guide for Amazon Simple Storage Service's
6023// API operation ListObjectsV2 for usage and error information.
6024//
6025// Returned Error Codes:
6026//   * ErrCodeNoSuchBucket "NoSuchBucket"
6027//   The specified bucket does not exist.
6028//
6029// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
6030func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
6031	req, out := c.ListObjectsV2Request(input)
6032	return out, req.Send()
6033}
6034
6035// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
6036// the ability to pass a context and additional request options.
6037//
6038// See ListObjectsV2 for details on how to use this API operation.
6039//
6040// The context must be non-nil and will be used for request cancellation. If
6041// the context is nil a panic will occur. In the future the SDK may create
6042// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6043// for more information on using Contexts.
6044func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
6045	req, out := c.ListObjectsV2Request(input)
6046	req.SetContext(ctx)
6047	req.ApplyOptions(opts...)
6048	return out, req.Send()
6049}
6050
6051// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
6052// calling the "fn" function with the response data for each page. To stop
6053// iterating, return false from the fn function.
6054//
6055// See ListObjectsV2 method for more information on how to use this operation.
6056//
6057// Note: This operation can generate multiple requests to a service.
6058//
6059//    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
6060//    pageNum := 0
6061//    err := client.ListObjectsV2Pages(params,
6062//        func(page *s3.ListObjectsV2Output, lastPage bool) bool {
6063//            pageNum++
6064//            fmt.Println(page)
6065//            return pageNum <= 3
6066//        })
6067//
6068func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
6069	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
6070}
6071
6072// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
6073// it takes a Context and allows setting request options on the pages.
6074//
6075// The context must be non-nil and will be used for request cancellation. If
6076// the context is nil a panic will occur. In the future the SDK may create
6077// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6078// for more information on using Contexts.
6079func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
6080	p := request.Pagination{
6081		NewRequest: func() (*request.Request, error) {
6082			var inCpy *ListObjectsV2Input
6083			if input != nil {
6084				tmp := *input
6085				inCpy = &tmp
6086			}
6087			req, _ := c.ListObjectsV2Request(inCpy)
6088			req.SetContext(ctx)
6089			req.ApplyOptions(opts...)
6090			return req, nil
6091		},
6092	}
6093
6094	for p.Next() {
6095		if !fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage()) {
6096			break
6097		}
6098	}
6099
6100	return p.Err()
6101}
6102
6103const opListParts = "ListParts"
6104
6105// ListPartsRequest generates a "aws/request.Request" representing the
6106// client's request for the ListParts operation. The "output" return
6107// value will be populated with the request's response once the request completes
6108// successfully.
6109//
6110// Use "Send" method on the returned Request to send the API call to the service.
6111// the "output" return value is not valid until after Send returns without error.
6112//
6113// See ListParts for more information on using the ListParts
6114// API call, and error handling.
6115//
6116// This method is useful when you want to inject custom logic or configuration
6117// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6118//
6119//
6120//    // Example sending a request using the ListPartsRequest method.
6121//    req, resp := client.ListPartsRequest(params)
6122//
6123//    err := req.Send()
6124//    if err == nil { // resp is now filled
6125//        fmt.Println(resp)
6126//    }
6127//
6128// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6129func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
6130	op := &request.Operation{
6131		Name:       opListParts,
6132		HTTPMethod: "GET",
6133		HTTPPath:   "/{Bucket}/{Key+}",
6134		Paginator: &request.Paginator{
6135			InputTokens:     []string{"PartNumberMarker"},
6136			OutputTokens:    []string{"NextPartNumberMarker"},
6137			LimitToken:      "MaxParts",
6138			TruncationToken: "IsTruncated",
6139		},
6140	}
6141
6142	if input == nil {
6143		input = &ListPartsInput{}
6144	}
6145
6146	output = &ListPartsOutput{}
6147	req = c.newRequest(op, input, output)
6148	return
6149}
6150
6151// ListParts API operation for Amazon Simple Storage Service.
6152//
6153// Lists the parts that have been uploaded for a specific multipart upload.
6154// This operation must include the upload ID, which you obtain by sending the
6155// initiate multipart upload request (see CreateMultipartUpload). This request
6156// returns a maximum of 1,000 uploaded parts. The default number of parts returned
6157// is 1,000 parts. You can restrict the number of parts returned by specifying
6158// the max-parts request parameter. If your multipart upload consists of more
6159// than 1,000 parts, the response returns an IsTruncated field with the value
6160// of true, and a NextPartNumberMarker element. In subsequent ListParts requests
6161// you can include the part-number-marker query string parameter and set its
6162// value to the NextPartNumberMarker field value from the previous response.
6163//
6164// For more information on multipart uploads, see Uploading Objects Using Multipart
6165// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
6166//
6167// For information on permissions required to use the multipart upload API,
6168// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
6169//
6170// The following operations are related to ListParts:
6171//
6172//    * CreateMultipartUpload
6173//
6174//    * UploadPart
6175//
6176//    * CompleteMultipartUpload
6177//
6178//    * AbortMultipartUpload
6179//
6180//    * ListMultipartUploads
6181//
6182// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6183// with awserr.Error's Code and Message methods to get detailed information about
6184// the error.
6185//
6186// See the AWS API reference guide for Amazon Simple Storage Service's
6187// API operation ListParts for usage and error information.
6188// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6189func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
6190	req, out := c.ListPartsRequest(input)
6191	return out, req.Send()
6192}
6193
6194// ListPartsWithContext is the same as ListParts with the addition of
6195// the ability to pass a context and additional request options.
6196//
6197// See ListParts for details on how to use this API operation.
6198//
6199// The context must be non-nil and will be used for request cancellation. If
6200// the context is nil a panic will occur. In the future the SDK may create
6201// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6202// for more information on using Contexts.
6203func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
6204	req, out := c.ListPartsRequest(input)
6205	req.SetContext(ctx)
6206	req.ApplyOptions(opts...)
6207	return out, req.Send()
6208}
6209
6210// ListPartsPages iterates over the pages of a ListParts operation,
6211// calling the "fn" function with the response data for each page. To stop
6212// iterating, return false from the fn function.
6213//
6214// See ListParts method for more information on how to use this operation.
6215//
6216// Note: This operation can generate multiple requests to a service.
6217//
6218//    // Example iterating over at most 3 pages of a ListParts operation.
6219//    pageNum := 0
6220//    err := client.ListPartsPages(params,
6221//        func(page *s3.ListPartsOutput, lastPage bool) bool {
6222//            pageNum++
6223//            fmt.Println(page)
6224//            return pageNum <= 3
6225//        })
6226//
6227func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
6228	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
6229}
6230
6231// ListPartsPagesWithContext same as ListPartsPages except
6232// it takes a Context and allows setting request options on the pages.
6233//
6234// The context must be non-nil and will be used for request cancellation. If
6235// the context is nil a panic will occur. In the future the SDK may create
6236// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6237// for more information on using Contexts.
6238func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
6239	p := request.Pagination{
6240		NewRequest: func() (*request.Request, error) {
6241			var inCpy *ListPartsInput
6242			if input != nil {
6243				tmp := *input
6244				inCpy = &tmp
6245			}
6246			req, _ := c.ListPartsRequest(inCpy)
6247			req.SetContext(ctx)
6248			req.ApplyOptions(opts...)
6249			return req, nil
6250		},
6251	}
6252
6253	for p.Next() {
6254		if !fn(p.Page().(*ListPartsOutput), !p.HasNextPage()) {
6255			break
6256		}
6257	}
6258
6259	return p.Err()
6260}
6261
6262const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
6263
6264// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
6265// client's request for the PutBucketAccelerateConfiguration operation. The "output" return
6266// value will be populated with the request's response once the request completes
6267// successfully.
6268//
6269// Use "Send" method on the returned Request to send the API call to the service.
6270// the "output" return value is not valid until after Send returns without error.
6271//
6272// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
6273// API call, and error handling.
6274//
6275// This method is useful when you want to inject custom logic or configuration
6276// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6277//
6278//
6279//    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
6280//    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
6281//
6282//    err := req.Send()
6283//    if err == nil { // resp is now filled
6284//        fmt.Println(resp)
6285//    }
6286//
6287// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6288func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
6289	op := &request.Operation{
6290		Name:       opPutBucketAccelerateConfiguration,
6291		HTTPMethod: "PUT",
6292		HTTPPath:   "/{Bucket}?accelerate",
6293	}
6294
6295	if input == nil {
6296		input = &PutBucketAccelerateConfigurationInput{}
6297	}
6298
6299	output = &PutBucketAccelerateConfigurationOutput{}
6300	req = c.newRequest(op, input, output)
6301	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6302	return
6303}
6304
6305// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
6306//
6307// Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
6308// Acceleration is a bucket-level feature that enables you to perform faster
6309// data transfers to Amazon S3.
6310//
6311// To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration
6312// action. The bucket owner has this permission by default. The bucket owner
6313// can grant this permission to others. For more information about permissions,
6314// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6315// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
6316//
6317// The Transfer Acceleration state of a bucket can be set to one of the following
6318// two values:
6319//
6320//    * Enabled – Enables accelerated data transfers to the bucket.
6321//
6322//    * Suspended – Disables accelerated data transfers to the bucket.
6323//
6324// The GetBucketAccelerateConfiguration operation returns the transfer acceleration
6325// state of a bucket.
6326//
6327// After setting the Transfer Acceleration state of a bucket to Enabled, it
6328// might take up to thirty minutes before the data transfer rates to the bucket
6329// increase.
6330//
6331// The name of the bucket used for Transfer Acceleration must be DNS-compliant
6332// and must not contain periods (".").
6333//
6334// For more information about transfer acceleration, see Transfer Acceleration
6335// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
6336//
6337// The following operations are related to PutBucketAccelerateConfiguration:
6338//
6339//    * GetBucketAccelerateConfiguration
6340//
6341//    * CreateBucket
6342//
6343// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6344// with awserr.Error's Code and Message methods to get detailed information about
6345// the error.
6346//
6347// See the AWS API reference guide for Amazon Simple Storage Service's
6348// API operation PutBucketAccelerateConfiguration for usage and error information.
6349// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6350func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
6351	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6352	return out, req.Send()
6353}
6354
6355// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
6356// the ability to pass a context and additional request options.
6357//
6358// See PutBucketAccelerateConfiguration for details on how to use this API operation.
6359//
6360// The context must be non-nil and will be used for request cancellation. If
6361// the context is nil a panic will occur. In the future the SDK may create
6362// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6363// for more information on using Contexts.
6364func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
6365	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6366	req.SetContext(ctx)
6367	req.ApplyOptions(opts...)
6368	return out, req.Send()
6369}
6370
6371const opPutBucketAcl = "PutBucketAcl"
6372
6373// PutBucketAclRequest generates a "aws/request.Request" representing the
6374// client's request for the PutBucketAcl operation. The "output" return
6375// value will be populated with the request's response once the request completes
6376// successfully.
6377//
6378// Use "Send" method on the returned Request to send the API call to the service.
6379// the "output" return value is not valid until after Send returns without error.
6380//
6381// See PutBucketAcl for more information on using the PutBucketAcl
6382// API call, and error handling.
6383//
6384// This method is useful when you want to inject custom logic or configuration
6385// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6386//
6387//
6388//    // Example sending a request using the PutBucketAclRequest method.
6389//    req, resp := client.PutBucketAclRequest(params)
6390//
6391//    err := req.Send()
6392//    if err == nil { // resp is now filled
6393//        fmt.Println(resp)
6394//    }
6395//
6396// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
6397func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
6398	op := &request.Operation{
6399		Name:       opPutBucketAcl,
6400		HTTPMethod: "PUT",
6401		HTTPPath:   "/{Bucket}?acl",
6402	}
6403
6404	if input == nil {
6405		input = &PutBucketAclInput{}
6406	}
6407
6408	output = &PutBucketAclOutput{}
6409	req = c.newRequest(op, input, output)
6410	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6411	req.Handlers.Build.PushBackNamed(request.NamedHandler{
6412		Name: "contentMd5Handler",
6413		Fn:   checksum.AddBodyContentMD5Handler,
6414	})
6415	return
6416}
6417
6418// PutBucketAcl API operation for Amazon Simple Storage Service.
6419//
6420// Sets the permissions on an existing bucket using access control lists (ACL).
6421// For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
6422// To set the ACL of a bucket, you must have WRITE_ACP permission.
6423//
6424// You can use one of the following two ways to set a bucket's permissions:
6425//
6426//    * Specify the ACL in the request body
6427//
6428//    * Specify permissions using request headers
6429//
6430// You cannot specify access permission using both the body and the request
6431// headers.
6432//
6433// Depending on your application needs, you may choose to set the ACL on a bucket
6434// using either the request body or the headers. For example, if you have an
6435// existing application that updates a bucket ACL using the request body, then
6436// you can continue to use that approach.
6437//
6438// Access Permissions
6439//
6440// You can set access permissions using one of the following methods:
6441//
6442//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
6443//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
6444//    predefined set of grantees and permissions. Specify the canned ACL name
6445//    as the value of x-amz-acl. If you use this header, you cannot use other
6446//    access control-specific headers in your request. For more information,
6447//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
6448//
6449//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
6450//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
6451//    these headers, you specify explicit access permissions and grantees (AWS
6452//    accounts or Amazon S3 groups) who will receive the permission. If you
6453//    use these ACL-specific headers, you cannot use the x-amz-acl header to
6454//    set a canned ACL. These parameters map to the set of permissions that
6455//    Amazon S3 supports in an ACL. For more information, see Access Control
6456//    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
6457//    You specify each grantee as a type=value pair, where the type is one of
6458//    the following: id – if the value specified is the canonical user ID
6459//    of an AWS account uri – if you are granting permissions to a predefined
6460//    group emailAddress – if the value specified is the email address of
6461//    an AWS account Using email addresses to specify a grantee is only supported
6462//    in the following AWS Regions: US East (N. Virginia) US West (N. California)
6463//    US West (Oregon) Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific
6464//    (Tokyo) Europe (Ireland) South America (São Paulo) For a list of all
6465//    the Amazon S3 supported Regions and endpoints, see Regions and Endpoints
6466//    (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in
6467//    the AWS General Reference. For example, the following x-amz-grant-write
6468//    header grants create, overwrite, and delete objects permission to LogDelivery
6469//    group predefined by Amazon S3 and two AWS accounts identified by their
6470//    email addresses. x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
6471//    id="111122223333", id="555566667777"
6472//
6473// You can use either a canned ACL or specify access permissions explicitly.
6474// You cannot do both.
6475//
6476// Grantee Values
6477//
6478// You can specify the person (grantee) to whom you're assigning access rights
6479// (using request elements) in the following ways:
6480//
6481//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6482//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
6483//    </Grantee> DisplayName is optional and ignored in the request
6484//
6485//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6486//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
6487//
6488//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6489//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
6490//    The grantee is resolved to the CanonicalUser and, in a response to a GET
6491//    Object acl request, appears as the CanonicalUser. Using email addresses
6492//    to specify a grantee is only supported in the following AWS Regions: US
6493//    East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
6494//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
6495//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
6496//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
6497//    in the AWS General Reference.
6498//
6499// Related Resources
6500//
6501//    * CreateBucket
6502//
6503//    * DeleteBucket
6504//
6505//    * GetObjectAcl
6506//
6507// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6508// with awserr.Error's Code and Message methods to get detailed information about
6509// the error.
6510//
6511// See the AWS API reference guide for Amazon Simple Storage Service's
6512// API operation PutBucketAcl for usage and error information.
6513// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
6514func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
6515	req, out := c.PutBucketAclRequest(input)
6516	return out, req.Send()
6517}
6518
6519// PutBucketAclWithContext is the same as PutBucketAcl with the addition of
6520// the ability to pass a context and additional request options.
6521//
6522// See PutBucketAcl for details on how to use this API operation.
6523//
6524// The context must be non-nil and will be used for request cancellation. If
6525// the context is nil a panic will occur. In the future the SDK may create
6526// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6527// for more information on using Contexts.
6528func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
6529	req, out := c.PutBucketAclRequest(input)
6530	req.SetContext(ctx)
6531	req.ApplyOptions(opts...)
6532	return out, req.Send()
6533}
6534
6535const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
6536
6537// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
6538// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
6539// value will be populated with the request's response once the request completes
6540// successfully.
6541//
6542// Use "Send" method on the returned Request to send the API call to the service.
6543// the "output" return value is not valid until after Send returns without error.
6544//
6545// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
6546// API call, and error handling.
6547//
6548// This method is useful when you want to inject custom logic or configuration
6549// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6550//
6551//
6552//    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
6553//    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
6554//
6555//    err := req.Send()
6556//    if err == nil { // resp is now filled
6557//        fmt.Println(resp)
6558//    }
6559//
6560// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
6561func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
6562	op := &request.Operation{
6563		Name:       opPutBucketAnalyticsConfiguration,
6564		HTTPMethod: "PUT",
6565		HTTPPath:   "/{Bucket}?analytics",
6566	}
6567
6568	if input == nil {
6569		input = &PutBucketAnalyticsConfigurationInput{}
6570	}
6571
6572	output = &PutBucketAnalyticsConfigurationOutput{}
6573	req = c.newRequest(op, input, output)
6574	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6575	return
6576}
6577
6578// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
6579//
6580// Sets an analytics configuration for the bucket (specified by the analytics
6581// configuration ID). You can have up to 1,000 analytics configurations per
6582// bucket.
6583//
6584// You can choose to have storage class analysis export analysis reports sent
6585// to a comma-separated values (CSV) flat file. See the DataExport request element.
6586// Reports are updated daily and are based on the object filters that you configure.
6587// When selecting data export, you specify a destination bucket and an optional
6588// destination prefix where the file is written. You can export the data to
6589// a destination bucket in a different account. However, the destination bucket
6590// must be in the same Region as the bucket that you are making the PUT analytics
6591// configuration to. For more information, see Amazon S3 Analytics – Storage
6592// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
6593//
6594// You must create a bucket policy on the destination bucket where the exported
6595// file is written to grant permissions to Amazon S3 to write objects to the
6596// bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory
6597// and Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
6598//
6599// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
6600// action. The bucket owner has this permission by default. The bucket owner
6601// can grant this permission to others. For more information about permissions,
6602// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6603// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
6604//
6605// Special Errors
6606//
6607//    * HTTP Error: HTTP 400 Bad Request Code: InvalidArgument Cause: Invalid
6608//    argument.
6609//
6610//    * HTTP Error: HTTP 400 Bad Request Code: TooManyConfigurations Cause:
6611//    You are attempting to create a new configuration but have already reached
6612//    the 1,000-configuration limit.
6613//
6614//    * HTTP Error: HTTP 403 Forbidden Code: AccessDenied Cause: You are not
6615//    the owner of the specified bucket, or you do not have the s3:PutAnalyticsConfiguration
6616//    bucket permission to set the configuration on the bucket.
6617//
6618// Related Resources
6619//
6620//    *
6621//
6622//    *
6623//
6624//    *
6625//
6626// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6627// with awserr.Error's Code and Message methods to get detailed information about
6628// the error.
6629//
6630// See the AWS API reference guide for Amazon Simple Storage Service's
6631// API operation PutBucketAnalyticsConfiguration for usage and error information.
6632// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
6633func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
6634	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
6635	return out, req.Send()
6636}
6637
6638// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
6639// the ability to pass a context and additional request options.
6640//
6641// See PutBucketAnalyticsConfiguration for details on how to use this API operation.
6642//
6643// The context must be non-nil and will be used for request cancellation. If
6644// the context is nil a panic will occur. In the future the SDK may create
6645// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6646// for more information on using Contexts.
6647func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
6648	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
6649	req.SetContext(ctx)
6650	req.ApplyOptions(opts...)
6651	return out, req.Send()
6652}
6653
6654const opPutBucketCors = "PutBucketCors"
6655
6656// PutBucketCorsRequest generates a "aws/request.Request" representing the
6657// client's request for the PutBucketCors operation. The "output" return
6658// value will be populated with the request's response once the request completes
6659// successfully.
6660//
6661// Use "Send" method on the returned Request to send the API call to the service.
6662// the "output" return value is not valid until after Send returns without error.
6663//
6664// See PutBucketCors for more information on using the PutBucketCors
6665// API call, and error handling.
6666//
6667// This method is useful when you want to inject custom logic or configuration
6668// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6669//
6670//
6671//    // Example sending a request using the PutBucketCorsRequest method.
6672//    req, resp := client.PutBucketCorsRequest(params)
6673//
6674//    err := req.Send()
6675//    if err == nil { // resp is now filled
6676//        fmt.Println(resp)
6677//    }
6678//
6679// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
6680func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
6681	op := &request.Operation{
6682		Name:       opPutBucketCors,
6683		HTTPMethod: "PUT",
6684		HTTPPath:   "/{Bucket}?cors",
6685	}
6686
6687	if input == nil {
6688		input = &PutBucketCorsInput{}
6689	}
6690
6691	output = &PutBucketCorsOutput{}
6692	req = c.newRequest(op, input, output)
6693	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6694	req.Handlers.Build.PushBackNamed(request.NamedHandler{
6695		Name: "contentMd5Handler",
6696		Fn:   checksum.AddBodyContentMD5Handler,
6697	})
6698	return
6699}
6700
6701// PutBucketCors API operation for Amazon Simple Storage Service.
6702//
6703// Sets the cors configuration for your bucket. If the configuration exists,
6704// Amazon S3 replaces it.
6705//
6706// To use this operation, you must be allowed to perform the s3:PutBucketCORS
6707// action. By default, the bucket owner has this permission and can grant it
6708// to others.
6709//
6710// You set this configuration on a bucket so that the bucket can service cross-origin
6711// requests. For example, you might want to enable a request whose origin is
6712// http://www.example.com to access your Amazon S3 bucket at my.example.bucket.com
6713// by using the browser's XMLHttpRequest capability.
6714//
6715// To enable cross-origin resource sharing (CORS) on a bucket, you add the cors
6716// subresource to the bucket. The cors subresource is an XML document in which
6717// you configure rules that identify origins and the HTTP methods that can be
6718// executed on your bucket. The document is limited to 64 KB in size.
6719//
6720// When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request)
6721// against a bucket, it evaluates the cors configuration on the bucket and uses
6722// the first CORSRule rule that matches the incoming browser request to enable
6723// a cross-origin request. For a rule to match, the following conditions must
6724// be met:
6725//
6726//    * The request's Origin header must match AllowedOrigin elements.
6727//
6728//    * The request method (for example, GET, PUT, HEAD, and so on) or the Access-Control-Request-Method
6729//    header in case of a pre-flight OPTIONS request must be one of the AllowedMethod
6730//    elements.
6731//
6732//    * Every header specified in the Access-Control-Request-Headers request
6733//    header of a pre-flight request must match an AllowedHeader element.
6734//
6735// For more information about CORS, go to Enabling Cross-Origin Resource Sharing
6736// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
6737// Simple Storage Service Developer Guide.
6738//
6739// Related Resources
6740//
6741//    * GetBucketCors
6742//
6743//    * DeleteBucketCors
6744//
6745//    * RESTOPTIONSobject
6746//
6747// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6748// with awserr.Error's Code and Message methods to get detailed information about
6749// the error.
6750//
6751// See the AWS API reference guide for Amazon Simple Storage Service's
6752// API operation PutBucketCors for usage and error information.
6753// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
6754func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
6755	req, out := c.PutBucketCorsRequest(input)
6756	return out, req.Send()
6757}
6758
6759// PutBucketCorsWithContext is the same as PutBucketCors with the addition of
6760// the ability to pass a context and additional request options.
6761//
6762// See PutBucketCors for details on how to use this API operation.
6763//
6764// The context must be non-nil and will be used for request cancellation. If
6765// the context is nil a panic will occur. In the future the SDK may create
6766// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6767// for more information on using Contexts.
6768func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
6769	req, out := c.PutBucketCorsRequest(input)
6770	req.SetContext(ctx)
6771	req.ApplyOptions(opts...)
6772	return out, req.Send()
6773}
6774
6775const opPutBucketEncryption = "PutBucketEncryption"
6776
6777// PutBucketEncryptionRequest generates a "aws/request.Request" representing the
6778// client's request for the PutBucketEncryption operation. The "output" return
6779// value will be populated with the request's response once the request completes
6780// successfully.
6781//
6782// Use "Send" method on the returned Request to send the API call to the service.
6783// the "output" return value is not valid until after Send returns without error.
6784//
6785// See PutBucketEncryption for more information on using the PutBucketEncryption
6786// API call, and error handling.
6787//
6788// This method is useful when you want to inject custom logic or configuration
6789// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6790//
6791//
6792//    // Example sending a request using the PutBucketEncryptionRequest method.
6793//    req, resp := client.PutBucketEncryptionRequest(params)
6794//
6795//    err := req.Send()
6796//    if err == nil { // resp is now filled
6797//        fmt.Println(resp)
6798//    }
6799//
6800// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
6801func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
6802	op := &request.Operation{
6803		Name:       opPutBucketEncryption,
6804		HTTPMethod: "PUT",
6805		HTTPPath:   "/{Bucket}?encryption",
6806	}
6807
6808	if input == nil {
6809		input = &PutBucketEncryptionInput{}
6810	}
6811
6812	output = &PutBucketEncryptionOutput{}
6813	req = c.newRequest(op, input, output)
6814	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6815	req.Handlers.Build.PushBackNamed(request.NamedHandler{
6816		Name: "contentMd5Handler",
6817		Fn:   checksum.AddBodyContentMD5Handler,
6818	})
6819	return
6820}
6821
6822// PutBucketEncryption API operation for Amazon Simple Storage Service.
6823//
6824// This implementation of the PUT operation uses the encryption subresource
6825// to set the default encryption state of an existing bucket.
6826//
6827// This implementation of the PUT operation sets default encryption for a bucket
6828// using server-side encryption with Amazon S3-managed keys SSE-S3 or AWS KMS
6829// customer master keys (CMKs) (SSE-KMS). For information about the Amazon S3
6830// default encryption feature, see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html).
6831//
6832// This operation requires AWS Signature Version 4. For more information, see
6833// Authenticating Requests (AWS Signature Version 4) (sig-v4-authenticating-requests.html).
6834//
6835// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
6836// action. The bucket owner has this permission by default. The bucket owner
6837// can grant this permission to others. For more information about permissions,
6838// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6839// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
6840// in the Amazon Simple Storage Service Developer Guide.
6841//
6842// Related Resources
6843//
6844//    * GetBucketEncryption
6845//
6846//    * DeleteBucketEncryption
6847//
6848// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6849// with awserr.Error's Code and Message methods to get detailed information about
6850// the error.
6851//
6852// See the AWS API reference guide for Amazon Simple Storage Service's
6853// API operation PutBucketEncryption for usage and error information.
6854// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
6855func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
6856	req, out := c.PutBucketEncryptionRequest(input)
6857	return out, req.Send()
6858}
6859
6860// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
6861// the ability to pass a context and additional request options.
6862//
6863// See PutBucketEncryption for details on how to use this API operation.
6864//
6865// The context must be non-nil and will be used for request cancellation. If
6866// the context is nil a panic will occur. In the future the SDK may create
6867// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6868// for more information on using Contexts.
6869func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
6870	req, out := c.PutBucketEncryptionRequest(input)
6871	req.SetContext(ctx)
6872	req.ApplyOptions(opts...)
6873	return out, req.Send()
6874}
6875
6876const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
6877
6878// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
6879// client's request for the PutBucketInventoryConfiguration operation. The "output" return
6880// value will be populated with the request's response once the request completes
6881// successfully.
6882//
6883// Use "Send" method on the returned Request to send the API call to the service.
6884// the "output" return value is not valid until after Send returns without error.
6885//
6886// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
6887// API call, and error handling.
6888//
6889// This method is useful when you want to inject custom logic or configuration
6890// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6891//
6892//
6893//    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
6894//    req, resp := client.PutBucketInventoryConfigurationRequest(params)
6895//
6896//    err := req.Send()
6897//    if err == nil { // resp is now filled
6898//        fmt.Println(resp)
6899//    }
6900//
6901// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
6902func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
6903	op := &request.Operation{
6904		Name:       opPutBucketInventoryConfiguration,
6905		HTTPMethod: "PUT",
6906		HTTPPath:   "/{Bucket}?inventory",
6907	}
6908
6909	if input == nil {
6910		input = &PutBucketInventoryConfigurationInput{}
6911	}
6912
6913	output = &PutBucketInventoryConfigurationOutput{}
6914	req = c.newRequest(op, input, output)
6915	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6916	return
6917}
6918
6919// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
6920//
6921// This implementation of the PUT operation adds an inventory configuration
6922// (identified by the inventory ID) to the bucket. You can have up to 1,000
6923// inventory configurations per bucket.
6924//
6925// Amazon S3 inventory generates inventories of the objects in the bucket on
6926// a daily or weekly basis, and the results are published to a flat file. The
6927// bucket that is inventoried is called the source bucket, and the bucket where
6928// the inventory flat file is stored is called the destination bucket. The destination
6929// bucket must be in the same AWS Region as the source bucket.
6930//
6931// When you configure an inventory for a source bucket, you specify the destination
6932// bucket where you want the inventory to be stored, and whether to generate
6933// the inventory daily or weekly. You can also configure what object metadata
6934// to include and whether to inventory all object versions or only current versions.
6935// For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
6936// in the Amazon Simple Storage Service Developer Guide.
6937//
6938// You must create a bucket policy on the destination bucket to grant permissions
6939// to Amazon S3 to write objects to the bucket in the defined location. For
6940// an example policy, see Granting Permissions for Amazon S3 Inventory and Storage
6941// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
6942//
6943// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
6944// action. The bucket owner has this permission by default and can grant this
6945// permission to others. For more information about permissions, see Permissions
6946// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6947// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
6948// in the Amazon Simple Storage Service Developer Guide.
6949//
6950// Special Errors
6951//
6952//    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
6953//
6954//    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
6955//    attempting to create a new configuration but have already reached the
6956//    1,000-configuration limit.
6957//
6958//    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
6959//    of the specified bucket, or you do not have the s3:PutInventoryConfiguration
6960//    bucket permission to set the configuration on the bucket.
6961//
6962// Related Resources
6963//
6964//    * GetBucketInventoryConfiguration
6965//
6966//    * DeleteBucketInventoryConfiguration
6967//
6968//    * ListBucketInventoryConfigurations
6969//
6970// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6971// with awserr.Error's Code and Message methods to get detailed information about
6972// the error.
6973//
6974// See the AWS API reference guide for Amazon Simple Storage Service's
6975// API operation PutBucketInventoryConfiguration for usage and error information.
6976// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
6977func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
6978	req, out := c.PutBucketInventoryConfigurationRequest(input)
6979	return out, req.Send()
6980}
6981
6982// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
6983// the ability to pass a context and additional request options.
6984//
6985// See PutBucketInventoryConfiguration for details on how to use this API operation.
6986//
6987// The context must be non-nil and will be used for request cancellation. If
6988// the context is nil a panic will occur. In the future the SDK may create
6989// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6990// for more information on using Contexts.
6991func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
6992	req, out := c.PutBucketInventoryConfigurationRequest(input)
6993	req.SetContext(ctx)
6994	req.ApplyOptions(opts...)
6995	return out, req.Send()
6996}
6997
6998const opPutBucketLifecycle = "PutBucketLifecycle"
6999
7000// PutBucketLifecycleRequest generates a "aws/request.Request" representing the
7001// client's request for the PutBucketLifecycle operation. The "output" return
7002// value will be populated with the request's response once the request completes
7003// successfully.
7004//
7005// Use "Send" method on the returned Request to send the API call to the service.
7006// the "output" return value is not valid until after Send returns without error.
7007//
7008// See PutBucketLifecycle for more information on using the PutBucketLifecycle
7009// API call, and error handling.
7010//
7011// This method is useful when you want to inject custom logic or configuration
7012// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7013//
7014//
7015//    // Example sending a request using the PutBucketLifecycleRequest method.
7016//    req, resp := client.PutBucketLifecycleRequest(params)
7017//
7018//    err := req.Send()
7019//    if err == nil { // resp is now filled
7020//        fmt.Println(resp)
7021//    }
7022//
7023// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7024//
7025// Deprecated: PutBucketLifecycle has been deprecated
7026func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
7027	if c.Client.Config.Logger != nil {
7028		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
7029	}
7030	op := &request.Operation{
7031		Name:       opPutBucketLifecycle,
7032		HTTPMethod: "PUT",
7033		HTTPPath:   "/{Bucket}?lifecycle",
7034	}
7035
7036	if input == nil {
7037		input = &PutBucketLifecycleInput{}
7038	}
7039
7040	output = &PutBucketLifecycleOutput{}
7041	req = c.newRequest(op, input, output)
7042	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7043	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7044		Name: "contentMd5Handler",
7045		Fn:   checksum.AddBodyContentMD5Handler,
7046	})
7047	return
7048}
7049
7050// PutBucketLifecycle API operation for Amazon Simple Storage Service.
7051//
7052//
7053// For an updated version of this API, see PutBucketLifecycleConfiguration.
7054// This version has been deprecated. Existing lifecycle configurations will
7055// work. For new lifecycle configurations, use the updated API.
7056//
7057// Creates a new lifecycle configuration for the bucket or replaces an existing
7058// lifecycle configuration. For information about lifecycle configuration, see
7059// Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7060// in the Amazon Simple Storage Service Developer Guide.
7061//
7062// By default, all Amazon S3 resources, including buckets, objects, and related
7063// subresources (for example, lifecycle configuration and website configuration)
7064// are private. Only the resource owner, the AWS account that created the resource,
7065// can access it. The resource owner can optionally grant access permissions
7066// to others by writing an access policy. For this operation, users must get
7067// the s3:PutLifecycleConfiguration permission.
7068//
7069// You can also explicitly deny permissions. Explicit denial also supersedes
7070// any other permissions. If you want to prevent users or accounts from removing
7071// or deleting objects from your bucket, you must deny them permissions for
7072// the following actions:
7073//
7074//    * s3:DeleteObject
7075//
7076//    * s3:DeleteObjectVersion
7077//
7078//    * s3:PutLifecycleConfiguration
7079//
7080// For more information about permissions, see Managing Access Permissions to
7081// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
7082// in the Amazon Simple Storage Service Developer Guide.
7083//
7084// For more examples of transitioning objects to storage classes such as STANDARD_IA
7085// or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#lifecycle-configuration-examples).
7086//
7087// Related Resources
7088//
7089//    * GetBucketLifecycle(Deprecated)
7090//
7091//    * GetBucketLifecycleConfiguration
7092//
7093//    *
7094//
7095//    * By default, a resource owner—in this case, a bucket owner, which is
7096//    the AWS account that created the bucket—can perform any of the operations.
7097//    A resource owner can also grant others permission to perform the operation.
7098//    For more information, see the following topics in the Amazon Simple Storage
7099//    Service Developer Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
7100//    Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
7101//
7102// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7103// with awserr.Error's Code and Message methods to get detailed information about
7104// the error.
7105//
7106// See the AWS API reference guide for Amazon Simple Storage Service's
7107// API operation PutBucketLifecycle for usage and error information.
7108// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7109//
7110// Deprecated: PutBucketLifecycle has been deprecated
7111func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
7112	req, out := c.PutBucketLifecycleRequest(input)
7113	return out, req.Send()
7114}
7115
7116// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
7117// the ability to pass a context and additional request options.
7118//
7119// See PutBucketLifecycle for details on how to use this API operation.
7120//
7121// The context must be non-nil and will be used for request cancellation. If
7122// the context is nil a panic will occur. In the future the SDK may create
7123// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7124// for more information on using Contexts.
7125//
7126// Deprecated: PutBucketLifecycleWithContext has been deprecated
7127func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
7128	req, out := c.PutBucketLifecycleRequest(input)
7129	req.SetContext(ctx)
7130	req.ApplyOptions(opts...)
7131	return out, req.Send()
7132}
7133
7134const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
7135
7136// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
7137// client's request for the PutBucketLifecycleConfiguration operation. The "output" return
7138// value will be populated with the request's response once the request completes
7139// successfully.
7140//
7141// Use "Send" method on the returned Request to send the API call to the service.
7142// the "output" return value is not valid until after Send returns without error.
7143//
7144// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
7145// API call, and error handling.
7146//
7147// This method is useful when you want to inject custom logic or configuration
7148// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7149//
7150//
7151//    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
7152//    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
7153//
7154//    err := req.Send()
7155//    if err == nil { // resp is now filled
7156//        fmt.Println(resp)
7157//    }
7158//
7159// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7160func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
7161	op := &request.Operation{
7162		Name:       opPutBucketLifecycleConfiguration,
7163		HTTPMethod: "PUT",
7164		HTTPPath:   "/{Bucket}?lifecycle",
7165	}
7166
7167	if input == nil {
7168		input = &PutBucketLifecycleConfigurationInput{}
7169	}
7170
7171	output = &PutBucketLifecycleConfigurationOutput{}
7172	req = c.newRequest(op, input, output)
7173	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7174	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7175		Name: "contentMd5Handler",
7176		Fn:   checksum.AddBodyContentMD5Handler,
7177	})
7178	return
7179}
7180
7181// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
7182//
7183// Creates a new lifecycle configuration for the bucket or replaces an existing
7184// lifecycle configuration. For information about lifecycle configuration, see
7185// Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7186//
7187// Bucket lifecycle configuration now supports specifying a lifecycle rule using
7188// an object key name prefix, one or more object tags, or a combination of both.
7189// Accordingly, this section describes the latest API. The previous version
7190// of the API supported filtering based only on an object key name prefix, which
7191// is supported for backward compatibility. For the related API description,
7192// see PutBucketLifecycle.
7193//
7194// Rules
7195//
7196// You specify the lifecycle configuration in your request body. The lifecycle
7197// configuration is specified as XML consisting of one or more rules. Each rule
7198// consists of the following:
7199//
7200//    * Filter identifying a subset of objects to which the rule applies. The
7201//    filter can be based on a key name prefix, object tags, or a combination
7202//    of both.
7203//
7204//    * Status whether the rule is in effect.
7205//
7206//    * One or more lifecycle transition and expiration actions that you want
7207//    Amazon S3 to perform on the objects identified by the filter. If the state
7208//    of your bucket is versioning-enabled or versioning-suspended, you can
7209//    have many versions of the same object (one current version and zero or
7210//    more noncurrent versions). Amazon S3 provides predefined actions that
7211//    you can specify for current and noncurrent object versions.
7212//
7213// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7214// and Lifecycle Configuration Elements (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html).
7215//
7216// Permissions
7217//
7218// By default, all Amazon S3 resources are private, including buckets, objects,
7219// and related subresources (for example, lifecycle configuration and website
7220// configuration). Only the resource owner (that is, the AWS account that created
7221// it) can access the resource. The resource owner can optionally grant access
7222// permissions to others by writing an access policy. For this operation, a
7223// user must get the s3:PutLifecycleConfiguration permission.
7224//
7225// You can also explicitly deny permissions. Explicit deny also supersedes any
7226// other permissions. If you want to block users or accounts from removing or
7227// deleting objects from your bucket, you must deny them permissions for the
7228// following actions:
7229//
7230//    * s3:DeleteObject
7231//
7232//    * s3:DeleteObjectVersion
7233//
7234//    * s3:PutLifecycleConfiguration
7235//
7236// For more information about permissions, see Managing Access Permissions to
7237// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7238//
7239// The following are related to PutBucketLifecycleConfiguration:
7240//
7241//    * Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html)
7242//
7243//    * GetBucketLifecycleConfiguration
7244//
7245//    * DeleteBucketLifecycle
7246//
7247// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7248// with awserr.Error's Code and Message methods to get detailed information about
7249// the error.
7250//
7251// See the AWS API reference guide for Amazon Simple Storage Service's
7252// API operation PutBucketLifecycleConfiguration for usage and error information.
7253// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7254func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
7255	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7256	return out, req.Send()
7257}
7258
7259// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
7260// the ability to pass a context and additional request options.
7261//
7262// See PutBucketLifecycleConfiguration for details on how to use this API operation.
7263//
7264// The context must be non-nil and will be used for request cancellation. If
7265// the context is nil a panic will occur. In the future the SDK may create
7266// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7267// for more information on using Contexts.
7268func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
7269	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7270	req.SetContext(ctx)
7271	req.ApplyOptions(opts...)
7272	return out, req.Send()
7273}
7274
7275const opPutBucketLogging = "PutBucketLogging"
7276
7277// PutBucketLoggingRequest generates a "aws/request.Request" representing the
7278// client's request for the PutBucketLogging operation. The "output" return
7279// value will be populated with the request's response once the request completes
7280// successfully.
7281//
7282// Use "Send" method on the returned Request to send the API call to the service.
7283// the "output" return value is not valid until after Send returns without error.
7284//
7285// See PutBucketLogging for more information on using the PutBucketLogging
7286// API call, and error handling.
7287//
7288// This method is useful when you want to inject custom logic or configuration
7289// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7290//
7291//
7292//    // Example sending a request using the PutBucketLoggingRequest method.
7293//    req, resp := client.PutBucketLoggingRequest(params)
7294//
7295//    err := req.Send()
7296//    if err == nil { // resp is now filled
7297//        fmt.Println(resp)
7298//    }
7299//
7300// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
7301func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
7302	op := &request.Operation{
7303		Name:       opPutBucketLogging,
7304		HTTPMethod: "PUT",
7305		HTTPPath:   "/{Bucket}?logging",
7306	}
7307
7308	if input == nil {
7309		input = &PutBucketLoggingInput{}
7310	}
7311
7312	output = &PutBucketLoggingOutput{}
7313	req = c.newRequest(op, input, output)
7314	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7315	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7316		Name: "contentMd5Handler",
7317		Fn:   checksum.AddBodyContentMD5Handler,
7318	})
7319	return
7320}
7321
7322// PutBucketLogging API operation for Amazon Simple Storage Service.
7323//
7324// Set the logging parameters for a bucket and to specify permissions for who
7325// can view and modify the logging parameters. All logs are saved to buckets
7326// in the same AWS Region as the source bucket. To set the logging status of
7327// a bucket, you must be the bucket owner.
7328//
7329// The bucket owner is automatically granted FULL_CONTROL to all logs. You use
7330// the Grantee request element to grant access to other people. The Permissions
7331// request element specifies the kind of access the grantee has to the logs.
7332//
7333// Grantee Values
7334//
7335// You can specify the person (grantee) to whom you're assigning access rights
7336// (using request elements) in the following ways:
7337//
7338//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7339//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
7340//    </Grantee> DisplayName is optional and ignored in the request.
7341//
7342//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7343//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress></Grantee>
7344//    The grantee is resolved to the CanonicalUser and, in a response to a GET
7345//    Object acl request, appears as the CanonicalUser.
7346//
7347//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7348//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
7349//
7350// To enable logging, you use LoggingEnabled and its children request elements.
7351// To disable logging, you use an empty BucketLoggingStatus request element:
7352//
7353// <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01" />
7354//
7355// For more information about server access logging, see Server Access Logging
7356// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html).
7357//
7358// For more information about creating a bucket, see CreateBucket. For more
7359// information about returning the logging status of a bucket, see GetBucketLogging.
7360//
7361// The following operations are related to PutBucketLogging:
7362//
7363//    * PutObject
7364//
7365//    * DeleteBucket
7366//
7367//    * CreateBucket
7368//
7369//    * GetBucketLogging
7370//
7371// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7372// with awserr.Error's Code and Message methods to get detailed information about
7373// the error.
7374//
7375// See the AWS API reference guide for Amazon Simple Storage Service's
7376// API operation PutBucketLogging for usage and error information.
7377// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
7378func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
7379	req, out := c.PutBucketLoggingRequest(input)
7380	return out, req.Send()
7381}
7382
7383// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
7384// the ability to pass a context and additional request options.
7385//
7386// See PutBucketLogging for details on how to use this API operation.
7387//
7388// The context must be non-nil and will be used for request cancellation. If
7389// the context is nil a panic will occur. In the future the SDK may create
7390// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7391// for more information on using Contexts.
7392func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
7393	req, out := c.PutBucketLoggingRequest(input)
7394	req.SetContext(ctx)
7395	req.ApplyOptions(opts...)
7396	return out, req.Send()
7397}
7398
7399const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
7400
7401// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
7402// client's request for the PutBucketMetricsConfiguration operation. The "output" return
7403// value will be populated with the request's response once the request completes
7404// successfully.
7405//
7406// Use "Send" method on the returned Request to send the API call to the service.
7407// the "output" return value is not valid until after Send returns without error.
7408//
7409// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
7410// API call, and error handling.
7411//
7412// This method is useful when you want to inject custom logic or configuration
7413// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7414//
7415//
7416//    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
7417//    req, resp := client.PutBucketMetricsConfigurationRequest(params)
7418//
7419//    err := req.Send()
7420//    if err == nil { // resp is now filled
7421//        fmt.Println(resp)
7422//    }
7423//
7424// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
7425func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
7426	op := &request.Operation{
7427		Name:       opPutBucketMetricsConfiguration,
7428		HTTPMethod: "PUT",
7429		HTTPPath:   "/{Bucket}?metrics",
7430	}
7431
7432	if input == nil {
7433		input = &PutBucketMetricsConfigurationInput{}
7434	}
7435
7436	output = &PutBucketMetricsConfigurationOutput{}
7437	req = c.newRequest(op, input, output)
7438	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7439	return
7440}
7441
7442// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
7443//
7444// Sets a metrics configuration (specified by the metrics configuration ID)
7445// for the bucket. You can have up to 1,000 metrics configurations per bucket.
7446// If you're updating an existing metrics configuration, note that this is a
7447// full replacement of the existing metrics configuration. If you don't include
7448// the elements you want to keep, they are erased.
7449//
7450// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
7451// action. The bucket owner has this permission by default. The bucket owner
7452// can grant this permission to others. For more information about permissions,
7453// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
7454// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7455//
7456// For information about CloudWatch request metrics for Amazon S3, see Monitoring
7457// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
7458//
7459// The following operations are related to PutBucketMetricsConfiguration:
7460//
7461//    * DeleteBucketMetricsConfiguration
7462//
7463//    * PutBucketMetricsConfiguration
7464//
7465//    * ListBucketMetricsConfigurations
7466//
7467// GetBucketLifecycle has the following special error:
7468//
7469//    * Error code: TooManyConfigurations Description: You are attempting to
7470//    create a new configuration but have already reached the 1,000-configuration
7471//    limit. HTTP Status Code: HTTP 400 Bad Request
7472//
7473// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7474// with awserr.Error's Code and Message methods to get detailed information about
7475// the error.
7476//
7477// See the AWS API reference guide for Amazon Simple Storage Service's
7478// API operation PutBucketMetricsConfiguration for usage and error information.
7479// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
7480func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
7481	req, out := c.PutBucketMetricsConfigurationRequest(input)
7482	return out, req.Send()
7483}
7484
7485// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
7486// the ability to pass a context and additional request options.
7487//
7488// See PutBucketMetricsConfiguration for details on how to use this API operation.
7489//
7490// The context must be non-nil and will be used for request cancellation. If
7491// the context is nil a panic will occur. In the future the SDK may create
7492// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7493// for more information on using Contexts.
7494func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
7495	req, out := c.PutBucketMetricsConfigurationRequest(input)
7496	req.SetContext(ctx)
7497	req.ApplyOptions(opts...)
7498	return out, req.Send()
7499}
7500
7501const opPutBucketNotification = "PutBucketNotification"
7502
7503// PutBucketNotificationRequest generates a "aws/request.Request" representing the
7504// client's request for the PutBucketNotification operation. The "output" return
7505// value will be populated with the request's response once the request completes
7506// successfully.
7507//
7508// Use "Send" method on the returned Request to send the API call to the service.
7509// the "output" return value is not valid until after Send returns without error.
7510//
7511// See PutBucketNotification for more information on using the PutBucketNotification
7512// API call, and error handling.
7513//
7514// This method is useful when you want to inject custom logic or configuration
7515// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7516//
7517//
7518//    // Example sending a request using the PutBucketNotificationRequest method.
7519//    req, resp := client.PutBucketNotificationRequest(params)
7520//
7521//    err := req.Send()
7522//    if err == nil { // resp is now filled
7523//        fmt.Println(resp)
7524//    }
7525//
7526// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
7527//
7528// Deprecated: PutBucketNotification has been deprecated
7529func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
7530	if c.Client.Config.Logger != nil {
7531		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
7532	}
7533	op := &request.Operation{
7534		Name:       opPutBucketNotification,
7535		HTTPMethod: "PUT",
7536		HTTPPath:   "/{Bucket}?notification",
7537	}
7538
7539	if input == nil {
7540		input = &PutBucketNotificationInput{}
7541	}
7542
7543	output = &PutBucketNotificationOutput{}
7544	req = c.newRequest(op, input, output)
7545	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7546	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7547		Name: "contentMd5Handler",
7548		Fn:   checksum.AddBodyContentMD5Handler,
7549	})
7550	return
7551}
7552
7553// PutBucketNotification API operation for Amazon Simple Storage Service.
7554//
7555// No longer used, see the PutBucketNotificationConfiguration operation.
7556//
7557// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7558// with awserr.Error's Code and Message methods to get detailed information about
7559// the error.
7560//
7561// See the AWS API reference guide for Amazon Simple Storage Service's
7562// API operation PutBucketNotification for usage and error information.
7563// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
7564//
7565// Deprecated: PutBucketNotification has been deprecated
7566func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
7567	req, out := c.PutBucketNotificationRequest(input)
7568	return out, req.Send()
7569}
7570
7571// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
7572// the ability to pass a context and additional request options.
7573//
7574// See PutBucketNotification for details on how to use this API operation.
7575//
7576// The context must be non-nil and will be used for request cancellation. If
7577// the context is nil a panic will occur. In the future the SDK may create
7578// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7579// for more information on using Contexts.
7580//
7581// Deprecated: PutBucketNotificationWithContext has been deprecated
7582func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
7583	req, out := c.PutBucketNotificationRequest(input)
7584	req.SetContext(ctx)
7585	req.ApplyOptions(opts...)
7586	return out, req.Send()
7587}
7588
7589const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
7590
7591// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
7592// client's request for the PutBucketNotificationConfiguration operation. The "output" return
7593// value will be populated with the request's response once the request completes
7594// successfully.
7595//
7596// Use "Send" method on the returned Request to send the API call to the service.
7597// the "output" return value is not valid until after Send returns without error.
7598//
7599// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
7600// API call, and error handling.
7601//
7602// This method is useful when you want to inject custom logic or configuration
7603// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7604//
7605//
7606//    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
7607//    req, resp := client.PutBucketNotificationConfigurationRequest(params)
7608//
7609//    err := req.Send()
7610//    if err == nil { // resp is now filled
7611//        fmt.Println(resp)
7612//    }
7613//
7614// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
7615func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
7616	op := &request.Operation{
7617		Name:       opPutBucketNotificationConfiguration,
7618		HTTPMethod: "PUT",
7619		HTTPPath:   "/{Bucket}?notification",
7620	}
7621
7622	if input == nil {
7623		input = &PutBucketNotificationConfigurationInput{}
7624	}
7625
7626	output = &PutBucketNotificationConfigurationOutput{}
7627	req = c.newRequest(op, input, output)
7628	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7629	return
7630}
7631
7632// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
7633//
7634// Enables notifications of specified events for a bucket. For more information
7635// about event notifications, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
7636//
7637// Using this API, you can replace an existing notification configuration. The
7638// configuration is an XML file that defines the event types that you want Amazon
7639// S3 to publish and the destination where you want Amazon S3 to publish an
7640// event notification when it detects an event of the specified type.
7641//
7642// By default, your bucket has no event notifications configured. That is, the
7643// notification configuration will be an empty NotificationConfiguration.
7644//
7645// <NotificationConfiguration>
7646//
7647// </NotificationConfiguration>
7648//
7649// This operation replaces the existing notification configuration with the
7650// configuration you include in the request body.
7651//
7652// After Amazon S3 receives this request, it first verifies that any Amazon
7653// Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon
7654// SQS) destination exists, and that the bucket owner has permission to publish
7655// to it by sending a test notification. In the case of AWS Lambda destinations,
7656// Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission
7657// to invoke the function from the Amazon S3 bucket. For more information, see
7658// Configuring Notifications for Amazon S3 Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
7659//
7660// You can disable notifications by adding the empty NotificationConfiguration
7661// element.
7662//
7663// By default, only the bucket owner can configure notifications on a bucket.
7664// However, bucket owners can use a bucket policy to grant permission to other
7665// users to set this configuration with s3:PutBucketNotification permission.
7666//
7667// The PUT notification is an atomic operation. For example, suppose your notification
7668// configuration includes SNS topic, SQS queue, and Lambda function configurations.
7669// When you send a PUT request with this configuration, Amazon S3 sends test
7670// messages to your SNS topic. If the message fails, the entire PUT operation
7671// will fail, and Amazon S3 will not add the configuration to your bucket.
7672//
7673// Responses
7674//
7675// If the configuration in the request body includes only one TopicConfiguration
7676// specifying only the s3:ReducedRedundancyLostObject event type, the response
7677// will also include the x-amz-sns-test-message-id header containing the message
7678// ID of the test notification sent to the topic.
7679//
7680// The following operation is related to PutBucketNotificationConfiguration:
7681//
7682//    * GetBucketNotificationConfiguration
7683//
7684// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7685// with awserr.Error's Code and Message methods to get detailed information about
7686// the error.
7687//
7688// See the AWS API reference guide for Amazon Simple Storage Service's
7689// API operation PutBucketNotificationConfiguration for usage and error information.
7690// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
7691func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
7692	req, out := c.PutBucketNotificationConfigurationRequest(input)
7693	return out, req.Send()
7694}
7695
7696// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
7697// the ability to pass a context and additional request options.
7698//
7699// See PutBucketNotificationConfiguration for details on how to use this API operation.
7700//
7701// The context must be non-nil and will be used for request cancellation. If
7702// the context is nil a panic will occur. In the future the SDK may create
7703// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7704// for more information on using Contexts.
7705func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
7706	req, out := c.PutBucketNotificationConfigurationRequest(input)
7707	req.SetContext(ctx)
7708	req.ApplyOptions(opts...)
7709	return out, req.Send()
7710}
7711
7712const opPutBucketPolicy = "PutBucketPolicy"
7713
7714// PutBucketPolicyRequest generates a "aws/request.Request" representing the
7715// client's request for the PutBucketPolicy operation. The "output" return
7716// value will be populated with the request's response once the request completes
7717// successfully.
7718//
7719// Use "Send" method on the returned Request to send the API call to the service.
7720// the "output" return value is not valid until after Send returns without error.
7721//
7722// See PutBucketPolicy for more information on using the PutBucketPolicy
7723// API call, and error handling.
7724//
7725// This method is useful when you want to inject custom logic or configuration
7726// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7727//
7728//
7729//    // Example sending a request using the PutBucketPolicyRequest method.
7730//    req, resp := client.PutBucketPolicyRequest(params)
7731//
7732//    err := req.Send()
7733//    if err == nil { // resp is now filled
7734//        fmt.Println(resp)
7735//    }
7736//
7737// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
7738func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
7739	op := &request.Operation{
7740		Name:       opPutBucketPolicy,
7741		HTTPMethod: "PUT",
7742		HTTPPath:   "/{Bucket}?policy",
7743	}
7744
7745	if input == nil {
7746		input = &PutBucketPolicyInput{}
7747	}
7748
7749	output = &PutBucketPolicyOutput{}
7750	req = c.newRequest(op, input, output)
7751	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7752	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7753		Name: "contentMd5Handler",
7754		Fn:   checksum.AddBodyContentMD5Handler,
7755	})
7756	return
7757}
7758
7759// PutBucketPolicy API operation for Amazon Simple Storage Service.
7760//
7761// Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
7762// an identity other than the root user of the AWS account that owns the bucket,
7763// the calling identity must have the PutBucketPolicy permissions on the specified
7764// bucket and belong to the bucket owner's account in order to use this operation.
7765//
7766// If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access
7767// Denied error. If you have the correct permissions, but you're not using an
7768// identity that belongs to the bucket owner's account, Amazon S3 returns a
7769// 405 Method Not Allowed error.
7770//
7771// As a security precaution, the root user of the AWS account that owns a bucket
7772// can always use this operation, even if the policy explicitly denies the root
7773// user the ability to perform this action.
7774//
7775// For more information about bucket policies, see Using Bucket Policies and
7776// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
7777//
7778// The following operations are related to PutBucketPolicy:
7779//
7780//    * CreateBucket
7781//
7782//    * DeleteBucket
7783//
7784// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7785// with awserr.Error's Code and Message methods to get detailed information about
7786// the error.
7787//
7788// See the AWS API reference guide for Amazon Simple Storage Service's
7789// API operation PutBucketPolicy for usage and error information.
7790// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
7791func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
7792	req, out := c.PutBucketPolicyRequest(input)
7793	return out, req.Send()
7794}
7795
7796// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
7797// the ability to pass a context and additional request options.
7798//
7799// See PutBucketPolicy for details on how to use this API operation.
7800//
7801// The context must be non-nil and will be used for request cancellation. If
7802// the context is nil a panic will occur. In the future the SDK may create
7803// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7804// for more information on using Contexts.
7805func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
7806	req, out := c.PutBucketPolicyRequest(input)
7807	req.SetContext(ctx)
7808	req.ApplyOptions(opts...)
7809	return out, req.Send()
7810}
7811
7812const opPutBucketReplication = "PutBucketReplication"
7813
7814// PutBucketReplicationRequest generates a "aws/request.Request" representing the
7815// client's request for the PutBucketReplication operation. The "output" return
7816// value will be populated with the request's response once the request completes
7817// successfully.
7818//
7819// Use "Send" method on the returned Request to send the API call to the service.
7820// the "output" return value is not valid until after Send returns without error.
7821//
7822// See PutBucketReplication for more information on using the PutBucketReplication
7823// API call, and error handling.
7824//
7825// This method is useful when you want to inject custom logic or configuration
7826// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7827//
7828//
7829//    // Example sending a request using the PutBucketReplicationRequest method.
7830//    req, resp := client.PutBucketReplicationRequest(params)
7831//
7832//    err := req.Send()
7833//    if err == nil { // resp is now filled
7834//        fmt.Println(resp)
7835//    }
7836//
7837// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
7838func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
7839	op := &request.Operation{
7840		Name:       opPutBucketReplication,
7841		HTTPMethod: "PUT",
7842		HTTPPath:   "/{Bucket}?replication",
7843	}
7844
7845	if input == nil {
7846		input = &PutBucketReplicationInput{}
7847	}
7848
7849	output = &PutBucketReplicationOutput{}
7850	req = c.newRequest(op, input, output)
7851	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7852	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7853		Name: "contentMd5Handler",
7854		Fn:   checksum.AddBodyContentMD5Handler,
7855	})
7856	return
7857}
7858
7859// PutBucketReplication API operation for Amazon Simple Storage Service.
7860//
7861// Creates a replication configuration or replaces an existing one. For more
7862// information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
7863// in the Amazon S3 Developer Guide.
7864//
7865// To perform this operation, the user or role performing the operation must
7866// have the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
7867// permission.
7868//
7869// Specify the replication configuration in the request body. In the replication
7870// configuration, you provide the name of the destination bucket where you want
7871// Amazon S3 to replicate objects, the IAM role that Amazon S3 can assume to
7872// replicate objects on your behalf, and other relevant information.
7873//
7874// A replication configuration must include at least one rule, and can contain
7875// a maximum of 1,000. Each rule identifies a subset of objects to replicate
7876// by filtering the objects in the source bucket. To choose additional subsets
7877// of objects to replicate, add a rule for each subset. All rules must specify
7878// the same destination bucket.
7879//
7880// To specify a subset of the objects in the source bucket to apply a replication
7881// rule to, add the Filter element as a child of the Rule element. You can filter
7882// objects based on an object key prefix, one or more object tags, or both.
7883// When you add the Filter element in the configuration, you must also add the
7884// following elements: DeleteMarkerReplication, Status, and Priority.
7885//
7886// For information about enabling versioning on a bucket, see Using Versioning
7887// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).
7888//
7889// By default, a resource owner, in this case the AWS account that created the
7890// bucket, can perform this operation. The resource owner can also grant others
7891// permissions to perform the operation. For more information about permissions,
7892// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
7893// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7894//
7895// Handling Replication of Encrypted Objects
7896//
7897// By default, Amazon S3 doesn't replicate objects that are stored at rest using
7898// server-side encryption with CMKs stored in AWS KMS. To replicate AWS KMS-encrypted
7899// objects, add the following: SourceSelectionCriteria, SseKmsEncryptedObjects,
7900// Status, EncryptionConfiguration, and ReplicaKmsKeyID. For information about
7901// replication configuration, see Replicating Objects Created with SSE Using
7902// CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html).
7903//
7904// For information on PutBucketReplication errors, see ReplicationErrorCodeList
7905//
7906// The following operations are related to PutBucketReplication:
7907//
7908//    * GetBucketReplication
7909//
7910//    * DeleteBucketReplication
7911//
7912// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7913// with awserr.Error's Code and Message methods to get detailed information about
7914// the error.
7915//
7916// See the AWS API reference guide for Amazon Simple Storage Service's
7917// API operation PutBucketReplication for usage and error information.
7918// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
7919func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
7920	req, out := c.PutBucketReplicationRequest(input)
7921	return out, req.Send()
7922}
7923
7924// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
7925// the ability to pass a context and additional request options.
7926//
7927// See PutBucketReplication for details on how to use this API operation.
7928//
7929// The context must be non-nil and will be used for request cancellation. If
7930// the context is nil a panic will occur. In the future the SDK may create
7931// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7932// for more information on using Contexts.
7933func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
7934	req, out := c.PutBucketReplicationRequest(input)
7935	req.SetContext(ctx)
7936	req.ApplyOptions(opts...)
7937	return out, req.Send()
7938}
7939
7940const opPutBucketRequestPayment = "PutBucketRequestPayment"
7941
7942// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
7943// client's request for the PutBucketRequestPayment operation. The "output" return
7944// value will be populated with the request's response once the request completes
7945// successfully.
7946//
7947// Use "Send" method on the returned Request to send the API call to the service.
7948// the "output" return value is not valid until after Send returns without error.
7949//
7950// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
7951// API call, and error handling.
7952//
7953// This method is useful when you want to inject custom logic or configuration
7954// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7955//
7956//
7957//    // Example sending a request using the PutBucketRequestPaymentRequest method.
7958//    req, resp := client.PutBucketRequestPaymentRequest(params)
7959//
7960//    err := req.Send()
7961//    if err == nil { // resp is now filled
7962//        fmt.Println(resp)
7963//    }
7964//
7965// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
7966func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
7967	op := &request.Operation{
7968		Name:       opPutBucketRequestPayment,
7969		HTTPMethod: "PUT",
7970		HTTPPath:   "/{Bucket}?requestPayment",
7971	}
7972
7973	if input == nil {
7974		input = &PutBucketRequestPaymentInput{}
7975	}
7976
7977	output = &PutBucketRequestPaymentOutput{}
7978	req = c.newRequest(op, input, output)
7979	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7980	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7981		Name: "contentMd5Handler",
7982		Fn:   checksum.AddBodyContentMD5Handler,
7983	})
7984	return
7985}
7986
7987// PutBucketRequestPayment API operation for Amazon Simple Storage Service.
7988//
7989// Sets the request payment configuration for a bucket. By default, the bucket
7990// owner pays for downloads from the bucket. This configuration parameter enables
7991// the bucket owner (only) to specify that the person requesting the download
7992// will be charged for the download. For more information, see Requester Pays
7993// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
7994//
7995// The following operations are related to PutBucketRequestPayment:
7996//
7997//    * CreateBucket
7998//
7999//    * GetBucketRequestPayment
8000//
8001// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8002// with awserr.Error's Code and Message methods to get detailed information about
8003// the error.
8004//
8005// See the AWS API reference guide for Amazon Simple Storage Service's
8006// API operation PutBucketRequestPayment for usage and error information.
8007// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
8008func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
8009	req, out := c.PutBucketRequestPaymentRequest(input)
8010	return out, req.Send()
8011}
8012
8013// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
8014// the ability to pass a context and additional request options.
8015//
8016// See PutBucketRequestPayment for details on how to use this API operation.
8017//
8018// The context must be non-nil and will be used for request cancellation. If
8019// the context is nil a panic will occur. In the future the SDK may create
8020// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8021// for more information on using Contexts.
8022func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
8023	req, out := c.PutBucketRequestPaymentRequest(input)
8024	req.SetContext(ctx)
8025	req.ApplyOptions(opts...)
8026	return out, req.Send()
8027}
8028
8029const opPutBucketTagging = "PutBucketTagging"
8030
8031// PutBucketTaggingRequest generates a "aws/request.Request" representing the
8032// client's request for the PutBucketTagging operation. The "output" return
8033// value will be populated with the request's response once the request completes
8034// successfully.
8035//
8036// Use "Send" method on the returned Request to send the API call to the service.
8037// the "output" return value is not valid until after Send returns without error.
8038//
8039// See PutBucketTagging for more information on using the PutBucketTagging
8040// API call, and error handling.
8041//
8042// This method is useful when you want to inject custom logic or configuration
8043// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8044//
8045//
8046//    // Example sending a request using the PutBucketTaggingRequest method.
8047//    req, resp := client.PutBucketTaggingRequest(params)
8048//
8049//    err := req.Send()
8050//    if err == nil { // resp is now filled
8051//        fmt.Println(resp)
8052//    }
8053//
8054// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8055func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
8056	op := &request.Operation{
8057		Name:       opPutBucketTagging,
8058		HTTPMethod: "PUT",
8059		HTTPPath:   "/{Bucket}?tagging",
8060	}
8061
8062	if input == nil {
8063		input = &PutBucketTaggingInput{}
8064	}
8065
8066	output = &PutBucketTaggingOutput{}
8067	req = c.newRequest(op, input, output)
8068	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8069	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8070		Name: "contentMd5Handler",
8071		Fn:   checksum.AddBodyContentMD5Handler,
8072	})
8073	return
8074}
8075
8076// PutBucketTagging API operation for Amazon Simple Storage Service.
8077//
8078// Sets the tags for a bucket.
8079//
8080// Use tags to organize your AWS bill to reflect your own cost structure. To
8081// do this, sign up to get your AWS account bill with tag key values included.
8082// Then, to see the cost of combined resources, organize your billing information
8083// according to resources with the same tag key values. For example, you can
8084// tag several resources with a specific application name, and then organize
8085// your billing information to see the total cost of that application across
8086// several services. For more information, see Cost Allocation and Tagging (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html).
8087//
8088// Within a bucket, if you add a tag that has the same key as an existing tag,
8089// the new value overwrites the old value. For more information, see Using Cost
8090// Allocation in Amazon S3 Bucket Tags (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html).
8091//
8092// To use this operation, you must have permissions to perform the s3:PutBucketTagging
8093// action. The bucket owner has this permission by default and can grant this
8094// permission to others. For more information about permissions, see Permissions
8095// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
8096// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
8097//
8098// PutBucketTagging has the following special errors:
8099//
8100//    * Error code: InvalidTagError Description: The tag provided was not a
8101//    valid tag. This error can occur if the tag did not pass input validation.
8102//    For information about tag restrictions, see User-Defined Tag Restrictions
8103//    (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)
8104//    and AWS-Generated Cost Allocation Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tag-restrictions.html).
8105//
8106//    * Error code: MalformedXMLError Description: The XML provided does not
8107//    match the schema.
8108//
8109//    * Error code: OperationAbortedError Description: A conflicting conditional
8110//    operation is currently in progress against this resource. Please try again.
8111//
8112//    * Error code: InternalError Description: The service was unable to apply
8113//    the provided tag to the bucket.
8114//
8115// The following operations are related to PutBucketTagging:
8116//
8117//    * GetBucketTagging
8118//
8119//    * DeleteBucketTagging
8120//
8121// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8122// with awserr.Error's Code and Message methods to get detailed information about
8123// the error.
8124//
8125// See the AWS API reference guide for Amazon Simple Storage Service's
8126// API operation PutBucketTagging for usage and error information.
8127// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8128func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
8129	req, out := c.PutBucketTaggingRequest(input)
8130	return out, req.Send()
8131}
8132
8133// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
8134// the ability to pass a context and additional request options.
8135//
8136// See PutBucketTagging for details on how to use this API operation.
8137//
8138// The context must be non-nil and will be used for request cancellation. If
8139// the context is nil a panic will occur. In the future the SDK may create
8140// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8141// for more information on using Contexts.
8142func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
8143	req, out := c.PutBucketTaggingRequest(input)
8144	req.SetContext(ctx)
8145	req.ApplyOptions(opts...)
8146	return out, req.Send()
8147}
8148
8149const opPutBucketVersioning = "PutBucketVersioning"
8150
8151// PutBucketVersioningRequest generates a "aws/request.Request" representing the
8152// client's request for the PutBucketVersioning operation. The "output" return
8153// value will be populated with the request's response once the request completes
8154// successfully.
8155//
8156// Use "Send" method on the returned Request to send the API call to the service.
8157// the "output" return value is not valid until after Send returns without error.
8158//
8159// See PutBucketVersioning for more information on using the PutBucketVersioning
8160// API call, and error handling.
8161//
8162// This method is useful when you want to inject custom logic or configuration
8163// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8164//
8165//
8166//    // Example sending a request using the PutBucketVersioningRequest method.
8167//    req, resp := client.PutBucketVersioningRequest(params)
8168//
8169//    err := req.Send()
8170//    if err == nil { // resp is now filled
8171//        fmt.Println(resp)
8172//    }
8173//
8174// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
8175func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
8176	op := &request.Operation{
8177		Name:       opPutBucketVersioning,
8178		HTTPMethod: "PUT",
8179		HTTPPath:   "/{Bucket}?versioning",
8180	}
8181
8182	if input == nil {
8183		input = &PutBucketVersioningInput{}
8184	}
8185
8186	output = &PutBucketVersioningOutput{}
8187	req = c.newRequest(op, input, output)
8188	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8189	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8190		Name: "contentMd5Handler",
8191		Fn:   checksum.AddBodyContentMD5Handler,
8192	})
8193	return
8194}
8195
8196// PutBucketVersioning API operation for Amazon Simple Storage Service.
8197//
8198// Sets the versioning state of an existing bucket. To set the versioning state,
8199// you must be the bucket owner.
8200//
8201// You can set the versioning state with one of the following values:
8202//
8203// Enabled—Enables versioning for the objects in the bucket. All objects added
8204// to the bucket receive a unique version ID.
8205//
8206// Suspended—Disables versioning for the objects in the bucket. All objects
8207// added to the bucket receive the version ID null.
8208//
8209// If the versioning state has never been set on a bucket, it has no versioning
8210// state; a GetBucketVersioning request does not return a versioning state value.
8211//
8212// If the bucket owner enables MFA Delete in the bucket versioning configuration,
8213// the bucket owner must include the x-amz-mfa request header and the Status
8214// and the MfaDelete request elements in a request to set the versioning state
8215// of the bucket.
8216//
8217// If you have an object expiration lifecycle policy in your non-versioned bucket
8218// and you want to maintain the same permanent delete behavior when you enable
8219// versioning, you must add a noncurrent expiration policy. The noncurrent expiration
8220// lifecycle policy will manage the deletes of the noncurrent object versions
8221// in the version-enabled bucket. (A version-enabled bucket maintains one current
8222// and zero or more noncurrent object versions.) For more information, see Lifecycle
8223// and Versioning (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config).
8224//
8225// Related Resources
8226//
8227//    * CreateBucket
8228//
8229//    * DeleteBucket
8230//
8231//    * GetBucketVersioning
8232//
8233// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8234// with awserr.Error's Code and Message methods to get detailed information about
8235// the error.
8236//
8237// See the AWS API reference guide for Amazon Simple Storage Service's
8238// API operation PutBucketVersioning for usage and error information.
8239// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
8240func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
8241	req, out := c.PutBucketVersioningRequest(input)
8242	return out, req.Send()
8243}
8244
8245// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
8246// the ability to pass a context and additional request options.
8247//
8248// See PutBucketVersioning for details on how to use this API operation.
8249//
8250// The context must be non-nil and will be used for request cancellation. If
8251// the context is nil a panic will occur. In the future the SDK may create
8252// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8253// for more information on using Contexts.
8254func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
8255	req, out := c.PutBucketVersioningRequest(input)
8256	req.SetContext(ctx)
8257	req.ApplyOptions(opts...)
8258	return out, req.Send()
8259}
8260
8261const opPutBucketWebsite = "PutBucketWebsite"
8262
8263// PutBucketWebsiteRequest generates a "aws/request.Request" representing the
8264// client's request for the PutBucketWebsite operation. The "output" return
8265// value will be populated with the request's response once the request completes
8266// successfully.
8267//
8268// Use "Send" method on the returned Request to send the API call to the service.
8269// the "output" return value is not valid until after Send returns without error.
8270//
8271// See PutBucketWebsite for more information on using the PutBucketWebsite
8272// API call, and error handling.
8273//
8274// This method is useful when you want to inject custom logic or configuration
8275// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8276//
8277//
8278//    // Example sending a request using the PutBucketWebsiteRequest method.
8279//    req, resp := client.PutBucketWebsiteRequest(params)
8280//
8281//    err := req.Send()
8282//    if err == nil { // resp is now filled
8283//        fmt.Println(resp)
8284//    }
8285//
8286// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
8287func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
8288	op := &request.Operation{
8289		Name:       opPutBucketWebsite,
8290		HTTPMethod: "PUT",
8291		HTTPPath:   "/{Bucket}?website",
8292	}
8293
8294	if input == nil {
8295		input = &PutBucketWebsiteInput{}
8296	}
8297
8298	output = &PutBucketWebsiteOutput{}
8299	req = c.newRequest(op, input, output)
8300	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8301	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8302		Name: "contentMd5Handler",
8303		Fn:   checksum.AddBodyContentMD5Handler,
8304	})
8305	return
8306}
8307
8308// PutBucketWebsite API operation for Amazon Simple Storage Service.
8309//
8310// Sets the configuration of the website that is specified in the website subresource.
8311// To configure a bucket as a website, you can add this subresource on the bucket
8312// with website configuration information such as the file name of the index
8313// document and any redirect rules. For more information, see Hosting Websites
8314// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
8315//
8316// This PUT operation requires the S3:PutBucketWebsite permission. By default,
8317// only the bucket owner can configure the website attached to a bucket; however,
8318// bucket owners can allow other users to set the website configuration by writing
8319// a bucket policy that grants them the S3:PutBucketWebsite permission.
8320//
8321// To redirect all website requests sent to the bucket's website endpoint, you
8322// add a website configuration with the following elements. Because all requests
8323// are sent to another website, you don't need to provide index document name
8324// for the bucket.
8325//
8326//    * WebsiteConfiguration
8327//
8328//    * RedirectAllRequestsTo
8329//
8330//    * HostName
8331//
8332//    * Protocol
8333//
8334// If you want granular control over redirects, you can use the following elements
8335// to add routing rules that describe conditions for redirecting requests and
8336// information about the redirect destination. In this case, the website configuration
8337// must provide an index document for the bucket, because some requests might
8338// not be redirected.
8339//
8340//    * WebsiteConfiguration
8341//
8342//    * IndexDocument
8343//
8344//    * Suffix
8345//
8346//    * ErrorDocument
8347//
8348//    * Key
8349//
8350//    * RoutingRules
8351//
8352//    * RoutingRule
8353//
8354//    * Condition
8355//
8356//    * HttpErrorCodeReturnedEquals
8357//
8358//    * KeyPrefixEquals
8359//
8360//    * Redirect
8361//
8362//    * Protocol
8363//
8364//    * HostName
8365//
8366//    * ReplaceKeyPrefixWith
8367//
8368//    * ReplaceKeyWith
8369//
8370//    * HttpRedirectCode
8371//
8372// Amazon S3 has a limitation of 50 routing rules per website configuration.
8373// If you require more than 50 routing rules, you can use object redirect. For
8374// more information, see Configuring an Object Redirect (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html)
8375// in the Amazon Simple Storage Service Developer Guide.
8376//
8377// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8378// with awserr.Error's Code and Message methods to get detailed information about
8379// the error.
8380//
8381// See the AWS API reference guide for Amazon Simple Storage Service's
8382// API operation PutBucketWebsite for usage and error information.
8383// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
8384func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
8385	req, out := c.PutBucketWebsiteRequest(input)
8386	return out, req.Send()
8387}
8388
8389// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
8390// the ability to pass a context and additional request options.
8391//
8392// See PutBucketWebsite for details on how to use this API operation.
8393//
8394// The context must be non-nil and will be used for request cancellation. If
8395// the context is nil a panic will occur. In the future the SDK may create
8396// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8397// for more information on using Contexts.
8398func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
8399	req, out := c.PutBucketWebsiteRequest(input)
8400	req.SetContext(ctx)
8401	req.ApplyOptions(opts...)
8402	return out, req.Send()
8403}
8404
8405const opPutObject = "PutObject"
8406
8407// PutObjectRequest generates a "aws/request.Request" representing the
8408// client's request for the PutObject operation. The "output" return
8409// value will be populated with the request's response once the request completes
8410// successfully.
8411//
8412// Use "Send" method on the returned Request to send the API call to the service.
8413// the "output" return value is not valid until after Send returns without error.
8414//
8415// See PutObject for more information on using the PutObject
8416// API call, and error handling.
8417//
8418// This method is useful when you want to inject custom logic or configuration
8419// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8420//
8421//
8422//    // Example sending a request using the PutObjectRequest method.
8423//    req, resp := client.PutObjectRequest(params)
8424//
8425//    err := req.Send()
8426//    if err == nil { // resp is now filled
8427//        fmt.Println(resp)
8428//    }
8429//
8430// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
8431func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
8432	op := &request.Operation{
8433		Name:       opPutObject,
8434		HTTPMethod: "PUT",
8435		HTTPPath:   "/{Bucket}/{Key+}",
8436	}
8437
8438	if input == nil {
8439		input = &PutObjectInput{}
8440	}
8441
8442	output = &PutObjectOutput{}
8443	req = c.newRequest(op, input, output)
8444	return
8445}
8446
8447// PutObject API operation for Amazon Simple Storage Service.
8448//
8449// Adds an object to a bucket. You must have WRITE permissions on a bucket to
8450// add an object to it.
8451//
8452// Amazon S3 never adds partial objects; if you receive a success response,
8453// Amazon S3 added the entire object to the bucket.
8454//
8455// Amazon S3 is a distributed system. If it receives multiple write requests
8456// for the same object simultaneously, it overwrites all but the last object
8457// written. Amazon S3 does not provide object locking; if you need this, make
8458// sure to build it into your application layer or use versioning instead.
8459//
8460// To ensure that data is not corrupted traversing the network, use the Content-MD5
8461// header. When you use this header, Amazon S3 checks the object against the
8462// provided MD5 value and, if they do not match, returns an error. Additionally,
8463// you can calculate the MD5 while putting an object to Amazon S3 and compare
8464// the returned ETag to the calculated MD5 value.
8465//
8466// The Content-MD5 header is required for any request to upload an object with
8467// a retention period configured using Amazon S3 Object Lock. For more information
8468// about Amazon S3 Object Lock, see Amazon S3 Object Lock Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)
8469// in the Amazon Simple Storage Service Developer Guide.
8470//
8471// Server-side Encryption
8472//
8473// You can optionally request server-side encryption. With server-side encryption,
8474// Amazon S3 encrypts your data as it writes it to disks in its data centers
8475// and decrypts the data when you access it. You have the option to provide
8476// your own encryption key or use AWS managed encryption keys. For more information,
8477// see Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
8478//
8479// Access Control List (ACL)-Specific Request Headers
8480//
8481// You can use headers to grant ACL- based permissions. By default, all objects
8482// are private. Only the owner has full access control. When adding a new object,
8483// you can grant permissions to individual AWS accounts or to predefined groups
8484// defined by Amazon S3. These permissions are then added to the ACL on the
8485// object. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
8486// and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
8487//
8488// Storage Class Options
8489//
8490// By default, Amazon S3 uses the STANDARD storage class to store newly created
8491// objects. The STANDARD storage class provides high durability and high availability.
8492// Depending on performance needs, you can specify a different storage class.
8493// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
8494// in the Amazon S3 Service Developer Guide.
8495//
8496// Versioning
8497//
8498// If you enable versioning for a bucket, Amazon S3 automatically generates
8499// a unique version ID for the object being stored. Amazon S3 returns this ID
8500// in the response. When you enable versioning for a bucket, if Amazon S3 receives
8501// multiple write requests for the same object simultaneously, it stores all
8502// of the objects.
8503//
8504// For more information about versioning, see Adding Objects to Versioning Enabled
8505// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html).
8506// For information about returning the versioning state of a bucket, see GetBucketVersioning.
8507//
8508// Related Resources
8509//
8510//    * CopyObject
8511//
8512//    * DeleteObject
8513//
8514// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8515// with awserr.Error's Code and Message methods to get detailed information about
8516// the error.
8517//
8518// See the AWS API reference guide for Amazon Simple Storage Service's
8519// API operation PutObject for usage and error information.
8520// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
8521func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
8522	req, out := c.PutObjectRequest(input)
8523	return out, req.Send()
8524}
8525
8526// PutObjectWithContext is the same as PutObject with the addition of
8527// the ability to pass a context and additional request options.
8528//
8529// See PutObject for details on how to use this API operation.
8530//
8531// The context must be non-nil and will be used for request cancellation. If
8532// the context is nil a panic will occur. In the future the SDK may create
8533// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8534// for more information on using Contexts.
8535func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
8536	req, out := c.PutObjectRequest(input)
8537	req.SetContext(ctx)
8538	req.ApplyOptions(opts...)
8539	return out, req.Send()
8540}
8541
8542const opPutObjectAcl = "PutObjectAcl"
8543
8544// PutObjectAclRequest generates a "aws/request.Request" representing the
8545// client's request for the PutObjectAcl operation. The "output" return
8546// value will be populated with the request's response once the request completes
8547// successfully.
8548//
8549// Use "Send" method on the returned Request to send the API call to the service.
8550// the "output" return value is not valid until after Send returns without error.
8551//
8552// See PutObjectAcl for more information on using the PutObjectAcl
8553// API call, and error handling.
8554//
8555// This method is useful when you want to inject custom logic or configuration
8556// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8557//
8558//
8559//    // Example sending a request using the PutObjectAclRequest method.
8560//    req, resp := client.PutObjectAclRequest(params)
8561//
8562//    err := req.Send()
8563//    if err == nil { // resp is now filled
8564//        fmt.Println(resp)
8565//    }
8566//
8567// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
8568func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
8569	op := &request.Operation{
8570		Name:       opPutObjectAcl,
8571		HTTPMethod: "PUT",
8572		HTTPPath:   "/{Bucket}/{Key+}?acl",
8573	}
8574
8575	if input == nil {
8576		input = &PutObjectAclInput{}
8577	}
8578
8579	output = &PutObjectAclOutput{}
8580	req = c.newRequest(op, input, output)
8581	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8582		Name: "contentMd5Handler",
8583		Fn:   checksum.AddBodyContentMD5Handler,
8584	})
8585	return
8586}
8587
8588// PutObjectAcl API operation for Amazon Simple Storage Service.
8589//
8590// Uses the acl subresource to set the access control list (ACL) permissions
8591// for an object that already exists in a bucket. You must have WRITE_ACP permission
8592// to set the ACL of an object.
8593//
8594// Depending on your application needs, you can choose to set the ACL on an
8595// object using either the request body or the headers. For example, if you
8596// have an existing application that updates a bucket ACL using the request
8597// body, you can continue to use that approach. For more information, see Access
8598// Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
8599// in the Amazon S3 Developer Guide.
8600//
8601// Access Permissions
8602//
8603// You can set access permissions using one of the following methods:
8604//
8605//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
8606//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
8607//    predefined set of grantees and permissions. Specify the canned ACL name
8608//    as the value of x-amz-acl. If you use this header, you cannot use other
8609//    access control-specific headers in your request. For more information,
8610//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
8611//
8612//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
8613//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
8614//    these headers, you specify explicit access permissions and grantees (AWS
8615//    accounts or Amazon S3 groups) who will receive the permission. If you
8616//    use these ACL-specific headers, you cannot use x-amz-acl header to set
8617//    a canned ACL. These parameters map to the set of permissions that Amazon
8618//    S3 supports in an ACL. For more information, see Access Control List (ACL)
8619//    Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
8620//    You specify each grantee as a type=value pair, where the type is one of
8621//    the following: id – if the value specified is the canonical user ID
8622//    of an AWS account uri – if you are granting permissions to a predefined
8623//    group emailAddress – if the value specified is the email address of
8624//    an AWS account Using email addresses to specify a grantee is only supported
8625//    in the following AWS Regions: US East (N. Virginia) US West (N. California)
8626//    US West (Oregon) Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific
8627//    (Tokyo) Europe (Ireland) South America (São Paulo) For a list of all
8628//    the Amazon S3 supported Regions and endpoints, see Regions and Endpoints
8629//    (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) in
8630//    the AWS General Reference. For example, the following x-amz-grant-read
8631//    header grants list objects permission to the two AWS accounts identified
8632//    by their email addresses. x-amz-grant-read: emailAddress="xyz@amazon.com",
8633//    emailAddress="abc@amazon.com"
8634//
8635// You can use either a canned ACL or specify access permissions explicitly.
8636// You cannot do both.
8637//
8638// Grantee Values
8639//
8640// You can specify the person (grantee) to whom you're assigning access rights
8641// (using request elements) in the following ways:
8642//
8643//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8644//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
8645//    </Grantee> DisplayName is optional and ignored in the request.
8646//
8647//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8648//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
8649//
8650//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8651//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
8652//    The grantee is resolved to the CanonicalUser and, in a response to a GET
8653//    Object acl request, appears as the CanonicalUser. Using email addresses
8654//    to specify a grantee is only supported in the following AWS Regions: US
8655//    East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
8656//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
8657//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
8658//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
8659//    in the AWS General Reference.
8660//
8661// Versioning
8662//
8663// The ACL of an object is set at the object version level. By default, PUT
8664// sets the ACL of the current version of an object. To set the ACL of a different
8665// version, use the versionId subresource.
8666//
8667// Related Resources
8668//
8669//    * CopyObject
8670//
8671//    * GetObject
8672//
8673// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8674// with awserr.Error's Code and Message methods to get detailed information about
8675// the error.
8676//
8677// See the AWS API reference guide for Amazon Simple Storage Service's
8678// API operation PutObjectAcl for usage and error information.
8679//
8680// Returned Error Codes:
8681//   * ErrCodeNoSuchKey "NoSuchKey"
8682//   The specified key does not exist.
8683//
8684// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
8685func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
8686	req, out := c.PutObjectAclRequest(input)
8687	return out, req.Send()
8688}
8689
8690// PutObjectAclWithContext is the same as PutObjectAcl with the addition of
8691// the ability to pass a context and additional request options.
8692//
8693// See PutObjectAcl for details on how to use this API operation.
8694//
8695// The context must be non-nil and will be used for request cancellation. If
8696// the context is nil a panic will occur. In the future the SDK may create
8697// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8698// for more information on using Contexts.
8699func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
8700	req, out := c.PutObjectAclRequest(input)
8701	req.SetContext(ctx)
8702	req.ApplyOptions(opts...)
8703	return out, req.Send()
8704}
8705
8706const opPutObjectLegalHold = "PutObjectLegalHold"
8707
8708// PutObjectLegalHoldRequest generates a "aws/request.Request" representing the
8709// client's request for the PutObjectLegalHold operation. The "output" return
8710// value will be populated with the request's response once the request completes
8711// successfully.
8712//
8713// Use "Send" method on the returned Request to send the API call to the service.
8714// the "output" return value is not valid until after Send returns without error.
8715//
8716// See PutObjectLegalHold for more information on using the PutObjectLegalHold
8717// API call, and error handling.
8718//
8719// This method is useful when you want to inject custom logic or configuration
8720// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8721//
8722//
8723//    // Example sending a request using the PutObjectLegalHoldRequest method.
8724//    req, resp := client.PutObjectLegalHoldRequest(params)
8725//
8726//    err := req.Send()
8727//    if err == nil { // resp is now filled
8728//        fmt.Println(resp)
8729//    }
8730//
8731// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
8732func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) {
8733	op := &request.Operation{
8734		Name:       opPutObjectLegalHold,
8735		HTTPMethod: "PUT",
8736		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
8737	}
8738
8739	if input == nil {
8740		input = &PutObjectLegalHoldInput{}
8741	}
8742
8743	output = &PutObjectLegalHoldOutput{}
8744	req = c.newRequest(op, input, output)
8745	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8746		Name: "contentMd5Handler",
8747		Fn:   checksum.AddBodyContentMD5Handler,
8748	})
8749	return
8750}
8751
8752// PutObjectLegalHold API operation for Amazon Simple Storage Service.
8753//
8754// Applies a Legal Hold configuration to the specified object.
8755//
8756// Related Resources
8757//
8758//    * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)
8759//
8760// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8761// with awserr.Error's Code and Message methods to get detailed information about
8762// the error.
8763//
8764// See the AWS API reference guide for Amazon Simple Storage Service's
8765// API operation PutObjectLegalHold for usage and error information.
8766// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
8767func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) {
8768	req, out := c.PutObjectLegalHoldRequest(input)
8769	return out, req.Send()
8770}
8771
8772// PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of
8773// the ability to pass a context and additional request options.
8774//
8775// See PutObjectLegalHold for details on how to use this API operation.
8776//
8777// The context must be non-nil and will be used for request cancellation. If
8778// the context is nil a panic will occur. In the future the SDK may create
8779// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8780// for more information on using Contexts.
8781func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) {
8782	req, out := c.PutObjectLegalHoldRequest(input)
8783	req.SetContext(ctx)
8784	req.ApplyOptions(opts...)
8785	return out, req.Send()
8786}
8787
8788const opPutObjectLockConfiguration = "PutObjectLockConfiguration"
8789
8790// PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the
8791// client's request for the PutObjectLockConfiguration operation. The "output" return
8792// value will be populated with the request's response once the request completes
8793// successfully.
8794//
8795// Use "Send" method on the returned Request to send the API call to the service.
8796// the "output" return value is not valid until after Send returns without error.
8797//
8798// See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration
8799// API call, and error handling.
8800//
8801// This method is useful when you want to inject custom logic or configuration
8802// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8803//
8804//
8805//    // Example sending a request using the PutObjectLockConfigurationRequest method.
8806//    req, resp := client.PutObjectLockConfigurationRequest(params)
8807//
8808//    err := req.Send()
8809//    if err == nil { // resp is now filled
8810//        fmt.Println(resp)
8811//    }
8812//
8813// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
8814func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) {
8815	op := &request.Operation{
8816		Name:       opPutObjectLockConfiguration,
8817		HTTPMethod: "PUT",
8818		HTTPPath:   "/{Bucket}?object-lock",
8819	}
8820
8821	if input == nil {
8822		input = &PutObjectLockConfigurationInput{}
8823	}
8824
8825	output = &PutObjectLockConfigurationOutput{}
8826	req = c.newRequest(op, input, output)
8827	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8828		Name: "contentMd5Handler",
8829		Fn:   checksum.AddBodyContentMD5Handler,
8830	})
8831	return
8832}
8833
8834// PutObjectLockConfiguration API operation for Amazon Simple Storage Service.
8835//
8836// Places an Object Lock configuration on the specified bucket. The rule specified
8837// in the Object Lock configuration will be applied by default to every new
8838// object placed in the specified bucket.
8839//
8840// DefaultRetention requires either Days or Years. You can't specify both at
8841// the same time.
8842//
8843// Related Resources
8844//
8845//    * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)
8846//
8847// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8848// with awserr.Error's Code and Message methods to get detailed information about
8849// the error.
8850//
8851// See the AWS API reference guide for Amazon Simple Storage Service's
8852// API operation PutObjectLockConfiguration for usage and error information.
8853// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
8854func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) {
8855	req, out := c.PutObjectLockConfigurationRequest(input)
8856	return out, req.Send()
8857}
8858
8859// PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of
8860// the ability to pass a context and additional request options.
8861//
8862// See PutObjectLockConfiguration for details on how to use this API operation.
8863//
8864// The context must be non-nil and will be used for request cancellation. If
8865// the context is nil a panic will occur. In the future the SDK may create
8866// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8867// for more information on using Contexts.
8868func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) {
8869	req, out := c.PutObjectLockConfigurationRequest(input)
8870	req.SetContext(ctx)
8871	req.ApplyOptions(opts...)
8872	return out, req.Send()
8873}
8874
8875const opPutObjectRetention = "PutObjectRetention"
8876
8877// PutObjectRetentionRequest generates a "aws/request.Request" representing the
8878// client's request for the PutObjectRetention operation. The "output" return
8879// value will be populated with the request's response once the request completes
8880// successfully.
8881//
8882// Use "Send" method on the returned Request to send the API call to the service.
8883// the "output" return value is not valid until after Send returns without error.
8884//
8885// See PutObjectRetention for more information on using the PutObjectRetention
8886// API call, and error handling.
8887//
8888// This method is useful when you want to inject custom logic or configuration
8889// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8890//
8891//
8892//    // Example sending a request using the PutObjectRetentionRequest method.
8893//    req, resp := client.PutObjectRetentionRequest(params)
8894//
8895//    err := req.Send()
8896//    if err == nil { // resp is now filled
8897//        fmt.Println(resp)
8898//    }
8899//
8900// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
8901func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) {
8902	op := &request.Operation{
8903		Name:       opPutObjectRetention,
8904		HTTPMethod: "PUT",
8905		HTTPPath:   "/{Bucket}/{Key+}?retention",
8906	}
8907
8908	if input == nil {
8909		input = &PutObjectRetentionInput{}
8910	}
8911
8912	output = &PutObjectRetentionOutput{}
8913	req = c.newRequest(op, input, output)
8914	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8915		Name: "contentMd5Handler",
8916		Fn:   checksum.AddBodyContentMD5Handler,
8917	})
8918	return
8919}
8920
8921// PutObjectRetention API operation for Amazon Simple Storage Service.
8922//
8923// Places an Object Retention configuration on an object.
8924//
8925// Related Resources
8926//
8927//    * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)
8928//
8929// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8930// with awserr.Error's Code and Message methods to get detailed information about
8931// the error.
8932//
8933// See the AWS API reference guide for Amazon Simple Storage Service's
8934// API operation PutObjectRetention for usage and error information.
8935// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
8936func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) {
8937	req, out := c.PutObjectRetentionRequest(input)
8938	return out, req.Send()
8939}
8940
8941// PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of
8942// the ability to pass a context and additional request options.
8943//
8944// See PutObjectRetention for details on how to use this API operation.
8945//
8946// The context must be non-nil and will be used for request cancellation. If
8947// the context is nil a panic will occur. In the future the SDK may create
8948// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8949// for more information on using Contexts.
8950func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) {
8951	req, out := c.PutObjectRetentionRequest(input)
8952	req.SetContext(ctx)
8953	req.ApplyOptions(opts...)
8954	return out, req.Send()
8955}
8956
8957const opPutObjectTagging = "PutObjectTagging"
8958
8959// PutObjectTaggingRequest generates a "aws/request.Request" representing the
8960// client's request for the PutObjectTagging operation. The "output" return
8961// value will be populated with the request's response once the request completes
8962// successfully.
8963//
8964// Use "Send" method on the returned Request to send the API call to the service.
8965// the "output" return value is not valid until after Send returns without error.
8966//
8967// See PutObjectTagging for more information on using the PutObjectTagging
8968// API call, and error handling.
8969//
8970// This method is useful when you want to inject custom logic or configuration
8971// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8972//
8973//
8974//    // Example sending a request using the PutObjectTaggingRequest method.
8975//    req, resp := client.PutObjectTaggingRequest(params)
8976//
8977//    err := req.Send()
8978//    if err == nil { // resp is now filled
8979//        fmt.Println(resp)
8980//    }
8981//
8982// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
8983func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
8984	op := &request.Operation{
8985		Name:       opPutObjectTagging,
8986		HTTPMethod: "PUT",
8987		HTTPPath:   "/{Bucket}/{Key+}?tagging",
8988	}
8989
8990	if input == nil {
8991		input = &PutObjectTaggingInput{}
8992	}
8993
8994	output = &PutObjectTaggingOutput{}
8995	req = c.newRequest(op, input, output)
8996	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8997		Name: "contentMd5Handler",
8998		Fn:   checksum.AddBodyContentMD5Handler,
8999	})
9000	return
9001}
9002
9003// PutObjectTagging API operation for Amazon Simple Storage Service.
9004//
9005// Sets the supplied tag-set to an object that already exists in a bucket.
9006//
9007// A tag is a key-value pair. You can associate tags with an object by sending
9008// a PUT request against the tagging subresource that is associated with the
9009// object. You can retrieve tags by sending a GET request. For more information,
9010// see GetObjectTagging.
9011//
9012// For tagging-related restrictions related to characters and encodings, see
9013// Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html).
9014// Note that Amazon S3 limits the maximum number of tags to 10 tags per object.
9015//
9016// To use this operation, you must have permission to perform the s3:PutObjectTagging
9017// action. By default, the bucket owner has this permission and can grant this
9018// permission to others.
9019//
9020// To put tags of any other version, use the versionId query parameter. You
9021// also need permission for the s3:PutObjectVersionTagging action.
9022//
9023// For information about the Amazon S3 object tagging feature, see Object Tagging
9024// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9025//
9026// Special Errors
9027//
9028//    * Code: InvalidTagError Cause: The tag provided was not a valid tag. This
9029//    error can occur if the tag did not pass input validation. For more information,
9030//    see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9031//
9032//    * Code: MalformedXMLError Cause: The XML provided does not match the schema.
9033//
9034//    * Code: OperationAbortedError Cause: A conflicting conditional operation
9035//    is currently in progress against this resource. Please try again.
9036//
9037//    * Code: InternalError Cause: The service was unable to apply the provided
9038//    tag to the object.
9039//
9040// Related Resources
9041//
9042//    * GetObjectTagging
9043//
9044// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9045// with awserr.Error's Code and Message methods to get detailed information about
9046// the error.
9047//
9048// See the AWS API reference guide for Amazon Simple Storage Service's
9049// API operation PutObjectTagging for usage and error information.
9050// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
9051func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
9052	req, out := c.PutObjectTaggingRequest(input)
9053	return out, req.Send()
9054}
9055
9056// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
9057// the ability to pass a context and additional request options.
9058//
9059// See PutObjectTagging for details on how to use this API operation.
9060//
9061// The context must be non-nil and will be used for request cancellation. If
9062// the context is nil a panic will occur. In the future the SDK may create
9063// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9064// for more information on using Contexts.
9065func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
9066	req, out := c.PutObjectTaggingRequest(input)
9067	req.SetContext(ctx)
9068	req.ApplyOptions(opts...)
9069	return out, req.Send()
9070}
9071
9072const opPutPublicAccessBlock = "PutPublicAccessBlock"
9073
9074// PutPublicAccessBlockRequest generates a "aws/request.Request" representing the
9075// client's request for the PutPublicAccessBlock operation. The "output" return
9076// value will be populated with the request's response once the request completes
9077// successfully.
9078//
9079// Use "Send" method on the returned Request to send the API call to the service.
9080// the "output" return value is not valid until after Send returns without error.
9081//
9082// See PutPublicAccessBlock for more information on using the PutPublicAccessBlock
9083// API call, and error handling.
9084//
9085// This method is useful when you want to inject custom logic or configuration
9086// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9087//
9088//
9089//    // Example sending a request using the PutPublicAccessBlockRequest method.
9090//    req, resp := client.PutPublicAccessBlockRequest(params)
9091//
9092//    err := req.Send()
9093//    if err == nil { // resp is now filled
9094//        fmt.Println(resp)
9095//    }
9096//
9097// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9098func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) {
9099	op := &request.Operation{
9100		Name:       opPutPublicAccessBlock,
9101		HTTPMethod: "PUT",
9102		HTTPPath:   "/{Bucket}?publicAccessBlock",
9103	}
9104
9105	if input == nil {
9106		input = &PutPublicAccessBlockInput{}
9107	}
9108
9109	output = &PutPublicAccessBlockOutput{}
9110	req = c.newRequest(op, input, output)
9111	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
9112	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9113		Name: "contentMd5Handler",
9114		Fn:   checksum.AddBodyContentMD5Handler,
9115	})
9116	return
9117}
9118
9119// PutPublicAccessBlock API operation for Amazon Simple Storage Service.
9120//
9121// Creates or modifies the PublicAccessBlock configuration for an Amazon S3
9122// bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock
9123// permission. For more information about Amazon S3 permissions, see Specifying
9124// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
9125//
9126// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
9127// or an object, it checks the PublicAccessBlock configuration for both the
9128// bucket (or the bucket that contains the object) and the bucket owner's account.
9129// If the PublicAccessBlock configurations are different between the bucket
9130// and the account, Amazon S3 uses the most restrictive combination of the bucket-level
9131// and account-level settings.
9132//
9133// For more information about when Amazon S3 considers a bucket or an object
9134// public, see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status).
9135//
9136// Related Resources
9137//
9138//    * GetPublicAccessBlock
9139//
9140//    * DeletePublicAccessBlock
9141//
9142//    * GetBucketPolicyStatus
9143//
9144//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
9145//
9146// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9147// with awserr.Error's Code and Message methods to get detailed information about
9148// the error.
9149//
9150// See the AWS API reference guide for Amazon Simple Storage Service's
9151// API operation PutPublicAccessBlock for usage and error information.
9152// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9153func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) {
9154	req, out := c.PutPublicAccessBlockRequest(input)
9155	return out, req.Send()
9156}
9157
9158// PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of
9159// the ability to pass a context and additional request options.
9160//
9161// See PutPublicAccessBlock for details on how to use this API operation.
9162//
9163// The context must be non-nil and will be used for request cancellation. If
9164// the context is nil a panic will occur. In the future the SDK may create
9165// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9166// for more information on using Contexts.
9167func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) {
9168	req, out := c.PutPublicAccessBlockRequest(input)
9169	req.SetContext(ctx)
9170	req.ApplyOptions(opts...)
9171	return out, req.Send()
9172}
9173
9174const opRestoreObject = "RestoreObject"
9175
9176// RestoreObjectRequest generates a "aws/request.Request" representing the
9177// client's request for the RestoreObject operation. The "output" return
9178// value will be populated with the request's response once the request completes
9179// successfully.
9180//
9181// Use "Send" method on the returned Request to send the API call to the service.
9182// the "output" return value is not valid until after Send returns without error.
9183//
9184// See RestoreObject for more information on using the RestoreObject
9185// API call, and error handling.
9186//
9187// This method is useful when you want to inject custom logic or configuration
9188// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9189//
9190//
9191//    // Example sending a request using the RestoreObjectRequest method.
9192//    req, resp := client.RestoreObjectRequest(params)
9193//
9194//    err := req.Send()
9195//    if err == nil { // resp is now filled
9196//        fmt.Println(resp)
9197//    }
9198//
9199// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
9200func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
9201	op := &request.Operation{
9202		Name:       opRestoreObject,
9203		HTTPMethod: "POST",
9204		HTTPPath:   "/{Bucket}/{Key+}?restore",
9205	}
9206
9207	if input == nil {
9208		input = &RestoreObjectInput{}
9209	}
9210
9211	output = &RestoreObjectOutput{}
9212	req = c.newRequest(op, input, output)
9213	return
9214}
9215
9216// RestoreObject API operation for Amazon Simple Storage Service.
9217//
9218// Restores an archived copy of an object back into Amazon S3
9219//
9220// This operation performs the following types of requests:
9221//
9222//    * select - Perform a select query on an archived object
9223//
9224//    * restore an archive - Restore an archived object
9225//
9226// To use this operation, you must have permissions to perform the s3:RestoreObject
9227// action. The bucket owner has this permission by default and can grant this
9228// permission to others. For more information about permissions, see Permissions
9229// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
9230// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
9231// in the Amazon Simple Storage Service Developer Guide.
9232//
9233// Querying Archives with Select Requests
9234//
9235// You use a select type of request to perform SQL queries on archived objects.
9236// The archived objects that are being queried by the select request must be
9237// formatted as uncompressed comma-separated values (CSV) files. You can run
9238// queries and custom analytics on your archived data without having to restore
9239// your data to a hotter Amazon S3 tier. For an overview about select requests,
9240// see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
9241// in the Amazon Simple Storage Service Developer Guide.
9242//
9243// When making a select request, do the following:
9244//
9245//    * Define an output location for the select query's output. This must be
9246//    an Amazon S3 bucket in the same AWS Region as the bucket that contains
9247//    the archive object that is being queried. The AWS account that initiates
9248//    the job must have permissions to write to the S3 bucket. You can specify
9249//    the storage class and encryption for the output objects stored in the
9250//    bucket. For more information about output, see Querying Archived Objects
9251//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
9252//    in the Amazon Simple Storage Service Developer Guide. For more information
9253//    about the S3 structure in the request body, see the following: PutObject
9254//    Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html)
9255//    in the Amazon Simple Storage Service Developer Guide Protecting Data Using
9256//    Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
9257//    in the Amazon Simple Storage Service Developer Guide
9258//
9259//    * Define the SQL expression for the SELECT type of restoration for your
9260//    query in the request body's SelectParameters structure. You can use expressions
9261//    like the following examples. The following expression returns all records
9262//    from the specified object. SELECT * FROM Object Assuming that you are
9263//    not using any headers for data stored in the object, you can specify columns
9264//    with positional headers. SELECT s._1, s._2 FROM Object s WHERE s._3 >
9265//    100 If you have headers and you set the fileHeaderInfo in the CSV structure
9266//    in the request body to USE, you can specify headers in the query. (If
9267//    you set the fileHeaderInfo field to IGNORE, the first row is skipped for
9268//    the query.) You cannot mix ordinal positions with header column names.
9269//    SELECT s.Id, s.FirstName, s.SSN FROM S3Object s
9270//
9271// For more information about using SQL with S3 Glacier Select restore, see
9272// SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
9273// in the Amazon Simple Storage Service Developer Guide.
9274//
9275// When making a select request, you can also do the following:
9276//
9277//    * To expedite your queries, specify the Expedited tier. For more information
9278//    about tiers, see "Restoring Archives," later in this topic.
9279//
9280//    * Specify details about the data serialization format of both the input
9281//    object that is being queried and the serialization of the CSV-encoded
9282//    query results.
9283//
9284// The following are additional important facts about the select feature:
9285//
9286//    * The output results are new Amazon S3 objects. Unlike archive retrievals,
9287//    they are stored until explicitly deleted-manually or through a lifecycle
9288//    policy.
9289//
9290//    * You can issue more than one select request on the same Amazon S3 object.
9291//    Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate requests.
9292//
9293//    * Amazon S3 accepts a select request even if the object has already been
9294//    restored. A select request doesn’t return error response 409.
9295//
9296// Restoring Archives
9297//
9298// Objects in the GLACIER and DEEP_ARCHIVE storage classes are archived. To
9299// access an archived object, you must first initiate a restore request. This
9300// restores a temporary copy of the archived object. In a restore request, you
9301// specify the number of days that you want the restored copy to exist. After
9302// the specified period, Amazon S3 deletes the temporary copy but the object
9303// remains archived in the GLACIER or DEEP_ARCHIVE storage class that object
9304// was restored from.
9305//
9306// To restore a specific object version, you can provide a version ID. If you
9307// don't provide a version ID, Amazon S3 restores the current version.
9308//
9309// The time it takes restore jobs to finish depends on which storage class the
9310// object is being restored from and which data access tier you specify.
9311//
9312// When restoring an archived object (or using a select request), you can specify
9313// one of the following data access tier options in the Tier element of the
9314// request body:
9315//
9316//    * Expedited - Expedited retrievals allow you to quickly access your data
9317//    stored in the GLACIER storage class when occasional urgent requests for
9318//    a subset of archives are required. For all but the largest archived objects
9319//    (250 MB+), data accessed using Expedited retrievals are typically made
9320//    available within 1–5 minutes. Provisioned capacity ensures that retrieval
9321//    capacity for Expedited retrievals is available when you need it. Expedited
9322//    retrievals and provisioned capacity are not available for the DEEP_ARCHIVE
9323//    storage class.
9324//
9325//    * Standard - S3 Standard retrievals allow you to access any of your archived
9326//    objects within several hours. This is the default option for the GLACIER
9327//    and DEEP_ARCHIVE retrieval requests that do not specify the retrieval
9328//    option. S3 Standard retrievals typically complete within 3-5 hours from
9329//    the GLACIER storage class and typically complete within 12 hours from
9330//    the DEEP_ARCHIVE storage class.
9331//
9332//    * Bulk - Bulk retrievals are Amazon S3 Glacier’s lowest-cost retrieval
9333//    option, enabling you to retrieve large amounts, even petabytes, of data
9334//    inexpensively in a day. Bulk retrievals typically complete within 5-12
9335//    hours from the GLACIER storage class and typically complete within 48
9336//    hours from the DEEP_ARCHIVE storage class.
9337//
9338// For more information about archive retrieval options and provisioned capacity
9339// for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)
9340// in the Amazon Simple Storage Service Developer Guide.
9341//
9342// You can use Amazon S3 restore speed upgrade to change the restore speed to
9343// a faster speed while it is in progress. You upgrade the speed of an in-progress
9344// restoration by issuing another restore request to the same object, setting
9345// a new Tier request element. When issuing a request to upgrade the restore
9346// tier, you must choose a tier that is faster than the tier that the in-progress
9347// restore is using. You must not change any other parameters, such as the Days
9348// request element. For more information, see Upgrading the Speed of an In-Progress
9349// Restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
9350// in the Amazon Simple Storage Service Developer Guide.
9351//
9352// To get the status of object restoration, you can send a HEAD request. Operations
9353// return the x-amz-restore header, which provides information about the restoration
9354// status, in the response. You can use Amazon S3 event notifications to notify
9355// you when a restore is initiated or completed. For more information, see Configuring
9356// Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
9357// in the Amazon Simple Storage Service Developer Guide.
9358//
9359// After restoring an archived object, you can update the restoration period
9360// by reissuing the request with a new period. Amazon S3 updates the restoration
9361// period relative to the current time and charges only for the request-there
9362// are no data transfer charges. You cannot update the restoration period when
9363// Amazon S3 is actively processing your current restore request for the object.
9364//
9365// If your bucket has a lifecycle configuration with a rule that includes an
9366// expiration action, the object expiration overrides the life span that you
9367// specify in a restore request. For example, if you restore an object copy
9368// for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 deletes
9369// the object in 3 days. For more information about lifecycle configuration,
9370// see PutBucketLifecycleConfiguration and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
9371// in Amazon Simple Storage Service Developer Guide.
9372//
9373// Responses
9374//
9375// A successful operation returns either the 200 OK or 202 Accepted status code.
9376//
9377//    * If the object copy is not previously restored, then Amazon S3 returns
9378//    202 Accepted in the response.
9379//
9380//    * If the object copy is previously restored, Amazon S3 returns 200 OK
9381//    in the response.
9382//
9383// Special Errors
9384//
9385//    * Code: RestoreAlreadyInProgress Cause: Object restore is already in progress.
9386//    (This error does not apply to SELECT type requests.) HTTP Status Code:
9387//    409 Conflict SOAP Fault Code Prefix: Client
9388//
9389//    * Code: GlacierExpeditedRetrievalNotAvailable Cause: S3 Glacier expedited
9390//    retrievals are currently not available. Try again later. (Returned if
9391//    there is insufficient capacity to process the Expedited request. This
9392//    error applies only to Expedited retrievals and not to S3 Standard or Bulk
9393//    retrievals.) HTTP Status Code: 503 SOAP Fault Code Prefix: N/A
9394//
9395// Related Resources
9396//
9397//    * PutBucketLifecycleConfiguration
9398//
9399//    * GetBucketNotificationConfiguration
9400//
9401//    * SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
9402//    in the Amazon Simple Storage Service Developer Guide
9403//
9404// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9405// with awserr.Error's Code and Message methods to get detailed information about
9406// the error.
9407//
9408// See the AWS API reference guide for Amazon Simple Storage Service's
9409// API operation RestoreObject for usage and error information.
9410//
9411// Returned Error Codes:
9412//   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
9413//   This operation is not allowed against this storage tier.
9414//
9415// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
9416func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
9417	req, out := c.RestoreObjectRequest(input)
9418	return out, req.Send()
9419}
9420
9421// RestoreObjectWithContext is the same as RestoreObject with the addition of
9422// the ability to pass a context and additional request options.
9423//
9424// See RestoreObject for details on how to use this API operation.
9425//
9426// The context must be non-nil and will be used for request cancellation. If
9427// the context is nil a panic will occur. In the future the SDK may create
9428// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9429// for more information on using Contexts.
9430func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
9431	req, out := c.RestoreObjectRequest(input)
9432	req.SetContext(ctx)
9433	req.ApplyOptions(opts...)
9434	return out, req.Send()
9435}
9436
9437const opSelectObjectContent = "SelectObjectContent"
9438
9439// SelectObjectContentRequest generates a "aws/request.Request" representing the
9440// client's request for the SelectObjectContent operation. The "output" return
9441// value will be populated with the request's response once the request completes
9442// successfully.
9443//
9444// Use "Send" method on the returned Request to send the API call to the service.
9445// the "output" return value is not valid until after Send returns without error.
9446//
9447// See SelectObjectContent for more information on using the SelectObjectContent
9448// API call, and error handling.
9449//
9450// This method is useful when you want to inject custom logic or configuration
9451// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9452//
9453//
9454//    // Example sending a request using the SelectObjectContentRequest method.
9455//    req, resp := client.SelectObjectContentRequest(params)
9456//
9457//    err := req.Send()
9458//    if err == nil { // resp is now filled
9459//        fmt.Println(resp)
9460//    }
9461//
9462// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
9463func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
9464	op := &request.Operation{
9465		Name:       opSelectObjectContent,
9466		HTTPMethod: "POST",
9467		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
9468	}
9469
9470	if input == nil {
9471		input = &SelectObjectContentInput{}
9472	}
9473
9474	output = &SelectObjectContentOutput{}
9475	req = c.newRequest(op, input, output)
9476
9477	es := newSelectObjectContentEventStream()
9478	req.Handlers.Unmarshal.PushBack(es.setStreamCloser)
9479	output.EventStream = es
9480
9481	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
9482	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
9483	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
9484	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
9485	return
9486}
9487
9488// SelectObjectContent API operation for Amazon Simple Storage Service.
9489//
9490// This operation filters the contents of an Amazon S3 object based on a simple
9491// structured query language (SQL) statement. In the request, along with the
9492// SQL expression, you must also specify a data serialization format (JSON,
9493// CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse
9494// object data into records, and returns only records that match the specified
9495// SQL expression. You must also specify the data serialization format for the
9496// response.
9497//
9498// For more information about Amazon S3 Select, see Selecting Content from Objects
9499// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
9500// in the Amazon Simple Storage Service Developer Guide.
9501//
9502// For more information about using SQL with Amazon S3 Select, see SQL Reference
9503// for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
9504// in the Amazon Simple Storage Service Developer Guide.
9505//
9506// Permissions
9507//
9508// You must have s3:GetObject permission for this operation. Amazon S3 Select
9509// does not support anonymous access. For more information about permissions,
9510// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
9511// in the Amazon Simple Storage Service Developer Guide.
9512//
9513// Object Data Formats
9514//
9515// You can use Amazon S3 Select to query objects that have the following format
9516// properties:
9517//
9518//    * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet format.
9519//
9520//    * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports.
9521//
9522//    * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or BZIP2.
9523//    GZIP and BZIP2 are the only compression formats that Amazon S3 Select
9524//    supports for CSV and JSON files. Amazon S3 Select supports columnar compression
9525//    for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object
9526//    compression for Parquet objects.
9527//
9528//    * Server-side encryption - Amazon S3 Select supports querying objects
9529//    that are protected with server-side encryption. For objects that are encrypted
9530//    with customer-provided encryption keys (SSE-C), you must use HTTPS, and
9531//    you must use the headers that are documented in the GetObject. For more
9532//    information about SSE-C, see Server-Side Encryption (Using Customer-Provided
9533//    Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
9534//    in the Amazon Simple Storage Service Developer Guide. For objects that
9535//    are encrypted with Amazon S3 managed encryption keys (SSE-S3) and customer
9536//    master keys (CMKs) stored in AWS Key Management Service (SSE-KMS), server-side
9537//    encryption is handled transparently, so you don't need to specify anything.
9538//    For more information about server-side encryption, including SSE-S3 and
9539//    SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
9540//    in the Amazon Simple Storage Service Developer Guide.
9541//
9542// Working with the Response Body
9543//
9544// Given the response size is unknown, Amazon S3 Select streams the response
9545// as a series of messages and includes a Transfer-Encoding header with chunked
9546// as its value in the response. For more information, see RESTSelectObjectAppendix .
9547//
9548// GetObject Support
9549//
9550// The SelectObjectContent operation does not support the following GetObject
9551// functionality. For more information, see GetObject.
9552//
9553//    * Range: Although you can specify a scan range for an Amazon S3 Select
9554//    request (see SelectObjectContentRequest$ScanRange in the request parameters),
9555//    you cannot specify the range of bytes of an object to return.
9556//
9557//    * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
9558//    specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes.
9559//    For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro)
9560//    in the Amazon Simple Storage Service Developer Guide.
9561//
9562// Special Errors
9563//
9564// For a list of special errors for this operation, see SelectObjectContentErrorCodeList
9565//
9566// Related Resources
9567//
9568//    * GetObject
9569//
9570//    * GetBucketLifecycleConfiguration
9571//
9572//    * PutBucketLifecycleConfiguration
9573//
9574// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9575// with awserr.Error's Code and Message methods to get detailed information about
9576// the error.
9577//
9578// See the AWS API reference guide for Amazon Simple Storage Service's
9579// API operation SelectObjectContent for usage and error information.
9580// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
9581func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
9582	req, out := c.SelectObjectContentRequest(input)
9583	return out, req.Send()
9584}
9585
9586// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
9587// the ability to pass a context and additional request options.
9588//
9589// See SelectObjectContent for details on how to use this API operation.
9590//
9591// The context must be non-nil and will be used for request cancellation. If
9592// the context is nil a panic will occur. In the future the SDK may create
9593// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9594// for more information on using Contexts.
9595func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
9596	req, out := c.SelectObjectContentRequest(input)
9597	req.SetContext(ctx)
9598	req.ApplyOptions(opts...)
9599	return out, req.Send()
9600}
9601
9602var _ awserr.Error
9603
9604// SelectObjectContentEventStream provides the event stream handling for the SelectObjectContent.
9605type SelectObjectContentEventStream struct {
9606
9607	// Reader is the EventStream reader for the SelectObjectContentEventStream
9608	// events. This value is automatically set by the SDK when the API call is made
9609	// Use this member when unit testing your code with the SDK to mock out the
9610	// EventStream Reader.
9611	//
9612	// Must not be nil.
9613	Reader SelectObjectContentEventStreamReader
9614
9615	outputReader io.ReadCloser
9616
9617	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
9618	// EventStream this is the response Body. The stream will be closed when
9619	// the Close method of the EventStream is called.
9620	StreamCloser io.Closer
9621
9622	done      chan struct{}
9623	closeOnce sync.Once
9624	err       *eventstreamapi.OnceError
9625}
9626
9627func newSelectObjectContentEventStream() *SelectObjectContentEventStream {
9628	return &SelectObjectContentEventStream{
9629		done: make(chan struct{}),
9630		err:  eventstreamapi.NewOnceError(),
9631	}
9632}
9633
9634func (es *SelectObjectContentEventStream) setStreamCloser(r *request.Request) {
9635	es.StreamCloser = r.HTTPResponse.Body
9636}
9637
9638func (es *SelectObjectContentEventStream) runOnStreamPartClose(r *request.Request) {
9639	if es.done == nil {
9640		return
9641	}
9642	go es.waitStreamPartClose()
9643
9644}
9645
9646func (es *SelectObjectContentEventStream) waitStreamPartClose() {
9647	var outputErrCh <-chan struct{}
9648	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
9649		outputErrCh = v.ErrorSet()
9650	}
9651	var outputClosedCh <-chan struct{}
9652	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
9653		outputClosedCh = v.Closed()
9654	}
9655
9656	select {
9657	case <-es.done:
9658	case <-outputErrCh:
9659		es.err.SetError(es.Reader.Err())
9660		es.Close()
9661	case <-outputClosedCh:
9662		if err := es.Reader.Err(); err != nil {
9663			es.err.SetError(es.Reader.Err())
9664		}
9665		es.Close()
9666	}
9667}
9668
9669// Events returns a channel to read events from.
9670//
9671// These events are:
9672//
9673//     * ContinuationEvent
9674//     * EndEvent
9675//     * ProgressEvent
9676//     * RecordsEvent
9677//     * StatsEvent
9678//     * SelectObjectContentEventStreamUnknownEvent
9679func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
9680	return es.Reader.Events()
9681}
9682
9683func (es *SelectObjectContentEventStream) runOutputStream(r *request.Request) {
9684	var opts []func(*eventstream.Decoder)
9685	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
9686		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
9687	}
9688
9689	unmarshalerForEvent := unmarshalerForSelectObjectContentEventStreamEvent{
9690		metadata: protocol.ResponseMetadata{
9691			StatusCode: r.HTTPResponse.StatusCode,
9692			RequestID:  r.RequestID,
9693		},
9694	}.UnmarshalerForEventName
9695
9696	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
9697	eventReader := eventstreamapi.NewEventReader(decoder,
9698		protocol.HandlerPayloadUnmarshal{
9699			Unmarshalers: r.Handlers.UnmarshalStream,
9700		},
9701		unmarshalerForEvent,
9702	)
9703
9704	es.outputReader = r.HTTPResponse.Body
9705	es.Reader = newReadSelectObjectContentEventStream(eventReader)
9706}
9707
9708// Close closes the stream. This will also cause the stream to be closed.
9709// Close must be called when done using the stream API. Not calling Close
9710// may result in resource leaks.
9711//
9712// You can use the closing of the Reader's Events channel to terminate your
9713// application's read from the API's stream.
9714//
9715func (es *SelectObjectContentEventStream) Close() (err error) {
9716	es.closeOnce.Do(es.safeClose)
9717	return es.Err()
9718}
9719
9720func (es *SelectObjectContentEventStream) safeClose() {
9721	if es.done != nil {
9722		close(es.done)
9723	}
9724
9725	es.Reader.Close()
9726	if es.outputReader != nil {
9727		es.outputReader.Close()
9728	}
9729
9730	es.StreamCloser.Close()
9731}
9732
9733// Err returns any error that occurred while reading or writing EventStream
9734// Events from the service API's response. Returns nil if there were no errors.
9735func (es *SelectObjectContentEventStream) Err() error {
9736	if err := es.err.Err(); err != nil {
9737		return err
9738	}
9739	if err := es.Reader.Err(); err != nil {
9740		return err
9741	}
9742
9743	return nil
9744}
9745
9746const opUploadPart = "UploadPart"
9747
9748// UploadPartRequest generates a "aws/request.Request" representing the
9749// client's request for the UploadPart operation. The "output" return
9750// value will be populated with the request's response once the request completes
9751// successfully.
9752//
9753// Use "Send" method on the returned Request to send the API call to the service.
9754// the "output" return value is not valid until after Send returns without error.
9755//
9756// See UploadPart for more information on using the UploadPart
9757// API call, and error handling.
9758//
9759// This method is useful when you want to inject custom logic or configuration
9760// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9761//
9762//
9763//    // Example sending a request using the UploadPartRequest method.
9764//    req, resp := client.UploadPartRequest(params)
9765//
9766//    err := req.Send()
9767//    if err == nil { // resp is now filled
9768//        fmt.Println(resp)
9769//    }
9770//
9771// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
9772func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
9773	op := &request.Operation{
9774		Name:       opUploadPart,
9775		HTTPMethod: "PUT",
9776		HTTPPath:   "/{Bucket}/{Key+}",
9777	}
9778
9779	if input == nil {
9780		input = &UploadPartInput{}
9781	}
9782
9783	output = &UploadPartOutput{}
9784	req = c.newRequest(op, input, output)
9785	return
9786}
9787
9788// UploadPart API operation for Amazon Simple Storage Service.
9789//
9790// Uploads a part in a multipart upload.
9791//
9792// In this operation, you provide part data in your request. However, you have
9793// an option to specify your existing Amazon S3 object as a data source for
9794// the part you are uploading. To upload a part from an existing object, you
9795// use the UploadPartCopy operation.
9796//
9797// You must initiate a multipart upload (see CreateMultipartUpload) before you
9798// can upload any part. In response to your initiate request, Amazon S3 returns
9799// an upload ID, a unique identifier, that you must include in your upload part
9800// request.
9801//
9802// Part numbers can be any number from 1 to 10,000, inclusive. A part number
9803// uniquely identifies a part and also defines its position within the object
9804// being created. If you upload a new part using the same part number that was
9805// used with a previous part, the previously uploaded part is overwritten. Each
9806// part must be at least 5 MB in size, except the last part. There is no size
9807// limit on the last part of your multipart upload.
9808//
9809// To ensure that data is not corrupted when traversing the network, specify
9810// the Content-MD5 header in the upload part request. Amazon S3 checks the part
9811// data against the provided MD5 value. If they do not match, Amazon S3 returns
9812// an error.
9813//
9814// Note: After you initiate multipart upload and upload one or more parts, you
9815// must either complete or abort multipart upload in order to stop getting charged
9816// for storage of the uploaded parts. Only after you either complete or abort
9817// multipart upload, Amazon S3 frees up the parts storage and stops charging
9818// you for the parts storage.
9819//
9820// For more information on multipart uploads, go to Multipart Upload Overview
9821// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the
9822// Amazon Simple Storage Service Developer Guide .
9823//
9824// For information on the permissions required to use the multipart upload API,
9825// go to Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
9826// in the Amazon Simple Storage Service Developer Guide.
9827//
9828// You can optionally request server-side encryption where Amazon S3 encrypts
9829// your data as it writes it to disks in its data centers and decrypts it for
9830// you when you access it. You have the option of providing your own encryption
9831// key, or you can use the AWS managed encryption keys. If you choose to provide
9832// your own encryption key, the request headers you provide in the request must
9833// match the headers you used in the request to initiate the upload by using
9834// CreateMultipartUpload. For more information, go to Using Server-Side Encryption
9835// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
9836// in the Amazon Simple Storage Service Developer Guide.
9837//
9838// Server-side encryption is supported by the S3 Multipart Upload actions. Unless
9839// you are using a customer-provided encryption key, you don't need to specify
9840// the encryption parameters in each UploadPart request. Instead, you only need
9841// to specify the server-side encryption parameters in the initial Initiate
9842// Multipart request. For more information, see CreateMultipartUpload.
9843//
9844// If you requested server-side encryption using a customer-provided encryption
9845// key in your initiate multipart upload request, you must provide identical
9846// encryption information in each part upload using the following headers.
9847//
9848//    * x-amz-server-side​-encryption​-customer-algorithm
9849//
9850//    * x-amz-server-side​-encryption​-customer-key
9851//
9852//    * x-amz-server-side​-encryption​-customer-key-MD5
9853//
9854// Special Errors
9855//
9856//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
9857//    The upload ID might be invalid, or the multipart upload might have been
9858//    aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault Code
9859//    Prefix: Client
9860//
9861// Related Resources
9862//
9863//    * CreateMultipartUpload
9864//
9865//    * CompleteMultipartUpload
9866//
9867//    * AbortMultipartUpload
9868//
9869//    * ListParts
9870//
9871//    * ListMultipartUploads
9872//
9873// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9874// with awserr.Error's Code and Message methods to get detailed information about
9875// the error.
9876//
9877// See the AWS API reference guide for Amazon Simple Storage Service's
9878// API operation UploadPart for usage and error information.
9879// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
9880func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
9881	req, out := c.UploadPartRequest(input)
9882	return out, req.Send()
9883}
9884
9885// UploadPartWithContext is the same as UploadPart with the addition of
9886// the ability to pass a context and additional request options.
9887//
9888// See UploadPart for details on how to use this API operation.
9889//
9890// The context must be non-nil and will be used for request cancellation. If
9891// the context is nil a panic will occur. In the future the SDK may create
9892// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9893// for more information on using Contexts.
9894func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
9895	req, out := c.UploadPartRequest(input)
9896	req.SetContext(ctx)
9897	req.ApplyOptions(opts...)
9898	return out, req.Send()
9899}
9900
9901const opUploadPartCopy = "UploadPartCopy"
9902
9903// UploadPartCopyRequest generates a "aws/request.Request" representing the
9904// client's request for the UploadPartCopy operation. The "output" return
9905// value will be populated with the request's response once the request completes
9906// successfully.
9907//
9908// Use "Send" method on the returned Request to send the API call to the service.
9909// the "output" return value is not valid until after Send returns without error.
9910//
9911// See UploadPartCopy for more information on using the UploadPartCopy
9912// API call, and error handling.
9913//
9914// This method is useful when you want to inject custom logic or configuration
9915// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9916//
9917//
9918//    // Example sending a request using the UploadPartCopyRequest method.
9919//    req, resp := client.UploadPartCopyRequest(params)
9920//
9921//    err := req.Send()
9922//    if err == nil { // resp is now filled
9923//        fmt.Println(resp)
9924//    }
9925//
9926// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
9927func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
9928	op := &request.Operation{
9929		Name:       opUploadPartCopy,
9930		HTTPMethod: "PUT",
9931		HTTPPath:   "/{Bucket}/{Key+}",
9932	}
9933
9934	if input == nil {
9935		input = &UploadPartCopyInput{}
9936	}
9937
9938	output = &UploadPartCopyOutput{}
9939	req = c.newRequest(op, input, output)
9940	return
9941}
9942
9943// UploadPartCopy API operation for Amazon Simple Storage Service.
9944//
9945// Uploads a part by copying data from an existing object as data source. You
9946// specify the data source by adding the request header x-amz-copy-source in
9947// your request and a byte range by adding the request header x-amz-copy-source-range
9948// in your request.
9949//
9950// The minimum allowable part size for a multipart upload is 5 MB. For more
9951// information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html)
9952// in the Amazon Simple Storage Service Developer Guide.
9953//
9954// Instead of using an existing object as part data, you might use the UploadPart
9955// operation and provide data in your request.
9956//
9957// You must initiate a multipart upload before you can upload any part. In response
9958// to your initiate request. Amazon S3 returns a unique identifier, the upload
9959// ID, that you must include in your upload part request.
9960//
9961// For more information about using the UploadPartCopy operation, see the following:
9962//
9963//    * For conceptual information about multipart uploads, see Uploading Objects
9964//    Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)
9965//    in the Amazon Simple Storage Service Developer Guide.
9966//
9967//    * For information about permissions required to use the multipart upload
9968//    API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
9969//    in the Amazon Simple Storage Service Developer Guide.
9970//
9971//    * For information about copying objects using a single atomic operation
9972//    vs. the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html)
9973//    in the Amazon Simple Storage Service Developer Guide.
9974//
9975//    * For information about using server-side encryption with customer-provided
9976//    encryption keys with the UploadPartCopy operation, see CopyObject and
9977//    UploadPart.
9978//
9979// Note the following additional considerations about the request headers x-amz-copy-source-if-match,
9980// x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, and
9981// x-amz-copy-source-if-modified-since:
9982//
9983//    * Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
9984//    headers are present in the request as follows: x-amz-copy-source-if-match
9985//    condition evaluates to true, and; x-amz-copy-source-if-unmodified-since
9986//    condition evaluates to false; Amazon S3 returns 200 OK and copies the
9987//    data.
9988//
9989//    * Consideration 2 - If both of the x-amz-copy-source-if-none-match and
9990//    x-amz-copy-source-if-modified-since headers are present in the request
9991//    as follows: x-amz-copy-source-if-none-match condition evaluates to false,
9992//    and; x-amz-copy-source-if-modified-since condition evaluates to true;
9993//    Amazon S3 returns 412 Precondition Failed response code.
9994//
9995// Versioning
9996//
9997// If your bucket has versioning enabled, you could have multiple versions of
9998// the same object. By default, x-amz-copy-source identifies the current version
9999// of the object to copy. If the current version is a delete marker and you
10000// don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404
10001// error, because the object does not exist. If you specify versionId in the
10002// x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns
10003// an HTTP 400 error, because you are not allowed to specify a delete marker
10004// as a version for the x-amz-copy-source.
10005//
10006// You can optionally specify a specific version of the source object to copy
10007// by adding the versionId subresource as shown in the following example:
10008//
10009// x-amz-copy-source: /bucket/object?versionId=version id
10010//
10011// Special Errors
10012//
10013//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
10014//    The upload ID might be invalid, or the multipart upload might have been
10015//    aborted or completed. HTTP Status Code: 404 Not Found
10016//
10017//    * Code: InvalidRequest Cause: The specified copy source is not supported
10018//    as a byte-range copy source. HTTP Status Code: 400 Bad Request
10019//
10020// Related Resources
10021//
10022//    * CreateMultipartUpload
10023//
10024//    * UploadPart
10025//
10026//    * CompleteMultipartUpload
10027//
10028//    * AbortMultipartUpload
10029//
10030//    * ListParts
10031//
10032//    * ListMultipartUploads
10033//
10034// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10035// with awserr.Error's Code and Message methods to get detailed information about
10036// the error.
10037//
10038// See the AWS API reference guide for Amazon Simple Storage Service's
10039// API operation UploadPartCopy for usage and error information.
10040// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
10041func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
10042	req, out := c.UploadPartCopyRequest(input)
10043	return out, req.Send()
10044}
10045
10046// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
10047// the ability to pass a context and additional request options.
10048//
10049// See UploadPartCopy for details on how to use this API operation.
10050//
10051// The context must be non-nil and will be used for request cancellation. If
10052// the context is nil a panic will occur. In the future the SDK may create
10053// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10054// for more information on using Contexts.
10055func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
10056	req, out := c.UploadPartCopyRequest(input)
10057	req.SetContext(ctx)
10058	req.ApplyOptions(opts...)
10059	return out, req.Send()
10060}
10061
10062// Specifies the days since the initiation of an incomplete multipart upload
10063// that Amazon S3 will wait before permanently removing all parts of the upload.
10064// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
10065// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
10066// in the Amazon Simple Storage Service Developer Guide.
10067type AbortIncompleteMultipartUpload struct {
10068	_ struct{} `type:"structure"`
10069
10070	// Specifies the number of days after which Amazon S3 aborts an incomplete multipart
10071	// upload.
10072	DaysAfterInitiation *int64 `type:"integer"`
10073}
10074
10075// String returns the string representation
10076func (s AbortIncompleteMultipartUpload) String() string {
10077	return awsutil.Prettify(s)
10078}
10079
10080// GoString returns the string representation
10081func (s AbortIncompleteMultipartUpload) GoString() string {
10082	return s.String()
10083}
10084
10085// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
10086func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
10087	s.DaysAfterInitiation = &v
10088	return s
10089}
10090
10091type AbortMultipartUploadInput struct {
10092	_ struct{} `locationName:"AbortMultipartUploadRequest" type:"structure"`
10093
10094	// The bucket name to which the upload was taking place.
10095	//
10096	// When using this API with an access point, you must direct requests to the
10097	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
10098	// When using this operation using an access point through the AWS SDKs, you
10099	// provide the access point ARN in place of the bucket name. For more information
10100	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
10101	// in the Amazon Simple Storage Service Developer Guide.
10102	//
10103	// Bucket is a required field
10104	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
10105
10106	// Key of the object for which the multipart upload was initiated.
10107	//
10108	// Key is a required field
10109	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
10110
10111	// Confirms that the requester knows that they will be charged for the request.
10112	// Bucket owners need not specify this parameter in their requests. For information
10113	// about downloading objects from requester pays buckets, see Downloading Objects
10114	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
10115	// in the Amazon S3 Developer Guide.
10116	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
10117
10118	// Upload ID that identifies the multipart upload.
10119	//
10120	// UploadId is a required field
10121	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
10122}
10123
10124// String returns the string representation
10125func (s AbortMultipartUploadInput) String() string {
10126	return awsutil.Prettify(s)
10127}
10128
10129// GoString returns the string representation
10130func (s AbortMultipartUploadInput) GoString() string {
10131	return s.String()
10132}
10133
10134// Validate inspects the fields of the type to determine if they are valid.
10135func (s *AbortMultipartUploadInput) Validate() error {
10136	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
10137	if s.Bucket == nil {
10138		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10139	}
10140	if s.Bucket != nil && len(*s.Bucket) < 1 {
10141		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10142	}
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	if s.UploadId == nil {
10150		invalidParams.Add(request.NewErrParamRequired("UploadId"))
10151	}
10152
10153	if invalidParams.Len() > 0 {
10154		return invalidParams
10155	}
10156	return nil
10157}
10158
10159// SetBucket sets the Bucket field's value.
10160func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
10161	s.Bucket = &v
10162	return s
10163}
10164
10165func (s *AbortMultipartUploadInput) getBucket() (v string) {
10166	if s.Bucket == nil {
10167		return v
10168	}
10169	return *s.Bucket
10170}
10171
10172// SetKey sets the Key field's value.
10173func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
10174	s.Key = &v
10175	return s
10176}
10177
10178// SetRequestPayer sets the RequestPayer field's value.
10179func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
10180	s.RequestPayer = &v
10181	return s
10182}
10183
10184// SetUploadId sets the UploadId field's value.
10185func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
10186	s.UploadId = &v
10187	return s
10188}
10189
10190func (s *AbortMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
10191	if s.Bucket == nil {
10192		return nil, fmt.Errorf("member Bucket is nil")
10193	}
10194	return parseEndpointARN(*s.Bucket)
10195}
10196
10197func (s *AbortMultipartUploadInput) hasEndpointARN() bool {
10198	if s.Bucket == nil {
10199		return false
10200	}
10201	return arn.IsARN(*s.Bucket)
10202}
10203
10204type AbortMultipartUploadOutput struct {
10205	_ struct{} `type:"structure"`
10206
10207	// If present, indicates that the requester was successfully charged for the
10208	// request.
10209	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
10210}
10211
10212// String returns the string representation
10213func (s AbortMultipartUploadOutput) String() string {
10214	return awsutil.Prettify(s)
10215}
10216
10217// GoString returns the string representation
10218func (s AbortMultipartUploadOutput) GoString() string {
10219	return s.String()
10220}
10221
10222// SetRequestCharged sets the RequestCharged field's value.
10223func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
10224	s.RequestCharged = &v
10225	return s
10226}
10227
10228// Configures the transfer acceleration state for an Amazon S3 bucket. For more
10229// information, see Amazon S3 Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
10230// in the Amazon Simple Storage Service Developer Guide.
10231type AccelerateConfiguration struct {
10232	_ struct{} `type:"structure"`
10233
10234	// Specifies the transfer acceleration status of the bucket.
10235	Status *string `type:"string" enum:"BucketAccelerateStatus"`
10236}
10237
10238// String returns the string representation
10239func (s AccelerateConfiguration) String() string {
10240	return awsutil.Prettify(s)
10241}
10242
10243// GoString returns the string representation
10244func (s AccelerateConfiguration) GoString() string {
10245	return s.String()
10246}
10247
10248// SetStatus sets the Status field's value.
10249func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
10250	s.Status = &v
10251	return s
10252}
10253
10254// Contains the elements that set the ACL permissions for an object per grantee.
10255type AccessControlPolicy struct {
10256	_ struct{} `type:"structure"`
10257
10258	// A list of grants.
10259	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
10260
10261	// Container for the bucket owner's display name and ID.
10262	Owner *Owner `type:"structure"`
10263}
10264
10265// String returns the string representation
10266func (s AccessControlPolicy) String() string {
10267	return awsutil.Prettify(s)
10268}
10269
10270// GoString returns the string representation
10271func (s AccessControlPolicy) GoString() string {
10272	return s.String()
10273}
10274
10275// Validate inspects the fields of the type to determine if they are valid.
10276func (s *AccessControlPolicy) Validate() error {
10277	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
10278	if s.Grants != nil {
10279		for i, v := range s.Grants {
10280			if v == nil {
10281				continue
10282			}
10283			if err := v.Validate(); err != nil {
10284				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
10285			}
10286		}
10287	}
10288
10289	if invalidParams.Len() > 0 {
10290		return invalidParams
10291	}
10292	return nil
10293}
10294
10295// SetGrants sets the Grants field's value.
10296func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
10297	s.Grants = v
10298	return s
10299}
10300
10301// SetOwner sets the Owner field's value.
10302func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
10303	s.Owner = v
10304	return s
10305}
10306
10307// A container for information about access control for replicas.
10308type AccessControlTranslation struct {
10309	_ struct{} `type:"structure"`
10310
10311	// Specifies the replica ownership. For default and valid values, see PUT bucket
10312	// replication (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
10313	// in the Amazon Simple Storage Service API Reference.
10314	//
10315	// Owner is a required field
10316	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
10317}
10318
10319// String returns the string representation
10320func (s AccessControlTranslation) String() string {
10321	return awsutil.Prettify(s)
10322}
10323
10324// GoString returns the string representation
10325func (s AccessControlTranslation) GoString() string {
10326	return s.String()
10327}
10328
10329// Validate inspects the fields of the type to determine if they are valid.
10330func (s *AccessControlTranslation) Validate() error {
10331	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
10332	if s.Owner == nil {
10333		invalidParams.Add(request.NewErrParamRequired("Owner"))
10334	}
10335
10336	if invalidParams.Len() > 0 {
10337		return invalidParams
10338	}
10339	return nil
10340}
10341
10342// SetOwner sets the Owner field's value.
10343func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
10344	s.Owner = &v
10345	return s
10346}
10347
10348// A conjunction (logical AND) of predicates, which is used in evaluating a
10349// metrics filter. The operator must have at least two predicates in any combination,
10350// and an object must match all of the predicates for the filter to apply.
10351type AnalyticsAndOperator struct {
10352	_ struct{} `type:"structure"`
10353
10354	// The prefix to use when evaluating an AND predicate: The prefix that an object
10355	// must have to be included in the metrics results.
10356	Prefix *string `type:"string"`
10357
10358	// The list of tags to use when evaluating an AND predicate.
10359	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
10360}
10361
10362// String returns the string representation
10363func (s AnalyticsAndOperator) String() string {
10364	return awsutil.Prettify(s)
10365}
10366
10367// GoString returns the string representation
10368func (s AnalyticsAndOperator) GoString() string {
10369	return s.String()
10370}
10371
10372// Validate inspects the fields of the type to determine if they are valid.
10373func (s *AnalyticsAndOperator) Validate() error {
10374	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
10375	if s.Tags != nil {
10376		for i, v := range s.Tags {
10377			if v == nil {
10378				continue
10379			}
10380			if err := v.Validate(); err != nil {
10381				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
10382			}
10383		}
10384	}
10385
10386	if invalidParams.Len() > 0 {
10387		return invalidParams
10388	}
10389	return nil
10390}
10391
10392// SetPrefix sets the Prefix field's value.
10393func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
10394	s.Prefix = &v
10395	return s
10396}
10397
10398// SetTags sets the Tags field's value.
10399func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
10400	s.Tags = v
10401	return s
10402}
10403
10404// Specifies the configuration and any analyses for the analytics filter of
10405// an Amazon S3 bucket.
10406type AnalyticsConfiguration struct {
10407	_ struct{} `type:"structure"`
10408
10409	// The filter used to describe a set of objects for analyses. A filter must
10410	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
10411	// If no filter is provided, all objects will be considered in any analysis.
10412	Filter *AnalyticsFilter `type:"structure"`
10413
10414	// The ID that identifies the analytics configuration.
10415	//
10416	// Id is a required field
10417	Id *string `type:"string" required:"true"`
10418
10419	// Contains data related to access patterns to be collected and made available
10420	// to analyze the tradeoffs between different storage classes.
10421	//
10422	// StorageClassAnalysis is a required field
10423	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
10424}
10425
10426// String returns the string representation
10427func (s AnalyticsConfiguration) String() string {
10428	return awsutil.Prettify(s)
10429}
10430
10431// GoString returns the string representation
10432func (s AnalyticsConfiguration) GoString() string {
10433	return s.String()
10434}
10435
10436// Validate inspects the fields of the type to determine if they are valid.
10437func (s *AnalyticsConfiguration) Validate() error {
10438	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
10439	if s.Id == nil {
10440		invalidParams.Add(request.NewErrParamRequired("Id"))
10441	}
10442	if s.StorageClassAnalysis == nil {
10443		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
10444	}
10445	if s.Filter != nil {
10446		if err := s.Filter.Validate(); err != nil {
10447			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
10448		}
10449	}
10450	if s.StorageClassAnalysis != nil {
10451		if err := s.StorageClassAnalysis.Validate(); err != nil {
10452			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
10453		}
10454	}
10455
10456	if invalidParams.Len() > 0 {
10457		return invalidParams
10458	}
10459	return nil
10460}
10461
10462// SetFilter sets the Filter field's value.
10463func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
10464	s.Filter = v
10465	return s
10466}
10467
10468// SetId sets the Id field's value.
10469func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
10470	s.Id = &v
10471	return s
10472}
10473
10474// SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
10475func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
10476	s.StorageClassAnalysis = v
10477	return s
10478}
10479
10480// Where to publish the analytics results.
10481type AnalyticsExportDestination struct {
10482	_ struct{} `type:"structure"`
10483
10484	// A destination signifying output to an S3 bucket.
10485	//
10486	// S3BucketDestination is a required field
10487	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
10488}
10489
10490// String returns the string representation
10491func (s AnalyticsExportDestination) String() string {
10492	return awsutil.Prettify(s)
10493}
10494
10495// GoString returns the string representation
10496func (s AnalyticsExportDestination) GoString() string {
10497	return s.String()
10498}
10499
10500// Validate inspects the fields of the type to determine if they are valid.
10501func (s *AnalyticsExportDestination) Validate() error {
10502	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
10503	if s.S3BucketDestination == nil {
10504		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
10505	}
10506	if s.S3BucketDestination != nil {
10507		if err := s.S3BucketDestination.Validate(); err != nil {
10508			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
10509		}
10510	}
10511
10512	if invalidParams.Len() > 0 {
10513		return invalidParams
10514	}
10515	return nil
10516}
10517
10518// SetS3BucketDestination sets the S3BucketDestination field's value.
10519func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
10520	s.S3BucketDestination = v
10521	return s
10522}
10523
10524// The filter used to describe a set of objects for analyses. A filter must
10525// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
10526// If no filter is provided, all objects will be considered in any analysis.
10527type AnalyticsFilter struct {
10528	_ struct{} `type:"structure"`
10529
10530	// A conjunction (logical AND) of predicates, which is used in evaluating an
10531	// analytics filter. The operator must have at least two predicates.
10532	And *AnalyticsAndOperator `type:"structure"`
10533
10534	// The prefix to use when evaluating an analytics filter.
10535	Prefix *string `type:"string"`
10536
10537	// The tag to use when evaluating an analytics filter.
10538	Tag *Tag `type:"structure"`
10539}
10540
10541// String returns the string representation
10542func (s AnalyticsFilter) String() string {
10543	return awsutil.Prettify(s)
10544}
10545
10546// GoString returns the string representation
10547func (s AnalyticsFilter) GoString() string {
10548	return s.String()
10549}
10550
10551// Validate inspects the fields of the type to determine if they are valid.
10552func (s *AnalyticsFilter) Validate() error {
10553	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
10554	if s.And != nil {
10555		if err := s.And.Validate(); err != nil {
10556			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
10557		}
10558	}
10559	if s.Tag != nil {
10560		if err := s.Tag.Validate(); err != nil {
10561			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
10562		}
10563	}
10564
10565	if invalidParams.Len() > 0 {
10566		return invalidParams
10567	}
10568	return nil
10569}
10570
10571// SetAnd sets the And field's value.
10572func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
10573	s.And = v
10574	return s
10575}
10576
10577// SetPrefix sets the Prefix field's value.
10578func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
10579	s.Prefix = &v
10580	return s
10581}
10582
10583// SetTag sets the Tag field's value.
10584func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
10585	s.Tag = v
10586	return s
10587}
10588
10589// Contains information about where to publish the analytics results.
10590type AnalyticsS3BucketDestination struct {
10591	_ struct{} `type:"structure"`
10592
10593	// The Amazon Resource Name (ARN) of the bucket to which data is exported.
10594	//
10595	// Bucket is a required field
10596	Bucket *string `type:"string" required:"true"`
10597
10598	// The account ID that owns the destination S3 bucket. If no account ID is provided,
10599	// the owner is not validated before exporting data.
10600	//
10601	// Although this value is optional, we strongly recommend that you set it to
10602	// help prevent problems if the destination bucket ownership changes.
10603	BucketAccountId *string `type:"string"`
10604
10605	// Specifies the file format used when exporting data to Amazon S3.
10606	//
10607	// Format is a required field
10608	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
10609
10610	// The prefix to use when exporting data. The prefix is prepended to all results.
10611	Prefix *string `type:"string"`
10612}
10613
10614// String returns the string representation
10615func (s AnalyticsS3BucketDestination) String() string {
10616	return awsutil.Prettify(s)
10617}
10618
10619// GoString returns the string representation
10620func (s AnalyticsS3BucketDestination) GoString() string {
10621	return s.String()
10622}
10623
10624// Validate inspects the fields of the type to determine if they are valid.
10625func (s *AnalyticsS3BucketDestination) Validate() error {
10626	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
10627	if s.Bucket == nil {
10628		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10629	}
10630	if s.Format == nil {
10631		invalidParams.Add(request.NewErrParamRequired("Format"))
10632	}
10633
10634	if invalidParams.Len() > 0 {
10635		return invalidParams
10636	}
10637	return nil
10638}
10639
10640// SetBucket sets the Bucket field's value.
10641func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
10642	s.Bucket = &v
10643	return s
10644}
10645
10646func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
10647	if s.Bucket == nil {
10648		return v
10649	}
10650	return *s.Bucket
10651}
10652
10653// SetBucketAccountId sets the BucketAccountId field's value.
10654func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
10655	s.BucketAccountId = &v
10656	return s
10657}
10658
10659// SetFormat sets the Format field's value.
10660func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
10661	s.Format = &v
10662	return s
10663}
10664
10665// SetPrefix sets the Prefix field's value.
10666func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
10667	s.Prefix = &v
10668	return s
10669}
10670
10671// In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name
10672// is globally unique, and the namespace is shared by all AWS accounts.
10673type Bucket struct {
10674	_ struct{} `type:"structure"`
10675
10676	// Date the bucket was created.
10677	CreationDate *time.Time `type:"timestamp"`
10678
10679	// The name of the bucket.
10680	Name *string `type:"string"`
10681}
10682
10683// String returns the string representation
10684func (s Bucket) String() string {
10685	return awsutil.Prettify(s)
10686}
10687
10688// GoString returns the string representation
10689func (s Bucket) GoString() string {
10690	return s.String()
10691}
10692
10693// SetCreationDate sets the CreationDate field's value.
10694func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
10695	s.CreationDate = &v
10696	return s
10697}
10698
10699// SetName sets the Name field's value.
10700func (s *Bucket) SetName(v string) *Bucket {
10701	s.Name = &v
10702	return s
10703}
10704
10705// Specifies the lifecycle configuration for objects in an Amazon S3 bucket.
10706// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
10707// in the Amazon Simple Storage Service Developer Guide.
10708type BucketLifecycleConfiguration struct {
10709	_ struct{} `type:"structure"`
10710
10711	// A lifecycle rule for individual objects in an Amazon S3 bucket.
10712	//
10713	// Rules is a required field
10714	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
10715}
10716
10717// String returns the string representation
10718func (s BucketLifecycleConfiguration) String() string {
10719	return awsutil.Prettify(s)
10720}
10721
10722// GoString returns the string representation
10723func (s BucketLifecycleConfiguration) GoString() string {
10724	return s.String()
10725}
10726
10727// Validate inspects the fields of the type to determine if they are valid.
10728func (s *BucketLifecycleConfiguration) Validate() error {
10729	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
10730	if s.Rules == nil {
10731		invalidParams.Add(request.NewErrParamRequired("Rules"))
10732	}
10733	if s.Rules != nil {
10734		for i, v := range s.Rules {
10735			if v == nil {
10736				continue
10737			}
10738			if err := v.Validate(); err != nil {
10739				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
10740			}
10741		}
10742	}
10743
10744	if invalidParams.Len() > 0 {
10745		return invalidParams
10746	}
10747	return nil
10748}
10749
10750// SetRules sets the Rules field's value.
10751func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
10752	s.Rules = v
10753	return s
10754}
10755
10756// Container for logging status information.
10757type BucketLoggingStatus struct {
10758	_ struct{} `type:"structure"`
10759
10760	// Describes where logs are stored and the prefix that Amazon S3 assigns to
10761	// all log object keys for a bucket. For more information, see PUT Bucket logging
10762	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
10763	// in the Amazon Simple Storage Service API Reference.
10764	LoggingEnabled *LoggingEnabled `type:"structure"`
10765}
10766
10767// String returns the string representation
10768func (s BucketLoggingStatus) String() string {
10769	return awsutil.Prettify(s)
10770}
10771
10772// GoString returns the string representation
10773func (s BucketLoggingStatus) GoString() string {
10774	return s.String()
10775}
10776
10777// Validate inspects the fields of the type to determine if they are valid.
10778func (s *BucketLoggingStatus) Validate() error {
10779	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
10780	if s.LoggingEnabled != nil {
10781		if err := s.LoggingEnabled.Validate(); err != nil {
10782			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
10783		}
10784	}
10785
10786	if invalidParams.Len() > 0 {
10787		return invalidParams
10788	}
10789	return nil
10790}
10791
10792// SetLoggingEnabled sets the LoggingEnabled field's value.
10793func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
10794	s.LoggingEnabled = v
10795	return s
10796}
10797
10798// Describes the cross-origin access configuration for objects in an Amazon
10799// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
10800// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
10801// Simple Storage Service Developer Guide.
10802type CORSConfiguration struct {
10803	_ struct{} `type:"structure"`
10804
10805	// A set of origins and methods (cross-origin access that you want to allow).
10806	// You can add up to 100 rules to the configuration.
10807	//
10808	// CORSRules is a required field
10809	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
10810}
10811
10812// String returns the string representation
10813func (s CORSConfiguration) String() string {
10814	return awsutil.Prettify(s)
10815}
10816
10817// GoString returns the string representation
10818func (s CORSConfiguration) GoString() string {
10819	return s.String()
10820}
10821
10822// Validate inspects the fields of the type to determine if they are valid.
10823func (s *CORSConfiguration) Validate() error {
10824	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
10825	if s.CORSRules == nil {
10826		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
10827	}
10828	if s.CORSRules != nil {
10829		for i, v := range s.CORSRules {
10830			if v == nil {
10831				continue
10832			}
10833			if err := v.Validate(); err != nil {
10834				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
10835			}
10836		}
10837	}
10838
10839	if invalidParams.Len() > 0 {
10840		return invalidParams
10841	}
10842	return nil
10843}
10844
10845// SetCORSRules sets the CORSRules field's value.
10846func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
10847	s.CORSRules = v
10848	return s
10849}
10850
10851// Specifies a cross-origin access rule for an Amazon S3 bucket.
10852type CORSRule struct {
10853	_ struct{} `type:"structure"`
10854
10855	// Headers that are specified in the Access-Control-Request-Headers header.
10856	// These headers are allowed in a preflight OPTIONS request. In response to
10857	// any preflight OPTIONS request, Amazon S3 returns any requested headers that
10858	// are allowed.
10859	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
10860
10861	// An HTTP method that you allow the origin to execute. Valid values are GET,
10862	// PUT, HEAD, POST, and DELETE.
10863	//
10864	// AllowedMethods is a required field
10865	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
10866
10867	// One or more origins you want customers to be able to access the bucket from.
10868	//
10869	// AllowedOrigins is a required field
10870	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
10871
10872	// One or more headers in the response that you want customers to be able to
10873	// access from their applications (for example, from a JavaScript XMLHttpRequest
10874	// object).
10875	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
10876
10877	// The time in seconds that your browser is to cache the preflight response
10878	// for the specified resource.
10879	MaxAgeSeconds *int64 `type:"integer"`
10880}
10881
10882// String returns the string representation
10883func (s CORSRule) String() string {
10884	return awsutil.Prettify(s)
10885}
10886
10887// GoString returns the string representation
10888func (s CORSRule) GoString() string {
10889	return s.String()
10890}
10891
10892// Validate inspects the fields of the type to determine if they are valid.
10893func (s *CORSRule) Validate() error {
10894	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
10895	if s.AllowedMethods == nil {
10896		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
10897	}
10898	if s.AllowedOrigins == nil {
10899		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
10900	}
10901
10902	if invalidParams.Len() > 0 {
10903		return invalidParams
10904	}
10905	return nil
10906}
10907
10908// SetAllowedHeaders sets the AllowedHeaders field's value.
10909func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
10910	s.AllowedHeaders = v
10911	return s
10912}
10913
10914// SetAllowedMethods sets the AllowedMethods field's value.
10915func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
10916	s.AllowedMethods = v
10917	return s
10918}
10919
10920// SetAllowedOrigins sets the AllowedOrigins field's value.
10921func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
10922	s.AllowedOrigins = v
10923	return s
10924}
10925
10926// SetExposeHeaders sets the ExposeHeaders field's value.
10927func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
10928	s.ExposeHeaders = v
10929	return s
10930}
10931
10932// SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
10933func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
10934	s.MaxAgeSeconds = &v
10935	return s
10936}
10937
10938// Describes how an uncompressed comma-separated values (CSV)-formatted input
10939// object is formatted.
10940type CSVInput struct {
10941	_ struct{} `type:"structure"`
10942
10943	// Specifies that CSV field values may contain quoted record delimiters and
10944	// such records should be allowed. Default value is FALSE. Setting this value
10945	// to TRUE may lower performance.
10946	AllowQuotedRecordDelimiter *bool `type:"boolean"`
10947
10948	// A single character used to indicate that a row should be ignored when the
10949	// character is present at the start of that row. You can specify any character
10950	// to indicate a comment line.
10951	Comments *string `type:"string"`
10952
10953	// A single character used to separate individual fields in a record. You can
10954	// specify an arbitrary delimiter.
10955	FieldDelimiter *string `type:"string"`
10956
10957	// Describes the first line of input. Valid values are:
10958	//
10959	//    * NONE: First line is not a header.
10960	//
10961	//    * IGNORE: First line is a header, but you can't use the header values
10962	//    to indicate the column in an expression. You can use column position (such
10963	//    as _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s).
10964	//
10965	//    * Use: First line is a header, and you can use the header value to identify
10966	//    a column in an expression (SELECT "name" FROM OBJECT).
10967	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
10968
10969	// A single character used for escaping when the field delimiter is part of
10970	// the value. For example, if the value is a, b, Amazon S3 wraps this field
10971	// value in quotation marks, as follows: " a , b ".
10972	//
10973	// Type: String
10974	//
10975	// Default: "
10976	//
10977	// Ancestors: CSV
10978	QuoteCharacter *string `type:"string"`
10979
10980	// A single character used for escaping the quotation mark character inside
10981	// an already escaped value. For example, the value """ a , b """ is parsed
10982	// as " a , b ".
10983	QuoteEscapeCharacter *string `type:"string"`
10984
10985	// A single character used to separate individual records in the input. Instead
10986	// of the default value, you can specify an arbitrary delimiter.
10987	RecordDelimiter *string `type:"string"`
10988}
10989
10990// String returns the string representation
10991func (s CSVInput) String() string {
10992	return awsutil.Prettify(s)
10993}
10994
10995// GoString returns the string representation
10996func (s CSVInput) GoString() string {
10997	return s.String()
10998}
10999
11000// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
11001func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
11002	s.AllowQuotedRecordDelimiter = &v
11003	return s
11004}
11005
11006// SetComments sets the Comments field's value.
11007func (s *CSVInput) SetComments(v string) *CSVInput {
11008	s.Comments = &v
11009	return s
11010}
11011
11012// SetFieldDelimiter sets the FieldDelimiter field's value.
11013func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
11014	s.FieldDelimiter = &v
11015	return s
11016}
11017
11018// SetFileHeaderInfo sets the FileHeaderInfo field's value.
11019func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
11020	s.FileHeaderInfo = &v
11021	return s
11022}
11023
11024// SetQuoteCharacter sets the QuoteCharacter field's value.
11025func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
11026	s.QuoteCharacter = &v
11027	return s
11028}
11029
11030// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
11031func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
11032	s.QuoteEscapeCharacter = &v
11033	return s
11034}
11035
11036// SetRecordDelimiter sets the RecordDelimiter field's value.
11037func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
11038	s.RecordDelimiter = &v
11039	return s
11040}
11041
11042// Describes how uncompressed comma-separated values (CSV)-formatted results
11043// are formatted.
11044type CSVOutput struct {
11045	_ struct{} `type:"structure"`
11046
11047	// The value used to separate individual fields in a record. You can specify
11048	// an arbitrary delimiter.
11049	FieldDelimiter *string `type:"string"`
11050
11051	// A single character used for escaping when the field delimiter is part of
11052	// the value. For example, if the value is a, b, Amazon S3 wraps this field
11053	// value in quotation marks, as follows: " a , b ".
11054	QuoteCharacter *string `type:"string"`
11055
11056	// The single character used for escaping the quote character inside an already
11057	// escaped value.
11058	QuoteEscapeCharacter *string `type:"string"`
11059
11060	// Indicates whether to use quotation marks around output fields.
11061	//
11062	//    * ALWAYS: Always use quotation marks for output fields.
11063	//
11064	//    * ASNEEDED: Use quotation marks for output fields when needed.
11065	QuoteFields *string `type:"string" enum:"QuoteFields"`
11066
11067	// A single character used to separate individual records in the output. Instead
11068	// of the default value, you can specify an arbitrary delimiter.
11069	RecordDelimiter *string `type:"string"`
11070}
11071
11072// String returns the string representation
11073func (s CSVOutput) String() string {
11074	return awsutil.Prettify(s)
11075}
11076
11077// GoString returns the string representation
11078func (s CSVOutput) GoString() string {
11079	return s.String()
11080}
11081
11082// SetFieldDelimiter sets the FieldDelimiter field's value.
11083func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
11084	s.FieldDelimiter = &v
11085	return s
11086}
11087
11088// SetQuoteCharacter sets the QuoteCharacter field's value.
11089func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
11090	s.QuoteCharacter = &v
11091	return s
11092}
11093
11094// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
11095func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
11096	s.QuoteEscapeCharacter = &v
11097	return s
11098}
11099
11100// SetQuoteFields sets the QuoteFields field's value.
11101func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
11102	s.QuoteFields = &v
11103	return s
11104}
11105
11106// SetRecordDelimiter sets the RecordDelimiter field's value.
11107func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
11108	s.RecordDelimiter = &v
11109	return s
11110}
11111
11112// Container for specifying the AWS Lambda notification configuration.
11113type CloudFunctionConfiguration struct {
11114	_ struct{} `type:"structure"`
11115
11116	// Lambda cloud function ARN that Amazon S3 can invoke when it detects events
11117	// of the specified type.
11118	CloudFunction *string `type:"string"`
11119
11120	// The bucket event for which to send notifications.
11121	//
11122	// Deprecated: Event has been deprecated
11123	Event *string `deprecated:"true" type:"string" enum:"Event"`
11124
11125	// Bucket events for which to send notifications.
11126	Events []*string `locationName:"Event" type:"list" flattened:"true"`
11127
11128	// An optional unique identifier for configurations in a notification configuration.
11129	// If you don't provide one, Amazon S3 will assign an ID.
11130	Id *string `type:"string"`
11131
11132	// The role supporting the invocation of the Lambda function
11133	InvocationRole *string `type:"string"`
11134}
11135
11136// String returns the string representation
11137func (s CloudFunctionConfiguration) String() string {
11138	return awsutil.Prettify(s)
11139}
11140
11141// GoString returns the string representation
11142func (s CloudFunctionConfiguration) GoString() string {
11143	return s.String()
11144}
11145
11146// SetCloudFunction sets the CloudFunction field's value.
11147func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
11148	s.CloudFunction = &v
11149	return s
11150}
11151
11152// SetEvent sets the Event field's value.
11153func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
11154	s.Event = &v
11155	return s
11156}
11157
11158// SetEvents sets the Events field's value.
11159func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
11160	s.Events = v
11161	return s
11162}
11163
11164// SetId sets the Id field's value.
11165func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
11166	s.Id = &v
11167	return s
11168}
11169
11170// SetInvocationRole sets the InvocationRole field's value.
11171func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
11172	s.InvocationRole = &v
11173	return s
11174}
11175
11176// Container for all (if there are any) keys between Prefix and the next occurrence
11177// of the string specified by a delimiter. CommonPrefixes lists keys that act
11178// like subdirectories in the directory specified by Prefix. For example, if
11179// the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july,
11180// the common prefix is notes/summer/.
11181type CommonPrefix struct {
11182	_ struct{} `type:"structure"`
11183
11184	// Container for the specified common prefix.
11185	Prefix *string `type:"string"`
11186}
11187
11188// String returns the string representation
11189func (s CommonPrefix) String() string {
11190	return awsutil.Prettify(s)
11191}
11192
11193// GoString returns the string representation
11194func (s CommonPrefix) GoString() string {
11195	return s.String()
11196}
11197
11198// SetPrefix sets the Prefix field's value.
11199func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
11200	s.Prefix = &v
11201	return s
11202}
11203
11204type CompleteMultipartUploadInput struct {
11205	_ struct{} `locationName:"CompleteMultipartUploadRequest" type:"structure" payload:"MultipartUpload"`
11206
11207	// Name of the bucket to which the multipart upload was initiated.
11208	//
11209	// Bucket is a required field
11210	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11211
11212	// Object key for which the multipart upload was initiated.
11213	//
11214	// Key is a required field
11215	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11216
11217	// The container for the multipart upload request information.
11218	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
11219
11220	// Confirms that the requester knows that they will be charged for the request.
11221	// Bucket owners need not specify this parameter in their requests. For information
11222	// about downloading objects from requester pays buckets, see Downloading Objects
11223	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
11224	// in the Amazon S3 Developer Guide.
11225	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11226
11227	// ID for the initiated multipart upload.
11228	//
11229	// UploadId is a required field
11230	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
11231}
11232
11233// String returns the string representation
11234func (s CompleteMultipartUploadInput) String() string {
11235	return awsutil.Prettify(s)
11236}
11237
11238// GoString returns the string representation
11239func (s CompleteMultipartUploadInput) GoString() string {
11240	return s.String()
11241}
11242
11243// Validate inspects the fields of the type to determine if they are valid.
11244func (s *CompleteMultipartUploadInput) Validate() error {
11245	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
11246	if s.Bucket == nil {
11247		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11248	}
11249	if s.Bucket != nil && len(*s.Bucket) < 1 {
11250		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11251	}
11252	if s.Key == nil {
11253		invalidParams.Add(request.NewErrParamRequired("Key"))
11254	}
11255	if s.Key != nil && len(*s.Key) < 1 {
11256		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11257	}
11258	if s.UploadId == nil {
11259		invalidParams.Add(request.NewErrParamRequired("UploadId"))
11260	}
11261
11262	if invalidParams.Len() > 0 {
11263		return invalidParams
11264	}
11265	return nil
11266}
11267
11268// SetBucket sets the Bucket field's value.
11269func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
11270	s.Bucket = &v
11271	return s
11272}
11273
11274func (s *CompleteMultipartUploadInput) getBucket() (v string) {
11275	if s.Bucket == nil {
11276		return v
11277	}
11278	return *s.Bucket
11279}
11280
11281// SetKey sets the Key field's value.
11282func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
11283	s.Key = &v
11284	return s
11285}
11286
11287// SetMultipartUpload sets the MultipartUpload field's value.
11288func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
11289	s.MultipartUpload = v
11290	return s
11291}
11292
11293// SetRequestPayer sets the RequestPayer field's value.
11294func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
11295	s.RequestPayer = &v
11296	return s
11297}
11298
11299// SetUploadId sets the UploadId field's value.
11300func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
11301	s.UploadId = &v
11302	return s
11303}
11304
11305func (s *CompleteMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
11306	if s.Bucket == nil {
11307		return nil, fmt.Errorf("member Bucket is nil")
11308	}
11309	return parseEndpointARN(*s.Bucket)
11310}
11311
11312func (s *CompleteMultipartUploadInput) hasEndpointARN() bool {
11313	if s.Bucket == nil {
11314		return false
11315	}
11316	return arn.IsARN(*s.Bucket)
11317}
11318
11319type CompleteMultipartUploadOutput struct {
11320	_ struct{} `type:"structure"`
11321
11322	// The name of the bucket that contains the newly created object.
11323	Bucket *string `type:"string"`
11324
11325	// Entity tag that identifies the newly created object's data. Objects with
11326	// different object data will have different entity tags. The entity tag is
11327	// an opaque string. The entity tag may or may not be an MD5 digest of the object
11328	// data. If the entity tag is not an MD5 digest of the object data, it will
11329	// contain one or more nonhexadecimal characters and/or will consist of less
11330	// than 32 or more than 32 hexadecimal digits.
11331	ETag *string `type:"string"`
11332
11333	// If the object expiration is configured, this will contain the expiration
11334	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
11335	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
11336
11337	// The object key of the newly created object.
11338	Key *string `min:"1" type:"string"`
11339
11340	// The URI that identifies the newly created object.
11341	Location *string `type:"string"`
11342
11343	// If present, indicates that the requester was successfully charged for the
11344	// request.
11345	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11346
11347	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
11348	// symmetric customer managed customer master key (CMK) that was used for the
11349	// object.
11350	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
11351
11352	// If you specified server-side encryption either with an Amazon S3-managed
11353	// encryption key or an AWS KMS customer master key (CMK) in your initiate multipart
11354	// upload request, the response includes this header. It confirms the encryption
11355	// algorithm that Amazon S3 used to encrypt the object.
11356	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
11357
11358	// Version ID of the newly created object, in case the bucket has versioning
11359	// turned on.
11360	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
11361}
11362
11363// String returns the string representation
11364func (s CompleteMultipartUploadOutput) String() string {
11365	return awsutil.Prettify(s)
11366}
11367
11368// GoString returns the string representation
11369func (s CompleteMultipartUploadOutput) GoString() string {
11370	return s.String()
11371}
11372
11373// SetBucket sets the Bucket field's value.
11374func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
11375	s.Bucket = &v
11376	return s
11377}
11378
11379func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
11380	if s.Bucket == nil {
11381		return v
11382	}
11383	return *s.Bucket
11384}
11385
11386// SetETag sets the ETag field's value.
11387func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
11388	s.ETag = &v
11389	return s
11390}
11391
11392// SetExpiration sets the Expiration field's value.
11393func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
11394	s.Expiration = &v
11395	return s
11396}
11397
11398// SetKey sets the Key field's value.
11399func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
11400	s.Key = &v
11401	return s
11402}
11403
11404// SetLocation sets the Location field's value.
11405func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
11406	s.Location = &v
11407	return s
11408}
11409
11410// SetRequestCharged sets the RequestCharged field's value.
11411func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
11412	s.RequestCharged = &v
11413	return s
11414}
11415
11416// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
11417func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
11418	s.SSEKMSKeyId = &v
11419	return s
11420}
11421
11422// SetServerSideEncryption sets the ServerSideEncryption field's value.
11423func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
11424	s.ServerSideEncryption = &v
11425	return s
11426}
11427
11428// SetVersionId sets the VersionId field's value.
11429func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
11430	s.VersionId = &v
11431	return s
11432}
11433
11434// The container for the completed multipart upload details.
11435type CompletedMultipartUpload struct {
11436	_ struct{} `type:"structure"`
11437
11438	// Array of CompletedPart data types.
11439	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
11440}
11441
11442// String returns the string representation
11443func (s CompletedMultipartUpload) String() string {
11444	return awsutil.Prettify(s)
11445}
11446
11447// GoString returns the string representation
11448func (s CompletedMultipartUpload) GoString() string {
11449	return s.String()
11450}
11451
11452// SetParts sets the Parts field's value.
11453func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
11454	s.Parts = v
11455	return s
11456}
11457
11458// Details of the parts that were uploaded.
11459type CompletedPart struct {
11460	_ struct{} `type:"structure"`
11461
11462	// Entity tag returned when the part was uploaded.
11463	ETag *string `type:"string"`
11464
11465	// Part number that identifies the part. This is a positive integer between
11466	// 1 and 10,000.
11467	PartNumber *int64 `type:"integer"`
11468}
11469
11470// String returns the string representation
11471func (s CompletedPart) String() string {
11472	return awsutil.Prettify(s)
11473}
11474
11475// GoString returns the string representation
11476func (s CompletedPart) GoString() string {
11477	return s.String()
11478}
11479
11480// SetETag sets the ETag field's value.
11481func (s *CompletedPart) SetETag(v string) *CompletedPart {
11482	s.ETag = &v
11483	return s
11484}
11485
11486// SetPartNumber sets the PartNumber field's value.
11487func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
11488	s.PartNumber = &v
11489	return s
11490}
11491
11492// A container for describing a condition that must be met for the specified
11493// redirect to apply. For example, 1. If request is for pages in the /docs folder,
11494// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
11495// redirect request to another host where you might process the error.
11496type Condition struct {
11497	_ struct{} `type:"structure"`
11498
11499	// The HTTP error code when the redirect is applied. In the event of an error,
11500	// if the error code equals this value, then the specified redirect is applied.
11501	// Required when parent element Condition is specified and sibling KeyPrefixEquals
11502	// is not specified. If both are specified, then both must be true for the redirect
11503	// to be applied.
11504	HttpErrorCodeReturnedEquals *string `type:"string"`
11505
11506	// The object key name prefix when the redirect is applied. For example, to
11507	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
11508	// To redirect request for all pages with the prefix docs/, the key prefix will
11509	// be /docs, which identifies all objects in the docs/ folder. Required when
11510	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
11511	// is not specified. If both conditions are specified, both must be true for
11512	// the redirect to be applied.
11513	KeyPrefixEquals *string `type:"string"`
11514}
11515
11516// String returns the string representation
11517func (s Condition) String() string {
11518	return awsutil.Prettify(s)
11519}
11520
11521// GoString returns the string representation
11522func (s Condition) GoString() string {
11523	return s.String()
11524}
11525
11526// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
11527func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
11528	s.HttpErrorCodeReturnedEquals = &v
11529	return s
11530}
11531
11532// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
11533func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
11534	s.KeyPrefixEquals = &v
11535	return s
11536}
11537
11538type ContinuationEvent struct {
11539	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
11540}
11541
11542// String returns the string representation
11543func (s ContinuationEvent) String() string {
11544	return awsutil.Prettify(s)
11545}
11546
11547// GoString returns the string representation
11548func (s ContinuationEvent) GoString() string {
11549	return s.String()
11550}
11551
11552// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
11553func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
11554
11555// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
11556// This method is only used internally within the SDK's EventStream handling.
11557func (s *ContinuationEvent) UnmarshalEvent(
11558	payloadUnmarshaler protocol.PayloadUnmarshaler,
11559	msg eventstream.Message,
11560) error {
11561	return nil
11562}
11563
11564// MarshalEvent marshals the type into an stream event value. This method
11565// should only used internally within the SDK's EventStream handling.
11566func (s *ContinuationEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
11567	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
11568	return msg, err
11569}
11570
11571type CopyObjectInput struct {
11572	_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
11573
11574	// The canned ACL to apply to the object.
11575	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
11576
11577	// The name of the destination bucket.
11578	//
11579	// Bucket is a required field
11580	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11581
11582	// Specifies caching behavior along the request/reply chain.
11583	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
11584
11585	// Specifies presentational information for the object.
11586	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
11587
11588	// Specifies what content encodings have been applied to the object and thus
11589	// what decoding mechanisms must be applied to obtain the media-type referenced
11590	// by the Content-Type header field.
11591	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
11592
11593	// The language the content is in.
11594	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
11595
11596	// A standard MIME type describing the format of the object data.
11597	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
11598
11599	// The name of the source bucket and key name of the source object, separated
11600	// by a slash (/). Must be URL-encoded.
11601	//
11602	// CopySource is a required field
11603	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
11604
11605	// Copies the object if its entity tag (ETag) matches the specified tag.
11606	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
11607
11608	// Copies the object if it has been modified since the specified time.
11609	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
11610
11611	// Copies the object if its entity tag (ETag) is different than the specified
11612	// ETag.
11613	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
11614
11615	// Copies the object if it hasn't been modified since the specified time.
11616	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
11617
11618	// Specifies the algorithm to use when decrypting the source object (for example,
11619	// AES256).
11620	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
11621
11622	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
11623	// the source object. The encryption key provided in this header must be one
11624	// that was used when the source object was created.
11625	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
11626
11627	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
11628	// Amazon S3 uses this header for a message integrity check to ensure that the
11629	// encryption key was transmitted without error.
11630	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
11631
11632	// The date and time at which the object is no longer cacheable.
11633	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
11634
11635	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
11636	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
11637
11638	// Allows grantee to read the object data and its metadata.
11639	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
11640
11641	// Allows grantee to read the object ACL.
11642	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
11643
11644	// Allows grantee to write the ACL for the applicable object.
11645	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
11646
11647	// The key of the destination object.
11648	//
11649	// Key is a required field
11650	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11651
11652	// A map of metadata to store with the object in S3.
11653	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
11654
11655	// Specifies whether the metadata is copied from the source object or replaced
11656	// with metadata provided in the request.
11657	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
11658
11659	// Specifies whether you want to apply a Legal Hold to the copied object.
11660	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
11661
11662	// The Object Lock mode that you want to apply to the copied object.
11663	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
11664
11665	// The date and time when you want the copied object's Object Lock to expire.
11666	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
11667
11668	// Confirms that the requester knows that they will be charged for the request.
11669	// Bucket owners need not specify this parameter in their requests. For information
11670	// about downloading objects from requester pays buckets, see Downloading Objects
11671	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
11672	// in the Amazon S3 Developer Guide.
11673	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11674
11675	// Specifies the algorithm to use to when encrypting the object (for example,
11676	// AES256).
11677	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
11678
11679	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
11680	// data. This value is used to store the object and then it is discarded; Amazon
11681	// S3 does not store the encryption key. The key must be appropriate for use
11682	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
11683	// header.
11684	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
11685
11686	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
11687	// Amazon S3 uses this header for a message integrity check to ensure that the
11688	// encryption key was transmitted without error.
11689	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
11690
11691	// Specifies the AWS KMS Encryption Context to use for object encryption. The
11692	// value of this header is a base64-encoded UTF-8 string holding JSON with the
11693	// encryption context key-value pairs.
11694	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
11695
11696	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
11697	// requests for an object protected by AWS KMS will fail if not made via SSL
11698	// or using SigV4. For information about configuring using any of the officially
11699	// supported AWS SDKs and AWS CLI, see Specifying the Signature Version in Request
11700	// Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
11701	// in the Amazon S3 Developer Guide.
11702	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
11703
11704	// The server-side encryption algorithm used when storing this object in Amazon
11705	// S3 (for example, AES256, aws:kms).
11706	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
11707
11708	// The type of storage to use for the object. Defaults to 'STANDARD'.
11709	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
11710
11711	// The tag-set for the object destination object this value must be used in
11712	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
11713	// Query parameters.
11714	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
11715
11716	// Specifies whether the object tag-set are copied from the source object or
11717	// replaced with tag-set provided in the request.
11718	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
11719
11720	// If the bucket is configured as a website, redirects requests for this object
11721	// to another object in the same bucket or to an external URL. Amazon S3 stores
11722	// the value of this header in the object metadata.
11723	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
11724}
11725
11726// String returns the string representation
11727func (s CopyObjectInput) String() string {
11728	return awsutil.Prettify(s)
11729}
11730
11731// GoString returns the string representation
11732func (s CopyObjectInput) GoString() string {
11733	return s.String()
11734}
11735
11736// Validate inspects the fields of the type to determine if they are valid.
11737func (s *CopyObjectInput) Validate() error {
11738	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
11739	if s.Bucket == nil {
11740		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11741	}
11742	if s.Bucket != nil && len(*s.Bucket) < 1 {
11743		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11744	}
11745	if s.CopySource == nil {
11746		invalidParams.Add(request.NewErrParamRequired("CopySource"))
11747	}
11748	if s.Key == nil {
11749		invalidParams.Add(request.NewErrParamRequired("Key"))
11750	}
11751	if s.Key != nil && len(*s.Key) < 1 {
11752		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11753	}
11754
11755	if invalidParams.Len() > 0 {
11756		return invalidParams
11757	}
11758	return nil
11759}
11760
11761// SetACL sets the ACL field's value.
11762func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
11763	s.ACL = &v
11764	return s
11765}
11766
11767// SetBucket sets the Bucket field's value.
11768func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
11769	s.Bucket = &v
11770	return s
11771}
11772
11773func (s *CopyObjectInput) getBucket() (v string) {
11774	if s.Bucket == nil {
11775		return v
11776	}
11777	return *s.Bucket
11778}
11779
11780// SetCacheControl sets the CacheControl field's value.
11781func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
11782	s.CacheControl = &v
11783	return s
11784}
11785
11786// SetContentDisposition sets the ContentDisposition field's value.
11787func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
11788	s.ContentDisposition = &v
11789	return s
11790}
11791
11792// SetContentEncoding sets the ContentEncoding field's value.
11793func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
11794	s.ContentEncoding = &v
11795	return s
11796}
11797
11798// SetContentLanguage sets the ContentLanguage field's value.
11799func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
11800	s.ContentLanguage = &v
11801	return s
11802}
11803
11804// SetContentType sets the ContentType field's value.
11805func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
11806	s.ContentType = &v
11807	return s
11808}
11809
11810// SetCopySource sets the CopySource field's value.
11811func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
11812	s.CopySource = &v
11813	return s
11814}
11815
11816// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
11817func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
11818	s.CopySourceIfMatch = &v
11819	return s
11820}
11821
11822// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
11823func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
11824	s.CopySourceIfModifiedSince = &v
11825	return s
11826}
11827
11828// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
11829func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
11830	s.CopySourceIfNoneMatch = &v
11831	return s
11832}
11833
11834// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
11835func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
11836	s.CopySourceIfUnmodifiedSince = &v
11837	return s
11838}
11839
11840// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
11841func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
11842	s.CopySourceSSECustomerAlgorithm = &v
11843	return s
11844}
11845
11846// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
11847func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
11848	s.CopySourceSSECustomerKey = &v
11849	return s
11850}
11851
11852func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
11853	if s.CopySourceSSECustomerKey == nil {
11854		return v
11855	}
11856	return *s.CopySourceSSECustomerKey
11857}
11858
11859// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
11860func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
11861	s.CopySourceSSECustomerKeyMD5 = &v
11862	return s
11863}
11864
11865// SetExpires sets the Expires field's value.
11866func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
11867	s.Expires = &v
11868	return s
11869}
11870
11871// SetGrantFullControl sets the GrantFullControl field's value.
11872func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
11873	s.GrantFullControl = &v
11874	return s
11875}
11876
11877// SetGrantRead sets the GrantRead field's value.
11878func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
11879	s.GrantRead = &v
11880	return s
11881}
11882
11883// SetGrantReadACP sets the GrantReadACP field's value.
11884func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
11885	s.GrantReadACP = &v
11886	return s
11887}
11888
11889// SetGrantWriteACP sets the GrantWriteACP field's value.
11890func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
11891	s.GrantWriteACP = &v
11892	return s
11893}
11894
11895// SetKey sets the Key field's value.
11896func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
11897	s.Key = &v
11898	return s
11899}
11900
11901// SetMetadata sets the Metadata field's value.
11902func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
11903	s.Metadata = v
11904	return s
11905}
11906
11907// SetMetadataDirective sets the MetadataDirective field's value.
11908func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
11909	s.MetadataDirective = &v
11910	return s
11911}
11912
11913// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
11914func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput {
11915	s.ObjectLockLegalHoldStatus = &v
11916	return s
11917}
11918
11919// SetObjectLockMode sets the ObjectLockMode field's value.
11920func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput {
11921	s.ObjectLockMode = &v
11922	return s
11923}
11924
11925// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
11926func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput {
11927	s.ObjectLockRetainUntilDate = &v
11928	return s
11929}
11930
11931// SetRequestPayer sets the RequestPayer field's value.
11932func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
11933	s.RequestPayer = &v
11934	return s
11935}
11936
11937// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
11938func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
11939	s.SSECustomerAlgorithm = &v
11940	return s
11941}
11942
11943// SetSSECustomerKey sets the SSECustomerKey field's value.
11944func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
11945	s.SSECustomerKey = &v
11946	return s
11947}
11948
11949func (s *CopyObjectInput) getSSECustomerKey() (v string) {
11950	if s.SSECustomerKey == nil {
11951		return v
11952	}
11953	return *s.SSECustomerKey
11954}
11955
11956// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
11957func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
11958	s.SSECustomerKeyMD5 = &v
11959	return s
11960}
11961
11962// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
11963func (s *CopyObjectInput) SetSSEKMSEncryptionContext(v string) *CopyObjectInput {
11964	s.SSEKMSEncryptionContext = &v
11965	return s
11966}
11967
11968// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
11969func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
11970	s.SSEKMSKeyId = &v
11971	return s
11972}
11973
11974// SetServerSideEncryption sets the ServerSideEncryption field's value.
11975func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
11976	s.ServerSideEncryption = &v
11977	return s
11978}
11979
11980// SetStorageClass sets the StorageClass field's value.
11981func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
11982	s.StorageClass = &v
11983	return s
11984}
11985
11986// SetTagging sets the Tagging field's value.
11987func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
11988	s.Tagging = &v
11989	return s
11990}
11991
11992// SetTaggingDirective sets the TaggingDirective field's value.
11993func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
11994	s.TaggingDirective = &v
11995	return s
11996}
11997
11998// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
11999func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
12000	s.WebsiteRedirectLocation = &v
12001	return s
12002}
12003
12004func (s *CopyObjectInput) getEndpointARN() (arn.Resource, error) {
12005	if s.Bucket == nil {
12006		return nil, fmt.Errorf("member Bucket is nil")
12007	}
12008	return parseEndpointARN(*s.Bucket)
12009}
12010
12011func (s *CopyObjectInput) hasEndpointARN() bool {
12012	if s.Bucket == nil {
12013		return false
12014	}
12015	return arn.IsARN(*s.Bucket)
12016}
12017
12018type CopyObjectOutput struct {
12019	_ struct{} `type:"structure" payload:"CopyObjectResult"`
12020
12021	// Container for all response elements.
12022	CopyObjectResult *CopyObjectResult `type:"structure"`
12023
12024	// Version of the copied object in the destination bucket.
12025	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
12026
12027	// If the object expiration is configured, the response includes this header.
12028	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
12029
12030	// If present, indicates that the requester was successfully charged for the
12031	// request.
12032	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12033
12034	// If server-side encryption with a customer-provided encryption key was requested,
12035	// the response will include this header confirming the encryption algorithm
12036	// used.
12037	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12038
12039	// If server-side encryption with a customer-provided encryption key was requested,
12040	// the response will include this header to provide round-trip message integrity
12041	// verification of the customer-provided encryption key.
12042	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12043
12044	// If present, specifies the AWS KMS Encryption Context to use for object encryption.
12045	// The value of this header is a base64-encoded UTF-8 string holding JSON with
12046	// the encryption context key-value pairs.
12047	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
12048
12049	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
12050	// symmetric customer managed customer master key (CMK) that was used for the
12051	// object.
12052	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12053
12054	// The server-side encryption algorithm used when storing this object in Amazon
12055	// S3 (for example, AES256, aws:kms).
12056	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12057
12058	// Version ID of the newly created copy.
12059	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
12060}
12061
12062// String returns the string representation
12063func (s CopyObjectOutput) String() string {
12064	return awsutil.Prettify(s)
12065}
12066
12067// GoString returns the string representation
12068func (s CopyObjectOutput) GoString() string {
12069	return s.String()
12070}
12071
12072// SetCopyObjectResult sets the CopyObjectResult field's value.
12073func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
12074	s.CopyObjectResult = v
12075	return s
12076}
12077
12078// SetCopySourceVersionId sets the CopySourceVersionId field's value.
12079func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
12080	s.CopySourceVersionId = &v
12081	return s
12082}
12083
12084// SetExpiration sets the Expiration field's value.
12085func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
12086	s.Expiration = &v
12087	return s
12088}
12089
12090// SetRequestCharged sets the RequestCharged field's value.
12091func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
12092	s.RequestCharged = &v
12093	return s
12094}
12095
12096// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12097func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
12098	s.SSECustomerAlgorithm = &v
12099	return s
12100}
12101
12102// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12103func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
12104	s.SSECustomerKeyMD5 = &v
12105	return s
12106}
12107
12108// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
12109func (s *CopyObjectOutput) SetSSEKMSEncryptionContext(v string) *CopyObjectOutput {
12110	s.SSEKMSEncryptionContext = &v
12111	return s
12112}
12113
12114// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12115func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
12116	s.SSEKMSKeyId = &v
12117	return s
12118}
12119
12120// SetServerSideEncryption sets the ServerSideEncryption field's value.
12121func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
12122	s.ServerSideEncryption = &v
12123	return s
12124}
12125
12126// SetVersionId sets the VersionId field's value.
12127func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
12128	s.VersionId = &v
12129	return s
12130}
12131
12132// Container for all response elements.
12133type CopyObjectResult struct {
12134	_ struct{} `type:"structure"`
12135
12136	// Returns the ETag of the new object. The ETag reflects only changes to the
12137	// contents of an object, not its metadata. The source and destination ETag
12138	// is identical for a successfully copied object.
12139	ETag *string `type:"string"`
12140
12141	// Returns the date that the object was last modified.
12142	LastModified *time.Time `type:"timestamp"`
12143}
12144
12145// String returns the string representation
12146func (s CopyObjectResult) String() string {
12147	return awsutil.Prettify(s)
12148}
12149
12150// GoString returns the string representation
12151func (s CopyObjectResult) GoString() string {
12152	return s.String()
12153}
12154
12155// SetETag sets the ETag field's value.
12156func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
12157	s.ETag = &v
12158	return s
12159}
12160
12161// SetLastModified sets the LastModified field's value.
12162func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
12163	s.LastModified = &v
12164	return s
12165}
12166
12167// Container for all response elements.
12168type CopyPartResult struct {
12169	_ struct{} `type:"structure"`
12170
12171	// Entity tag of the object.
12172	ETag *string `type:"string"`
12173
12174	// Date and time at which the object was uploaded.
12175	LastModified *time.Time `type:"timestamp"`
12176}
12177
12178// String returns the string representation
12179func (s CopyPartResult) String() string {
12180	return awsutil.Prettify(s)
12181}
12182
12183// GoString returns the string representation
12184func (s CopyPartResult) GoString() string {
12185	return s.String()
12186}
12187
12188// SetETag sets the ETag field's value.
12189func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
12190	s.ETag = &v
12191	return s
12192}
12193
12194// SetLastModified sets the LastModified field's value.
12195func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
12196	s.LastModified = &v
12197	return s
12198}
12199
12200// The configuration information for the bucket.
12201type CreateBucketConfiguration struct {
12202	_ struct{} `type:"structure"`
12203
12204	// Specifies the Region where the bucket will be created. If you don't specify
12205	// a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1).
12206	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
12207}
12208
12209// String returns the string representation
12210func (s CreateBucketConfiguration) String() string {
12211	return awsutil.Prettify(s)
12212}
12213
12214// GoString returns the string representation
12215func (s CreateBucketConfiguration) GoString() string {
12216	return s.String()
12217}
12218
12219// SetLocationConstraint sets the LocationConstraint field's value.
12220func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
12221	s.LocationConstraint = &v
12222	return s
12223}
12224
12225type CreateBucketInput struct {
12226	_ struct{} `locationName:"CreateBucketRequest" type:"structure" payload:"CreateBucketConfiguration"`
12227
12228	// The canned ACL to apply to the bucket.
12229	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
12230
12231	// The name of the bucket to create.
12232	//
12233	// Bucket is a required field
12234	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12235
12236	// The configuration information for the bucket.
12237	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
12238
12239	// Allows grantee the read, write, read ACP, and write ACP permissions on the
12240	// bucket.
12241	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
12242
12243	// Allows grantee to list the objects in the bucket.
12244	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
12245
12246	// Allows grantee to read the bucket ACL.
12247	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
12248
12249	// Allows grantee to create, overwrite, and delete any object in the bucket.
12250	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
12251
12252	// Allows grantee to write the ACL for the applicable bucket.
12253	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
12254
12255	// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
12256	ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"`
12257}
12258
12259// String returns the string representation
12260func (s CreateBucketInput) String() string {
12261	return awsutil.Prettify(s)
12262}
12263
12264// GoString returns the string representation
12265func (s CreateBucketInput) GoString() string {
12266	return s.String()
12267}
12268
12269// Validate inspects the fields of the type to determine if they are valid.
12270func (s *CreateBucketInput) Validate() error {
12271	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
12272	if s.Bucket == nil {
12273		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12274	}
12275	if s.Bucket != nil && len(*s.Bucket) < 1 {
12276		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12277	}
12278
12279	if invalidParams.Len() > 0 {
12280		return invalidParams
12281	}
12282	return nil
12283}
12284
12285// SetACL sets the ACL field's value.
12286func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
12287	s.ACL = &v
12288	return s
12289}
12290
12291// SetBucket sets the Bucket field's value.
12292func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
12293	s.Bucket = &v
12294	return s
12295}
12296
12297func (s *CreateBucketInput) getBucket() (v string) {
12298	if s.Bucket == nil {
12299		return v
12300	}
12301	return *s.Bucket
12302}
12303
12304// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
12305func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
12306	s.CreateBucketConfiguration = v
12307	return s
12308}
12309
12310// SetGrantFullControl sets the GrantFullControl field's value.
12311func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
12312	s.GrantFullControl = &v
12313	return s
12314}
12315
12316// SetGrantRead sets the GrantRead field's value.
12317func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
12318	s.GrantRead = &v
12319	return s
12320}
12321
12322// SetGrantReadACP sets the GrantReadACP field's value.
12323func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
12324	s.GrantReadACP = &v
12325	return s
12326}
12327
12328// SetGrantWrite sets the GrantWrite field's value.
12329func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
12330	s.GrantWrite = &v
12331	return s
12332}
12333
12334// SetGrantWriteACP sets the GrantWriteACP field's value.
12335func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
12336	s.GrantWriteACP = &v
12337	return s
12338}
12339
12340// SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value.
12341func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput {
12342	s.ObjectLockEnabledForBucket = &v
12343	return s
12344}
12345
12346type CreateBucketOutput struct {
12347	_ struct{} `type:"structure"`
12348
12349	// Specifies the Region where the bucket will be created. If you are creating
12350	// a bucket on the US East (N. Virginia) Region (us-east-1), you do not need
12351	// to specify the location.
12352	Location *string `location:"header" locationName:"Location" type:"string"`
12353}
12354
12355// String returns the string representation
12356func (s CreateBucketOutput) String() string {
12357	return awsutil.Prettify(s)
12358}
12359
12360// GoString returns the string representation
12361func (s CreateBucketOutput) GoString() string {
12362	return s.String()
12363}
12364
12365// SetLocation sets the Location field's value.
12366func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
12367	s.Location = &v
12368	return s
12369}
12370
12371type CreateMultipartUploadInput struct {
12372	_ struct{} `locationName:"CreateMultipartUploadRequest" type:"structure"`
12373
12374	// The canned ACL to apply to the object.
12375	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
12376
12377	// The name of the bucket to which to initiate the upload
12378	//
12379	// Bucket is a required field
12380	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12381
12382	// Specifies caching behavior along the request/reply chain.
12383	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
12384
12385	// Specifies presentational information for the object.
12386	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
12387
12388	// Specifies what content encodings have been applied to the object and thus
12389	// what decoding mechanisms must be applied to obtain the media-type referenced
12390	// by the Content-Type header field.
12391	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
12392
12393	// The language the content is in.
12394	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
12395
12396	// A standard MIME type describing the format of the object data.
12397	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
12398
12399	// The date and time at which the object is no longer cacheable.
12400	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
12401
12402	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
12403	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
12404
12405	// Allows grantee to read the object data and its metadata.
12406	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
12407
12408	// Allows grantee to read the object ACL.
12409	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
12410
12411	// Allows grantee to write the ACL for the applicable object.
12412	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
12413
12414	// Object key for which the multipart upload is to be initiated.
12415	//
12416	// Key is a required field
12417	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12418
12419	// A map of metadata to store with the object in S3.
12420	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
12421
12422	// Specifies whether you want to apply a Legal Hold to the uploaded object.
12423	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
12424
12425	// Specifies the Object Lock mode that you want to apply to the uploaded object.
12426	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
12427
12428	// Specifies the date and time when you want the Object Lock to expire.
12429	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
12430
12431	// Confirms that the requester knows that they will be charged for the request.
12432	// Bucket owners need not specify this parameter in their requests. For information
12433	// about downloading objects from requester pays buckets, see Downloading Objects
12434	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
12435	// in the Amazon S3 Developer Guide.
12436	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12437
12438	// Specifies the algorithm to use to when encrypting the object (for example,
12439	// AES256).
12440	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12441
12442	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
12443	// data. This value is used to store the object and then it is discarded; Amazon
12444	// S3 does not store the encryption key. The key must be appropriate for use
12445	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
12446	// header.
12447	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
12448
12449	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
12450	// Amazon S3 uses this header for a message integrity check to ensure that the
12451	// encryption key was transmitted without error.
12452	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12453
12454	// Specifies the AWS KMS Encryption Context to use for object encryption. The
12455	// value of this header is a base64-encoded UTF-8 string holding JSON with the
12456	// encryption context key-value pairs.
12457	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
12458
12459	// Specifies the ID of the symmetric customer managed AWS KMS CMK to use for
12460	// object encryption. All GET and PUT requests for an object protected by AWS
12461	// KMS will fail if not made via SSL or using SigV4. For information about configuring
12462	// using any of the officially supported AWS SDKs and AWS CLI, see Specifying
12463	// the Signature Version in Request Authentication (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
12464	// in the Amazon S3 Developer Guide.
12465	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12466
12467	// The server-side encryption algorithm used when storing this object in Amazon
12468	// S3 (for example, AES256, aws:kms).
12469	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12470
12471	// The type of storage to use for the object. Defaults to 'STANDARD'.
12472	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
12473
12474	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
12475	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
12476
12477	// If the bucket is configured as a website, redirects requests for this object
12478	// to another object in the same bucket or to an external URL. Amazon S3 stores
12479	// the value of this header in the object metadata.
12480	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
12481}
12482
12483// String returns the string representation
12484func (s CreateMultipartUploadInput) String() string {
12485	return awsutil.Prettify(s)
12486}
12487
12488// GoString returns the string representation
12489func (s CreateMultipartUploadInput) GoString() string {
12490	return s.String()
12491}
12492
12493// Validate inspects the fields of the type to determine if they are valid.
12494func (s *CreateMultipartUploadInput) Validate() error {
12495	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
12496	if s.Bucket == nil {
12497		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12498	}
12499	if s.Bucket != nil && len(*s.Bucket) < 1 {
12500		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12501	}
12502	if s.Key == nil {
12503		invalidParams.Add(request.NewErrParamRequired("Key"))
12504	}
12505	if s.Key != nil && len(*s.Key) < 1 {
12506		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12507	}
12508
12509	if invalidParams.Len() > 0 {
12510		return invalidParams
12511	}
12512	return nil
12513}
12514
12515// SetACL sets the ACL field's value.
12516func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
12517	s.ACL = &v
12518	return s
12519}
12520
12521// SetBucket sets the Bucket field's value.
12522func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
12523	s.Bucket = &v
12524	return s
12525}
12526
12527func (s *CreateMultipartUploadInput) getBucket() (v string) {
12528	if s.Bucket == nil {
12529		return v
12530	}
12531	return *s.Bucket
12532}
12533
12534// SetCacheControl sets the CacheControl field's value.
12535func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
12536	s.CacheControl = &v
12537	return s
12538}
12539
12540// SetContentDisposition sets the ContentDisposition field's value.
12541func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
12542	s.ContentDisposition = &v
12543	return s
12544}
12545
12546// SetContentEncoding sets the ContentEncoding field's value.
12547func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
12548	s.ContentEncoding = &v
12549	return s
12550}
12551
12552// SetContentLanguage sets the ContentLanguage field's value.
12553func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
12554	s.ContentLanguage = &v
12555	return s
12556}
12557
12558// SetContentType sets the ContentType field's value.
12559func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
12560	s.ContentType = &v
12561	return s
12562}
12563
12564// SetExpires sets the Expires field's value.
12565func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
12566	s.Expires = &v
12567	return s
12568}
12569
12570// SetGrantFullControl sets the GrantFullControl field's value.
12571func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
12572	s.GrantFullControl = &v
12573	return s
12574}
12575
12576// SetGrantRead sets the GrantRead field's value.
12577func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
12578	s.GrantRead = &v
12579	return s
12580}
12581
12582// SetGrantReadACP sets the GrantReadACP field's value.
12583func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
12584	s.GrantReadACP = &v
12585	return s
12586}
12587
12588// SetGrantWriteACP sets the GrantWriteACP field's value.
12589func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
12590	s.GrantWriteACP = &v
12591	return s
12592}
12593
12594// SetKey sets the Key field's value.
12595func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
12596	s.Key = &v
12597	return s
12598}
12599
12600// SetMetadata sets the Metadata field's value.
12601func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
12602	s.Metadata = v
12603	return s
12604}
12605
12606// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
12607func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput {
12608	s.ObjectLockLegalHoldStatus = &v
12609	return s
12610}
12611
12612// SetObjectLockMode sets the ObjectLockMode field's value.
12613func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput {
12614	s.ObjectLockMode = &v
12615	return s
12616}
12617
12618// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
12619func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput {
12620	s.ObjectLockRetainUntilDate = &v
12621	return s
12622}
12623
12624// SetRequestPayer sets the RequestPayer field's value.
12625func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
12626	s.RequestPayer = &v
12627	return s
12628}
12629
12630// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12631func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
12632	s.SSECustomerAlgorithm = &v
12633	return s
12634}
12635
12636// SetSSECustomerKey sets the SSECustomerKey field's value.
12637func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
12638	s.SSECustomerKey = &v
12639	return s
12640}
12641
12642func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
12643	if s.SSECustomerKey == nil {
12644		return v
12645	}
12646	return *s.SSECustomerKey
12647}
12648
12649// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12650func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
12651	s.SSECustomerKeyMD5 = &v
12652	return s
12653}
12654
12655// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
12656func (s *CreateMultipartUploadInput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadInput {
12657	s.SSEKMSEncryptionContext = &v
12658	return s
12659}
12660
12661// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12662func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
12663	s.SSEKMSKeyId = &v
12664	return s
12665}
12666
12667// SetServerSideEncryption sets the ServerSideEncryption field's value.
12668func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
12669	s.ServerSideEncryption = &v
12670	return s
12671}
12672
12673// SetStorageClass sets the StorageClass field's value.
12674func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
12675	s.StorageClass = &v
12676	return s
12677}
12678
12679// SetTagging sets the Tagging field's value.
12680func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
12681	s.Tagging = &v
12682	return s
12683}
12684
12685// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
12686func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
12687	s.WebsiteRedirectLocation = &v
12688	return s
12689}
12690
12691func (s *CreateMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
12692	if s.Bucket == nil {
12693		return nil, fmt.Errorf("member Bucket is nil")
12694	}
12695	return parseEndpointARN(*s.Bucket)
12696}
12697
12698func (s *CreateMultipartUploadInput) hasEndpointARN() bool {
12699	if s.Bucket == nil {
12700		return false
12701	}
12702	return arn.IsARN(*s.Bucket)
12703}
12704
12705type CreateMultipartUploadOutput struct {
12706	_ struct{} `type:"structure"`
12707
12708	// If the bucket has a lifecycle rule configured with an action to abort incomplete
12709	// multipart uploads and the prefix in the lifecycle rule matches the object
12710	// name in the request, the response includes this header. The header indicates
12711	// when the initiated multipart upload becomes eligible for an abort operation.
12712	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
12713	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
12714	//
12715	// The response also includes the x-amz-abort-rule-id header that provides the
12716	// ID of the lifecycle configuration rule that defines this action.
12717	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
12718
12719	// This header is returned along with the x-amz-abort-date header. It identifies
12720	// the applicable lifecycle configuration rule that defines the action to abort
12721	// incomplete multipart uploads.
12722	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
12723
12724	// Name of the bucket to which the multipart upload was initiated.
12725	//
12726	// When using this API with an access point, you must direct requests to the
12727	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12728	// When using this operation using an access point through the AWS SDKs, you
12729	// provide the access point ARN in place of the bucket name. For more information
12730	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
12731	// in the Amazon Simple Storage Service Developer Guide.
12732	Bucket *string `locationName:"Bucket" type:"string"`
12733
12734	// Object key for which the multipart upload was initiated.
12735	Key *string `min:"1" type:"string"`
12736
12737	// If present, indicates that the requester was successfully charged for the
12738	// request.
12739	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12740
12741	// If server-side encryption with a customer-provided encryption key was requested,
12742	// the response will include this header confirming the encryption algorithm
12743	// used.
12744	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12745
12746	// If server-side encryption with a customer-provided encryption key was requested,
12747	// the response will include this header to provide round-trip message integrity
12748	// verification of the customer-provided encryption key.
12749	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12750
12751	// If present, specifies the AWS KMS Encryption Context to use for object encryption.
12752	// The value of this header is a base64-encoded UTF-8 string holding JSON with
12753	// the encryption context key-value pairs.
12754	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
12755
12756	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
12757	// symmetric customer managed customer master key (CMK) that was used for the
12758	// object.
12759	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12760
12761	// The server-side encryption algorithm used when storing this object in Amazon
12762	// S3 (for example, AES256, aws:kms).
12763	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12764
12765	// ID for the initiated multipart upload.
12766	UploadId *string `type:"string"`
12767}
12768
12769// String returns the string representation
12770func (s CreateMultipartUploadOutput) String() string {
12771	return awsutil.Prettify(s)
12772}
12773
12774// GoString returns the string representation
12775func (s CreateMultipartUploadOutput) GoString() string {
12776	return s.String()
12777}
12778
12779// SetAbortDate sets the AbortDate field's value.
12780func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
12781	s.AbortDate = &v
12782	return s
12783}
12784
12785// SetAbortRuleId sets the AbortRuleId field's value.
12786func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
12787	s.AbortRuleId = &v
12788	return s
12789}
12790
12791// SetBucket sets the Bucket field's value.
12792func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
12793	s.Bucket = &v
12794	return s
12795}
12796
12797func (s *CreateMultipartUploadOutput) getBucket() (v string) {
12798	if s.Bucket == nil {
12799		return v
12800	}
12801	return *s.Bucket
12802}
12803
12804// SetKey sets the Key field's value.
12805func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
12806	s.Key = &v
12807	return s
12808}
12809
12810// SetRequestCharged sets the RequestCharged field's value.
12811func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
12812	s.RequestCharged = &v
12813	return s
12814}
12815
12816// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12817func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
12818	s.SSECustomerAlgorithm = &v
12819	return s
12820}
12821
12822// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12823func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
12824	s.SSECustomerKeyMD5 = &v
12825	return s
12826}
12827
12828// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
12829func (s *CreateMultipartUploadOutput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadOutput {
12830	s.SSEKMSEncryptionContext = &v
12831	return s
12832}
12833
12834// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12835func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
12836	s.SSEKMSKeyId = &v
12837	return s
12838}
12839
12840// SetServerSideEncryption sets the ServerSideEncryption field's value.
12841func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
12842	s.ServerSideEncryption = &v
12843	return s
12844}
12845
12846// SetUploadId sets the UploadId field's value.
12847func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
12848	s.UploadId = &v
12849	return s
12850}
12851
12852// The container element for specifying the default Object Lock retention settings
12853// for new objects placed in the specified bucket.
12854type DefaultRetention struct {
12855	_ struct{} `type:"structure"`
12856
12857	// The number of days that you want to specify for the default retention period.
12858	Days *int64 `type:"integer"`
12859
12860	// The default Object Lock retention mode you want to apply to new objects placed
12861	// in the specified bucket.
12862	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
12863
12864	// The number of years that you want to specify for the default retention period.
12865	Years *int64 `type:"integer"`
12866}
12867
12868// String returns the string representation
12869func (s DefaultRetention) String() string {
12870	return awsutil.Prettify(s)
12871}
12872
12873// GoString returns the string representation
12874func (s DefaultRetention) GoString() string {
12875	return s.String()
12876}
12877
12878// SetDays sets the Days field's value.
12879func (s *DefaultRetention) SetDays(v int64) *DefaultRetention {
12880	s.Days = &v
12881	return s
12882}
12883
12884// SetMode sets the Mode field's value.
12885func (s *DefaultRetention) SetMode(v string) *DefaultRetention {
12886	s.Mode = &v
12887	return s
12888}
12889
12890// SetYears sets the Years field's value.
12891func (s *DefaultRetention) SetYears(v int64) *DefaultRetention {
12892	s.Years = &v
12893	return s
12894}
12895
12896// Container for the objects to delete.
12897type Delete struct {
12898	_ struct{} `type:"structure"`
12899
12900	// The objects to delete.
12901	//
12902	// Objects is a required field
12903	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
12904
12905	// Element to enable quiet mode for the request. When you add this element,
12906	// you must set its value to true.
12907	Quiet *bool `type:"boolean"`
12908}
12909
12910// String returns the string representation
12911func (s Delete) String() string {
12912	return awsutil.Prettify(s)
12913}
12914
12915// GoString returns the string representation
12916func (s Delete) GoString() string {
12917	return s.String()
12918}
12919
12920// Validate inspects the fields of the type to determine if they are valid.
12921func (s *Delete) Validate() error {
12922	invalidParams := request.ErrInvalidParams{Context: "Delete"}
12923	if s.Objects == nil {
12924		invalidParams.Add(request.NewErrParamRequired("Objects"))
12925	}
12926	if s.Objects != nil {
12927		for i, v := range s.Objects {
12928			if v == nil {
12929				continue
12930			}
12931			if err := v.Validate(); err != nil {
12932				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
12933			}
12934		}
12935	}
12936
12937	if invalidParams.Len() > 0 {
12938		return invalidParams
12939	}
12940	return nil
12941}
12942
12943// SetObjects sets the Objects field's value.
12944func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
12945	s.Objects = v
12946	return s
12947}
12948
12949// SetQuiet sets the Quiet field's value.
12950func (s *Delete) SetQuiet(v bool) *Delete {
12951	s.Quiet = &v
12952	return s
12953}
12954
12955type DeleteBucketAnalyticsConfigurationInput struct {
12956	_ struct{} `locationName:"DeleteBucketAnalyticsConfigurationRequest" type:"structure"`
12957
12958	// The name of the bucket from which an analytics configuration is deleted.
12959	//
12960	// Bucket is a required field
12961	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12962
12963	// The ID that identifies the analytics configuration.
12964	//
12965	// Id is a required field
12966	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
12967}
12968
12969// String returns the string representation
12970func (s DeleteBucketAnalyticsConfigurationInput) String() string {
12971	return awsutil.Prettify(s)
12972}
12973
12974// GoString returns the string representation
12975func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
12976	return s.String()
12977}
12978
12979// Validate inspects the fields of the type to determine if they are valid.
12980func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
12981	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
12982	if s.Bucket == nil {
12983		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12984	}
12985	if s.Bucket != nil && len(*s.Bucket) < 1 {
12986		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12987	}
12988	if s.Id == nil {
12989		invalidParams.Add(request.NewErrParamRequired("Id"))
12990	}
12991
12992	if invalidParams.Len() > 0 {
12993		return invalidParams
12994	}
12995	return nil
12996}
12997
12998// SetBucket sets the Bucket field's value.
12999func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
13000	s.Bucket = &v
13001	return s
13002}
13003
13004func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
13005	if s.Bucket == nil {
13006		return v
13007	}
13008	return *s.Bucket
13009}
13010
13011// SetId sets the Id field's value.
13012func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
13013	s.Id = &v
13014	return s
13015}
13016
13017func (s *DeleteBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
13018	if s.Bucket == nil {
13019		return nil, fmt.Errorf("member Bucket is nil")
13020	}
13021	return parseEndpointARN(*s.Bucket)
13022}
13023
13024func (s *DeleteBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
13025	if s.Bucket == nil {
13026		return false
13027	}
13028	return arn.IsARN(*s.Bucket)
13029}
13030
13031type DeleteBucketAnalyticsConfigurationOutput struct {
13032	_ struct{} `type:"structure"`
13033}
13034
13035// String returns the string representation
13036func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
13037	return awsutil.Prettify(s)
13038}
13039
13040// GoString returns the string representation
13041func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
13042	return s.String()
13043}
13044
13045type DeleteBucketCorsInput struct {
13046	_ struct{} `locationName:"DeleteBucketCorsRequest" type:"structure"`
13047
13048	// Specifies the bucket whose cors configuration is being deleted.
13049	//
13050	// Bucket is a required field
13051	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13052}
13053
13054// String returns the string representation
13055func (s DeleteBucketCorsInput) String() string {
13056	return awsutil.Prettify(s)
13057}
13058
13059// GoString returns the string representation
13060func (s DeleteBucketCorsInput) GoString() string {
13061	return s.String()
13062}
13063
13064// Validate inspects the fields of the type to determine if they are valid.
13065func (s *DeleteBucketCorsInput) Validate() error {
13066	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
13067	if s.Bucket == nil {
13068		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13069	}
13070	if s.Bucket != nil && len(*s.Bucket) < 1 {
13071		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13072	}
13073
13074	if invalidParams.Len() > 0 {
13075		return invalidParams
13076	}
13077	return nil
13078}
13079
13080// SetBucket sets the Bucket field's value.
13081func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
13082	s.Bucket = &v
13083	return s
13084}
13085
13086func (s *DeleteBucketCorsInput) getBucket() (v string) {
13087	if s.Bucket == nil {
13088		return v
13089	}
13090	return *s.Bucket
13091}
13092
13093func (s *DeleteBucketCorsInput) getEndpointARN() (arn.Resource, error) {
13094	if s.Bucket == nil {
13095		return nil, fmt.Errorf("member Bucket is nil")
13096	}
13097	return parseEndpointARN(*s.Bucket)
13098}
13099
13100func (s *DeleteBucketCorsInput) hasEndpointARN() bool {
13101	if s.Bucket == nil {
13102		return false
13103	}
13104	return arn.IsARN(*s.Bucket)
13105}
13106
13107type DeleteBucketCorsOutput struct {
13108	_ struct{} `type:"structure"`
13109}
13110
13111// String returns the string representation
13112func (s DeleteBucketCorsOutput) String() string {
13113	return awsutil.Prettify(s)
13114}
13115
13116// GoString returns the string representation
13117func (s DeleteBucketCorsOutput) GoString() string {
13118	return s.String()
13119}
13120
13121type DeleteBucketEncryptionInput struct {
13122	_ struct{} `locationName:"DeleteBucketEncryptionRequest" type:"structure"`
13123
13124	// The name of the bucket containing the server-side encryption configuration
13125	// to delete.
13126	//
13127	// Bucket is a required field
13128	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13129}
13130
13131// String returns the string representation
13132func (s DeleteBucketEncryptionInput) String() string {
13133	return awsutil.Prettify(s)
13134}
13135
13136// GoString returns the string representation
13137func (s DeleteBucketEncryptionInput) GoString() string {
13138	return s.String()
13139}
13140
13141// Validate inspects the fields of the type to determine if they are valid.
13142func (s *DeleteBucketEncryptionInput) Validate() error {
13143	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
13144	if s.Bucket == nil {
13145		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13146	}
13147	if s.Bucket != nil && len(*s.Bucket) < 1 {
13148		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13149	}
13150
13151	if invalidParams.Len() > 0 {
13152		return invalidParams
13153	}
13154	return nil
13155}
13156
13157// SetBucket sets the Bucket field's value.
13158func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
13159	s.Bucket = &v
13160	return s
13161}
13162
13163func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
13164	if s.Bucket == nil {
13165		return v
13166	}
13167	return *s.Bucket
13168}
13169
13170func (s *DeleteBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
13171	if s.Bucket == nil {
13172		return nil, fmt.Errorf("member Bucket is nil")
13173	}
13174	return parseEndpointARN(*s.Bucket)
13175}
13176
13177func (s *DeleteBucketEncryptionInput) hasEndpointARN() bool {
13178	if s.Bucket == nil {
13179		return false
13180	}
13181	return arn.IsARN(*s.Bucket)
13182}
13183
13184type DeleteBucketEncryptionOutput struct {
13185	_ struct{} `type:"structure"`
13186}
13187
13188// String returns the string representation
13189func (s DeleteBucketEncryptionOutput) String() string {
13190	return awsutil.Prettify(s)
13191}
13192
13193// GoString returns the string representation
13194func (s DeleteBucketEncryptionOutput) GoString() string {
13195	return s.String()
13196}
13197
13198type DeleteBucketInput struct {
13199	_ struct{} `locationName:"DeleteBucketRequest" type:"structure"`
13200
13201	// Specifies the bucket being deleted.
13202	//
13203	// Bucket is a required field
13204	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13205}
13206
13207// String returns the string representation
13208func (s DeleteBucketInput) String() string {
13209	return awsutil.Prettify(s)
13210}
13211
13212// GoString returns the string representation
13213func (s DeleteBucketInput) GoString() string {
13214	return s.String()
13215}
13216
13217// Validate inspects the fields of the type to determine if they are valid.
13218func (s *DeleteBucketInput) Validate() error {
13219	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
13220	if s.Bucket == nil {
13221		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13222	}
13223	if s.Bucket != nil && len(*s.Bucket) < 1 {
13224		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13225	}
13226
13227	if invalidParams.Len() > 0 {
13228		return invalidParams
13229	}
13230	return nil
13231}
13232
13233// SetBucket sets the Bucket field's value.
13234func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
13235	s.Bucket = &v
13236	return s
13237}
13238
13239func (s *DeleteBucketInput) getBucket() (v string) {
13240	if s.Bucket == nil {
13241		return v
13242	}
13243	return *s.Bucket
13244}
13245
13246func (s *DeleteBucketInput) getEndpointARN() (arn.Resource, error) {
13247	if s.Bucket == nil {
13248		return nil, fmt.Errorf("member Bucket is nil")
13249	}
13250	return parseEndpointARN(*s.Bucket)
13251}
13252
13253func (s *DeleteBucketInput) hasEndpointARN() bool {
13254	if s.Bucket == nil {
13255		return false
13256	}
13257	return arn.IsARN(*s.Bucket)
13258}
13259
13260type DeleteBucketInventoryConfigurationInput struct {
13261	_ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"`
13262
13263	// The name of the bucket containing the inventory configuration to delete.
13264	//
13265	// Bucket is a required field
13266	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13267
13268	// The ID used to identify the inventory configuration.
13269	//
13270	// Id is a required field
13271	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
13272}
13273
13274// String returns the string representation
13275func (s DeleteBucketInventoryConfigurationInput) String() string {
13276	return awsutil.Prettify(s)
13277}
13278
13279// GoString returns the string representation
13280func (s DeleteBucketInventoryConfigurationInput) GoString() string {
13281	return s.String()
13282}
13283
13284// Validate inspects the fields of the type to determine if they are valid.
13285func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
13286	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
13287	if s.Bucket == nil {
13288		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13289	}
13290	if s.Bucket != nil && len(*s.Bucket) < 1 {
13291		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13292	}
13293	if s.Id == nil {
13294		invalidParams.Add(request.NewErrParamRequired("Id"))
13295	}
13296
13297	if invalidParams.Len() > 0 {
13298		return invalidParams
13299	}
13300	return nil
13301}
13302
13303// SetBucket sets the Bucket field's value.
13304func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
13305	s.Bucket = &v
13306	return s
13307}
13308
13309func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
13310	if s.Bucket == nil {
13311		return v
13312	}
13313	return *s.Bucket
13314}
13315
13316// SetId sets the Id field's value.
13317func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
13318	s.Id = &v
13319	return s
13320}
13321
13322func (s *DeleteBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
13323	if s.Bucket == nil {
13324		return nil, fmt.Errorf("member Bucket is nil")
13325	}
13326	return parseEndpointARN(*s.Bucket)
13327}
13328
13329func (s *DeleteBucketInventoryConfigurationInput) hasEndpointARN() bool {
13330	if s.Bucket == nil {
13331		return false
13332	}
13333	return arn.IsARN(*s.Bucket)
13334}
13335
13336type DeleteBucketInventoryConfigurationOutput struct {
13337	_ struct{} `type:"structure"`
13338}
13339
13340// String returns the string representation
13341func (s DeleteBucketInventoryConfigurationOutput) String() string {
13342	return awsutil.Prettify(s)
13343}
13344
13345// GoString returns the string representation
13346func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
13347	return s.String()
13348}
13349
13350type DeleteBucketLifecycleInput struct {
13351	_ struct{} `locationName:"DeleteBucketLifecycleRequest" type:"structure"`
13352
13353	// The bucket name of the lifecycle to delete.
13354	//
13355	// Bucket is a required field
13356	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13357}
13358
13359// String returns the string representation
13360func (s DeleteBucketLifecycleInput) String() string {
13361	return awsutil.Prettify(s)
13362}
13363
13364// GoString returns the string representation
13365func (s DeleteBucketLifecycleInput) GoString() string {
13366	return s.String()
13367}
13368
13369// Validate inspects the fields of the type to determine if they are valid.
13370func (s *DeleteBucketLifecycleInput) Validate() error {
13371	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
13372	if s.Bucket == nil {
13373		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13374	}
13375	if s.Bucket != nil && len(*s.Bucket) < 1 {
13376		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13377	}
13378
13379	if invalidParams.Len() > 0 {
13380		return invalidParams
13381	}
13382	return nil
13383}
13384
13385// SetBucket sets the Bucket field's value.
13386func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
13387	s.Bucket = &v
13388	return s
13389}
13390
13391func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
13392	if s.Bucket == nil {
13393		return v
13394	}
13395	return *s.Bucket
13396}
13397
13398func (s *DeleteBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
13399	if s.Bucket == nil {
13400		return nil, fmt.Errorf("member Bucket is nil")
13401	}
13402	return parseEndpointARN(*s.Bucket)
13403}
13404
13405func (s *DeleteBucketLifecycleInput) hasEndpointARN() bool {
13406	if s.Bucket == nil {
13407		return false
13408	}
13409	return arn.IsARN(*s.Bucket)
13410}
13411
13412type DeleteBucketLifecycleOutput struct {
13413	_ struct{} `type:"structure"`
13414}
13415
13416// String returns the string representation
13417func (s DeleteBucketLifecycleOutput) String() string {
13418	return awsutil.Prettify(s)
13419}
13420
13421// GoString returns the string representation
13422func (s DeleteBucketLifecycleOutput) GoString() string {
13423	return s.String()
13424}
13425
13426type DeleteBucketMetricsConfigurationInput struct {
13427	_ struct{} `locationName:"DeleteBucketMetricsConfigurationRequest" type:"structure"`
13428
13429	// The name of the bucket containing the metrics configuration to delete.
13430	//
13431	// Bucket is a required field
13432	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13433
13434	// The ID used to identify the metrics configuration.
13435	//
13436	// Id is a required field
13437	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
13438}
13439
13440// String returns the string representation
13441func (s DeleteBucketMetricsConfigurationInput) String() string {
13442	return awsutil.Prettify(s)
13443}
13444
13445// GoString returns the string representation
13446func (s DeleteBucketMetricsConfigurationInput) GoString() string {
13447	return s.String()
13448}
13449
13450// Validate inspects the fields of the type to determine if they are valid.
13451func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
13452	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
13453	if s.Bucket == nil {
13454		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13455	}
13456	if s.Bucket != nil && len(*s.Bucket) < 1 {
13457		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13458	}
13459	if s.Id == nil {
13460		invalidParams.Add(request.NewErrParamRequired("Id"))
13461	}
13462
13463	if invalidParams.Len() > 0 {
13464		return invalidParams
13465	}
13466	return nil
13467}
13468
13469// SetBucket sets the Bucket field's value.
13470func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
13471	s.Bucket = &v
13472	return s
13473}
13474
13475func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
13476	if s.Bucket == nil {
13477		return v
13478	}
13479	return *s.Bucket
13480}
13481
13482// SetId sets the Id field's value.
13483func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
13484	s.Id = &v
13485	return s
13486}
13487
13488func (s *DeleteBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
13489	if s.Bucket == nil {
13490		return nil, fmt.Errorf("member Bucket is nil")
13491	}
13492	return parseEndpointARN(*s.Bucket)
13493}
13494
13495func (s *DeleteBucketMetricsConfigurationInput) hasEndpointARN() bool {
13496	if s.Bucket == nil {
13497		return false
13498	}
13499	return arn.IsARN(*s.Bucket)
13500}
13501
13502type DeleteBucketMetricsConfigurationOutput struct {
13503	_ struct{} `type:"structure"`
13504}
13505
13506// String returns the string representation
13507func (s DeleteBucketMetricsConfigurationOutput) String() string {
13508	return awsutil.Prettify(s)
13509}
13510
13511// GoString returns the string representation
13512func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
13513	return s.String()
13514}
13515
13516type DeleteBucketOutput struct {
13517	_ struct{} `type:"structure"`
13518}
13519
13520// String returns the string representation
13521func (s DeleteBucketOutput) String() string {
13522	return awsutil.Prettify(s)
13523}
13524
13525// GoString returns the string representation
13526func (s DeleteBucketOutput) GoString() string {
13527	return s.String()
13528}
13529
13530type DeleteBucketPolicyInput struct {
13531	_ struct{} `locationName:"DeleteBucketPolicyRequest" type:"structure"`
13532
13533	// The bucket name.
13534	//
13535	// Bucket is a required field
13536	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13537}
13538
13539// String returns the string representation
13540func (s DeleteBucketPolicyInput) String() string {
13541	return awsutil.Prettify(s)
13542}
13543
13544// GoString returns the string representation
13545func (s DeleteBucketPolicyInput) GoString() string {
13546	return s.String()
13547}
13548
13549// Validate inspects the fields of the type to determine if they are valid.
13550func (s *DeleteBucketPolicyInput) Validate() error {
13551	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
13552	if s.Bucket == nil {
13553		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13554	}
13555	if s.Bucket != nil && len(*s.Bucket) < 1 {
13556		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13557	}
13558
13559	if invalidParams.Len() > 0 {
13560		return invalidParams
13561	}
13562	return nil
13563}
13564
13565// SetBucket sets the Bucket field's value.
13566func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
13567	s.Bucket = &v
13568	return s
13569}
13570
13571func (s *DeleteBucketPolicyInput) getBucket() (v string) {
13572	if s.Bucket == nil {
13573		return v
13574	}
13575	return *s.Bucket
13576}
13577
13578func (s *DeleteBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
13579	if s.Bucket == nil {
13580		return nil, fmt.Errorf("member Bucket is nil")
13581	}
13582	return parseEndpointARN(*s.Bucket)
13583}
13584
13585func (s *DeleteBucketPolicyInput) hasEndpointARN() bool {
13586	if s.Bucket == nil {
13587		return false
13588	}
13589	return arn.IsARN(*s.Bucket)
13590}
13591
13592type DeleteBucketPolicyOutput struct {
13593	_ struct{} `type:"structure"`
13594}
13595
13596// String returns the string representation
13597func (s DeleteBucketPolicyOutput) String() string {
13598	return awsutil.Prettify(s)
13599}
13600
13601// GoString returns the string representation
13602func (s DeleteBucketPolicyOutput) GoString() string {
13603	return s.String()
13604}
13605
13606type DeleteBucketReplicationInput struct {
13607	_ struct{} `locationName:"DeleteBucketReplicationRequest" type:"structure"`
13608
13609	// The bucket name.
13610	//
13611	// Bucket is a required field
13612	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13613}
13614
13615// String returns the string representation
13616func (s DeleteBucketReplicationInput) String() string {
13617	return awsutil.Prettify(s)
13618}
13619
13620// GoString returns the string representation
13621func (s DeleteBucketReplicationInput) GoString() string {
13622	return s.String()
13623}
13624
13625// Validate inspects the fields of the type to determine if they are valid.
13626func (s *DeleteBucketReplicationInput) Validate() error {
13627	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
13628	if s.Bucket == nil {
13629		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13630	}
13631	if s.Bucket != nil && len(*s.Bucket) < 1 {
13632		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13633	}
13634
13635	if invalidParams.Len() > 0 {
13636		return invalidParams
13637	}
13638	return nil
13639}
13640
13641// SetBucket sets the Bucket field's value.
13642func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
13643	s.Bucket = &v
13644	return s
13645}
13646
13647func (s *DeleteBucketReplicationInput) getBucket() (v string) {
13648	if s.Bucket == nil {
13649		return v
13650	}
13651	return *s.Bucket
13652}
13653
13654func (s *DeleteBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
13655	if s.Bucket == nil {
13656		return nil, fmt.Errorf("member Bucket is nil")
13657	}
13658	return parseEndpointARN(*s.Bucket)
13659}
13660
13661func (s *DeleteBucketReplicationInput) hasEndpointARN() bool {
13662	if s.Bucket == nil {
13663		return false
13664	}
13665	return arn.IsARN(*s.Bucket)
13666}
13667
13668type DeleteBucketReplicationOutput struct {
13669	_ struct{} `type:"structure"`
13670}
13671
13672// String returns the string representation
13673func (s DeleteBucketReplicationOutput) String() string {
13674	return awsutil.Prettify(s)
13675}
13676
13677// GoString returns the string representation
13678func (s DeleteBucketReplicationOutput) GoString() string {
13679	return s.String()
13680}
13681
13682type DeleteBucketTaggingInput struct {
13683	_ struct{} `locationName:"DeleteBucketTaggingRequest" type:"structure"`
13684
13685	// The bucket that has the tag set to be removed.
13686	//
13687	// Bucket is a required field
13688	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13689}
13690
13691// String returns the string representation
13692func (s DeleteBucketTaggingInput) String() string {
13693	return awsutil.Prettify(s)
13694}
13695
13696// GoString returns the string representation
13697func (s DeleteBucketTaggingInput) GoString() string {
13698	return s.String()
13699}
13700
13701// Validate inspects the fields of the type to determine if they are valid.
13702func (s *DeleteBucketTaggingInput) Validate() error {
13703	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
13704	if s.Bucket == nil {
13705		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13706	}
13707	if s.Bucket != nil && len(*s.Bucket) < 1 {
13708		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13709	}
13710
13711	if invalidParams.Len() > 0 {
13712		return invalidParams
13713	}
13714	return nil
13715}
13716
13717// SetBucket sets the Bucket field's value.
13718func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
13719	s.Bucket = &v
13720	return s
13721}
13722
13723func (s *DeleteBucketTaggingInput) getBucket() (v string) {
13724	if s.Bucket == nil {
13725		return v
13726	}
13727	return *s.Bucket
13728}
13729
13730func (s *DeleteBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
13731	if s.Bucket == nil {
13732		return nil, fmt.Errorf("member Bucket is nil")
13733	}
13734	return parseEndpointARN(*s.Bucket)
13735}
13736
13737func (s *DeleteBucketTaggingInput) hasEndpointARN() bool {
13738	if s.Bucket == nil {
13739		return false
13740	}
13741	return arn.IsARN(*s.Bucket)
13742}
13743
13744type DeleteBucketTaggingOutput struct {
13745	_ struct{} `type:"structure"`
13746}
13747
13748// String returns the string representation
13749func (s DeleteBucketTaggingOutput) String() string {
13750	return awsutil.Prettify(s)
13751}
13752
13753// GoString returns the string representation
13754func (s DeleteBucketTaggingOutput) GoString() string {
13755	return s.String()
13756}
13757
13758type DeleteBucketWebsiteInput struct {
13759	_ struct{} `locationName:"DeleteBucketWebsiteRequest" type:"structure"`
13760
13761	// The bucket name for which you want to remove the website configuration.
13762	//
13763	// Bucket is a required field
13764	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13765}
13766
13767// String returns the string representation
13768func (s DeleteBucketWebsiteInput) String() string {
13769	return awsutil.Prettify(s)
13770}
13771
13772// GoString returns the string representation
13773func (s DeleteBucketWebsiteInput) GoString() string {
13774	return s.String()
13775}
13776
13777// Validate inspects the fields of the type to determine if they are valid.
13778func (s *DeleteBucketWebsiteInput) Validate() error {
13779	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
13780	if s.Bucket == nil {
13781		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13782	}
13783	if s.Bucket != nil && len(*s.Bucket) < 1 {
13784		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13785	}
13786
13787	if invalidParams.Len() > 0 {
13788		return invalidParams
13789	}
13790	return nil
13791}
13792
13793// SetBucket sets the Bucket field's value.
13794func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
13795	s.Bucket = &v
13796	return s
13797}
13798
13799func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
13800	if s.Bucket == nil {
13801		return v
13802	}
13803	return *s.Bucket
13804}
13805
13806func (s *DeleteBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
13807	if s.Bucket == nil {
13808		return nil, fmt.Errorf("member Bucket is nil")
13809	}
13810	return parseEndpointARN(*s.Bucket)
13811}
13812
13813func (s *DeleteBucketWebsiteInput) hasEndpointARN() bool {
13814	if s.Bucket == nil {
13815		return false
13816	}
13817	return arn.IsARN(*s.Bucket)
13818}
13819
13820type DeleteBucketWebsiteOutput struct {
13821	_ struct{} `type:"structure"`
13822}
13823
13824// String returns the string representation
13825func (s DeleteBucketWebsiteOutput) String() string {
13826	return awsutil.Prettify(s)
13827}
13828
13829// GoString returns the string representation
13830func (s DeleteBucketWebsiteOutput) GoString() string {
13831	return s.String()
13832}
13833
13834// Information about the delete marker.
13835type DeleteMarkerEntry struct {
13836	_ struct{} `type:"structure"`
13837
13838	// Specifies whether the object is (true) or is not (false) the latest version
13839	// of an object.
13840	IsLatest *bool `type:"boolean"`
13841
13842	// The object key.
13843	Key *string `min:"1" type:"string"`
13844
13845	// Date and time the object was last modified.
13846	LastModified *time.Time `type:"timestamp"`
13847
13848	// The account that created the delete marker.>
13849	Owner *Owner `type:"structure"`
13850
13851	// Version ID of an object.
13852	VersionId *string `type:"string"`
13853}
13854
13855// String returns the string representation
13856func (s DeleteMarkerEntry) String() string {
13857	return awsutil.Prettify(s)
13858}
13859
13860// GoString returns the string representation
13861func (s DeleteMarkerEntry) GoString() string {
13862	return s.String()
13863}
13864
13865// SetIsLatest sets the IsLatest field's value.
13866func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
13867	s.IsLatest = &v
13868	return s
13869}
13870
13871// SetKey sets the Key field's value.
13872func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
13873	s.Key = &v
13874	return s
13875}
13876
13877// SetLastModified sets the LastModified field's value.
13878func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
13879	s.LastModified = &v
13880	return s
13881}
13882
13883// SetOwner sets the Owner field's value.
13884func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
13885	s.Owner = v
13886	return s
13887}
13888
13889// SetVersionId sets the VersionId field's value.
13890func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
13891	s.VersionId = &v
13892	return s
13893}
13894
13895// Specifies whether Amazon S3 replicates the delete markers. If you specify
13896// a Filter, you must specify this element. However, in the latest version of
13897// replication configuration (when Filter is specified), Amazon S3 doesn't replicate
13898// delete markers. Therefore, the DeleteMarkerReplication element can contain
13899// only <Status>Disabled</Status>. For an example configuration, see Basic Rule
13900// Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
13901//
13902// If you don't specify the Filter element, Amazon S3 assumes that the replication
13903// configuration is the earlier version, V1. In the earlier version, Amazon
13904// S3 handled replication of delete markers differently. For more information,
13905// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
13906type DeleteMarkerReplication struct {
13907	_ struct{} `type:"structure"`
13908
13909	// Indicates whether to replicate delete markers.
13910	//
13911	// In the current implementation, Amazon S3 doesn't replicate the delete markers.
13912	// The status must be Disabled.
13913	Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
13914}
13915
13916// String returns the string representation
13917func (s DeleteMarkerReplication) String() string {
13918	return awsutil.Prettify(s)
13919}
13920
13921// GoString returns the string representation
13922func (s DeleteMarkerReplication) GoString() string {
13923	return s.String()
13924}
13925
13926// SetStatus sets the Status field's value.
13927func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication {
13928	s.Status = &v
13929	return s
13930}
13931
13932type DeleteObjectInput struct {
13933	_ struct{} `locationName:"DeleteObjectRequest" type:"structure"`
13934
13935	// The bucket name of the bucket containing the object.
13936	//
13937	// When using this API with an access point, you must direct requests to the
13938	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
13939	// When using this operation using an access point through the AWS SDKs, you
13940	// provide the access point ARN in place of the bucket name. For more information
13941	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
13942	// in the Amazon Simple Storage Service Developer Guide.
13943	//
13944	// Bucket is a required field
13945	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13946
13947	// Indicates whether S3 Object Lock should bypass Governance-mode restrictions
13948	// to process this operation.
13949	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
13950
13951	// Key name of the object to delete.
13952	//
13953	// Key is a required field
13954	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13955
13956	// The concatenation of the authentication device's serial number, a space,
13957	// and the value that is displayed on your authentication device. Required to
13958	// permanently delete a versioned object if versioning is configured with MFA
13959	// delete enabled.
13960	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
13961
13962	// Confirms that the requester knows that they will be charged for the request.
13963	// Bucket owners need not specify this parameter in their requests. For information
13964	// about downloading objects from requester pays buckets, see Downloading Objects
13965	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
13966	// in the Amazon S3 Developer Guide.
13967	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13968
13969	// VersionId used to reference a specific version of the object.
13970	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
13971}
13972
13973// String returns the string representation
13974func (s DeleteObjectInput) String() string {
13975	return awsutil.Prettify(s)
13976}
13977
13978// GoString returns the string representation
13979func (s DeleteObjectInput) GoString() string {
13980	return s.String()
13981}
13982
13983// Validate inspects the fields of the type to determine if they are valid.
13984func (s *DeleteObjectInput) Validate() error {
13985	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
13986	if s.Bucket == nil {
13987		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13988	}
13989	if s.Bucket != nil && len(*s.Bucket) < 1 {
13990		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13991	}
13992	if s.Key == nil {
13993		invalidParams.Add(request.NewErrParamRequired("Key"))
13994	}
13995	if s.Key != nil && len(*s.Key) < 1 {
13996		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13997	}
13998
13999	if invalidParams.Len() > 0 {
14000		return invalidParams
14001	}
14002	return nil
14003}
14004
14005// SetBucket sets the Bucket field's value.
14006func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
14007	s.Bucket = &v
14008	return s
14009}
14010
14011func (s *DeleteObjectInput) getBucket() (v string) {
14012	if s.Bucket == nil {
14013		return v
14014	}
14015	return *s.Bucket
14016}
14017
14018// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
14019func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput {
14020	s.BypassGovernanceRetention = &v
14021	return s
14022}
14023
14024// SetKey sets the Key field's value.
14025func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
14026	s.Key = &v
14027	return s
14028}
14029
14030// SetMFA sets the MFA field's value.
14031func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
14032	s.MFA = &v
14033	return s
14034}
14035
14036// SetRequestPayer sets the RequestPayer field's value.
14037func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
14038	s.RequestPayer = &v
14039	return s
14040}
14041
14042// SetVersionId sets the VersionId field's value.
14043func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
14044	s.VersionId = &v
14045	return s
14046}
14047
14048func (s *DeleteObjectInput) getEndpointARN() (arn.Resource, error) {
14049	if s.Bucket == nil {
14050		return nil, fmt.Errorf("member Bucket is nil")
14051	}
14052	return parseEndpointARN(*s.Bucket)
14053}
14054
14055func (s *DeleteObjectInput) hasEndpointARN() bool {
14056	if s.Bucket == nil {
14057		return false
14058	}
14059	return arn.IsARN(*s.Bucket)
14060}
14061
14062type DeleteObjectOutput struct {
14063	_ struct{} `type:"structure"`
14064
14065	// Specifies whether the versioned object that was permanently deleted was (true)
14066	// or was not (false) a delete marker.
14067	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
14068
14069	// If present, indicates that the requester was successfully charged for the
14070	// request.
14071	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
14072
14073	// Returns the version ID of the delete marker created as a result of the DELETE
14074	// operation.
14075	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
14076}
14077
14078// String returns the string representation
14079func (s DeleteObjectOutput) String() string {
14080	return awsutil.Prettify(s)
14081}
14082
14083// GoString returns the string representation
14084func (s DeleteObjectOutput) GoString() string {
14085	return s.String()
14086}
14087
14088// SetDeleteMarker sets the DeleteMarker field's value.
14089func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
14090	s.DeleteMarker = &v
14091	return s
14092}
14093
14094// SetRequestCharged sets the RequestCharged field's value.
14095func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
14096	s.RequestCharged = &v
14097	return s
14098}
14099
14100// SetVersionId sets the VersionId field's value.
14101func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
14102	s.VersionId = &v
14103	return s
14104}
14105
14106type DeleteObjectTaggingInput struct {
14107	_ struct{} `locationName:"DeleteObjectTaggingRequest" type:"structure"`
14108
14109	// The bucket name containing the objects from which to remove the tags.
14110	//
14111	// When using this API with an access point, you must direct requests to the
14112	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
14113	// When using this operation using an access point through the AWS SDKs, you
14114	// provide the access point ARN in place of the bucket name. For more information
14115	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
14116	// in the Amazon Simple Storage Service Developer Guide.
14117	//
14118	// Bucket is a required field
14119	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14120
14121	// Name of the tag.
14122	//
14123	// Key is a required field
14124	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
14125
14126	// The versionId of the object that the tag-set will be removed from.
14127	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
14128}
14129
14130// String returns the string representation
14131func (s DeleteObjectTaggingInput) String() string {
14132	return awsutil.Prettify(s)
14133}
14134
14135// GoString returns the string representation
14136func (s DeleteObjectTaggingInput) GoString() string {
14137	return s.String()
14138}
14139
14140// Validate inspects the fields of the type to determine if they are valid.
14141func (s *DeleteObjectTaggingInput) Validate() error {
14142	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
14143	if s.Bucket == nil {
14144		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14145	}
14146	if s.Bucket != nil && len(*s.Bucket) < 1 {
14147		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14148	}
14149	if s.Key == nil {
14150		invalidParams.Add(request.NewErrParamRequired("Key"))
14151	}
14152	if s.Key != nil && len(*s.Key) < 1 {
14153		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14154	}
14155
14156	if invalidParams.Len() > 0 {
14157		return invalidParams
14158	}
14159	return nil
14160}
14161
14162// SetBucket sets the Bucket field's value.
14163func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
14164	s.Bucket = &v
14165	return s
14166}
14167
14168func (s *DeleteObjectTaggingInput) getBucket() (v string) {
14169	if s.Bucket == nil {
14170		return v
14171	}
14172	return *s.Bucket
14173}
14174
14175// SetKey sets the Key field's value.
14176func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
14177	s.Key = &v
14178	return s
14179}
14180
14181// SetVersionId sets the VersionId field's value.
14182func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
14183	s.VersionId = &v
14184	return s
14185}
14186
14187func (s *DeleteObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
14188	if s.Bucket == nil {
14189		return nil, fmt.Errorf("member Bucket is nil")
14190	}
14191	return parseEndpointARN(*s.Bucket)
14192}
14193
14194func (s *DeleteObjectTaggingInput) hasEndpointARN() bool {
14195	if s.Bucket == nil {
14196		return false
14197	}
14198	return arn.IsARN(*s.Bucket)
14199}
14200
14201type DeleteObjectTaggingOutput struct {
14202	_ struct{} `type:"structure"`
14203
14204	// The versionId of the object the tag-set was removed from.
14205	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
14206}
14207
14208// String returns the string representation
14209func (s DeleteObjectTaggingOutput) String() string {
14210	return awsutil.Prettify(s)
14211}
14212
14213// GoString returns the string representation
14214func (s DeleteObjectTaggingOutput) GoString() string {
14215	return s.String()
14216}
14217
14218// SetVersionId sets the VersionId field's value.
14219func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
14220	s.VersionId = &v
14221	return s
14222}
14223
14224type DeleteObjectsInput struct {
14225	_ struct{} `locationName:"DeleteObjectsRequest" type:"structure" payload:"Delete"`
14226
14227	// The bucket name containing the objects to delete.
14228	//
14229	// When using this API with an access point, you must direct requests to the
14230	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
14231	// When using this operation using an access point through the AWS SDKs, you
14232	// provide the access point ARN in place of the bucket name. For more information
14233	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
14234	// in the Amazon Simple Storage Service Developer Guide.
14235	//
14236	// Bucket is a required field
14237	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14238
14239	// Specifies whether you want to delete this object even if it has a Governance-type
14240	// Object Lock in place. You must have sufficient permissions to perform this
14241	// operation.
14242	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
14243
14244	// Container for the request.
14245	//
14246	// Delete is a required field
14247	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
14248
14249	// The concatenation of the authentication device's serial number, a space,
14250	// and the value that is displayed on your authentication device. Required to
14251	// permanently delete a versioned object if versioning is configured with MFA
14252	// delete enabled.
14253	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
14254
14255	// Confirms that the requester knows that they will be charged for the request.
14256	// Bucket owners need not specify this parameter in their requests. For information
14257	// about downloading objects from requester pays buckets, see Downloading Objects
14258	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
14259	// in the Amazon S3 Developer Guide.
14260	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
14261}
14262
14263// String returns the string representation
14264func (s DeleteObjectsInput) String() string {
14265	return awsutil.Prettify(s)
14266}
14267
14268// GoString returns the string representation
14269func (s DeleteObjectsInput) GoString() string {
14270	return s.String()
14271}
14272
14273// Validate inspects the fields of the type to determine if they are valid.
14274func (s *DeleteObjectsInput) Validate() error {
14275	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
14276	if s.Bucket == nil {
14277		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14278	}
14279	if s.Bucket != nil && len(*s.Bucket) < 1 {
14280		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14281	}
14282	if s.Delete == nil {
14283		invalidParams.Add(request.NewErrParamRequired("Delete"))
14284	}
14285	if s.Delete != nil {
14286		if err := s.Delete.Validate(); err != nil {
14287			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
14288		}
14289	}
14290
14291	if invalidParams.Len() > 0 {
14292		return invalidParams
14293	}
14294	return nil
14295}
14296
14297// SetBucket sets the Bucket field's value.
14298func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
14299	s.Bucket = &v
14300	return s
14301}
14302
14303func (s *DeleteObjectsInput) getBucket() (v string) {
14304	if s.Bucket == nil {
14305		return v
14306	}
14307	return *s.Bucket
14308}
14309
14310// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
14311func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput {
14312	s.BypassGovernanceRetention = &v
14313	return s
14314}
14315
14316// SetDelete sets the Delete field's value.
14317func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
14318	s.Delete = v
14319	return s
14320}
14321
14322// SetMFA sets the MFA field's value.
14323func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
14324	s.MFA = &v
14325	return s
14326}
14327
14328// SetRequestPayer sets the RequestPayer field's value.
14329func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
14330	s.RequestPayer = &v
14331	return s
14332}
14333
14334func (s *DeleteObjectsInput) getEndpointARN() (arn.Resource, error) {
14335	if s.Bucket == nil {
14336		return nil, fmt.Errorf("member Bucket is nil")
14337	}
14338	return parseEndpointARN(*s.Bucket)
14339}
14340
14341func (s *DeleteObjectsInput) hasEndpointARN() bool {
14342	if s.Bucket == nil {
14343		return false
14344	}
14345	return arn.IsARN(*s.Bucket)
14346}
14347
14348type DeleteObjectsOutput struct {
14349	_ struct{} `type:"structure"`
14350
14351	// Container element for a successful delete. It identifies the object that
14352	// was successfully deleted.
14353	Deleted []*DeletedObject `type:"list" flattened:"true"`
14354
14355	// Container for a failed delete operation that describes the object that Amazon
14356	// S3 attempted to delete and the error it encountered.
14357	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
14358
14359	// If present, indicates that the requester was successfully charged for the
14360	// request.
14361	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
14362}
14363
14364// String returns the string representation
14365func (s DeleteObjectsOutput) String() string {
14366	return awsutil.Prettify(s)
14367}
14368
14369// GoString returns the string representation
14370func (s DeleteObjectsOutput) GoString() string {
14371	return s.String()
14372}
14373
14374// SetDeleted sets the Deleted field's value.
14375func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
14376	s.Deleted = v
14377	return s
14378}
14379
14380// SetErrors sets the Errors field's value.
14381func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
14382	s.Errors = v
14383	return s
14384}
14385
14386// SetRequestCharged sets the RequestCharged field's value.
14387func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
14388	s.RequestCharged = &v
14389	return s
14390}
14391
14392type DeletePublicAccessBlockInput struct {
14393	_ struct{} `locationName:"DeletePublicAccessBlockRequest" type:"structure"`
14394
14395	// The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.
14396	//
14397	// Bucket is a required field
14398	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14399}
14400
14401// String returns the string representation
14402func (s DeletePublicAccessBlockInput) String() string {
14403	return awsutil.Prettify(s)
14404}
14405
14406// GoString returns the string representation
14407func (s DeletePublicAccessBlockInput) GoString() string {
14408	return s.String()
14409}
14410
14411// Validate inspects the fields of the type to determine if they are valid.
14412func (s *DeletePublicAccessBlockInput) Validate() error {
14413	invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"}
14414	if s.Bucket == nil {
14415		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14416	}
14417	if s.Bucket != nil && len(*s.Bucket) < 1 {
14418		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14419	}
14420
14421	if invalidParams.Len() > 0 {
14422		return invalidParams
14423	}
14424	return nil
14425}
14426
14427// SetBucket sets the Bucket field's value.
14428func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput {
14429	s.Bucket = &v
14430	return s
14431}
14432
14433func (s *DeletePublicAccessBlockInput) getBucket() (v string) {
14434	if s.Bucket == nil {
14435		return v
14436	}
14437	return *s.Bucket
14438}
14439
14440func (s *DeletePublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
14441	if s.Bucket == nil {
14442		return nil, fmt.Errorf("member Bucket is nil")
14443	}
14444	return parseEndpointARN(*s.Bucket)
14445}
14446
14447func (s *DeletePublicAccessBlockInput) hasEndpointARN() bool {
14448	if s.Bucket == nil {
14449		return false
14450	}
14451	return arn.IsARN(*s.Bucket)
14452}
14453
14454type DeletePublicAccessBlockOutput struct {
14455	_ struct{} `type:"structure"`
14456}
14457
14458// String returns the string representation
14459func (s DeletePublicAccessBlockOutput) String() string {
14460	return awsutil.Prettify(s)
14461}
14462
14463// GoString returns the string representation
14464func (s DeletePublicAccessBlockOutput) GoString() string {
14465	return s.String()
14466}
14467
14468// Information about the deleted object.
14469type DeletedObject struct {
14470	_ struct{} `type:"structure"`
14471
14472	// Specifies whether the versioned object that was permanently deleted was (true)
14473	// or was not (false) a delete marker. In a simple DELETE, this header indicates
14474	// whether (true) or not (false) a delete marker was created.
14475	DeleteMarker *bool `type:"boolean"`
14476
14477	// The version ID of the delete marker created as a result of the DELETE operation.
14478	// If you delete a specific object version, the value returned by this header
14479	// is the version ID of the object version deleted.
14480	DeleteMarkerVersionId *string `type:"string"`
14481
14482	// The name of the deleted object.
14483	Key *string `min:"1" type:"string"`
14484
14485	// The version ID of the deleted object.
14486	VersionId *string `type:"string"`
14487}
14488
14489// String returns the string representation
14490func (s DeletedObject) String() string {
14491	return awsutil.Prettify(s)
14492}
14493
14494// GoString returns the string representation
14495func (s DeletedObject) GoString() string {
14496	return s.String()
14497}
14498
14499// SetDeleteMarker sets the DeleteMarker field's value.
14500func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
14501	s.DeleteMarker = &v
14502	return s
14503}
14504
14505// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
14506func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
14507	s.DeleteMarkerVersionId = &v
14508	return s
14509}
14510
14511// SetKey sets the Key field's value.
14512func (s *DeletedObject) SetKey(v string) *DeletedObject {
14513	s.Key = &v
14514	return s
14515}
14516
14517// SetVersionId sets the VersionId field's value.
14518func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
14519	s.VersionId = &v
14520	return s
14521}
14522
14523// Specifies information about where to publish analysis or configuration results
14524// for an Amazon S3 bucket and S3 Replication Time Control (S3 RTC).
14525type Destination struct {
14526	_ struct{} `type:"structure"`
14527
14528	// Specify this only in a cross-account scenario (where source and destination
14529	// bucket owners are not the same), and you want to change replica ownership
14530	// to the AWS account that owns the destination bucket. If this is not specified
14531	// in the replication configuration, the replicas are owned by same AWS account
14532	// that owns the source object.
14533	AccessControlTranslation *AccessControlTranslation `type:"structure"`
14534
14535	// Destination bucket owner account ID. In a cross-account scenario, if you
14536	// direct Amazon S3 to change replica ownership to the AWS account that owns
14537	// the destination bucket by specifying the AccessControlTranslation property,
14538	// this is the account ID of the destination bucket owner. For more information,
14539	// see Replication Additional Configuration: Changing the Replica Owner (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html)
14540	// in the Amazon Simple Storage Service Developer Guide.
14541	Account *string `type:"string"`
14542
14543	// The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
14544	// store the results.
14545	//
14546	// Bucket is a required field
14547	Bucket *string `type:"string" required:"true"`
14548
14549	// A container that provides information about encryption. If SourceSelectionCriteria
14550	// is specified, you must specify this element.
14551	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
14552
14553	// A container specifying replication metrics-related settings enabling metrics
14554	// and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified
14555	// together with a ReplicationTime block.
14556	Metrics *Metrics `type:"structure"`
14557
14558	// A container specifying S3 Replication Time Control (S3 RTC), including whether
14559	// S3 RTC is enabled and the time when all objects and operations on objects
14560	// must be replicated. Must be specified together with a Metrics block.
14561	ReplicationTime *ReplicationTime `type:"structure"`
14562
14563	// The storage class to use when replicating objects, such as S3 Standard or
14564	// reduced redundancy. By default, Amazon S3 uses the storage class of the source
14565	// object to create the object replica.
14566	//
14567	// For valid values, see the StorageClass element of the PUT Bucket replication
14568	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
14569	// action in the Amazon Simple Storage Service API Reference.
14570	StorageClass *string `type:"string" enum:"StorageClass"`
14571}
14572
14573// String returns the string representation
14574func (s Destination) String() string {
14575	return awsutil.Prettify(s)
14576}
14577
14578// GoString returns the string representation
14579func (s Destination) GoString() string {
14580	return s.String()
14581}
14582
14583// Validate inspects the fields of the type to determine if they are valid.
14584func (s *Destination) Validate() error {
14585	invalidParams := request.ErrInvalidParams{Context: "Destination"}
14586	if s.Bucket == nil {
14587		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14588	}
14589	if s.AccessControlTranslation != nil {
14590		if err := s.AccessControlTranslation.Validate(); err != nil {
14591			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
14592		}
14593	}
14594	if s.Metrics != nil {
14595		if err := s.Metrics.Validate(); err != nil {
14596			invalidParams.AddNested("Metrics", err.(request.ErrInvalidParams))
14597		}
14598	}
14599	if s.ReplicationTime != nil {
14600		if err := s.ReplicationTime.Validate(); err != nil {
14601			invalidParams.AddNested("ReplicationTime", err.(request.ErrInvalidParams))
14602		}
14603	}
14604
14605	if invalidParams.Len() > 0 {
14606		return invalidParams
14607	}
14608	return nil
14609}
14610
14611// SetAccessControlTranslation sets the AccessControlTranslation field's value.
14612func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
14613	s.AccessControlTranslation = v
14614	return s
14615}
14616
14617// SetAccount sets the Account field's value.
14618func (s *Destination) SetAccount(v string) *Destination {
14619	s.Account = &v
14620	return s
14621}
14622
14623// SetBucket sets the Bucket field's value.
14624func (s *Destination) SetBucket(v string) *Destination {
14625	s.Bucket = &v
14626	return s
14627}
14628
14629func (s *Destination) getBucket() (v string) {
14630	if s.Bucket == nil {
14631		return v
14632	}
14633	return *s.Bucket
14634}
14635
14636// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
14637func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
14638	s.EncryptionConfiguration = v
14639	return s
14640}
14641
14642// SetMetrics sets the Metrics field's value.
14643func (s *Destination) SetMetrics(v *Metrics) *Destination {
14644	s.Metrics = v
14645	return s
14646}
14647
14648// SetReplicationTime sets the ReplicationTime field's value.
14649func (s *Destination) SetReplicationTime(v *ReplicationTime) *Destination {
14650	s.ReplicationTime = v
14651	return s
14652}
14653
14654// SetStorageClass sets the StorageClass field's value.
14655func (s *Destination) SetStorageClass(v string) *Destination {
14656	s.StorageClass = &v
14657	return s
14658}
14659
14660// Contains the type of server-side encryption used.
14661type Encryption struct {
14662	_ struct{} `type:"structure"`
14663
14664	// The server-side encryption algorithm used when storing job results in Amazon
14665	// S3 (for example, AES256, aws:kms).
14666	//
14667	// EncryptionType is a required field
14668	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
14669
14670	// If the encryption type is aws:kms, this optional value can be used to specify
14671	// the encryption context for the restore results.
14672	KMSContext *string `type:"string"`
14673
14674	// If the encryption type is aws:kms, this optional value specifies the ID of
14675	// the symmetric customer managed AWS KMS CMK to use for encryption of job results.
14676	// Amazon S3 only supports symmetric CMKs. For more information, see Using Symmetric
14677	// and Asymmetric Keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
14678	// in the AWS Key Management Service Developer Guide.
14679	KMSKeyId *string `type:"string" sensitive:"true"`
14680}
14681
14682// String returns the string representation
14683func (s Encryption) String() string {
14684	return awsutil.Prettify(s)
14685}
14686
14687// GoString returns the string representation
14688func (s Encryption) GoString() string {
14689	return s.String()
14690}
14691
14692// Validate inspects the fields of the type to determine if they are valid.
14693func (s *Encryption) Validate() error {
14694	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
14695	if s.EncryptionType == nil {
14696		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
14697	}
14698
14699	if invalidParams.Len() > 0 {
14700		return invalidParams
14701	}
14702	return nil
14703}
14704
14705// SetEncryptionType sets the EncryptionType field's value.
14706func (s *Encryption) SetEncryptionType(v string) *Encryption {
14707	s.EncryptionType = &v
14708	return s
14709}
14710
14711// SetKMSContext sets the KMSContext field's value.
14712func (s *Encryption) SetKMSContext(v string) *Encryption {
14713	s.KMSContext = &v
14714	return s
14715}
14716
14717// SetKMSKeyId sets the KMSKeyId field's value.
14718func (s *Encryption) SetKMSKeyId(v string) *Encryption {
14719	s.KMSKeyId = &v
14720	return s
14721}
14722
14723// Specifies encryption-related information for an Amazon S3 bucket that is
14724// a destination for replicated objects.
14725type EncryptionConfiguration struct {
14726	_ struct{} `type:"structure"`
14727
14728	// Specifies the ID (Key ARN or Alias ARN) of the customer managed customer
14729	// master key (CMK) stored in AWS Key Management Service (KMS) for the destination
14730	// bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 only
14731	// supports symmetric customer managed CMKs. For more information, see Using
14732	// Symmetric and Asymmetric Keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
14733	// in the AWS Key Management Service Developer Guide.
14734	ReplicaKmsKeyID *string `type:"string"`
14735}
14736
14737// String returns the string representation
14738func (s EncryptionConfiguration) String() string {
14739	return awsutil.Prettify(s)
14740}
14741
14742// GoString returns the string representation
14743func (s EncryptionConfiguration) GoString() string {
14744	return s.String()
14745}
14746
14747// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
14748func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
14749	s.ReplicaKmsKeyID = &v
14750	return s
14751}
14752
14753// A message that indicates the request is complete and no more messages will
14754// be sent. You should not assume that the request is complete until the client
14755// receives an EndEvent.
14756type EndEvent struct {
14757	_ struct{} `locationName:"EndEvent" type:"structure"`
14758}
14759
14760// String returns the string representation
14761func (s EndEvent) String() string {
14762	return awsutil.Prettify(s)
14763}
14764
14765// GoString returns the string representation
14766func (s EndEvent) GoString() string {
14767	return s.String()
14768}
14769
14770// The EndEvent is and event in the SelectObjectContentEventStream group of events.
14771func (s *EndEvent) eventSelectObjectContentEventStream() {}
14772
14773// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
14774// This method is only used internally within the SDK's EventStream handling.
14775func (s *EndEvent) UnmarshalEvent(
14776	payloadUnmarshaler protocol.PayloadUnmarshaler,
14777	msg eventstream.Message,
14778) error {
14779	return nil
14780}
14781
14782// MarshalEvent marshals the type into an stream event value. This method
14783// should only used internally within the SDK's EventStream handling.
14784func (s *EndEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
14785	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
14786	return msg, err
14787}
14788
14789// Container for all error elements.
14790type Error struct {
14791	_ struct{} `type:"structure"`
14792
14793	// The error code is a string that uniquely identifies an error condition. It
14794	// is meant to be read and understood by programs that detect and handle errors
14795	// by type.
14796	//
14797	// Amazon S3 error codes
14798	//
14799	//    * Code: AccessDenied Description: Access Denied HTTP Status Code: 403
14800	//    Forbidden SOAP Fault Code Prefix: Client
14801	//
14802	//    * Code: AccountProblem Description: There is a problem with your AWS account
14803	//    that prevents the operation from completing successfully. Contact AWS
14804	//    Support for further assistance. HTTP Status Code: 403 Forbidden SOAP Fault
14805	//    Code Prefix: Client
14806	//
14807	//    * Code: AllAccessDisabled Description: All access to this Amazon S3 resource
14808	//    has been disabled. Contact AWS Support for further assistance. HTTP Status
14809	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
14810	//
14811	//    * Code: AmbiguousGrantByEmailAddress Description: The email address you
14812	//    provided is associated with more than one account. HTTP Status Code: 400
14813	//    Bad Request SOAP Fault Code Prefix: Client
14814	//
14815	//    * Code: AuthorizationHeaderMalformed Description: The authorization header
14816	//    you provided is invalid. HTTP Status Code: 400 Bad Request HTTP Status
14817	//    Code: N/A
14818	//
14819	//    * Code: BadDigest Description: The Content-MD5 you specified did not match
14820	//    what we received. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14821	//    Client
14822	//
14823	//    * Code: BucketAlreadyExists Description: The requested bucket name is
14824	//    not available. The bucket namespace is shared by all users of the system.
14825	//    Please select a different name and try again. HTTP Status Code: 409 Conflict
14826	//    SOAP Fault Code Prefix: Client
14827	//
14828	//    * Code: BucketAlreadyOwnedByYou Description: The bucket you tried to create
14829	//    already exists, and you own it. Amazon S3 returns this error in all AWS
14830	//    Regions except in the North Virginia Region. For legacy compatibility,
14831	//    if you re-create an existing bucket that you already own in the North
14832	//    Virginia Region, Amazon S3 returns 200 OK and resets the bucket access
14833	//    control lists (ACLs). Code: 409 Conflict (in all Regions except the North
14834	//    Virginia Region) SOAP Fault Code Prefix: Client
14835	//
14836	//    * Code: BucketNotEmpty Description: The bucket you tried to delete is
14837	//    not empty. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
14838	//
14839	//    * Code: CredentialsNotSupported Description: This request does not support
14840	//    credentials. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14841	//    Client
14842	//
14843	//    * Code: CrossLocationLoggingProhibited Description: Cross-location logging
14844	//    not allowed. Buckets in one geographic location cannot log information
14845	//    to a bucket in another location. HTTP Status Code: 403 Forbidden SOAP
14846	//    Fault Code Prefix: Client
14847	//
14848	//    * Code: EntityTooSmall Description: Your proposed upload is smaller than
14849	//    the minimum allowed object size. HTTP Status Code: 400 Bad Request SOAP
14850	//    Fault Code Prefix: Client
14851	//
14852	//    * Code: EntityTooLarge Description: Your proposed upload exceeds the maximum
14853	//    allowed object size. HTTP Status Code: 400 Bad Request SOAP Fault Code
14854	//    Prefix: Client
14855	//
14856	//    * Code: ExpiredToken Description: The provided token has expired. HTTP
14857	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14858	//
14859	//    * Code: IllegalVersioningConfigurationException Description: Indicates
14860	//    that the versioning configuration specified in the request is invalid.
14861	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14862	//
14863	//    * Code: IncompleteBody Description: You did not provide the number of
14864	//    bytes specified by the Content-Length HTTP header HTTP Status Code: 400
14865	//    Bad Request SOAP Fault Code Prefix: Client
14866	//
14867	//    * Code: IncorrectNumberOfFilesInPostRequest Description: POST requires
14868	//    exactly one file upload per request. HTTP Status Code: 400 Bad Request
14869	//    SOAP Fault Code Prefix: Client
14870	//
14871	//    * Code: InlineDataTooLarge Description: Inline data exceeds the maximum
14872	//    allowed size. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14873	//    Client
14874	//
14875	//    * Code: InternalError Description: We encountered an internal error. Please
14876	//    try again. HTTP Status Code: 500 Internal Server Error SOAP Fault Code
14877	//    Prefix: Server
14878	//
14879	//    * Code: InvalidAccessKeyId Description: The AWS access key ID you provided
14880	//    does not exist in our records. HTTP Status Code: 403 Forbidden SOAP Fault
14881	//    Code Prefix: Client
14882	//
14883	//    * Code: InvalidAddressingHeader Description: You must specify the Anonymous
14884	//    role. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
14885	//
14886	//    * Code: InvalidArgument Description: Invalid Argument HTTP Status Code:
14887	//    400 Bad Request SOAP Fault Code Prefix: Client
14888	//
14889	//    * Code: InvalidBucketName Description: The specified bucket is not valid.
14890	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14891	//
14892	//    * Code: InvalidBucketState Description: The request is not valid with
14893	//    the current state of the bucket. HTTP Status Code: 409 Conflict SOAP Fault
14894	//    Code Prefix: Client
14895	//
14896	//    * Code: InvalidDigest Description: The Content-MD5 you specified is not
14897	//    valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14898	//
14899	//    * Code: InvalidEncryptionAlgorithmError Description: The encryption request
14900	//    you specified is not valid. The valid value is AES256. HTTP Status Code:
14901	//    400 Bad Request SOAP Fault Code Prefix: Client
14902	//
14903	//    * Code: InvalidLocationConstraint Description: The specified location
14904	//    constraint is not valid. For more information about Regions, see How to
14905	//    Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
14906	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14907	//
14908	//    * Code: InvalidObjectState Description: The operation is not valid for
14909	//    the current state of the object. HTTP Status Code: 403 Forbidden SOAP
14910	//    Fault Code Prefix: Client
14911	//
14912	//    * Code: InvalidPart Description: One or more of the specified parts could
14913	//    not be found. The part might not have been uploaded, or the specified
14914	//    entity tag might not have matched the part's entity tag. HTTP Status Code:
14915	//    400 Bad Request SOAP Fault Code Prefix: Client
14916	//
14917	//    * Code: InvalidPartOrder Description: The list of parts was not in ascending
14918	//    order. Parts list must be specified in order by part number. HTTP Status
14919	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14920	//
14921	//    * Code: InvalidPayer Description: All access to this object has been disabled.
14922	//    Please contact AWS Support for further assistance. HTTP Status Code: 403
14923	//    Forbidden SOAP Fault Code Prefix: Client
14924	//
14925	//    * Code: InvalidPolicyDocument Description: The content of the form does
14926	//    not meet the conditions specified in the policy document. HTTP Status
14927	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14928	//
14929	//    * Code: InvalidRange Description: The requested range cannot be satisfied.
14930	//    HTTP Status Code: 416 Requested Range Not Satisfiable SOAP Fault Code
14931	//    Prefix: Client
14932	//
14933	//    * Code: InvalidRequest Description: Please use AWS4-HMAC-SHA256. HTTP
14934	//    Status Code: 400 Bad Request Code: N/A
14935	//
14936	//    * Code: InvalidRequest Description: SOAP requests must be made over an
14937	//    HTTPS connection. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14938	//    Client
14939	//
14940	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
14941	//    not supported for buckets with non-DNS compliant names. HTTP Status Code:
14942	//    400 Bad Request Code: N/A
14943	//
14944	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
14945	//    not supported for buckets with periods (.) in their names. HTTP Status
14946	//    Code: 400 Bad Request Code: N/A
14947	//
14948	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate endpoint
14949	//    only supports virtual style requests. HTTP Status Code: 400 Bad Request
14950	//    Code: N/A
14951	//
14952	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is not
14953	//    configured on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
14954	//
14955	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is disabled
14956	//    on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
14957	//
14958	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
14959	//    not supported on this bucket. Contact AWS Support for more information.
14960	//    HTTP Status Code: 400 Bad Request Code: N/A
14961	//
14962	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration cannot
14963	//    be enabled on this bucket. Contact AWS Support for more information. HTTP
14964	//    Status Code: 400 Bad Request Code: N/A
14965	//
14966	//    * Code: InvalidSecurity Description: The provided security credentials
14967	//    are not valid. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix:
14968	//    Client
14969	//
14970	//    * Code: InvalidSOAPRequest Description: The SOAP request body is invalid.
14971	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14972	//
14973	//    * Code: InvalidStorageClass Description: The storage class you specified
14974	//    is not valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14975	//    Client
14976	//
14977	//    * Code: InvalidTargetBucketForLogging Description: The target bucket for
14978	//    logging does not exist, is not owned by you, or does not have the appropriate
14979	//    grants for the log-delivery group. HTTP Status Code: 400 Bad Request SOAP
14980	//    Fault Code Prefix: Client
14981	//
14982	//    * Code: InvalidToken Description: The provided token is malformed or otherwise
14983	//    invalid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14984	//
14985	//    * Code: InvalidURI Description: Couldn't parse the specified URI. HTTP
14986	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14987	//
14988	//    * Code: KeyTooLongError Description: Your key is too long. HTTP Status
14989	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14990	//
14991	//    * Code: MalformedACLError Description: The XML you provided was not well-formed
14992	//    or did not validate against our published schema. HTTP Status Code: 400
14993	//    Bad Request SOAP Fault Code Prefix: Client
14994	//
14995	//    * Code: MalformedPOSTRequest Description: The body of your POST request
14996	//    is not well-formed multipart/form-data. HTTP Status Code: 400 Bad Request
14997	//    SOAP Fault Code Prefix: Client
14998	//
14999	//    * Code: MalformedXML Description: This happens when the user sends malformed
15000	//    XML (XML that doesn't conform to the published XSD) for the configuration.
15001	//    The error message is, "The XML you provided was not well-formed or did
15002	//    not validate against our published schema." HTTP Status Code: 400 Bad
15003	//    Request SOAP Fault Code Prefix: Client
15004	//
15005	//    * Code: MaxMessageLengthExceeded Description: Your request was too big.
15006	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
15007	//
15008	//    * Code: MaxPostPreDataLengthExceededError Description: Your POST request
15009	//    fields preceding the upload file were too large. HTTP Status Code: 400
15010	//    Bad Request SOAP Fault Code Prefix: Client
15011	//
15012	//    * Code: MetadataTooLarge Description: Your metadata headers exceed the
15013	//    maximum allowed metadata size. HTTP Status Code: 400 Bad Request SOAP
15014	//    Fault Code Prefix: Client
15015	//
15016	//    * Code: MethodNotAllowed Description: The specified method is not allowed
15017	//    against this resource. HTTP Status Code: 405 Method Not Allowed SOAP Fault
15018	//    Code Prefix: Client
15019	//
15020	//    * Code: MissingAttachment Description: A SOAP attachment was expected,
15021	//    but none were found. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
15022	//
15023	//    * Code: MissingContentLength Description: You must provide the Content-Length
15024	//    HTTP header. HTTP Status Code: 411 Length Required SOAP Fault Code Prefix:
15025	//    Client
15026	//
15027	//    * Code: MissingRequestBodyError Description: This happens when the user
15028	//    sends an empty XML document as a request. The error message is, "Request
15029	//    body is empty." HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
15030	//    Client
15031	//
15032	//    * Code: MissingSecurityElement Description: The SOAP 1.1 request is missing
15033	//    a security element. HTTP Status Code: 400 Bad Request SOAP Fault Code
15034	//    Prefix: Client
15035	//
15036	//    * Code: MissingSecurityHeader Description: Your request is missing a required
15037	//    header. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
15038	//
15039	//    * Code: NoLoggingStatusForKey Description: There is no such thing as a
15040	//    logging status subresource for a key. HTTP Status Code: 400 Bad Request
15041	//    SOAP Fault Code Prefix: Client
15042	//
15043	//    * Code: NoSuchBucket Description: The specified bucket does not exist.
15044	//    HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client
15045	//
15046	//    * Code: NoSuchBucketPolicy Description: The specified bucket does not
15047	//    have a bucket policy. HTTP Status Code: 404 Not Found SOAP Fault Code
15048	//    Prefix: Client
15049	//
15050	//    * Code: NoSuchKey Description: The specified key does not exist. HTTP
15051	//    Status Code: 404 Not Found SOAP Fault Code Prefix: Client
15052	//
15053	//    * Code: NoSuchLifecycleConfiguration Description: The lifecycle configuration
15054	//    does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix:
15055	//    Client
15056	//
15057	//    * Code: NoSuchUpload Description: The specified multipart upload does
15058	//    not exist. The upload ID might be invalid, or the multipart upload might
15059	//    have been aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault
15060	//    Code Prefix: Client
15061	//
15062	//    * Code: NoSuchVersion Description: Indicates that the version ID specified
15063	//    in the request does not match an existing version. HTTP Status Code: 404
15064	//    Not Found SOAP Fault Code Prefix: Client
15065	//
15066	//    * Code: NotImplemented Description: A header you provided implies functionality
15067	//    that is not implemented. HTTP Status Code: 501 Not Implemented SOAP Fault
15068	//    Code Prefix: Server
15069	//
15070	//    * Code: NotSignedUp Description: Your account is not signed up for the
15071	//    Amazon S3 service. You must sign up before you can use Amazon S3. You
15072	//    can sign up at the following URL: https://aws.amazon.com/s3 HTTP Status
15073	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
15074	//
15075	//    * Code: OperationAborted Description: A conflicting conditional operation
15076	//    is currently in progress against this resource. Try again. HTTP Status
15077	//    Code: 409 Conflict SOAP Fault Code Prefix: Client
15078	//
15079	//    * Code: PermanentRedirect Description: The bucket you are attempting to
15080	//    access must be addressed using the specified endpoint. Send all future
15081	//    requests to this endpoint. HTTP Status Code: 301 Moved Permanently SOAP
15082	//    Fault Code Prefix: Client
15083	//
15084	//    * Code: PreconditionFailed Description: At least one of the preconditions
15085	//    you specified did not hold. HTTP Status Code: 412 Precondition Failed
15086	//    SOAP Fault Code Prefix: Client
15087	//
15088	//    * Code: Redirect Description: Temporary redirect. HTTP Status Code: 307
15089	//    Moved Temporarily SOAP Fault Code Prefix: Client
15090	//
15091	//    * Code: RestoreAlreadyInProgress Description: Object restore is already
15092	//    in progress. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
15093	//
15094	//    * Code: RequestIsNotMultiPartContent Description: Bucket POST must be
15095	//    of the enclosure-type multipart/form-data. HTTP Status Code: 400 Bad Request
15096	//    SOAP Fault Code Prefix: Client
15097	//
15098	//    * Code: RequestTimeout Description: Your socket connection to the server
15099	//    was not read from or written to within the timeout period. HTTP Status
15100	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
15101	//
15102	//    * Code: RequestTimeTooSkewed Description: The difference between the request
15103	//    time and the server's time is too large. HTTP Status Code: 403 Forbidden
15104	//    SOAP Fault Code Prefix: Client
15105	//
15106	//    * Code: RequestTorrentOfBucketError Description: Requesting the torrent
15107	//    file of a bucket is not permitted. HTTP Status Code: 400 Bad Request SOAP
15108	//    Fault Code Prefix: Client
15109	//
15110	//    * Code: SignatureDoesNotMatch Description: The request signature we calculated
15111	//    does not match the signature you provided. Check your AWS secret access
15112	//    key and signing method. For more information, see REST Authentication
15113	//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
15114	//    and SOAP Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html)
15115	//    for details. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
15116	//
15117	//    * Code: ServiceUnavailable Description: Reduce your request rate. HTTP
15118	//    Status Code: 503 Service Unavailable SOAP Fault Code Prefix: Server
15119	//
15120	//    * Code: SlowDown Description: Reduce your request rate. HTTP Status Code:
15121	//    503 Slow Down SOAP Fault Code Prefix: Server
15122	//
15123	//    * Code: TemporaryRedirect Description: You are being redirected to the
15124	//    bucket while DNS updates. HTTP Status Code: 307 Moved Temporarily SOAP
15125	//    Fault Code Prefix: Client
15126	//
15127	//    * Code: TokenRefreshRequired Description: The provided token must be refreshed.
15128	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
15129	//
15130	//    * Code: TooManyBuckets Description: You have attempted to create more
15131	//    buckets than allowed. HTTP Status Code: 400 Bad Request SOAP Fault Code
15132	//    Prefix: Client
15133	//
15134	//    * Code: UnexpectedContent Description: This request does not support content.
15135	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
15136	//
15137	//    * Code: UnresolvableGrantByEmailAddress Description: The email address
15138	//    you provided does not match any account on record. HTTP Status Code: 400
15139	//    Bad Request SOAP Fault Code Prefix: Client
15140	//
15141	//    * Code: UserKeyMustBeSpecified Description: The bucket POST must contain
15142	//    the specified field name. If it is specified, check the order of the fields.
15143	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
15144	Code *string `type:"string"`
15145
15146	// The error key.
15147	Key *string `min:"1" type:"string"`
15148
15149	// The error message contains a generic description of the error condition in
15150	// English. It is intended for a human audience. Simple programs display the
15151	// message directly to the end user if they encounter an error condition they
15152	// don't know how or don't care to handle. Sophisticated programs with more
15153	// exhaustive error handling and proper internationalization are more likely
15154	// to ignore the error message.
15155	Message *string `type:"string"`
15156
15157	// The version ID of the error.
15158	VersionId *string `type:"string"`
15159}
15160
15161// String returns the string representation
15162func (s Error) String() string {
15163	return awsutil.Prettify(s)
15164}
15165
15166// GoString returns the string representation
15167func (s Error) GoString() string {
15168	return s.String()
15169}
15170
15171// SetCode sets the Code field's value.
15172func (s *Error) SetCode(v string) *Error {
15173	s.Code = &v
15174	return s
15175}
15176
15177// SetKey sets the Key field's value.
15178func (s *Error) SetKey(v string) *Error {
15179	s.Key = &v
15180	return s
15181}
15182
15183// SetMessage sets the Message field's value.
15184func (s *Error) SetMessage(v string) *Error {
15185	s.Message = &v
15186	return s
15187}
15188
15189// SetVersionId sets the VersionId field's value.
15190func (s *Error) SetVersionId(v string) *Error {
15191	s.VersionId = &v
15192	return s
15193}
15194
15195// The error information.
15196type ErrorDocument struct {
15197	_ struct{} `type:"structure"`
15198
15199	// The object key name to use when a 4XX class error occurs.
15200	//
15201	// Key is a required field
15202	Key *string `min:"1" type:"string" required:"true"`
15203}
15204
15205// String returns the string representation
15206func (s ErrorDocument) String() string {
15207	return awsutil.Prettify(s)
15208}
15209
15210// GoString returns the string representation
15211func (s ErrorDocument) GoString() string {
15212	return s.String()
15213}
15214
15215// Validate inspects the fields of the type to determine if they are valid.
15216func (s *ErrorDocument) Validate() error {
15217	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
15218	if s.Key == nil {
15219		invalidParams.Add(request.NewErrParamRequired("Key"))
15220	}
15221	if s.Key != nil && len(*s.Key) < 1 {
15222		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
15223	}
15224
15225	if invalidParams.Len() > 0 {
15226		return invalidParams
15227	}
15228	return nil
15229}
15230
15231// SetKey sets the Key field's value.
15232func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
15233	s.Key = &v
15234	return s
15235}
15236
15237// Optional configuration to replicate existing source bucket objects. For more
15238// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
15239// in the Amazon S3 Developer Guide.
15240type ExistingObjectReplication struct {
15241	_ struct{} `type:"structure"`
15242
15243	// Status is a required field
15244	Status *string `type:"string" required:"true" enum:"ExistingObjectReplicationStatus"`
15245}
15246
15247// String returns the string representation
15248func (s ExistingObjectReplication) String() string {
15249	return awsutil.Prettify(s)
15250}
15251
15252// GoString returns the string representation
15253func (s ExistingObjectReplication) GoString() string {
15254	return s.String()
15255}
15256
15257// Validate inspects the fields of the type to determine if they are valid.
15258func (s *ExistingObjectReplication) Validate() error {
15259	invalidParams := request.ErrInvalidParams{Context: "ExistingObjectReplication"}
15260	if s.Status == nil {
15261		invalidParams.Add(request.NewErrParamRequired("Status"))
15262	}
15263
15264	if invalidParams.Len() > 0 {
15265		return invalidParams
15266	}
15267	return nil
15268}
15269
15270// SetStatus sets the Status field's value.
15271func (s *ExistingObjectReplication) SetStatus(v string) *ExistingObjectReplication {
15272	s.Status = &v
15273	return s
15274}
15275
15276// Specifies the Amazon S3 object key name to filter on and whether to filter
15277// on the suffix or prefix of the key name.
15278type FilterRule struct {
15279	_ struct{} `type:"structure"`
15280
15281	// The object key name prefix or suffix identifying one or more objects to which
15282	// the filtering rule applies. The maximum length is 1,024 characters. Overlapping
15283	// prefixes and suffixes are not supported. For more information, see Configuring
15284	// Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
15285	// in the Amazon Simple Storage Service Developer Guide.
15286	Name *string `type:"string" enum:"FilterRuleName"`
15287
15288	// The value that the filter searches for in object key names.
15289	Value *string `type:"string"`
15290}
15291
15292// String returns the string representation
15293func (s FilterRule) String() string {
15294	return awsutil.Prettify(s)
15295}
15296
15297// GoString returns the string representation
15298func (s FilterRule) GoString() string {
15299	return s.String()
15300}
15301
15302// SetName sets the Name field's value.
15303func (s *FilterRule) SetName(v string) *FilterRule {
15304	s.Name = &v
15305	return s
15306}
15307
15308// SetValue sets the Value field's value.
15309func (s *FilterRule) SetValue(v string) *FilterRule {
15310	s.Value = &v
15311	return s
15312}
15313
15314type GetBucketAccelerateConfigurationInput struct {
15315	_ struct{} `locationName:"GetBucketAccelerateConfigurationRequest" type:"structure"`
15316
15317	// Name of the bucket for which the accelerate configuration is retrieved.
15318	//
15319	// Bucket is a required field
15320	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15321}
15322
15323// String returns the string representation
15324func (s GetBucketAccelerateConfigurationInput) String() string {
15325	return awsutil.Prettify(s)
15326}
15327
15328// GoString returns the string representation
15329func (s GetBucketAccelerateConfigurationInput) GoString() string {
15330	return s.String()
15331}
15332
15333// Validate inspects the fields of the type to determine if they are valid.
15334func (s *GetBucketAccelerateConfigurationInput) Validate() error {
15335	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
15336	if s.Bucket == nil {
15337		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15338	}
15339	if s.Bucket != nil && len(*s.Bucket) < 1 {
15340		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15341	}
15342
15343	if invalidParams.Len() > 0 {
15344		return invalidParams
15345	}
15346	return nil
15347}
15348
15349// SetBucket sets the Bucket field's value.
15350func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
15351	s.Bucket = &v
15352	return s
15353}
15354
15355func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
15356	if s.Bucket == nil {
15357		return v
15358	}
15359	return *s.Bucket
15360}
15361
15362func (s *GetBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
15363	if s.Bucket == nil {
15364		return nil, fmt.Errorf("member Bucket is nil")
15365	}
15366	return parseEndpointARN(*s.Bucket)
15367}
15368
15369func (s *GetBucketAccelerateConfigurationInput) hasEndpointARN() bool {
15370	if s.Bucket == nil {
15371		return false
15372	}
15373	return arn.IsARN(*s.Bucket)
15374}
15375
15376type GetBucketAccelerateConfigurationOutput struct {
15377	_ struct{} `type:"structure"`
15378
15379	// The accelerate configuration of the bucket.
15380	Status *string `type:"string" enum:"BucketAccelerateStatus"`
15381}
15382
15383// String returns the string representation
15384func (s GetBucketAccelerateConfigurationOutput) String() string {
15385	return awsutil.Prettify(s)
15386}
15387
15388// GoString returns the string representation
15389func (s GetBucketAccelerateConfigurationOutput) GoString() string {
15390	return s.String()
15391}
15392
15393// SetStatus sets the Status field's value.
15394func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
15395	s.Status = &v
15396	return s
15397}
15398
15399type GetBucketAclInput struct {
15400	_ struct{} `locationName:"GetBucketAclRequest" type:"structure"`
15401
15402	// Specifies the S3 bucket whose ACL is being requested.
15403	//
15404	// Bucket is a required field
15405	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15406}
15407
15408// String returns the string representation
15409func (s GetBucketAclInput) String() string {
15410	return awsutil.Prettify(s)
15411}
15412
15413// GoString returns the string representation
15414func (s GetBucketAclInput) GoString() string {
15415	return s.String()
15416}
15417
15418// Validate inspects the fields of the type to determine if they are valid.
15419func (s *GetBucketAclInput) Validate() error {
15420	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
15421	if s.Bucket == nil {
15422		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15423	}
15424	if s.Bucket != nil && len(*s.Bucket) < 1 {
15425		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15426	}
15427
15428	if invalidParams.Len() > 0 {
15429		return invalidParams
15430	}
15431	return nil
15432}
15433
15434// SetBucket sets the Bucket field's value.
15435func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
15436	s.Bucket = &v
15437	return s
15438}
15439
15440func (s *GetBucketAclInput) getBucket() (v string) {
15441	if s.Bucket == nil {
15442		return v
15443	}
15444	return *s.Bucket
15445}
15446
15447func (s *GetBucketAclInput) getEndpointARN() (arn.Resource, error) {
15448	if s.Bucket == nil {
15449		return nil, fmt.Errorf("member Bucket is nil")
15450	}
15451	return parseEndpointARN(*s.Bucket)
15452}
15453
15454func (s *GetBucketAclInput) hasEndpointARN() bool {
15455	if s.Bucket == nil {
15456		return false
15457	}
15458	return arn.IsARN(*s.Bucket)
15459}
15460
15461type GetBucketAclOutput struct {
15462	_ struct{} `type:"structure"`
15463
15464	// A list of grants.
15465	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
15466
15467	// Container for the bucket owner's display name and ID.
15468	Owner *Owner `type:"structure"`
15469}
15470
15471// String returns the string representation
15472func (s GetBucketAclOutput) String() string {
15473	return awsutil.Prettify(s)
15474}
15475
15476// GoString returns the string representation
15477func (s GetBucketAclOutput) GoString() string {
15478	return s.String()
15479}
15480
15481// SetGrants sets the Grants field's value.
15482func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
15483	s.Grants = v
15484	return s
15485}
15486
15487// SetOwner sets the Owner field's value.
15488func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
15489	s.Owner = v
15490	return s
15491}
15492
15493type GetBucketAnalyticsConfigurationInput struct {
15494	_ struct{} `locationName:"GetBucketAnalyticsConfigurationRequest" type:"structure"`
15495
15496	// The name of the bucket from which an analytics configuration is retrieved.
15497	//
15498	// Bucket is a required field
15499	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15500
15501	// The ID that identifies the analytics configuration.
15502	//
15503	// Id is a required field
15504	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15505}
15506
15507// String returns the string representation
15508func (s GetBucketAnalyticsConfigurationInput) String() string {
15509	return awsutil.Prettify(s)
15510}
15511
15512// GoString returns the string representation
15513func (s GetBucketAnalyticsConfigurationInput) GoString() string {
15514	return s.String()
15515}
15516
15517// Validate inspects the fields of the type to determine if they are valid.
15518func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
15519	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
15520	if s.Bucket == nil {
15521		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15522	}
15523	if s.Bucket != nil && len(*s.Bucket) < 1 {
15524		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15525	}
15526	if s.Id == nil {
15527		invalidParams.Add(request.NewErrParamRequired("Id"))
15528	}
15529
15530	if invalidParams.Len() > 0 {
15531		return invalidParams
15532	}
15533	return nil
15534}
15535
15536// SetBucket sets the Bucket field's value.
15537func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
15538	s.Bucket = &v
15539	return s
15540}
15541
15542func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
15543	if s.Bucket == nil {
15544		return v
15545	}
15546	return *s.Bucket
15547}
15548
15549// SetId sets the Id field's value.
15550func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
15551	s.Id = &v
15552	return s
15553}
15554
15555func (s *GetBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
15556	if s.Bucket == nil {
15557		return nil, fmt.Errorf("member Bucket is nil")
15558	}
15559	return parseEndpointARN(*s.Bucket)
15560}
15561
15562func (s *GetBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
15563	if s.Bucket == nil {
15564		return false
15565	}
15566	return arn.IsARN(*s.Bucket)
15567}
15568
15569type GetBucketAnalyticsConfigurationOutput struct {
15570	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
15571
15572	// The configuration and any analyses for the analytics filter.
15573	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
15574}
15575
15576// String returns the string representation
15577func (s GetBucketAnalyticsConfigurationOutput) String() string {
15578	return awsutil.Prettify(s)
15579}
15580
15581// GoString returns the string representation
15582func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
15583	return s.String()
15584}
15585
15586// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
15587func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
15588	s.AnalyticsConfiguration = v
15589	return s
15590}
15591
15592type GetBucketCorsInput struct {
15593	_ struct{} `locationName:"GetBucketCorsRequest" type:"structure"`
15594
15595	// The bucket name for which to get the cors configuration.
15596	//
15597	// Bucket is a required field
15598	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15599}
15600
15601// String returns the string representation
15602func (s GetBucketCorsInput) String() string {
15603	return awsutil.Prettify(s)
15604}
15605
15606// GoString returns the string representation
15607func (s GetBucketCorsInput) GoString() string {
15608	return s.String()
15609}
15610
15611// Validate inspects the fields of the type to determine if they are valid.
15612func (s *GetBucketCorsInput) Validate() error {
15613	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
15614	if s.Bucket == nil {
15615		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15616	}
15617	if s.Bucket != nil && len(*s.Bucket) < 1 {
15618		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15619	}
15620
15621	if invalidParams.Len() > 0 {
15622		return invalidParams
15623	}
15624	return nil
15625}
15626
15627// SetBucket sets the Bucket field's value.
15628func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
15629	s.Bucket = &v
15630	return s
15631}
15632
15633func (s *GetBucketCorsInput) getBucket() (v string) {
15634	if s.Bucket == nil {
15635		return v
15636	}
15637	return *s.Bucket
15638}
15639
15640func (s *GetBucketCorsInput) getEndpointARN() (arn.Resource, error) {
15641	if s.Bucket == nil {
15642		return nil, fmt.Errorf("member Bucket is nil")
15643	}
15644	return parseEndpointARN(*s.Bucket)
15645}
15646
15647func (s *GetBucketCorsInput) hasEndpointARN() bool {
15648	if s.Bucket == nil {
15649		return false
15650	}
15651	return arn.IsARN(*s.Bucket)
15652}
15653
15654type GetBucketCorsOutput struct {
15655	_ struct{} `type:"structure"`
15656
15657	// A set of origins and methods (cross-origin access that you want to allow).
15658	// You can add up to 100 rules to the configuration.
15659	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
15660}
15661
15662// String returns the string representation
15663func (s GetBucketCorsOutput) String() string {
15664	return awsutil.Prettify(s)
15665}
15666
15667// GoString returns the string representation
15668func (s GetBucketCorsOutput) GoString() string {
15669	return s.String()
15670}
15671
15672// SetCORSRules sets the CORSRules field's value.
15673func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
15674	s.CORSRules = v
15675	return s
15676}
15677
15678type GetBucketEncryptionInput struct {
15679	_ struct{} `locationName:"GetBucketEncryptionRequest" type:"structure"`
15680
15681	// The name of the bucket from which the server-side encryption configuration
15682	// is retrieved.
15683	//
15684	// Bucket is a required field
15685	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15686}
15687
15688// String returns the string representation
15689func (s GetBucketEncryptionInput) String() string {
15690	return awsutil.Prettify(s)
15691}
15692
15693// GoString returns the string representation
15694func (s GetBucketEncryptionInput) GoString() string {
15695	return s.String()
15696}
15697
15698// Validate inspects the fields of the type to determine if they are valid.
15699func (s *GetBucketEncryptionInput) Validate() error {
15700	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
15701	if s.Bucket == nil {
15702		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15703	}
15704	if s.Bucket != nil && len(*s.Bucket) < 1 {
15705		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15706	}
15707
15708	if invalidParams.Len() > 0 {
15709		return invalidParams
15710	}
15711	return nil
15712}
15713
15714// SetBucket sets the Bucket field's value.
15715func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
15716	s.Bucket = &v
15717	return s
15718}
15719
15720func (s *GetBucketEncryptionInput) getBucket() (v string) {
15721	if s.Bucket == nil {
15722		return v
15723	}
15724	return *s.Bucket
15725}
15726
15727func (s *GetBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
15728	if s.Bucket == nil {
15729		return nil, fmt.Errorf("member Bucket is nil")
15730	}
15731	return parseEndpointARN(*s.Bucket)
15732}
15733
15734func (s *GetBucketEncryptionInput) hasEndpointARN() bool {
15735	if s.Bucket == nil {
15736		return false
15737	}
15738	return arn.IsARN(*s.Bucket)
15739}
15740
15741type GetBucketEncryptionOutput struct {
15742	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
15743
15744	// Specifies the default server-side-encryption configuration.
15745	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
15746}
15747
15748// String returns the string representation
15749func (s GetBucketEncryptionOutput) String() string {
15750	return awsutil.Prettify(s)
15751}
15752
15753// GoString returns the string representation
15754func (s GetBucketEncryptionOutput) GoString() string {
15755	return s.String()
15756}
15757
15758// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
15759func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
15760	s.ServerSideEncryptionConfiguration = v
15761	return s
15762}
15763
15764type GetBucketInventoryConfigurationInput struct {
15765	_ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"`
15766
15767	// The name of the bucket containing the inventory configuration to retrieve.
15768	//
15769	// Bucket is a required field
15770	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15771
15772	// The ID used to identify the inventory configuration.
15773	//
15774	// Id is a required field
15775	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15776}
15777
15778// String returns the string representation
15779func (s GetBucketInventoryConfigurationInput) String() string {
15780	return awsutil.Prettify(s)
15781}
15782
15783// GoString returns the string representation
15784func (s GetBucketInventoryConfigurationInput) GoString() string {
15785	return s.String()
15786}
15787
15788// Validate inspects the fields of the type to determine if they are valid.
15789func (s *GetBucketInventoryConfigurationInput) Validate() error {
15790	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
15791	if s.Bucket == nil {
15792		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15793	}
15794	if s.Bucket != nil && len(*s.Bucket) < 1 {
15795		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15796	}
15797	if s.Id == nil {
15798		invalidParams.Add(request.NewErrParamRequired("Id"))
15799	}
15800
15801	if invalidParams.Len() > 0 {
15802		return invalidParams
15803	}
15804	return nil
15805}
15806
15807// SetBucket sets the Bucket field's value.
15808func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
15809	s.Bucket = &v
15810	return s
15811}
15812
15813func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
15814	if s.Bucket == nil {
15815		return v
15816	}
15817	return *s.Bucket
15818}
15819
15820// SetId sets the Id field's value.
15821func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
15822	s.Id = &v
15823	return s
15824}
15825
15826func (s *GetBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
15827	if s.Bucket == nil {
15828		return nil, fmt.Errorf("member Bucket is nil")
15829	}
15830	return parseEndpointARN(*s.Bucket)
15831}
15832
15833func (s *GetBucketInventoryConfigurationInput) hasEndpointARN() bool {
15834	if s.Bucket == nil {
15835		return false
15836	}
15837	return arn.IsARN(*s.Bucket)
15838}
15839
15840type GetBucketInventoryConfigurationOutput struct {
15841	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
15842
15843	// Specifies the inventory configuration.
15844	InventoryConfiguration *InventoryConfiguration `type:"structure"`
15845}
15846
15847// String returns the string representation
15848func (s GetBucketInventoryConfigurationOutput) String() string {
15849	return awsutil.Prettify(s)
15850}
15851
15852// GoString returns the string representation
15853func (s GetBucketInventoryConfigurationOutput) GoString() string {
15854	return s.String()
15855}
15856
15857// SetInventoryConfiguration sets the InventoryConfiguration field's value.
15858func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
15859	s.InventoryConfiguration = v
15860	return s
15861}
15862
15863type GetBucketLifecycleConfigurationInput struct {
15864	_ struct{} `locationName:"GetBucketLifecycleConfigurationRequest" type:"structure"`
15865
15866	// The name of the bucket for which to get the lifecycle information.
15867	//
15868	// Bucket is a required field
15869	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15870}
15871
15872// String returns the string representation
15873func (s GetBucketLifecycleConfigurationInput) String() string {
15874	return awsutil.Prettify(s)
15875}
15876
15877// GoString returns the string representation
15878func (s GetBucketLifecycleConfigurationInput) GoString() string {
15879	return s.String()
15880}
15881
15882// Validate inspects the fields of the type to determine if they are valid.
15883func (s *GetBucketLifecycleConfigurationInput) Validate() error {
15884	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
15885	if s.Bucket == nil {
15886		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15887	}
15888	if s.Bucket != nil && len(*s.Bucket) < 1 {
15889		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15890	}
15891
15892	if invalidParams.Len() > 0 {
15893		return invalidParams
15894	}
15895	return nil
15896}
15897
15898// SetBucket sets the Bucket field's value.
15899func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
15900	s.Bucket = &v
15901	return s
15902}
15903
15904func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
15905	if s.Bucket == nil {
15906		return v
15907	}
15908	return *s.Bucket
15909}
15910
15911func (s *GetBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
15912	if s.Bucket == nil {
15913		return nil, fmt.Errorf("member Bucket is nil")
15914	}
15915	return parseEndpointARN(*s.Bucket)
15916}
15917
15918func (s *GetBucketLifecycleConfigurationInput) hasEndpointARN() bool {
15919	if s.Bucket == nil {
15920		return false
15921	}
15922	return arn.IsARN(*s.Bucket)
15923}
15924
15925type GetBucketLifecycleConfigurationOutput struct {
15926	_ struct{} `type:"structure"`
15927
15928	// Container for a lifecycle rule.
15929	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
15930}
15931
15932// String returns the string representation
15933func (s GetBucketLifecycleConfigurationOutput) String() string {
15934	return awsutil.Prettify(s)
15935}
15936
15937// GoString returns the string representation
15938func (s GetBucketLifecycleConfigurationOutput) GoString() string {
15939	return s.String()
15940}
15941
15942// SetRules sets the Rules field's value.
15943func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
15944	s.Rules = v
15945	return s
15946}
15947
15948type GetBucketLifecycleInput struct {
15949	_ struct{} `locationName:"GetBucketLifecycleRequest" type:"structure"`
15950
15951	// The name of the bucket for which to get the lifecycle information.
15952	//
15953	// Bucket is a required field
15954	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15955}
15956
15957// String returns the string representation
15958func (s GetBucketLifecycleInput) String() string {
15959	return awsutil.Prettify(s)
15960}
15961
15962// GoString returns the string representation
15963func (s GetBucketLifecycleInput) GoString() string {
15964	return s.String()
15965}
15966
15967// Validate inspects the fields of the type to determine if they are valid.
15968func (s *GetBucketLifecycleInput) Validate() error {
15969	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
15970	if s.Bucket == nil {
15971		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15972	}
15973	if s.Bucket != nil && len(*s.Bucket) < 1 {
15974		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15975	}
15976
15977	if invalidParams.Len() > 0 {
15978		return invalidParams
15979	}
15980	return nil
15981}
15982
15983// SetBucket sets the Bucket field's value.
15984func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
15985	s.Bucket = &v
15986	return s
15987}
15988
15989func (s *GetBucketLifecycleInput) getBucket() (v string) {
15990	if s.Bucket == nil {
15991		return v
15992	}
15993	return *s.Bucket
15994}
15995
15996func (s *GetBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
15997	if s.Bucket == nil {
15998		return nil, fmt.Errorf("member Bucket is nil")
15999	}
16000	return parseEndpointARN(*s.Bucket)
16001}
16002
16003func (s *GetBucketLifecycleInput) hasEndpointARN() bool {
16004	if s.Bucket == nil {
16005		return false
16006	}
16007	return arn.IsARN(*s.Bucket)
16008}
16009
16010type GetBucketLifecycleOutput struct {
16011	_ struct{} `type:"structure"`
16012
16013	// Container for a lifecycle rule.
16014	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
16015}
16016
16017// String returns the string representation
16018func (s GetBucketLifecycleOutput) String() string {
16019	return awsutil.Prettify(s)
16020}
16021
16022// GoString returns the string representation
16023func (s GetBucketLifecycleOutput) GoString() string {
16024	return s.String()
16025}
16026
16027// SetRules sets the Rules field's value.
16028func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
16029	s.Rules = v
16030	return s
16031}
16032
16033type GetBucketLocationInput struct {
16034	_ struct{} `locationName:"GetBucketLocationRequest" type:"structure"`
16035
16036	// The name of the bucket for which to get the location.
16037	//
16038	// Bucket is a required field
16039	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16040}
16041
16042// String returns the string representation
16043func (s GetBucketLocationInput) String() string {
16044	return awsutil.Prettify(s)
16045}
16046
16047// GoString returns the string representation
16048func (s GetBucketLocationInput) GoString() string {
16049	return s.String()
16050}
16051
16052// Validate inspects the fields of the type to determine if they are valid.
16053func (s *GetBucketLocationInput) Validate() error {
16054	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
16055	if s.Bucket == nil {
16056		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16057	}
16058	if s.Bucket != nil && len(*s.Bucket) < 1 {
16059		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16060	}
16061
16062	if invalidParams.Len() > 0 {
16063		return invalidParams
16064	}
16065	return nil
16066}
16067
16068// SetBucket sets the Bucket field's value.
16069func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
16070	s.Bucket = &v
16071	return s
16072}
16073
16074func (s *GetBucketLocationInput) getBucket() (v string) {
16075	if s.Bucket == nil {
16076		return v
16077	}
16078	return *s.Bucket
16079}
16080
16081func (s *GetBucketLocationInput) getEndpointARN() (arn.Resource, error) {
16082	if s.Bucket == nil {
16083		return nil, fmt.Errorf("member Bucket is nil")
16084	}
16085	return parseEndpointARN(*s.Bucket)
16086}
16087
16088func (s *GetBucketLocationInput) hasEndpointARN() bool {
16089	if s.Bucket == nil {
16090		return false
16091	}
16092	return arn.IsARN(*s.Bucket)
16093}
16094
16095type GetBucketLocationOutput struct {
16096	_ struct{} `type:"structure"`
16097
16098	// Specifies the Region where the bucket resides. For a list of all the Amazon
16099	// S3 supported location constraints by Region, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region).
16100	// Buckets in Region us-east-1 have a LocationConstraint of null.
16101	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
16102}
16103
16104// String returns the string representation
16105func (s GetBucketLocationOutput) String() string {
16106	return awsutil.Prettify(s)
16107}
16108
16109// GoString returns the string representation
16110func (s GetBucketLocationOutput) GoString() string {
16111	return s.String()
16112}
16113
16114// SetLocationConstraint sets the LocationConstraint field's value.
16115func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
16116	s.LocationConstraint = &v
16117	return s
16118}
16119
16120type GetBucketLoggingInput struct {
16121	_ struct{} `locationName:"GetBucketLoggingRequest" type:"structure"`
16122
16123	// The bucket name for which to get the logging information.
16124	//
16125	// Bucket is a required field
16126	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16127}
16128
16129// String returns the string representation
16130func (s GetBucketLoggingInput) String() string {
16131	return awsutil.Prettify(s)
16132}
16133
16134// GoString returns the string representation
16135func (s GetBucketLoggingInput) GoString() string {
16136	return s.String()
16137}
16138
16139// Validate inspects the fields of the type to determine if they are valid.
16140func (s *GetBucketLoggingInput) Validate() error {
16141	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
16142	if s.Bucket == nil {
16143		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16144	}
16145	if s.Bucket != nil && len(*s.Bucket) < 1 {
16146		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16147	}
16148
16149	if invalidParams.Len() > 0 {
16150		return invalidParams
16151	}
16152	return nil
16153}
16154
16155// SetBucket sets the Bucket field's value.
16156func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
16157	s.Bucket = &v
16158	return s
16159}
16160
16161func (s *GetBucketLoggingInput) getBucket() (v string) {
16162	if s.Bucket == nil {
16163		return v
16164	}
16165	return *s.Bucket
16166}
16167
16168func (s *GetBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
16169	if s.Bucket == nil {
16170		return nil, fmt.Errorf("member Bucket is nil")
16171	}
16172	return parseEndpointARN(*s.Bucket)
16173}
16174
16175func (s *GetBucketLoggingInput) hasEndpointARN() bool {
16176	if s.Bucket == nil {
16177		return false
16178	}
16179	return arn.IsARN(*s.Bucket)
16180}
16181
16182type GetBucketLoggingOutput struct {
16183	_ struct{} `type:"structure"`
16184
16185	// Describes where logs are stored and the prefix that Amazon S3 assigns to
16186	// all log object keys for a bucket. For more information, see PUT Bucket logging
16187	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
16188	// in the Amazon Simple Storage Service API Reference.
16189	LoggingEnabled *LoggingEnabled `type:"structure"`
16190}
16191
16192// String returns the string representation
16193func (s GetBucketLoggingOutput) String() string {
16194	return awsutil.Prettify(s)
16195}
16196
16197// GoString returns the string representation
16198func (s GetBucketLoggingOutput) GoString() string {
16199	return s.String()
16200}
16201
16202// SetLoggingEnabled sets the LoggingEnabled field's value.
16203func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
16204	s.LoggingEnabled = v
16205	return s
16206}
16207
16208type GetBucketMetricsConfigurationInput struct {
16209	_ struct{} `locationName:"GetBucketMetricsConfigurationRequest" type:"structure"`
16210
16211	// The name of the bucket containing the metrics configuration to retrieve.
16212	//
16213	// Bucket is a required field
16214	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16215
16216	// The ID used to identify the metrics configuration.
16217	//
16218	// Id is a required field
16219	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
16220}
16221
16222// String returns the string representation
16223func (s GetBucketMetricsConfigurationInput) String() string {
16224	return awsutil.Prettify(s)
16225}
16226
16227// GoString returns the string representation
16228func (s GetBucketMetricsConfigurationInput) GoString() string {
16229	return s.String()
16230}
16231
16232// Validate inspects the fields of the type to determine if they are valid.
16233func (s *GetBucketMetricsConfigurationInput) Validate() error {
16234	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
16235	if s.Bucket == nil {
16236		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16237	}
16238	if s.Bucket != nil && len(*s.Bucket) < 1 {
16239		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16240	}
16241	if s.Id == nil {
16242		invalidParams.Add(request.NewErrParamRequired("Id"))
16243	}
16244
16245	if invalidParams.Len() > 0 {
16246		return invalidParams
16247	}
16248	return nil
16249}
16250
16251// SetBucket sets the Bucket field's value.
16252func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
16253	s.Bucket = &v
16254	return s
16255}
16256
16257func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
16258	if s.Bucket == nil {
16259		return v
16260	}
16261	return *s.Bucket
16262}
16263
16264// SetId sets the Id field's value.
16265func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
16266	s.Id = &v
16267	return s
16268}
16269
16270func (s *GetBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
16271	if s.Bucket == nil {
16272		return nil, fmt.Errorf("member Bucket is nil")
16273	}
16274	return parseEndpointARN(*s.Bucket)
16275}
16276
16277func (s *GetBucketMetricsConfigurationInput) hasEndpointARN() bool {
16278	if s.Bucket == nil {
16279		return false
16280	}
16281	return arn.IsARN(*s.Bucket)
16282}
16283
16284type GetBucketMetricsConfigurationOutput struct {
16285	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
16286
16287	// Specifies the metrics configuration.
16288	MetricsConfiguration *MetricsConfiguration `type:"structure"`
16289}
16290
16291// String returns the string representation
16292func (s GetBucketMetricsConfigurationOutput) String() string {
16293	return awsutil.Prettify(s)
16294}
16295
16296// GoString returns the string representation
16297func (s GetBucketMetricsConfigurationOutput) GoString() string {
16298	return s.String()
16299}
16300
16301// SetMetricsConfiguration sets the MetricsConfiguration field's value.
16302func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
16303	s.MetricsConfiguration = v
16304	return s
16305}
16306
16307type GetBucketNotificationConfigurationRequest struct {
16308	_ struct{} `locationName:"GetBucketNotificationConfigurationRequest" type:"structure"`
16309
16310	// Name of the bucket for which to get the notification configuration.
16311	//
16312	// Bucket is a required field
16313	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16314}
16315
16316// String returns the string representation
16317func (s GetBucketNotificationConfigurationRequest) String() string {
16318	return awsutil.Prettify(s)
16319}
16320
16321// GoString returns the string representation
16322func (s GetBucketNotificationConfigurationRequest) GoString() string {
16323	return s.String()
16324}
16325
16326// Validate inspects the fields of the type to determine if they are valid.
16327func (s *GetBucketNotificationConfigurationRequest) Validate() error {
16328	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
16329	if s.Bucket == nil {
16330		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16331	}
16332	if s.Bucket != nil && len(*s.Bucket) < 1 {
16333		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16334	}
16335
16336	if invalidParams.Len() > 0 {
16337		return invalidParams
16338	}
16339	return nil
16340}
16341
16342// SetBucket sets the Bucket field's value.
16343func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
16344	s.Bucket = &v
16345	return s
16346}
16347
16348func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
16349	if s.Bucket == nil {
16350		return v
16351	}
16352	return *s.Bucket
16353}
16354
16355func (s *GetBucketNotificationConfigurationRequest) getEndpointARN() (arn.Resource, error) {
16356	if s.Bucket == nil {
16357		return nil, fmt.Errorf("member Bucket is nil")
16358	}
16359	return parseEndpointARN(*s.Bucket)
16360}
16361
16362func (s *GetBucketNotificationConfigurationRequest) hasEndpointARN() bool {
16363	if s.Bucket == nil {
16364		return false
16365	}
16366	return arn.IsARN(*s.Bucket)
16367}
16368
16369type GetBucketPolicyInput struct {
16370	_ struct{} `locationName:"GetBucketPolicyRequest" type:"structure"`
16371
16372	// The bucket name for which to get the bucket policy.
16373	//
16374	// Bucket is a required field
16375	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16376}
16377
16378// String returns the string representation
16379func (s GetBucketPolicyInput) String() string {
16380	return awsutil.Prettify(s)
16381}
16382
16383// GoString returns the string representation
16384func (s GetBucketPolicyInput) GoString() string {
16385	return s.String()
16386}
16387
16388// Validate inspects the fields of the type to determine if they are valid.
16389func (s *GetBucketPolicyInput) Validate() error {
16390	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
16391	if s.Bucket == nil {
16392		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16393	}
16394	if s.Bucket != nil && len(*s.Bucket) < 1 {
16395		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16396	}
16397
16398	if invalidParams.Len() > 0 {
16399		return invalidParams
16400	}
16401	return nil
16402}
16403
16404// SetBucket sets the Bucket field's value.
16405func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
16406	s.Bucket = &v
16407	return s
16408}
16409
16410func (s *GetBucketPolicyInput) getBucket() (v string) {
16411	if s.Bucket == nil {
16412		return v
16413	}
16414	return *s.Bucket
16415}
16416
16417func (s *GetBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
16418	if s.Bucket == nil {
16419		return nil, fmt.Errorf("member Bucket is nil")
16420	}
16421	return parseEndpointARN(*s.Bucket)
16422}
16423
16424func (s *GetBucketPolicyInput) hasEndpointARN() bool {
16425	if s.Bucket == nil {
16426		return false
16427	}
16428	return arn.IsARN(*s.Bucket)
16429}
16430
16431type GetBucketPolicyOutput struct {
16432	_ struct{} `type:"structure" payload:"Policy"`
16433
16434	// The bucket policy as a JSON document.
16435	Policy *string `type:"string"`
16436}
16437
16438// String returns the string representation
16439func (s GetBucketPolicyOutput) String() string {
16440	return awsutil.Prettify(s)
16441}
16442
16443// GoString returns the string representation
16444func (s GetBucketPolicyOutput) GoString() string {
16445	return s.String()
16446}
16447
16448// SetPolicy sets the Policy field's value.
16449func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
16450	s.Policy = &v
16451	return s
16452}
16453
16454type GetBucketPolicyStatusInput struct {
16455	_ struct{} `locationName:"GetBucketPolicyStatusRequest" type:"structure"`
16456
16457	// The name of the Amazon S3 bucket whose policy status you want to retrieve.
16458	//
16459	// Bucket is a required field
16460	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16461}
16462
16463// String returns the string representation
16464func (s GetBucketPolicyStatusInput) String() string {
16465	return awsutil.Prettify(s)
16466}
16467
16468// GoString returns the string representation
16469func (s GetBucketPolicyStatusInput) GoString() string {
16470	return s.String()
16471}
16472
16473// Validate inspects the fields of the type to determine if they are valid.
16474func (s *GetBucketPolicyStatusInput) Validate() error {
16475	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"}
16476	if s.Bucket == nil {
16477		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16478	}
16479	if s.Bucket != nil && len(*s.Bucket) < 1 {
16480		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16481	}
16482
16483	if invalidParams.Len() > 0 {
16484		return invalidParams
16485	}
16486	return nil
16487}
16488
16489// SetBucket sets the Bucket field's value.
16490func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput {
16491	s.Bucket = &v
16492	return s
16493}
16494
16495func (s *GetBucketPolicyStatusInput) getBucket() (v string) {
16496	if s.Bucket == nil {
16497		return v
16498	}
16499	return *s.Bucket
16500}
16501
16502func (s *GetBucketPolicyStatusInput) getEndpointARN() (arn.Resource, error) {
16503	if s.Bucket == nil {
16504		return nil, fmt.Errorf("member Bucket is nil")
16505	}
16506	return parseEndpointARN(*s.Bucket)
16507}
16508
16509func (s *GetBucketPolicyStatusInput) hasEndpointARN() bool {
16510	if s.Bucket == nil {
16511		return false
16512	}
16513	return arn.IsARN(*s.Bucket)
16514}
16515
16516type GetBucketPolicyStatusOutput struct {
16517	_ struct{} `type:"structure" payload:"PolicyStatus"`
16518
16519	// The policy status for the specified bucket.
16520	PolicyStatus *PolicyStatus `type:"structure"`
16521}
16522
16523// String returns the string representation
16524func (s GetBucketPolicyStatusOutput) String() string {
16525	return awsutil.Prettify(s)
16526}
16527
16528// GoString returns the string representation
16529func (s GetBucketPolicyStatusOutput) GoString() string {
16530	return s.String()
16531}
16532
16533// SetPolicyStatus sets the PolicyStatus field's value.
16534func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput {
16535	s.PolicyStatus = v
16536	return s
16537}
16538
16539type GetBucketReplicationInput struct {
16540	_ struct{} `locationName:"GetBucketReplicationRequest" type:"structure"`
16541
16542	// The bucket name for which to get the replication information.
16543	//
16544	// Bucket is a required field
16545	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16546}
16547
16548// String returns the string representation
16549func (s GetBucketReplicationInput) String() string {
16550	return awsutil.Prettify(s)
16551}
16552
16553// GoString returns the string representation
16554func (s GetBucketReplicationInput) GoString() string {
16555	return s.String()
16556}
16557
16558// Validate inspects the fields of the type to determine if they are valid.
16559func (s *GetBucketReplicationInput) Validate() error {
16560	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
16561	if s.Bucket == nil {
16562		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16563	}
16564	if s.Bucket != nil && len(*s.Bucket) < 1 {
16565		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16566	}
16567
16568	if invalidParams.Len() > 0 {
16569		return invalidParams
16570	}
16571	return nil
16572}
16573
16574// SetBucket sets the Bucket field's value.
16575func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
16576	s.Bucket = &v
16577	return s
16578}
16579
16580func (s *GetBucketReplicationInput) getBucket() (v string) {
16581	if s.Bucket == nil {
16582		return v
16583	}
16584	return *s.Bucket
16585}
16586
16587func (s *GetBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
16588	if s.Bucket == nil {
16589		return nil, fmt.Errorf("member Bucket is nil")
16590	}
16591	return parseEndpointARN(*s.Bucket)
16592}
16593
16594func (s *GetBucketReplicationInput) hasEndpointARN() bool {
16595	if s.Bucket == nil {
16596		return false
16597	}
16598	return arn.IsARN(*s.Bucket)
16599}
16600
16601type GetBucketReplicationOutput struct {
16602	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
16603
16604	// A container for replication rules. You can add up to 1,000 rules. The maximum
16605	// size of a replication configuration is 2 MB.
16606	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
16607}
16608
16609// String returns the string representation
16610func (s GetBucketReplicationOutput) String() string {
16611	return awsutil.Prettify(s)
16612}
16613
16614// GoString returns the string representation
16615func (s GetBucketReplicationOutput) GoString() string {
16616	return s.String()
16617}
16618
16619// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
16620func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
16621	s.ReplicationConfiguration = v
16622	return s
16623}
16624
16625type GetBucketRequestPaymentInput struct {
16626	_ struct{} `locationName:"GetBucketRequestPaymentRequest" type:"structure"`
16627
16628	// The name of the bucket for which to get the payment request configuration
16629	//
16630	// Bucket is a required field
16631	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16632}
16633
16634// String returns the string representation
16635func (s GetBucketRequestPaymentInput) String() string {
16636	return awsutil.Prettify(s)
16637}
16638
16639// GoString returns the string representation
16640func (s GetBucketRequestPaymentInput) GoString() string {
16641	return s.String()
16642}
16643
16644// Validate inspects the fields of the type to determine if they are valid.
16645func (s *GetBucketRequestPaymentInput) Validate() error {
16646	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
16647	if s.Bucket == nil {
16648		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16649	}
16650	if s.Bucket != nil && len(*s.Bucket) < 1 {
16651		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16652	}
16653
16654	if invalidParams.Len() > 0 {
16655		return invalidParams
16656	}
16657	return nil
16658}
16659
16660// SetBucket sets the Bucket field's value.
16661func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
16662	s.Bucket = &v
16663	return s
16664}
16665
16666func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
16667	if s.Bucket == nil {
16668		return v
16669	}
16670	return *s.Bucket
16671}
16672
16673func (s *GetBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
16674	if s.Bucket == nil {
16675		return nil, fmt.Errorf("member Bucket is nil")
16676	}
16677	return parseEndpointARN(*s.Bucket)
16678}
16679
16680func (s *GetBucketRequestPaymentInput) hasEndpointARN() bool {
16681	if s.Bucket == nil {
16682		return false
16683	}
16684	return arn.IsARN(*s.Bucket)
16685}
16686
16687type GetBucketRequestPaymentOutput struct {
16688	_ struct{} `type:"structure"`
16689
16690	// Specifies who pays for the download and request fees.
16691	Payer *string `type:"string" enum:"Payer"`
16692}
16693
16694// String returns the string representation
16695func (s GetBucketRequestPaymentOutput) String() string {
16696	return awsutil.Prettify(s)
16697}
16698
16699// GoString returns the string representation
16700func (s GetBucketRequestPaymentOutput) GoString() string {
16701	return s.String()
16702}
16703
16704// SetPayer sets the Payer field's value.
16705func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
16706	s.Payer = &v
16707	return s
16708}
16709
16710type GetBucketTaggingInput struct {
16711	_ struct{} `locationName:"GetBucketTaggingRequest" type:"structure"`
16712
16713	// The name of the bucket for which to get the tagging information.
16714	//
16715	// Bucket is a required field
16716	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16717}
16718
16719// String returns the string representation
16720func (s GetBucketTaggingInput) String() string {
16721	return awsutil.Prettify(s)
16722}
16723
16724// GoString returns the string representation
16725func (s GetBucketTaggingInput) GoString() string {
16726	return s.String()
16727}
16728
16729// Validate inspects the fields of the type to determine if they are valid.
16730func (s *GetBucketTaggingInput) Validate() error {
16731	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
16732	if s.Bucket == nil {
16733		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16734	}
16735	if s.Bucket != nil && len(*s.Bucket) < 1 {
16736		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16737	}
16738
16739	if invalidParams.Len() > 0 {
16740		return invalidParams
16741	}
16742	return nil
16743}
16744
16745// SetBucket sets the Bucket field's value.
16746func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
16747	s.Bucket = &v
16748	return s
16749}
16750
16751func (s *GetBucketTaggingInput) getBucket() (v string) {
16752	if s.Bucket == nil {
16753		return v
16754	}
16755	return *s.Bucket
16756}
16757
16758func (s *GetBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
16759	if s.Bucket == nil {
16760		return nil, fmt.Errorf("member Bucket is nil")
16761	}
16762	return parseEndpointARN(*s.Bucket)
16763}
16764
16765func (s *GetBucketTaggingInput) hasEndpointARN() bool {
16766	if s.Bucket == nil {
16767		return false
16768	}
16769	return arn.IsARN(*s.Bucket)
16770}
16771
16772type GetBucketTaggingOutput struct {
16773	_ struct{} `type:"structure"`
16774
16775	// Contains the tag set.
16776	//
16777	// TagSet is a required field
16778	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
16779}
16780
16781// String returns the string representation
16782func (s GetBucketTaggingOutput) String() string {
16783	return awsutil.Prettify(s)
16784}
16785
16786// GoString returns the string representation
16787func (s GetBucketTaggingOutput) GoString() string {
16788	return s.String()
16789}
16790
16791// SetTagSet sets the TagSet field's value.
16792func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
16793	s.TagSet = v
16794	return s
16795}
16796
16797type GetBucketVersioningInput struct {
16798	_ struct{} `locationName:"GetBucketVersioningRequest" type:"structure"`
16799
16800	// The name of the bucket for which to get the versioning information.
16801	//
16802	// Bucket is a required field
16803	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16804}
16805
16806// String returns the string representation
16807func (s GetBucketVersioningInput) String() string {
16808	return awsutil.Prettify(s)
16809}
16810
16811// GoString returns the string representation
16812func (s GetBucketVersioningInput) GoString() string {
16813	return s.String()
16814}
16815
16816// Validate inspects the fields of the type to determine if they are valid.
16817func (s *GetBucketVersioningInput) Validate() error {
16818	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
16819	if s.Bucket == nil {
16820		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16821	}
16822	if s.Bucket != nil && len(*s.Bucket) < 1 {
16823		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16824	}
16825
16826	if invalidParams.Len() > 0 {
16827		return invalidParams
16828	}
16829	return nil
16830}
16831
16832// SetBucket sets the Bucket field's value.
16833func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
16834	s.Bucket = &v
16835	return s
16836}
16837
16838func (s *GetBucketVersioningInput) getBucket() (v string) {
16839	if s.Bucket == nil {
16840		return v
16841	}
16842	return *s.Bucket
16843}
16844
16845func (s *GetBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
16846	if s.Bucket == nil {
16847		return nil, fmt.Errorf("member Bucket is nil")
16848	}
16849	return parseEndpointARN(*s.Bucket)
16850}
16851
16852func (s *GetBucketVersioningInput) hasEndpointARN() bool {
16853	if s.Bucket == nil {
16854		return false
16855	}
16856	return arn.IsARN(*s.Bucket)
16857}
16858
16859type GetBucketVersioningOutput struct {
16860	_ struct{} `type:"structure"`
16861
16862	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
16863	// This element is only returned if the bucket has been configured with MFA
16864	// delete. If the bucket has never been so configured, this element is not returned.
16865	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
16866
16867	// The versioning state of the bucket.
16868	Status *string `type:"string" enum:"BucketVersioningStatus"`
16869}
16870
16871// String returns the string representation
16872func (s GetBucketVersioningOutput) String() string {
16873	return awsutil.Prettify(s)
16874}
16875
16876// GoString returns the string representation
16877func (s GetBucketVersioningOutput) GoString() string {
16878	return s.String()
16879}
16880
16881// SetMFADelete sets the MFADelete field's value.
16882func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
16883	s.MFADelete = &v
16884	return s
16885}
16886
16887// SetStatus sets the Status field's value.
16888func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
16889	s.Status = &v
16890	return s
16891}
16892
16893type GetBucketWebsiteInput struct {
16894	_ struct{} `locationName:"GetBucketWebsiteRequest" type:"structure"`
16895
16896	// The bucket name for which to get the website configuration.
16897	//
16898	// Bucket is a required field
16899	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16900}
16901
16902// String returns the string representation
16903func (s GetBucketWebsiteInput) String() string {
16904	return awsutil.Prettify(s)
16905}
16906
16907// GoString returns the string representation
16908func (s GetBucketWebsiteInput) GoString() string {
16909	return s.String()
16910}
16911
16912// Validate inspects the fields of the type to determine if they are valid.
16913func (s *GetBucketWebsiteInput) Validate() error {
16914	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
16915	if s.Bucket == nil {
16916		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16917	}
16918	if s.Bucket != nil && len(*s.Bucket) < 1 {
16919		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16920	}
16921
16922	if invalidParams.Len() > 0 {
16923		return invalidParams
16924	}
16925	return nil
16926}
16927
16928// SetBucket sets the Bucket field's value.
16929func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
16930	s.Bucket = &v
16931	return s
16932}
16933
16934func (s *GetBucketWebsiteInput) getBucket() (v string) {
16935	if s.Bucket == nil {
16936		return v
16937	}
16938	return *s.Bucket
16939}
16940
16941func (s *GetBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
16942	if s.Bucket == nil {
16943		return nil, fmt.Errorf("member Bucket is nil")
16944	}
16945	return parseEndpointARN(*s.Bucket)
16946}
16947
16948func (s *GetBucketWebsiteInput) hasEndpointARN() bool {
16949	if s.Bucket == nil {
16950		return false
16951	}
16952	return arn.IsARN(*s.Bucket)
16953}
16954
16955type GetBucketWebsiteOutput struct {
16956	_ struct{} `type:"structure"`
16957
16958	// The object key name of the website error document to use for 4XX class errors.
16959	ErrorDocument *ErrorDocument `type:"structure"`
16960
16961	// The name of the index document for the website (for example index.html).
16962	IndexDocument *IndexDocument `type:"structure"`
16963
16964	// Specifies the redirect behavior of all requests to a website endpoint of
16965	// an Amazon S3 bucket.
16966	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
16967
16968	// Rules that define when a redirect is applied and the redirect behavior.
16969	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
16970}
16971
16972// String returns the string representation
16973func (s GetBucketWebsiteOutput) String() string {
16974	return awsutil.Prettify(s)
16975}
16976
16977// GoString returns the string representation
16978func (s GetBucketWebsiteOutput) GoString() string {
16979	return s.String()
16980}
16981
16982// SetErrorDocument sets the ErrorDocument field's value.
16983func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
16984	s.ErrorDocument = v
16985	return s
16986}
16987
16988// SetIndexDocument sets the IndexDocument field's value.
16989func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
16990	s.IndexDocument = v
16991	return s
16992}
16993
16994// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
16995func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
16996	s.RedirectAllRequestsTo = v
16997	return s
16998}
16999
17000// SetRoutingRules sets the RoutingRules field's value.
17001func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
17002	s.RoutingRules = v
17003	return s
17004}
17005
17006type GetObjectAclInput struct {
17007	_ struct{} `locationName:"GetObjectAclRequest" type:"structure"`
17008
17009	// The bucket name that contains the object for which to get the ACL information.
17010	//
17011	// When using this API with an access point, you must direct requests to the
17012	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17013	// When using this operation using an access point through the AWS SDKs, you
17014	// provide the access point ARN in place of the bucket name. For more information
17015	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17016	// in the Amazon Simple Storage Service Developer Guide.
17017	//
17018	// Bucket is a required field
17019	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17020
17021	// The key of the object for which to get the ACL information.
17022	//
17023	// Key is a required field
17024	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17025
17026	// Confirms that the requester knows that they will be charged for the request.
17027	// Bucket owners need not specify this parameter in their requests. For information
17028	// about downloading objects from requester pays buckets, see Downloading Objects
17029	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17030	// in the Amazon S3 Developer Guide.
17031	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17032
17033	// VersionId used to reference a specific version of the object.
17034	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17035}
17036
17037// String returns the string representation
17038func (s GetObjectAclInput) String() string {
17039	return awsutil.Prettify(s)
17040}
17041
17042// GoString returns the string representation
17043func (s GetObjectAclInput) GoString() string {
17044	return s.String()
17045}
17046
17047// Validate inspects the fields of the type to determine if they are valid.
17048func (s *GetObjectAclInput) Validate() error {
17049	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
17050	if s.Bucket == nil {
17051		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17052	}
17053	if s.Bucket != nil && len(*s.Bucket) < 1 {
17054		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17055	}
17056	if s.Key == nil {
17057		invalidParams.Add(request.NewErrParamRequired("Key"))
17058	}
17059	if s.Key != nil && len(*s.Key) < 1 {
17060		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17061	}
17062
17063	if invalidParams.Len() > 0 {
17064		return invalidParams
17065	}
17066	return nil
17067}
17068
17069// SetBucket sets the Bucket field's value.
17070func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
17071	s.Bucket = &v
17072	return s
17073}
17074
17075func (s *GetObjectAclInput) getBucket() (v string) {
17076	if s.Bucket == nil {
17077		return v
17078	}
17079	return *s.Bucket
17080}
17081
17082// SetKey sets the Key field's value.
17083func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
17084	s.Key = &v
17085	return s
17086}
17087
17088// SetRequestPayer sets the RequestPayer field's value.
17089func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
17090	s.RequestPayer = &v
17091	return s
17092}
17093
17094// SetVersionId sets the VersionId field's value.
17095func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
17096	s.VersionId = &v
17097	return s
17098}
17099
17100func (s *GetObjectAclInput) getEndpointARN() (arn.Resource, error) {
17101	if s.Bucket == nil {
17102		return nil, fmt.Errorf("member Bucket is nil")
17103	}
17104	return parseEndpointARN(*s.Bucket)
17105}
17106
17107func (s *GetObjectAclInput) hasEndpointARN() bool {
17108	if s.Bucket == nil {
17109		return false
17110	}
17111	return arn.IsARN(*s.Bucket)
17112}
17113
17114type GetObjectAclOutput struct {
17115	_ struct{} `type:"structure"`
17116
17117	// A list of grants.
17118	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
17119
17120	// Container for the bucket owner's display name and ID.
17121	Owner *Owner `type:"structure"`
17122
17123	// If present, indicates that the requester was successfully charged for the
17124	// request.
17125	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
17126}
17127
17128// String returns the string representation
17129func (s GetObjectAclOutput) String() string {
17130	return awsutil.Prettify(s)
17131}
17132
17133// GoString returns the string representation
17134func (s GetObjectAclOutput) GoString() string {
17135	return s.String()
17136}
17137
17138// SetGrants sets the Grants field's value.
17139func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
17140	s.Grants = v
17141	return s
17142}
17143
17144// SetOwner sets the Owner field's value.
17145func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
17146	s.Owner = v
17147	return s
17148}
17149
17150// SetRequestCharged sets the RequestCharged field's value.
17151func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
17152	s.RequestCharged = &v
17153	return s
17154}
17155
17156type GetObjectInput struct {
17157	_ struct{} `locationName:"GetObjectRequest" type:"structure"`
17158
17159	// The bucket name containing the object.
17160	//
17161	// When using this API with an access point, you must direct requests to the
17162	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17163	// When using this operation using an access point through the AWS SDKs, you
17164	// provide the access point ARN in place of the bucket name. For more information
17165	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17166	// in the Amazon Simple Storage Service Developer Guide.
17167	//
17168	// Bucket is a required field
17169	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17170
17171	// Return the object only if its entity tag (ETag) is the same as the one specified,
17172	// otherwise return a 412 (precondition failed).
17173	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
17174
17175	// Return the object only if it has been modified since the specified time,
17176	// otherwise return a 304 (not modified).
17177	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
17178
17179	// Return the object only if its entity tag (ETag) is different from the one
17180	// specified, otherwise return a 304 (not modified).
17181	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
17182
17183	// Return the object only if it has not been modified since the specified time,
17184	// otherwise return a 412 (precondition failed).
17185	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
17186
17187	// Key of the object to get.
17188	//
17189	// Key is a required field
17190	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17191
17192	// Part number of the object being read. This is a positive integer between
17193	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
17194	// Useful for downloading just a part of an object.
17195	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
17196
17197	// Downloads the specified range bytes of an object. For more information about
17198	// the HTTP Range header, see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
17199	// (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
17200	//
17201	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
17202	Range *string `location:"header" locationName:"Range" type:"string"`
17203
17204	// Confirms that the requester knows that they will be charged for the request.
17205	// Bucket owners need not specify this parameter in their requests. For information
17206	// about downloading objects from requester pays buckets, see Downloading Objects
17207	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17208	// in the Amazon S3 Developer Guide.
17209	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17210
17211	// Sets the Cache-Control header of the response.
17212	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
17213
17214	// Sets the Content-Disposition header of the response
17215	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
17216
17217	// Sets the Content-Encoding header of the response.
17218	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
17219
17220	// Sets the Content-Language header of the response.
17221	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
17222
17223	// Sets the Content-Type header of the response.
17224	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
17225
17226	// Sets the Expires header of the response.
17227	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"`
17228
17229	// Specifies the algorithm to use to when encrypting the object (for example,
17230	// AES256).
17231	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
17232
17233	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
17234	// data. This value is used to store the object and then it is discarded; Amazon
17235	// S3 does not store the encryption key. The key must be appropriate for use
17236	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
17237	// header.
17238	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
17239
17240	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
17241	// Amazon S3 uses this header for a message integrity check to ensure that the
17242	// encryption key was transmitted without error.
17243	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
17244
17245	// VersionId used to reference a specific version of the object.
17246	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17247}
17248
17249// String returns the string representation
17250func (s GetObjectInput) String() string {
17251	return awsutil.Prettify(s)
17252}
17253
17254// GoString returns the string representation
17255func (s GetObjectInput) GoString() string {
17256	return s.String()
17257}
17258
17259// Validate inspects the fields of the type to determine if they are valid.
17260func (s *GetObjectInput) Validate() error {
17261	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
17262	if s.Bucket == nil {
17263		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17264	}
17265	if s.Bucket != nil && len(*s.Bucket) < 1 {
17266		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17267	}
17268	if s.Key == nil {
17269		invalidParams.Add(request.NewErrParamRequired("Key"))
17270	}
17271	if s.Key != nil && len(*s.Key) < 1 {
17272		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17273	}
17274
17275	if invalidParams.Len() > 0 {
17276		return invalidParams
17277	}
17278	return nil
17279}
17280
17281// SetBucket sets the Bucket field's value.
17282func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
17283	s.Bucket = &v
17284	return s
17285}
17286
17287func (s *GetObjectInput) getBucket() (v string) {
17288	if s.Bucket == nil {
17289		return v
17290	}
17291	return *s.Bucket
17292}
17293
17294// SetIfMatch sets the IfMatch field's value.
17295func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
17296	s.IfMatch = &v
17297	return s
17298}
17299
17300// SetIfModifiedSince sets the IfModifiedSince field's value.
17301func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
17302	s.IfModifiedSince = &v
17303	return s
17304}
17305
17306// SetIfNoneMatch sets the IfNoneMatch field's value.
17307func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
17308	s.IfNoneMatch = &v
17309	return s
17310}
17311
17312// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
17313func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
17314	s.IfUnmodifiedSince = &v
17315	return s
17316}
17317
17318// SetKey sets the Key field's value.
17319func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
17320	s.Key = &v
17321	return s
17322}
17323
17324// SetPartNumber sets the PartNumber field's value.
17325func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
17326	s.PartNumber = &v
17327	return s
17328}
17329
17330// SetRange sets the Range field's value.
17331func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
17332	s.Range = &v
17333	return s
17334}
17335
17336// SetRequestPayer sets the RequestPayer field's value.
17337func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
17338	s.RequestPayer = &v
17339	return s
17340}
17341
17342// SetResponseCacheControl sets the ResponseCacheControl field's value.
17343func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
17344	s.ResponseCacheControl = &v
17345	return s
17346}
17347
17348// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
17349func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
17350	s.ResponseContentDisposition = &v
17351	return s
17352}
17353
17354// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
17355func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
17356	s.ResponseContentEncoding = &v
17357	return s
17358}
17359
17360// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
17361func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
17362	s.ResponseContentLanguage = &v
17363	return s
17364}
17365
17366// SetResponseContentType sets the ResponseContentType field's value.
17367func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
17368	s.ResponseContentType = &v
17369	return s
17370}
17371
17372// SetResponseExpires sets the ResponseExpires field's value.
17373func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
17374	s.ResponseExpires = &v
17375	return s
17376}
17377
17378// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
17379func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
17380	s.SSECustomerAlgorithm = &v
17381	return s
17382}
17383
17384// SetSSECustomerKey sets the SSECustomerKey field's value.
17385func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
17386	s.SSECustomerKey = &v
17387	return s
17388}
17389
17390func (s *GetObjectInput) getSSECustomerKey() (v string) {
17391	if s.SSECustomerKey == nil {
17392		return v
17393	}
17394	return *s.SSECustomerKey
17395}
17396
17397// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
17398func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
17399	s.SSECustomerKeyMD5 = &v
17400	return s
17401}
17402
17403// SetVersionId sets the VersionId field's value.
17404func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
17405	s.VersionId = &v
17406	return s
17407}
17408
17409func (s *GetObjectInput) getEndpointARN() (arn.Resource, error) {
17410	if s.Bucket == nil {
17411		return nil, fmt.Errorf("member Bucket is nil")
17412	}
17413	return parseEndpointARN(*s.Bucket)
17414}
17415
17416func (s *GetObjectInput) hasEndpointARN() bool {
17417	if s.Bucket == nil {
17418		return false
17419	}
17420	return arn.IsARN(*s.Bucket)
17421}
17422
17423type GetObjectLegalHoldInput struct {
17424	_ struct{} `locationName:"GetObjectLegalHoldRequest" type:"structure"`
17425
17426	// The bucket name containing the object whose Legal Hold status you want to
17427	// retrieve.
17428	//
17429	// When using this API with an access point, you must direct requests to the
17430	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17431	// When using this operation using an access point through the AWS SDKs, you
17432	// provide the access point ARN in place of the bucket name. For more information
17433	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17434	// in the Amazon Simple Storage Service Developer Guide.
17435	//
17436	// Bucket is a required field
17437	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17438
17439	// The key name for the object whose Legal Hold status you want to retrieve.
17440	//
17441	// Key is a required field
17442	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17443
17444	// Confirms that the requester knows that they will be charged for the request.
17445	// Bucket owners need not specify this parameter in their requests. For information
17446	// about downloading objects from requester pays buckets, see Downloading Objects
17447	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17448	// in the Amazon S3 Developer Guide.
17449	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17450
17451	// The version ID of the object whose Legal Hold status you want to retrieve.
17452	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17453}
17454
17455// String returns the string representation
17456func (s GetObjectLegalHoldInput) String() string {
17457	return awsutil.Prettify(s)
17458}
17459
17460// GoString returns the string representation
17461func (s GetObjectLegalHoldInput) GoString() string {
17462	return s.String()
17463}
17464
17465// Validate inspects the fields of the type to determine if they are valid.
17466func (s *GetObjectLegalHoldInput) Validate() error {
17467	invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"}
17468	if s.Bucket == nil {
17469		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17470	}
17471	if s.Bucket != nil && len(*s.Bucket) < 1 {
17472		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17473	}
17474	if s.Key == nil {
17475		invalidParams.Add(request.NewErrParamRequired("Key"))
17476	}
17477	if s.Key != nil && len(*s.Key) < 1 {
17478		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17479	}
17480
17481	if invalidParams.Len() > 0 {
17482		return invalidParams
17483	}
17484	return nil
17485}
17486
17487// SetBucket sets the Bucket field's value.
17488func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput {
17489	s.Bucket = &v
17490	return s
17491}
17492
17493func (s *GetObjectLegalHoldInput) getBucket() (v string) {
17494	if s.Bucket == nil {
17495		return v
17496	}
17497	return *s.Bucket
17498}
17499
17500// SetKey sets the Key field's value.
17501func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput {
17502	s.Key = &v
17503	return s
17504}
17505
17506// SetRequestPayer sets the RequestPayer field's value.
17507func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput {
17508	s.RequestPayer = &v
17509	return s
17510}
17511
17512// SetVersionId sets the VersionId field's value.
17513func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput {
17514	s.VersionId = &v
17515	return s
17516}
17517
17518func (s *GetObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
17519	if s.Bucket == nil {
17520		return nil, fmt.Errorf("member Bucket is nil")
17521	}
17522	return parseEndpointARN(*s.Bucket)
17523}
17524
17525func (s *GetObjectLegalHoldInput) hasEndpointARN() bool {
17526	if s.Bucket == nil {
17527		return false
17528	}
17529	return arn.IsARN(*s.Bucket)
17530}
17531
17532type GetObjectLegalHoldOutput struct {
17533	_ struct{} `type:"structure" payload:"LegalHold"`
17534
17535	// The current Legal Hold status for the specified object.
17536	LegalHold *ObjectLockLegalHold `type:"structure"`
17537}
17538
17539// String returns the string representation
17540func (s GetObjectLegalHoldOutput) String() string {
17541	return awsutil.Prettify(s)
17542}
17543
17544// GoString returns the string representation
17545func (s GetObjectLegalHoldOutput) GoString() string {
17546	return s.String()
17547}
17548
17549// SetLegalHold sets the LegalHold field's value.
17550func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput {
17551	s.LegalHold = v
17552	return s
17553}
17554
17555type GetObjectLockConfigurationInput struct {
17556	_ struct{} `locationName:"GetObjectLockConfigurationRequest" type:"structure"`
17557
17558	// The bucket whose Object Lock configuration you want to retrieve.
17559	//
17560	// Bucket is a required field
17561	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17562}
17563
17564// String returns the string representation
17565func (s GetObjectLockConfigurationInput) String() string {
17566	return awsutil.Prettify(s)
17567}
17568
17569// GoString returns the string representation
17570func (s GetObjectLockConfigurationInput) GoString() string {
17571	return s.String()
17572}
17573
17574// Validate inspects the fields of the type to determine if they are valid.
17575func (s *GetObjectLockConfigurationInput) Validate() error {
17576	invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"}
17577	if s.Bucket == nil {
17578		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17579	}
17580	if s.Bucket != nil && len(*s.Bucket) < 1 {
17581		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17582	}
17583
17584	if invalidParams.Len() > 0 {
17585		return invalidParams
17586	}
17587	return nil
17588}
17589
17590// SetBucket sets the Bucket field's value.
17591func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput {
17592	s.Bucket = &v
17593	return s
17594}
17595
17596func (s *GetObjectLockConfigurationInput) getBucket() (v string) {
17597	if s.Bucket == nil {
17598		return v
17599	}
17600	return *s.Bucket
17601}
17602
17603func (s *GetObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
17604	if s.Bucket == nil {
17605		return nil, fmt.Errorf("member Bucket is nil")
17606	}
17607	return parseEndpointARN(*s.Bucket)
17608}
17609
17610func (s *GetObjectLockConfigurationInput) hasEndpointARN() bool {
17611	if s.Bucket == nil {
17612		return false
17613	}
17614	return arn.IsARN(*s.Bucket)
17615}
17616
17617type GetObjectLockConfigurationOutput struct {
17618	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
17619
17620	// The specified bucket's Object Lock configuration.
17621	ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"`
17622}
17623
17624// String returns the string representation
17625func (s GetObjectLockConfigurationOutput) String() string {
17626	return awsutil.Prettify(s)
17627}
17628
17629// GoString returns the string representation
17630func (s GetObjectLockConfigurationOutput) GoString() string {
17631	return s.String()
17632}
17633
17634// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
17635func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput {
17636	s.ObjectLockConfiguration = v
17637	return s
17638}
17639
17640type GetObjectOutput struct {
17641	_ struct{} `type:"structure" payload:"Body"`
17642
17643	// Indicates that a range of bytes was specified.
17644	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
17645
17646	// Object data.
17647	Body io.ReadCloser `type:"blob"`
17648
17649	// Specifies caching behavior along the request/reply chain.
17650	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
17651
17652	// Specifies presentational information for the object.
17653	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
17654
17655	// Specifies what content encodings have been applied to the object and thus
17656	// what decoding mechanisms must be applied to obtain the media-type referenced
17657	// by the Content-Type header field.
17658	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
17659
17660	// The language the content is in.
17661	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
17662
17663	// Size of the body in bytes.
17664	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
17665
17666	// The portion of the object returned in the response.
17667	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
17668
17669	// A standard MIME type describing the format of the object data.
17670	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
17671
17672	// Specifies whether the object retrieved was (true) or was not (false) a Delete
17673	// Marker. If false, this response header does not appear in the response.
17674	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
17675
17676	// An ETag is an opaque identifier assigned by a web server to a specific version
17677	// of a resource found at a URL.
17678	ETag *string `location:"header" locationName:"ETag" type:"string"`
17679
17680	// If the object expiration is configured (see PUT Bucket lifecycle), the response
17681	// includes this header. It includes the expiry-date and rule-id key-value pairs
17682	// providing object expiration information. The value of the rule-id is URL
17683	// encoded.
17684	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
17685
17686	// The date and time at which the object is no longer cacheable.
17687	Expires *string `location:"header" locationName:"Expires" type:"string"`
17688
17689	// Last modified date of the object
17690	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
17691
17692	// A map of metadata to store with the object in S3.
17693	//
17694	// By default unmarshaled keys are written as a map keys in following canonicalized format:
17695	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
17696	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
17697	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
17698
17699	// This is set to the number of metadata entries not returned in x-amz-meta
17700	// headers. This can happen if you create metadata using an API like SOAP that
17701	// supports more flexible metadata than the REST API. For example, using SOAP,
17702	// you can create metadata whose values are not legal HTTP headers.
17703	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
17704
17705	// Indicates whether this object has an active legal hold. This field is only
17706	// returned if you have permission to view an object's legal hold status.
17707	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
17708
17709	// The Object Lock mode currently in place for this object.
17710	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
17711
17712	// The date and time when this object's Object Lock will expire.
17713	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
17714
17715	// The count of parts this object has.
17716	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
17717
17718	// Amazon S3 can return this if your request involves a bucket that is either
17719	// a source or destination in a replication rule.
17720	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
17721
17722	// If present, indicates that the requester was successfully charged for the
17723	// request.
17724	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
17725
17726	// Provides information about object restoration operation and expiration time
17727	// of the restored object copy.
17728	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
17729
17730	// If server-side encryption with a customer-provided encryption key was requested,
17731	// the response will include this header confirming the encryption algorithm
17732	// used.
17733	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
17734
17735	// If server-side encryption with a customer-provided encryption key was requested,
17736	// the response will include this header to provide round-trip message integrity
17737	// verification of the customer-provided encryption key.
17738	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
17739
17740	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
17741	// symmetric customer managed customer master key (CMK) that was used for the
17742	// object.
17743	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
17744
17745	// The server-side encryption algorithm used when storing this object in Amazon
17746	// S3 (for example, AES256, aws:kms).
17747	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
17748
17749	// Provides storage class information of the object. Amazon S3 returns this
17750	// header for all objects except for S3 Standard storage class objects.
17751	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
17752
17753	// The number of tags, if any, on the object.
17754	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
17755
17756	// Version of the object.
17757	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
17758
17759	// If the bucket is configured as a website, redirects requests for this object
17760	// to another object in the same bucket or to an external URL. Amazon S3 stores
17761	// the value of this header in the object metadata.
17762	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
17763}
17764
17765// String returns the string representation
17766func (s GetObjectOutput) String() string {
17767	return awsutil.Prettify(s)
17768}
17769
17770// GoString returns the string representation
17771func (s GetObjectOutput) GoString() string {
17772	return s.String()
17773}
17774
17775// SetAcceptRanges sets the AcceptRanges field's value.
17776func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
17777	s.AcceptRanges = &v
17778	return s
17779}
17780
17781// SetBody sets the Body field's value.
17782func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
17783	s.Body = v
17784	return s
17785}
17786
17787// SetCacheControl sets the CacheControl field's value.
17788func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
17789	s.CacheControl = &v
17790	return s
17791}
17792
17793// SetContentDisposition sets the ContentDisposition field's value.
17794func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
17795	s.ContentDisposition = &v
17796	return s
17797}
17798
17799// SetContentEncoding sets the ContentEncoding field's value.
17800func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
17801	s.ContentEncoding = &v
17802	return s
17803}
17804
17805// SetContentLanguage sets the ContentLanguage field's value.
17806func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
17807	s.ContentLanguage = &v
17808	return s
17809}
17810
17811// SetContentLength sets the ContentLength field's value.
17812func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
17813	s.ContentLength = &v
17814	return s
17815}
17816
17817// SetContentRange sets the ContentRange field's value.
17818func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
17819	s.ContentRange = &v
17820	return s
17821}
17822
17823// SetContentType sets the ContentType field's value.
17824func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
17825	s.ContentType = &v
17826	return s
17827}
17828
17829// SetDeleteMarker sets the DeleteMarker field's value.
17830func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
17831	s.DeleteMarker = &v
17832	return s
17833}
17834
17835// SetETag sets the ETag field's value.
17836func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
17837	s.ETag = &v
17838	return s
17839}
17840
17841// SetExpiration sets the Expiration field's value.
17842func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
17843	s.Expiration = &v
17844	return s
17845}
17846
17847// SetExpires sets the Expires field's value.
17848func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
17849	s.Expires = &v
17850	return s
17851}
17852
17853// SetLastModified sets the LastModified field's value.
17854func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
17855	s.LastModified = &v
17856	return s
17857}
17858
17859// SetMetadata sets the Metadata field's value.
17860func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
17861	s.Metadata = v
17862	return s
17863}
17864
17865// SetMissingMeta sets the MissingMeta field's value.
17866func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
17867	s.MissingMeta = &v
17868	return s
17869}
17870
17871// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
17872func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput {
17873	s.ObjectLockLegalHoldStatus = &v
17874	return s
17875}
17876
17877// SetObjectLockMode sets the ObjectLockMode field's value.
17878func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput {
17879	s.ObjectLockMode = &v
17880	return s
17881}
17882
17883// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
17884func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput {
17885	s.ObjectLockRetainUntilDate = &v
17886	return s
17887}
17888
17889// SetPartsCount sets the PartsCount field's value.
17890func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
17891	s.PartsCount = &v
17892	return s
17893}
17894
17895// SetReplicationStatus sets the ReplicationStatus field's value.
17896func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
17897	s.ReplicationStatus = &v
17898	return s
17899}
17900
17901// SetRequestCharged sets the RequestCharged field's value.
17902func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
17903	s.RequestCharged = &v
17904	return s
17905}
17906
17907// SetRestore sets the Restore field's value.
17908func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
17909	s.Restore = &v
17910	return s
17911}
17912
17913// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
17914func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
17915	s.SSECustomerAlgorithm = &v
17916	return s
17917}
17918
17919// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
17920func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
17921	s.SSECustomerKeyMD5 = &v
17922	return s
17923}
17924
17925// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
17926func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
17927	s.SSEKMSKeyId = &v
17928	return s
17929}
17930
17931// SetServerSideEncryption sets the ServerSideEncryption field's value.
17932func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
17933	s.ServerSideEncryption = &v
17934	return s
17935}
17936
17937// SetStorageClass sets the StorageClass field's value.
17938func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
17939	s.StorageClass = &v
17940	return s
17941}
17942
17943// SetTagCount sets the TagCount field's value.
17944func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
17945	s.TagCount = &v
17946	return s
17947}
17948
17949// SetVersionId sets the VersionId field's value.
17950func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
17951	s.VersionId = &v
17952	return s
17953}
17954
17955// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
17956func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
17957	s.WebsiteRedirectLocation = &v
17958	return s
17959}
17960
17961type GetObjectRetentionInput struct {
17962	_ struct{} `locationName:"GetObjectRetentionRequest" type:"structure"`
17963
17964	// The bucket name containing the object whose retention settings you want to
17965	// retrieve.
17966	//
17967	// When using this API with an access point, you must direct requests to the
17968	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17969	// When using this operation using an access point through the AWS SDKs, you
17970	// provide the access point ARN in place of the bucket name. For more information
17971	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17972	// in the Amazon Simple Storage Service Developer Guide.
17973	//
17974	// Bucket is a required field
17975	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17976
17977	// The key name for the object whose retention settings you want to retrieve.
17978	//
17979	// Key is a required field
17980	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17981
17982	// Confirms that the requester knows that they will be charged for the request.
17983	// Bucket owners need not specify this parameter in their requests. For information
17984	// about downloading objects from requester pays buckets, see Downloading Objects
17985	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17986	// in the Amazon S3 Developer Guide.
17987	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17988
17989	// The version ID for the object whose retention settings you want to retrieve.
17990	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17991}
17992
17993// String returns the string representation
17994func (s GetObjectRetentionInput) String() string {
17995	return awsutil.Prettify(s)
17996}
17997
17998// GoString returns the string representation
17999func (s GetObjectRetentionInput) GoString() string {
18000	return s.String()
18001}
18002
18003// Validate inspects the fields of the type to determine if they are valid.
18004func (s *GetObjectRetentionInput) Validate() error {
18005	invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"}
18006	if s.Bucket == nil {
18007		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18008	}
18009	if s.Bucket != nil && len(*s.Bucket) < 1 {
18010		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18011	}
18012	if s.Key == nil {
18013		invalidParams.Add(request.NewErrParamRequired("Key"))
18014	}
18015	if s.Key != nil && len(*s.Key) < 1 {
18016		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18017	}
18018
18019	if invalidParams.Len() > 0 {
18020		return invalidParams
18021	}
18022	return nil
18023}
18024
18025// SetBucket sets the Bucket field's value.
18026func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput {
18027	s.Bucket = &v
18028	return s
18029}
18030
18031func (s *GetObjectRetentionInput) getBucket() (v string) {
18032	if s.Bucket == nil {
18033		return v
18034	}
18035	return *s.Bucket
18036}
18037
18038// SetKey sets the Key field's value.
18039func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput {
18040	s.Key = &v
18041	return s
18042}
18043
18044// SetRequestPayer sets the RequestPayer field's value.
18045func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput {
18046	s.RequestPayer = &v
18047	return s
18048}
18049
18050// SetVersionId sets the VersionId field's value.
18051func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput {
18052	s.VersionId = &v
18053	return s
18054}
18055
18056func (s *GetObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
18057	if s.Bucket == nil {
18058		return nil, fmt.Errorf("member Bucket is nil")
18059	}
18060	return parseEndpointARN(*s.Bucket)
18061}
18062
18063func (s *GetObjectRetentionInput) hasEndpointARN() bool {
18064	if s.Bucket == nil {
18065		return false
18066	}
18067	return arn.IsARN(*s.Bucket)
18068}
18069
18070type GetObjectRetentionOutput struct {
18071	_ struct{} `type:"structure" payload:"Retention"`
18072
18073	// The container element for an object's retention settings.
18074	Retention *ObjectLockRetention `type:"structure"`
18075}
18076
18077// String returns the string representation
18078func (s GetObjectRetentionOutput) String() string {
18079	return awsutil.Prettify(s)
18080}
18081
18082// GoString returns the string representation
18083func (s GetObjectRetentionOutput) GoString() string {
18084	return s.String()
18085}
18086
18087// SetRetention sets the Retention field's value.
18088func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput {
18089	s.Retention = v
18090	return s
18091}
18092
18093type GetObjectTaggingInput struct {
18094	_ struct{} `locationName:"GetObjectTaggingRequest" type:"structure"`
18095
18096	// The bucket name containing the object for which to get the tagging information.
18097	//
18098	// When using this API with an access point, you must direct requests to the
18099	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
18100	// When using this operation using an access point through the AWS SDKs, you
18101	// provide the access point ARN in place of the bucket name. For more information
18102	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
18103	// in the Amazon Simple Storage Service Developer Guide.
18104	//
18105	// Bucket is a required field
18106	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18107
18108	// Object key for which to get the tagging information.
18109	//
18110	// Key is a required field
18111	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18112
18113	// The versionId of the object for which to get the tagging information.
18114	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
18115}
18116
18117// String returns the string representation
18118func (s GetObjectTaggingInput) String() string {
18119	return awsutil.Prettify(s)
18120}
18121
18122// GoString returns the string representation
18123func (s GetObjectTaggingInput) GoString() string {
18124	return s.String()
18125}
18126
18127// Validate inspects the fields of the type to determine if they are valid.
18128func (s *GetObjectTaggingInput) Validate() error {
18129	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
18130	if s.Bucket == nil {
18131		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18132	}
18133	if s.Bucket != nil && len(*s.Bucket) < 1 {
18134		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18135	}
18136	if s.Key == nil {
18137		invalidParams.Add(request.NewErrParamRequired("Key"))
18138	}
18139	if s.Key != nil && len(*s.Key) < 1 {
18140		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18141	}
18142
18143	if invalidParams.Len() > 0 {
18144		return invalidParams
18145	}
18146	return nil
18147}
18148
18149// SetBucket sets the Bucket field's value.
18150func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
18151	s.Bucket = &v
18152	return s
18153}
18154
18155func (s *GetObjectTaggingInput) getBucket() (v string) {
18156	if s.Bucket == nil {
18157		return v
18158	}
18159	return *s.Bucket
18160}
18161
18162// SetKey sets the Key field's value.
18163func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
18164	s.Key = &v
18165	return s
18166}
18167
18168// SetVersionId sets the VersionId field's value.
18169func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
18170	s.VersionId = &v
18171	return s
18172}
18173
18174func (s *GetObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
18175	if s.Bucket == nil {
18176		return nil, fmt.Errorf("member Bucket is nil")
18177	}
18178	return parseEndpointARN(*s.Bucket)
18179}
18180
18181func (s *GetObjectTaggingInput) hasEndpointARN() bool {
18182	if s.Bucket == nil {
18183		return false
18184	}
18185	return arn.IsARN(*s.Bucket)
18186}
18187
18188type GetObjectTaggingOutput struct {
18189	_ struct{} `type:"structure"`
18190
18191	// Contains the tag set.
18192	//
18193	// TagSet is a required field
18194	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
18195
18196	// The versionId of the object for which you got the tagging information.
18197	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
18198}
18199
18200// String returns the string representation
18201func (s GetObjectTaggingOutput) String() string {
18202	return awsutil.Prettify(s)
18203}
18204
18205// GoString returns the string representation
18206func (s GetObjectTaggingOutput) GoString() string {
18207	return s.String()
18208}
18209
18210// SetTagSet sets the TagSet field's value.
18211func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
18212	s.TagSet = v
18213	return s
18214}
18215
18216// SetVersionId sets the VersionId field's value.
18217func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
18218	s.VersionId = &v
18219	return s
18220}
18221
18222type GetObjectTorrentInput struct {
18223	_ struct{} `locationName:"GetObjectTorrentRequest" type:"structure"`
18224
18225	// The name of the bucket containing the object for which to get the torrent
18226	// files.
18227	//
18228	// Bucket is a required field
18229	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18230
18231	// The object key for which to get the information.
18232	//
18233	// Key is a required field
18234	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18235
18236	// Confirms that the requester knows that they will be charged for the request.
18237	// Bucket owners need not specify this parameter in their requests. For information
18238	// about downloading objects from requester pays buckets, see Downloading Objects
18239	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
18240	// in the Amazon S3 Developer Guide.
18241	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
18242}
18243
18244// String returns the string representation
18245func (s GetObjectTorrentInput) String() string {
18246	return awsutil.Prettify(s)
18247}
18248
18249// GoString returns the string representation
18250func (s GetObjectTorrentInput) GoString() string {
18251	return s.String()
18252}
18253
18254// Validate inspects the fields of the type to determine if they are valid.
18255func (s *GetObjectTorrentInput) Validate() error {
18256	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
18257	if s.Bucket == nil {
18258		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18259	}
18260	if s.Bucket != nil && len(*s.Bucket) < 1 {
18261		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18262	}
18263	if s.Key == nil {
18264		invalidParams.Add(request.NewErrParamRequired("Key"))
18265	}
18266	if s.Key != nil && len(*s.Key) < 1 {
18267		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18268	}
18269
18270	if invalidParams.Len() > 0 {
18271		return invalidParams
18272	}
18273	return nil
18274}
18275
18276// SetBucket sets the Bucket field's value.
18277func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
18278	s.Bucket = &v
18279	return s
18280}
18281
18282func (s *GetObjectTorrentInput) getBucket() (v string) {
18283	if s.Bucket == nil {
18284		return v
18285	}
18286	return *s.Bucket
18287}
18288
18289// SetKey sets the Key field's value.
18290func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
18291	s.Key = &v
18292	return s
18293}
18294
18295// SetRequestPayer sets the RequestPayer field's value.
18296func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
18297	s.RequestPayer = &v
18298	return s
18299}
18300
18301func (s *GetObjectTorrentInput) getEndpointARN() (arn.Resource, error) {
18302	if s.Bucket == nil {
18303		return nil, fmt.Errorf("member Bucket is nil")
18304	}
18305	return parseEndpointARN(*s.Bucket)
18306}
18307
18308func (s *GetObjectTorrentInput) hasEndpointARN() bool {
18309	if s.Bucket == nil {
18310		return false
18311	}
18312	return arn.IsARN(*s.Bucket)
18313}
18314
18315type GetObjectTorrentOutput struct {
18316	_ struct{} `type:"structure" payload:"Body"`
18317
18318	// A Bencoded dictionary as defined by the BitTorrent specification
18319	Body io.ReadCloser `type:"blob"`
18320
18321	// If present, indicates that the requester was successfully charged for the
18322	// request.
18323	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
18324}
18325
18326// String returns the string representation
18327func (s GetObjectTorrentOutput) String() string {
18328	return awsutil.Prettify(s)
18329}
18330
18331// GoString returns the string representation
18332func (s GetObjectTorrentOutput) GoString() string {
18333	return s.String()
18334}
18335
18336// SetBody sets the Body field's value.
18337func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
18338	s.Body = v
18339	return s
18340}
18341
18342// SetRequestCharged sets the RequestCharged field's value.
18343func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
18344	s.RequestCharged = &v
18345	return s
18346}
18347
18348type GetPublicAccessBlockInput struct {
18349	_ struct{} `locationName:"GetPublicAccessBlockRequest" type:"structure"`
18350
18351	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
18352	// want to retrieve.
18353	//
18354	// Bucket is a required field
18355	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18356}
18357
18358// String returns the string representation
18359func (s GetPublicAccessBlockInput) String() string {
18360	return awsutil.Prettify(s)
18361}
18362
18363// GoString returns the string representation
18364func (s GetPublicAccessBlockInput) GoString() string {
18365	return s.String()
18366}
18367
18368// Validate inspects the fields of the type to determine if they are valid.
18369func (s *GetPublicAccessBlockInput) Validate() error {
18370	invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"}
18371	if s.Bucket == nil {
18372		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18373	}
18374	if s.Bucket != nil && len(*s.Bucket) < 1 {
18375		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18376	}
18377
18378	if invalidParams.Len() > 0 {
18379		return invalidParams
18380	}
18381	return nil
18382}
18383
18384// SetBucket sets the Bucket field's value.
18385func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput {
18386	s.Bucket = &v
18387	return s
18388}
18389
18390func (s *GetPublicAccessBlockInput) getBucket() (v string) {
18391	if s.Bucket == nil {
18392		return v
18393	}
18394	return *s.Bucket
18395}
18396
18397func (s *GetPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
18398	if s.Bucket == nil {
18399		return nil, fmt.Errorf("member Bucket is nil")
18400	}
18401	return parseEndpointARN(*s.Bucket)
18402}
18403
18404func (s *GetPublicAccessBlockInput) hasEndpointARN() bool {
18405	if s.Bucket == nil {
18406		return false
18407	}
18408	return arn.IsARN(*s.Bucket)
18409}
18410
18411type GetPublicAccessBlockOutput struct {
18412	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
18413
18414	// The PublicAccessBlock configuration currently in effect for this Amazon S3
18415	// bucket.
18416	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"`
18417}
18418
18419// String returns the string representation
18420func (s GetPublicAccessBlockOutput) String() string {
18421	return awsutil.Prettify(s)
18422}
18423
18424// GoString returns the string representation
18425func (s GetPublicAccessBlockOutput) GoString() string {
18426	return s.String()
18427}
18428
18429// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
18430func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput {
18431	s.PublicAccessBlockConfiguration = v
18432	return s
18433}
18434
18435// Container for S3 Glacier job parameters.
18436type GlacierJobParameters struct {
18437	_ struct{} `type:"structure"`
18438
18439	// S3 Glacier retrieval tier at which the restore will be processed.
18440	//
18441	// Tier is a required field
18442	Tier *string `type:"string" required:"true" enum:"Tier"`
18443}
18444
18445// String returns the string representation
18446func (s GlacierJobParameters) String() string {
18447	return awsutil.Prettify(s)
18448}
18449
18450// GoString returns the string representation
18451func (s GlacierJobParameters) GoString() string {
18452	return s.String()
18453}
18454
18455// Validate inspects the fields of the type to determine if they are valid.
18456func (s *GlacierJobParameters) Validate() error {
18457	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
18458	if s.Tier == nil {
18459		invalidParams.Add(request.NewErrParamRequired("Tier"))
18460	}
18461
18462	if invalidParams.Len() > 0 {
18463		return invalidParams
18464	}
18465	return nil
18466}
18467
18468// SetTier sets the Tier field's value.
18469func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
18470	s.Tier = &v
18471	return s
18472}
18473
18474// Container for grant information.
18475type Grant struct {
18476	_ struct{} `type:"structure"`
18477
18478	// The person being granted permissions.
18479	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
18480
18481	// Specifies the permission given to the grantee.
18482	Permission *string `type:"string" enum:"Permission"`
18483}
18484
18485// String returns the string representation
18486func (s Grant) String() string {
18487	return awsutil.Prettify(s)
18488}
18489
18490// GoString returns the string representation
18491func (s Grant) GoString() string {
18492	return s.String()
18493}
18494
18495// Validate inspects the fields of the type to determine if they are valid.
18496func (s *Grant) Validate() error {
18497	invalidParams := request.ErrInvalidParams{Context: "Grant"}
18498	if s.Grantee != nil {
18499		if err := s.Grantee.Validate(); err != nil {
18500			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
18501		}
18502	}
18503
18504	if invalidParams.Len() > 0 {
18505		return invalidParams
18506	}
18507	return nil
18508}
18509
18510// SetGrantee sets the Grantee field's value.
18511func (s *Grant) SetGrantee(v *Grantee) *Grant {
18512	s.Grantee = v
18513	return s
18514}
18515
18516// SetPermission sets the Permission field's value.
18517func (s *Grant) SetPermission(v string) *Grant {
18518	s.Permission = &v
18519	return s
18520}
18521
18522// Container for the person being granted permissions.
18523type Grantee struct {
18524	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
18525
18526	// Screen name of the grantee.
18527	DisplayName *string `type:"string"`
18528
18529	// Email address of the grantee.
18530	//
18531	// Using email addresses to specify a grantee is only supported in the following
18532	// AWS Regions:
18533	//
18534	//    * US East (N. Virginia)
18535	//
18536	//    * US West (N. California)
18537	//
18538	//    * US West (Oregon)
18539	//
18540	//    * Asia Pacific (Singapore)
18541	//
18542	//    * Asia Pacific (Sydney)
18543	//
18544	//    * Asia Pacific (Tokyo)
18545	//
18546	//    * Europe (Ireland)
18547	//
18548	//    * South America (São Paulo)
18549	//
18550	// For a list of all the Amazon S3 supported Regions and endpoints, see Regions
18551	// and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
18552	// in the AWS General Reference.
18553	EmailAddress *string `type:"string"`
18554
18555	// The canonical user ID of the grantee.
18556	ID *string `type:"string"`
18557
18558	// Type of grantee
18559	//
18560	// Type is a required field
18561	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
18562
18563	// URI of the grantee group.
18564	URI *string `type:"string"`
18565}
18566
18567// String returns the string representation
18568func (s Grantee) String() string {
18569	return awsutil.Prettify(s)
18570}
18571
18572// GoString returns the string representation
18573func (s Grantee) GoString() string {
18574	return s.String()
18575}
18576
18577// Validate inspects the fields of the type to determine if they are valid.
18578func (s *Grantee) Validate() error {
18579	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
18580	if s.Type == nil {
18581		invalidParams.Add(request.NewErrParamRequired("Type"))
18582	}
18583
18584	if invalidParams.Len() > 0 {
18585		return invalidParams
18586	}
18587	return nil
18588}
18589
18590// SetDisplayName sets the DisplayName field's value.
18591func (s *Grantee) SetDisplayName(v string) *Grantee {
18592	s.DisplayName = &v
18593	return s
18594}
18595
18596// SetEmailAddress sets the EmailAddress field's value.
18597func (s *Grantee) SetEmailAddress(v string) *Grantee {
18598	s.EmailAddress = &v
18599	return s
18600}
18601
18602// SetID sets the ID field's value.
18603func (s *Grantee) SetID(v string) *Grantee {
18604	s.ID = &v
18605	return s
18606}
18607
18608// SetType sets the Type field's value.
18609func (s *Grantee) SetType(v string) *Grantee {
18610	s.Type = &v
18611	return s
18612}
18613
18614// SetURI sets the URI field's value.
18615func (s *Grantee) SetURI(v string) *Grantee {
18616	s.URI = &v
18617	return s
18618}
18619
18620type HeadBucketInput struct {
18621	_ struct{} `locationName:"HeadBucketRequest" type:"structure"`
18622
18623	// The bucket name.
18624	//
18625	// Bucket is a required field
18626	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18627}
18628
18629// String returns the string representation
18630func (s HeadBucketInput) String() string {
18631	return awsutil.Prettify(s)
18632}
18633
18634// GoString returns the string representation
18635func (s HeadBucketInput) GoString() string {
18636	return s.String()
18637}
18638
18639// Validate inspects the fields of the type to determine if they are valid.
18640func (s *HeadBucketInput) Validate() error {
18641	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
18642	if s.Bucket == nil {
18643		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18644	}
18645	if s.Bucket != nil && len(*s.Bucket) < 1 {
18646		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18647	}
18648
18649	if invalidParams.Len() > 0 {
18650		return invalidParams
18651	}
18652	return nil
18653}
18654
18655// SetBucket sets the Bucket field's value.
18656func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
18657	s.Bucket = &v
18658	return s
18659}
18660
18661func (s *HeadBucketInput) getBucket() (v string) {
18662	if s.Bucket == nil {
18663		return v
18664	}
18665	return *s.Bucket
18666}
18667
18668func (s *HeadBucketInput) getEndpointARN() (arn.Resource, error) {
18669	if s.Bucket == nil {
18670		return nil, fmt.Errorf("member Bucket is nil")
18671	}
18672	return parseEndpointARN(*s.Bucket)
18673}
18674
18675func (s *HeadBucketInput) hasEndpointARN() bool {
18676	if s.Bucket == nil {
18677		return false
18678	}
18679	return arn.IsARN(*s.Bucket)
18680}
18681
18682type HeadBucketOutput struct {
18683	_ struct{} `type:"structure"`
18684}
18685
18686// String returns the string representation
18687func (s HeadBucketOutput) String() string {
18688	return awsutil.Prettify(s)
18689}
18690
18691// GoString returns the string representation
18692func (s HeadBucketOutput) GoString() string {
18693	return s.String()
18694}
18695
18696type HeadObjectInput struct {
18697	_ struct{} `locationName:"HeadObjectRequest" type:"structure"`
18698
18699	// The name of the bucket containing the object.
18700	//
18701	// Bucket is a required field
18702	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18703
18704	// Return the object only if its entity tag (ETag) is the same as the one specified,
18705	// otherwise return a 412 (precondition failed).
18706	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
18707
18708	// Return the object only if it has been modified since the specified time,
18709	// otherwise return a 304 (not modified).
18710	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
18711
18712	// Return the object only if its entity tag (ETag) is different from the one
18713	// specified, otherwise return a 304 (not modified).
18714	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
18715
18716	// Return the object only if it has not been modified since the specified time,
18717	// otherwise return a 412 (precondition failed).
18718	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
18719
18720	// The object key.
18721	//
18722	// Key is a required field
18723	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18724
18725	// Part number of the object being read. This is a positive integer between
18726	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
18727	// Useful querying about the size of the part and the number of parts in this
18728	// object.
18729	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
18730
18731	// Downloads the specified range bytes of an object. For more information about
18732	// the HTTP Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
18733	//
18734	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
18735	Range *string `location:"header" locationName:"Range" type:"string"`
18736
18737	// Confirms that the requester knows that they will be charged for the request.
18738	// Bucket owners need not specify this parameter in their requests. For information
18739	// about downloading objects from requester pays buckets, see Downloading Objects
18740	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
18741	// in the Amazon S3 Developer Guide.
18742	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
18743
18744	// Specifies the algorithm to use to when encrypting the object (for example,
18745	// AES256).
18746	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
18747
18748	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
18749	// data. This value is used to store the object and then it is discarded; Amazon
18750	// S3 does not store the encryption key. The key must be appropriate for use
18751	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
18752	// header.
18753	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
18754
18755	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
18756	// Amazon S3 uses this header for a message integrity check to ensure that the
18757	// encryption key was transmitted without error.
18758	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
18759
18760	// VersionId used to reference a specific version of the object.
18761	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
18762}
18763
18764// String returns the string representation
18765func (s HeadObjectInput) String() string {
18766	return awsutil.Prettify(s)
18767}
18768
18769// GoString returns the string representation
18770func (s HeadObjectInput) GoString() string {
18771	return s.String()
18772}
18773
18774// Validate inspects the fields of the type to determine if they are valid.
18775func (s *HeadObjectInput) Validate() error {
18776	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
18777	if s.Bucket == nil {
18778		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18779	}
18780	if s.Bucket != nil && len(*s.Bucket) < 1 {
18781		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18782	}
18783	if s.Key == nil {
18784		invalidParams.Add(request.NewErrParamRequired("Key"))
18785	}
18786	if s.Key != nil && len(*s.Key) < 1 {
18787		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18788	}
18789
18790	if invalidParams.Len() > 0 {
18791		return invalidParams
18792	}
18793	return nil
18794}
18795
18796// SetBucket sets the Bucket field's value.
18797func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
18798	s.Bucket = &v
18799	return s
18800}
18801
18802func (s *HeadObjectInput) getBucket() (v string) {
18803	if s.Bucket == nil {
18804		return v
18805	}
18806	return *s.Bucket
18807}
18808
18809// SetIfMatch sets the IfMatch field's value.
18810func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
18811	s.IfMatch = &v
18812	return s
18813}
18814
18815// SetIfModifiedSince sets the IfModifiedSince field's value.
18816func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
18817	s.IfModifiedSince = &v
18818	return s
18819}
18820
18821// SetIfNoneMatch sets the IfNoneMatch field's value.
18822func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
18823	s.IfNoneMatch = &v
18824	return s
18825}
18826
18827// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
18828func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
18829	s.IfUnmodifiedSince = &v
18830	return s
18831}
18832
18833// SetKey sets the Key field's value.
18834func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
18835	s.Key = &v
18836	return s
18837}
18838
18839// SetPartNumber sets the PartNumber field's value.
18840func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
18841	s.PartNumber = &v
18842	return s
18843}
18844
18845// SetRange sets the Range field's value.
18846func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
18847	s.Range = &v
18848	return s
18849}
18850
18851// SetRequestPayer sets the RequestPayer field's value.
18852func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
18853	s.RequestPayer = &v
18854	return s
18855}
18856
18857// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
18858func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
18859	s.SSECustomerAlgorithm = &v
18860	return s
18861}
18862
18863// SetSSECustomerKey sets the SSECustomerKey field's value.
18864func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
18865	s.SSECustomerKey = &v
18866	return s
18867}
18868
18869func (s *HeadObjectInput) getSSECustomerKey() (v string) {
18870	if s.SSECustomerKey == nil {
18871		return v
18872	}
18873	return *s.SSECustomerKey
18874}
18875
18876// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
18877func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
18878	s.SSECustomerKeyMD5 = &v
18879	return s
18880}
18881
18882// SetVersionId sets the VersionId field's value.
18883func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
18884	s.VersionId = &v
18885	return s
18886}
18887
18888func (s *HeadObjectInput) getEndpointARN() (arn.Resource, error) {
18889	if s.Bucket == nil {
18890		return nil, fmt.Errorf("member Bucket is nil")
18891	}
18892	return parseEndpointARN(*s.Bucket)
18893}
18894
18895func (s *HeadObjectInput) hasEndpointARN() bool {
18896	if s.Bucket == nil {
18897		return false
18898	}
18899	return arn.IsARN(*s.Bucket)
18900}
18901
18902type HeadObjectOutput struct {
18903	_ struct{} `type:"structure"`
18904
18905	// Indicates that a range of bytes was specified.
18906	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
18907
18908	// Specifies caching behavior along the request/reply chain.
18909	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
18910
18911	// Specifies presentational information for the object.
18912	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
18913
18914	// Specifies what content encodings have been applied to the object and thus
18915	// what decoding mechanisms must be applied to obtain the media-type referenced
18916	// by the Content-Type header field.
18917	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
18918
18919	// The language the content is in.
18920	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
18921
18922	// Size of the body in bytes.
18923	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
18924
18925	// A standard MIME type describing the format of the object data.
18926	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
18927
18928	// Specifies whether the object retrieved was (true) or was not (false) a Delete
18929	// Marker. If false, this response header does not appear in the response.
18930	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
18931
18932	// An ETag is an opaque identifier assigned by a web server to a specific version
18933	// of a resource found at a URL.
18934	ETag *string `location:"header" locationName:"ETag" type:"string"`
18935
18936	// If the object expiration is configured (see PUT Bucket lifecycle), the response
18937	// includes this header. It includes the expiry-date and rule-id key-value pairs
18938	// providing object expiration information. The value of the rule-id is URL
18939	// encoded.
18940	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
18941
18942	// The date and time at which the object is no longer cacheable.
18943	Expires *string `location:"header" locationName:"Expires" type:"string"`
18944
18945	// Last modified date of the object
18946	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
18947
18948	// A map of metadata to store with the object in S3.
18949	//
18950	// By default unmarshaled keys are written as a map keys in following canonicalized format:
18951	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
18952	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
18953	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
18954
18955	// This is set to the number of metadata entries not returned in x-amz-meta
18956	// headers. This can happen if you create metadata using an API like SOAP that
18957	// supports more flexible metadata than the REST API. For example, using SOAP,
18958	// you can create metadata whose values are not legal HTTP headers.
18959	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
18960
18961	// Specifies whether a legal hold is in effect for this object. This header
18962	// is only returned if the requester has the s3:GetObjectLegalHold permission.
18963	// This header is not returned if the specified version of this object has never
18964	// had a legal hold applied. For more information about S3 Object Lock, see
18965	// Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
18966	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
18967
18968	// The Object Lock mode, if any, that's in effect for this object. This header
18969	// is only returned if the requester has the s3:GetObjectRetention permission.
18970	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
18971	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
18972
18973	// The date and time when the Object Lock retention period expires. This header
18974	// is only returned if the requester has the s3:GetObjectRetention permission.
18975	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
18976
18977	// The count of parts this object has.
18978	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
18979
18980	// Amazon S3 can return this header if your request involves a bucket that is
18981	// either a source or destination in a replication rule.
18982	//
18983	// In replication, you have a source bucket on which you configure replication
18984	// and destination bucket where Amazon S3 stores object replicas. When you request
18985	// an object (GetObject) or object metadata (HeadObject) from these buckets,
18986	// Amazon S3 will return the x-amz-replication-status header in the response
18987	// as follows:
18988	//
18989	//    * If requesting an object from the source bucket — Amazon S3 will return
18990	//    the x-amz-replication-status header if the object in your request is eligible
18991	//    for replication. For example, suppose that in your replication configuration,
18992	//    you specify object prefix TaxDocs requesting Amazon S3 to replicate objects
18993	//    with key prefix TaxDocs. Any objects you upload with this key name prefix,
18994	//    for example TaxDocs/document1.pdf, are eligible for replication. For any
18995	//    object request with this key name prefix, Amazon S3 will return the x-amz-replication-status
18996	//    header with value PENDING, COMPLETED or FAILED indicating object replication
18997	//    status.
18998	//
18999	//    * If requesting an object from the destination bucket — Amazon S3 will
19000	//    return the x-amz-replication-status header with value REPLICA if the object
19001	//    in your request is a replica that Amazon S3 created.
19002	//
19003	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
19004	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
19005
19006	// If present, indicates that the requester was successfully charged for the
19007	// request.
19008	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
19009
19010	// If the object is an archived object (an object whose storage class is GLACIER),
19011	// the response includes this header if either the archive restoration is in
19012	// progress (see RestoreObject or an archive copy is already restored.
19013	//
19014	// If an archive copy is already restored, the header value indicates when Amazon
19015	// S3 is scheduled to delete the object copy. For example:
19016	//
19017	// x-amz-restore: ongoing-request="false", expiry-date="Fri, 23 Dec 2012 00:00:00
19018	// GMT"
19019	//
19020	// If the object restoration is in progress, the header returns the value ongoing-request="true".
19021	//
19022	// For more information about archiving objects, see Transitioning Objects:
19023	// General Considerations (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations).
19024	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
19025
19026	// If server-side encryption with a customer-provided encryption key was requested,
19027	// the response will include this header confirming the encryption algorithm
19028	// used.
19029	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
19030
19031	// If server-side encryption with a customer-provided encryption key was requested,
19032	// the response will include this header to provide round-trip message integrity
19033	// verification of the customer-provided encryption key.
19034	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
19035
19036	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
19037	// symmetric customer managed customer master key (CMK) that was used for the
19038	// object.
19039	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
19040
19041	// If the object is stored using server-side encryption either with an AWS KMS
19042	// customer master key (CMK) or an Amazon S3-managed encryption key, the response
19043	// includes this header with the value of the server-side encryption algorithm
19044	// used when storing this object in Amazon S3 (for example, AES256, aws:kms).
19045	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
19046
19047	// Provides storage class information of the object. Amazon S3 returns this
19048	// header for all objects except for S3 Standard storage class objects.
19049	//
19050	// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html).
19051	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
19052
19053	// Version of the object.
19054	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
19055
19056	// If the bucket is configured as a website, redirects requests for this object
19057	// to another object in the same bucket or to an external URL. Amazon S3 stores
19058	// the value of this header in the object metadata.
19059	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
19060}
19061
19062// String returns the string representation
19063func (s HeadObjectOutput) String() string {
19064	return awsutil.Prettify(s)
19065}
19066
19067// GoString returns the string representation
19068func (s HeadObjectOutput) GoString() string {
19069	return s.String()
19070}
19071
19072// SetAcceptRanges sets the AcceptRanges field's value.
19073func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
19074	s.AcceptRanges = &v
19075	return s
19076}
19077
19078// SetCacheControl sets the CacheControl field's value.
19079func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
19080	s.CacheControl = &v
19081	return s
19082}
19083
19084// SetContentDisposition sets the ContentDisposition field's value.
19085func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
19086	s.ContentDisposition = &v
19087	return s
19088}
19089
19090// SetContentEncoding sets the ContentEncoding field's value.
19091func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
19092	s.ContentEncoding = &v
19093	return s
19094}
19095
19096// SetContentLanguage sets the ContentLanguage field's value.
19097func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
19098	s.ContentLanguage = &v
19099	return s
19100}
19101
19102// SetContentLength sets the ContentLength field's value.
19103func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
19104	s.ContentLength = &v
19105	return s
19106}
19107
19108// SetContentType sets the ContentType field's value.
19109func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
19110	s.ContentType = &v
19111	return s
19112}
19113
19114// SetDeleteMarker sets the DeleteMarker field's value.
19115func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
19116	s.DeleteMarker = &v
19117	return s
19118}
19119
19120// SetETag sets the ETag field's value.
19121func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
19122	s.ETag = &v
19123	return s
19124}
19125
19126// SetExpiration sets the Expiration field's value.
19127func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
19128	s.Expiration = &v
19129	return s
19130}
19131
19132// SetExpires sets the Expires field's value.
19133func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
19134	s.Expires = &v
19135	return s
19136}
19137
19138// SetLastModified sets the LastModified field's value.
19139func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
19140	s.LastModified = &v
19141	return s
19142}
19143
19144// SetMetadata sets the Metadata field's value.
19145func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
19146	s.Metadata = v
19147	return s
19148}
19149
19150// SetMissingMeta sets the MissingMeta field's value.
19151func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
19152	s.MissingMeta = &v
19153	return s
19154}
19155
19156// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
19157func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput {
19158	s.ObjectLockLegalHoldStatus = &v
19159	return s
19160}
19161
19162// SetObjectLockMode sets the ObjectLockMode field's value.
19163func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput {
19164	s.ObjectLockMode = &v
19165	return s
19166}
19167
19168// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
19169func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput {
19170	s.ObjectLockRetainUntilDate = &v
19171	return s
19172}
19173
19174// SetPartsCount sets the PartsCount field's value.
19175func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
19176	s.PartsCount = &v
19177	return s
19178}
19179
19180// SetReplicationStatus sets the ReplicationStatus field's value.
19181func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
19182	s.ReplicationStatus = &v
19183	return s
19184}
19185
19186// SetRequestCharged sets the RequestCharged field's value.
19187func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
19188	s.RequestCharged = &v
19189	return s
19190}
19191
19192// SetRestore sets the Restore field's value.
19193func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
19194	s.Restore = &v
19195	return s
19196}
19197
19198// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
19199func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
19200	s.SSECustomerAlgorithm = &v
19201	return s
19202}
19203
19204// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
19205func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
19206	s.SSECustomerKeyMD5 = &v
19207	return s
19208}
19209
19210// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
19211func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
19212	s.SSEKMSKeyId = &v
19213	return s
19214}
19215
19216// SetServerSideEncryption sets the ServerSideEncryption field's value.
19217func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
19218	s.ServerSideEncryption = &v
19219	return s
19220}
19221
19222// SetStorageClass sets the StorageClass field's value.
19223func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
19224	s.StorageClass = &v
19225	return s
19226}
19227
19228// SetVersionId sets the VersionId field's value.
19229func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
19230	s.VersionId = &v
19231	return s
19232}
19233
19234// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
19235func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
19236	s.WebsiteRedirectLocation = &v
19237	return s
19238}
19239
19240// Container for the Suffix element.
19241type IndexDocument struct {
19242	_ struct{} `type:"structure"`
19243
19244	// A suffix that is appended to a request that is for a directory on the website
19245	// endpoint (for example,if the suffix is index.html and you make a request
19246	// to samplebucket/images/ the data that is returned will be for the object
19247	// with the key name images/index.html) The suffix must not be empty and must
19248	// not include a slash character.
19249	//
19250	// Suffix is a required field
19251	Suffix *string `type:"string" required:"true"`
19252}
19253
19254// String returns the string representation
19255func (s IndexDocument) String() string {
19256	return awsutil.Prettify(s)
19257}
19258
19259// GoString returns the string representation
19260func (s IndexDocument) GoString() string {
19261	return s.String()
19262}
19263
19264// Validate inspects the fields of the type to determine if they are valid.
19265func (s *IndexDocument) Validate() error {
19266	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
19267	if s.Suffix == nil {
19268		invalidParams.Add(request.NewErrParamRequired("Suffix"))
19269	}
19270
19271	if invalidParams.Len() > 0 {
19272		return invalidParams
19273	}
19274	return nil
19275}
19276
19277// SetSuffix sets the Suffix field's value.
19278func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
19279	s.Suffix = &v
19280	return s
19281}
19282
19283// Container element that identifies who initiated the multipart upload.
19284type Initiator struct {
19285	_ struct{} `type:"structure"`
19286
19287	// Name of the Principal.
19288	DisplayName *string `type:"string"`
19289
19290	// If the principal is an AWS account, it provides the Canonical User ID. If
19291	// the principal is an IAM User, it provides a user ARN value.
19292	ID *string `type:"string"`
19293}
19294
19295// String returns the string representation
19296func (s Initiator) String() string {
19297	return awsutil.Prettify(s)
19298}
19299
19300// GoString returns the string representation
19301func (s Initiator) GoString() string {
19302	return s.String()
19303}
19304
19305// SetDisplayName sets the DisplayName field's value.
19306func (s *Initiator) SetDisplayName(v string) *Initiator {
19307	s.DisplayName = &v
19308	return s
19309}
19310
19311// SetID sets the ID field's value.
19312func (s *Initiator) SetID(v string) *Initiator {
19313	s.ID = &v
19314	return s
19315}
19316
19317// Describes the serialization format of the object.
19318type InputSerialization struct {
19319	_ struct{} `type:"structure"`
19320
19321	// Describes the serialization of a CSV-encoded object.
19322	CSV *CSVInput `type:"structure"`
19323
19324	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
19325	// Value: NONE.
19326	CompressionType *string `type:"string" enum:"CompressionType"`
19327
19328	// Specifies JSON as object's input serialization format.
19329	JSON *JSONInput `type:"structure"`
19330
19331	// Specifies Parquet as object's input serialization format.
19332	Parquet *ParquetInput `type:"structure"`
19333}
19334
19335// String returns the string representation
19336func (s InputSerialization) String() string {
19337	return awsutil.Prettify(s)
19338}
19339
19340// GoString returns the string representation
19341func (s InputSerialization) GoString() string {
19342	return s.String()
19343}
19344
19345// SetCSV sets the CSV field's value.
19346func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
19347	s.CSV = v
19348	return s
19349}
19350
19351// SetCompressionType sets the CompressionType field's value.
19352func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
19353	s.CompressionType = &v
19354	return s
19355}
19356
19357// SetJSON sets the JSON field's value.
19358func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
19359	s.JSON = v
19360	return s
19361}
19362
19363// SetParquet sets the Parquet field's value.
19364func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
19365	s.Parquet = v
19366	return s
19367}
19368
19369// Specifies the inventory configuration for an Amazon S3 bucket. For more information,
19370// see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html)
19371// in the Amazon Simple Storage Service API Reference.
19372type InventoryConfiguration struct {
19373	_ struct{} `type:"structure"`
19374
19375	// Contains information about where to publish the inventory results.
19376	//
19377	// Destination is a required field
19378	Destination *InventoryDestination `type:"structure" required:"true"`
19379
19380	// Specifies an inventory filter. The inventory only includes objects that meet
19381	// the filter's criteria.
19382	Filter *InventoryFilter `type:"structure"`
19383
19384	// The ID used to identify the inventory configuration.
19385	//
19386	// Id is a required field
19387	Id *string `type:"string" required:"true"`
19388
19389	// Object versions to include in the inventory list. If set to All, the list
19390	// includes all the object versions, which adds the version-related fields VersionId,
19391	// IsLatest, and DeleteMarker to the list. If set to Current, the list does
19392	// not contain these version-related fields.
19393	//
19394	// IncludedObjectVersions is a required field
19395	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
19396
19397	// Specifies whether the inventory is enabled or disabled. If set to True, an
19398	// inventory list is generated. If set to False, no inventory list is generated.
19399	//
19400	// IsEnabled is a required field
19401	IsEnabled *bool `type:"boolean" required:"true"`
19402
19403	// Contains the optional fields that are included in the inventory results.
19404	OptionalFields []*string `locationNameList:"Field" type:"list"`
19405
19406	// Specifies the schedule for generating inventory results.
19407	//
19408	// Schedule is a required field
19409	Schedule *InventorySchedule `type:"structure" required:"true"`
19410}
19411
19412// String returns the string representation
19413func (s InventoryConfiguration) String() string {
19414	return awsutil.Prettify(s)
19415}
19416
19417// GoString returns the string representation
19418func (s InventoryConfiguration) GoString() string {
19419	return s.String()
19420}
19421
19422// Validate inspects the fields of the type to determine if they are valid.
19423func (s *InventoryConfiguration) Validate() error {
19424	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
19425	if s.Destination == nil {
19426		invalidParams.Add(request.NewErrParamRequired("Destination"))
19427	}
19428	if s.Id == nil {
19429		invalidParams.Add(request.NewErrParamRequired("Id"))
19430	}
19431	if s.IncludedObjectVersions == nil {
19432		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
19433	}
19434	if s.IsEnabled == nil {
19435		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
19436	}
19437	if s.Schedule == nil {
19438		invalidParams.Add(request.NewErrParamRequired("Schedule"))
19439	}
19440	if s.Destination != nil {
19441		if err := s.Destination.Validate(); err != nil {
19442			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
19443		}
19444	}
19445	if s.Filter != nil {
19446		if err := s.Filter.Validate(); err != nil {
19447			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
19448		}
19449	}
19450	if s.Schedule != nil {
19451		if err := s.Schedule.Validate(); err != nil {
19452			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
19453		}
19454	}
19455
19456	if invalidParams.Len() > 0 {
19457		return invalidParams
19458	}
19459	return nil
19460}
19461
19462// SetDestination sets the Destination field's value.
19463func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
19464	s.Destination = v
19465	return s
19466}
19467
19468// SetFilter sets the Filter field's value.
19469func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
19470	s.Filter = v
19471	return s
19472}
19473
19474// SetId sets the Id field's value.
19475func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
19476	s.Id = &v
19477	return s
19478}
19479
19480// SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
19481func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
19482	s.IncludedObjectVersions = &v
19483	return s
19484}
19485
19486// SetIsEnabled sets the IsEnabled field's value.
19487func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
19488	s.IsEnabled = &v
19489	return s
19490}
19491
19492// SetOptionalFields sets the OptionalFields field's value.
19493func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
19494	s.OptionalFields = v
19495	return s
19496}
19497
19498// SetSchedule sets the Schedule field's value.
19499func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
19500	s.Schedule = v
19501	return s
19502}
19503
19504// Specifies the inventory configuration for an Amazon S3 bucket.
19505type InventoryDestination struct {
19506	_ struct{} `type:"structure"`
19507
19508	// Contains the bucket name, file format, bucket owner (optional), and prefix
19509	// (optional) where inventory results are published.
19510	//
19511	// S3BucketDestination is a required field
19512	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
19513}
19514
19515// String returns the string representation
19516func (s InventoryDestination) String() string {
19517	return awsutil.Prettify(s)
19518}
19519
19520// GoString returns the string representation
19521func (s InventoryDestination) GoString() string {
19522	return s.String()
19523}
19524
19525// Validate inspects the fields of the type to determine if they are valid.
19526func (s *InventoryDestination) Validate() error {
19527	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
19528	if s.S3BucketDestination == nil {
19529		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
19530	}
19531	if s.S3BucketDestination != nil {
19532		if err := s.S3BucketDestination.Validate(); err != nil {
19533			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
19534		}
19535	}
19536
19537	if invalidParams.Len() > 0 {
19538		return invalidParams
19539	}
19540	return nil
19541}
19542
19543// SetS3BucketDestination sets the S3BucketDestination field's value.
19544func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
19545	s.S3BucketDestination = v
19546	return s
19547}
19548
19549// Contains the type of server-side encryption used to encrypt the inventory
19550// results.
19551type InventoryEncryption struct {
19552	_ struct{} `type:"structure"`
19553
19554	// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
19555	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
19556
19557	// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
19558	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
19559}
19560
19561// String returns the string representation
19562func (s InventoryEncryption) String() string {
19563	return awsutil.Prettify(s)
19564}
19565
19566// GoString returns the string representation
19567func (s InventoryEncryption) GoString() string {
19568	return s.String()
19569}
19570
19571// Validate inspects the fields of the type to determine if they are valid.
19572func (s *InventoryEncryption) Validate() error {
19573	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
19574	if s.SSEKMS != nil {
19575		if err := s.SSEKMS.Validate(); err != nil {
19576			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
19577		}
19578	}
19579
19580	if invalidParams.Len() > 0 {
19581		return invalidParams
19582	}
19583	return nil
19584}
19585
19586// SetSSEKMS sets the SSEKMS field's value.
19587func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
19588	s.SSEKMS = v
19589	return s
19590}
19591
19592// SetSSES3 sets the SSES3 field's value.
19593func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
19594	s.SSES3 = v
19595	return s
19596}
19597
19598// Specifies an inventory filter. The inventory only includes objects that meet
19599// the filter's criteria.
19600type InventoryFilter struct {
19601	_ struct{} `type:"structure"`
19602
19603	// The prefix that an object must have to be included in the inventory results.
19604	//
19605	// Prefix is a required field
19606	Prefix *string `type:"string" required:"true"`
19607}
19608
19609// String returns the string representation
19610func (s InventoryFilter) String() string {
19611	return awsutil.Prettify(s)
19612}
19613
19614// GoString returns the string representation
19615func (s InventoryFilter) GoString() string {
19616	return s.String()
19617}
19618
19619// Validate inspects the fields of the type to determine if they are valid.
19620func (s *InventoryFilter) Validate() error {
19621	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
19622	if s.Prefix == nil {
19623		invalidParams.Add(request.NewErrParamRequired("Prefix"))
19624	}
19625
19626	if invalidParams.Len() > 0 {
19627		return invalidParams
19628	}
19629	return nil
19630}
19631
19632// SetPrefix sets the Prefix field's value.
19633func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
19634	s.Prefix = &v
19635	return s
19636}
19637
19638// Contains the bucket name, file format, bucket owner (optional), and prefix
19639// (optional) where inventory results are published.
19640type InventoryS3BucketDestination struct {
19641	_ struct{} `type:"structure"`
19642
19643	// The account ID that owns the destination S3 bucket. If no account ID is provided,
19644	// the owner is not validated before exporting data.
19645	//
19646	// Although this value is optional, we strongly recommend that you set it to
19647	// help prevent problems if the destination bucket ownership changes.
19648	AccountId *string `type:"string"`
19649
19650	// The Amazon Resource Name (ARN) of the bucket where inventory results will
19651	// be published.
19652	//
19653	// Bucket is a required field
19654	Bucket *string `type:"string" required:"true"`
19655
19656	// Contains the type of server-side encryption used to encrypt the inventory
19657	// results.
19658	Encryption *InventoryEncryption `type:"structure"`
19659
19660	// Specifies the output format of the inventory results.
19661	//
19662	// Format is a required field
19663	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
19664
19665	// The prefix that is prepended to all inventory results.
19666	Prefix *string `type:"string"`
19667}
19668
19669// String returns the string representation
19670func (s InventoryS3BucketDestination) String() string {
19671	return awsutil.Prettify(s)
19672}
19673
19674// GoString returns the string representation
19675func (s InventoryS3BucketDestination) GoString() string {
19676	return s.String()
19677}
19678
19679// Validate inspects the fields of the type to determine if they are valid.
19680func (s *InventoryS3BucketDestination) Validate() error {
19681	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
19682	if s.Bucket == nil {
19683		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19684	}
19685	if s.Format == nil {
19686		invalidParams.Add(request.NewErrParamRequired("Format"))
19687	}
19688	if s.Encryption != nil {
19689		if err := s.Encryption.Validate(); err != nil {
19690			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
19691		}
19692	}
19693
19694	if invalidParams.Len() > 0 {
19695		return invalidParams
19696	}
19697	return nil
19698}
19699
19700// SetAccountId sets the AccountId field's value.
19701func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
19702	s.AccountId = &v
19703	return s
19704}
19705
19706// SetBucket sets the Bucket field's value.
19707func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
19708	s.Bucket = &v
19709	return s
19710}
19711
19712func (s *InventoryS3BucketDestination) getBucket() (v string) {
19713	if s.Bucket == nil {
19714		return v
19715	}
19716	return *s.Bucket
19717}
19718
19719// SetEncryption sets the Encryption field's value.
19720func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
19721	s.Encryption = v
19722	return s
19723}
19724
19725// SetFormat sets the Format field's value.
19726func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
19727	s.Format = &v
19728	return s
19729}
19730
19731// SetPrefix sets the Prefix field's value.
19732func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
19733	s.Prefix = &v
19734	return s
19735}
19736
19737// Specifies the schedule for generating inventory results.
19738type InventorySchedule struct {
19739	_ struct{} `type:"structure"`
19740
19741	// Specifies how frequently inventory results are produced.
19742	//
19743	// Frequency is a required field
19744	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
19745}
19746
19747// String returns the string representation
19748func (s InventorySchedule) String() string {
19749	return awsutil.Prettify(s)
19750}
19751
19752// GoString returns the string representation
19753func (s InventorySchedule) GoString() string {
19754	return s.String()
19755}
19756
19757// Validate inspects the fields of the type to determine if they are valid.
19758func (s *InventorySchedule) Validate() error {
19759	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
19760	if s.Frequency == nil {
19761		invalidParams.Add(request.NewErrParamRequired("Frequency"))
19762	}
19763
19764	if invalidParams.Len() > 0 {
19765		return invalidParams
19766	}
19767	return nil
19768}
19769
19770// SetFrequency sets the Frequency field's value.
19771func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
19772	s.Frequency = &v
19773	return s
19774}
19775
19776// Specifies JSON as object's input serialization format.
19777type JSONInput struct {
19778	_ struct{} `type:"structure"`
19779
19780	// The type of JSON. Valid values: Document, Lines.
19781	Type *string `type:"string" enum:"JSONType"`
19782}
19783
19784// String returns the string representation
19785func (s JSONInput) String() string {
19786	return awsutil.Prettify(s)
19787}
19788
19789// GoString returns the string representation
19790func (s JSONInput) GoString() string {
19791	return s.String()
19792}
19793
19794// SetType sets the Type field's value.
19795func (s *JSONInput) SetType(v string) *JSONInput {
19796	s.Type = &v
19797	return s
19798}
19799
19800// Specifies JSON as request's output serialization format.
19801type JSONOutput struct {
19802	_ struct{} `type:"structure"`
19803
19804	// The value used to separate individual records in the output. If no value
19805	// is specified, Amazon S3 uses a newline character ('\n').
19806	RecordDelimiter *string `type:"string"`
19807}
19808
19809// String returns the string representation
19810func (s JSONOutput) String() string {
19811	return awsutil.Prettify(s)
19812}
19813
19814// GoString returns the string representation
19815func (s JSONOutput) GoString() string {
19816	return s.String()
19817}
19818
19819// SetRecordDelimiter sets the RecordDelimiter field's value.
19820func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
19821	s.RecordDelimiter = &v
19822	return s
19823}
19824
19825// A container for object key name prefix and suffix filtering rules.
19826type KeyFilter struct {
19827	_ struct{} `type:"structure"`
19828
19829	// A list of containers for the key-value pair that defines the criteria for
19830	// the filter rule.
19831	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
19832}
19833
19834// String returns the string representation
19835func (s KeyFilter) String() string {
19836	return awsutil.Prettify(s)
19837}
19838
19839// GoString returns the string representation
19840func (s KeyFilter) GoString() string {
19841	return s.String()
19842}
19843
19844// SetFilterRules sets the FilterRules field's value.
19845func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
19846	s.FilterRules = v
19847	return s
19848}
19849
19850// A container for specifying the configuration for AWS Lambda notifications.
19851type LambdaFunctionConfiguration struct {
19852	_ struct{} `type:"structure"`
19853
19854	// The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
19855	// more information, see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
19856	// in the Amazon Simple Storage Service Developer Guide.
19857	//
19858	// Events is a required field
19859	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
19860
19861	// Specifies object key name filtering rules. For information about key name
19862	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
19863	// in the Amazon Simple Storage Service Developer Guide.
19864	Filter *NotificationConfigurationFilter `type:"structure"`
19865
19866	// An optional unique identifier for configurations in a notification configuration.
19867	// If you don't provide one, Amazon S3 will assign an ID.
19868	Id *string `type:"string"`
19869
19870	// The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
19871	// invokes when the specified event type occurs.
19872	//
19873	// LambdaFunctionArn is a required field
19874	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
19875}
19876
19877// String returns the string representation
19878func (s LambdaFunctionConfiguration) String() string {
19879	return awsutil.Prettify(s)
19880}
19881
19882// GoString returns the string representation
19883func (s LambdaFunctionConfiguration) GoString() string {
19884	return s.String()
19885}
19886
19887// Validate inspects the fields of the type to determine if they are valid.
19888func (s *LambdaFunctionConfiguration) Validate() error {
19889	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
19890	if s.Events == nil {
19891		invalidParams.Add(request.NewErrParamRequired("Events"))
19892	}
19893	if s.LambdaFunctionArn == nil {
19894		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
19895	}
19896
19897	if invalidParams.Len() > 0 {
19898		return invalidParams
19899	}
19900	return nil
19901}
19902
19903// SetEvents sets the Events field's value.
19904func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
19905	s.Events = v
19906	return s
19907}
19908
19909// SetFilter sets the Filter field's value.
19910func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
19911	s.Filter = v
19912	return s
19913}
19914
19915// SetId sets the Id field's value.
19916func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
19917	s.Id = &v
19918	return s
19919}
19920
19921// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
19922func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
19923	s.LambdaFunctionArn = &v
19924	return s
19925}
19926
19927// Container for lifecycle rules. You can add as many as 1000 rules.
19928type LifecycleConfiguration struct {
19929	_ struct{} `type:"structure"`
19930
19931	// Specifies lifecycle configuration rules for an Amazon S3 bucket.
19932	//
19933	// Rules is a required field
19934	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
19935}
19936
19937// String returns the string representation
19938func (s LifecycleConfiguration) String() string {
19939	return awsutil.Prettify(s)
19940}
19941
19942// GoString returns the string representation
19943func (s LifecycleConfiguration) GoString() string {
19944	return s.String()
19945}
19946
19947// Validate inspects the fields of the type to determine if they are valid.
19948func (s *LifecycleConfiguration) Validate() error {
19949	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
19950	if s.Rules == nil {
19951		invalidParams.Add(request.NewErrParamRequired("Rules"))
19952	}
19953	if s.Rules != nil {
19954		for i, v := range s.Rules {
19955			if v == nil {
19956				continue
19957			}
19958			if err := v.Validate(); err != nil {
19959				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
19960			}
19961		}
19962	}
19963
19964	if invalidParams.Len() > 0 {
19965		return invalidParams
19966	}
19967	return nil
19968}
19969
19970// SetRules sets the Rules field's value.
19971func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
19972	s.Rules = v
19973	return s
19974}
19975
19976// Container for the expiration for the lifecycle of the object.
19977type LifecycleExpiration struct {
19978	_ struct{} `type:"structure"`
19979
19980	// Indicates at what date the object is to be moved or deleted. Should be in
19981	// GMT ISO 8601 Format.
19982	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
19983
19984	// Indicates the lifetime, in days, of the objects that are subject to the rule.
19985	// The value must be a non-zero positive integer.
19986	Days *int64 `type:"integer"`
19987
19988	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
19989	// versions. If set to true, the delete marker will be expired; if set to false
19990	// the policy takes no action. This cannot be specified with Days or Date in
19991	// a Lifecycle Expiration Policy.
19992	ExpiredObjectDeleteMarker *bool `type:"boolean"`
19993}
19994
19995// String returns the string representation
19996func (s LifecycleExpiration) String() string {
19997	return awsutil.Prettify(s)
19998}
19999
20000// GoString returns the string representation
20001func (s LifecycleExpiration) GoString() string {
20002	return s.String()
20003}
20004
20005// SetDate sets the Date field's value.
20006func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
20007	s.Date = &v
20008	return s
20009}
20010
20011// SetDays sets the Days field's value.
20012func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
20013	s.Days = &v
20014	return s
20015}
20016
20017// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
20018func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
20019	s.ExpiredObjectDeleteMarker = &v
20020	return s
20021}
20022
20023// A lifecycle rule for individual objects in an Amazon S3 bucket.
20024type LifecycleRule struct {
20025	_ struct{} `type:"structure"`
20026
20027	// Specifies the days since the initiation of an incomplete multipart upload
20028	// that Amazon S3 will wait before permanently removing all parts of the upload.
20029	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
20030	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
20031	// in the Amazon Simple Storage Service Developer Guide.
20032	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
20033
20034	// Specifies the expiration for the lifecycle of the object in the form of date,
20035	// days and, whether the object has a delete marker.
20036	Expiration *LifecycleExpiration `type:"structure"`
20037
20038	// The Filter is used to identify objects that a Lifecycle Rule applies to.
20039	// A Filter must have exactly one of Prefix, Tag, or And specified.
20040	Filter *LifecycleRuleFilter `type:"structure"`
20041
20042	// Unique identifier for the rule. The value cannot be longer than 255 characters.
20043	ID *string `type:"string"`
20044
20045	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
20046	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
20047	// configuration action on a bucket that has versioning enabled (or suspended)
20048	// to request that Amazon S3 delete noncurrent object versions at a specific
20049	// period in the object's lifetime.
20050	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
20051
20052	// Specifies the transition rule for the lifecycle rule that describes when
20053	// noncurrent objects transition to a specific storage class. If your bucket
20054	// is versioning-enabled (or versioning is suspended), you can set this action
20055	// to request that Amazon S3 transition noncurrent object versions to a specific
20056	// storage class at a set period in the object's lifetime.
20057	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
20058
20059	// Prefix identifying one or more objects to which the rule applies. This is
20060	// No longer used; use Filter instead.
20061	//
20062	// Deprecated: Prefix has been deprecated
20063	Prefix *string `deprecated:"true" type:"string"`
20064
20065	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
20066	// is not currently being applied.
20067	//
20068	// Status is a required field
20069	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
20070
20071	// Specifies when an Amazon S3 object transitions to a specified storage class.
20072	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
20073}
20074
20075// String returns the string representation
20076func (s LifecycleRule) String() string {
20077	return awsutil.Prettify(s)
20078}
20079
20080// GoString returns the string representation
20081func (s LifecycleRule) GoString() string {
20082	return s.String()
20083}
20084
20085// Validate inspects the fields of the type to determine if they are valid.
20086func (s *LifecycleRule) Validate() error {
20087	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
20088	if s.Status == nil {
20089		invalidParams.Add(request.NewErrParamRequired("Status"))
20090	}
20091	if s.Filter != nil {
20092		if err := s.Filter.Validate(); err != nil {
20093			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
20094		}
20095	}
20096
20097	if invalidParams.Len() > 0 {
20098		return invalidParams
20099	}
20100	return nil
20101}
20102
20103// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
20104func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
20105	s.AbortIncompleteMultipartUpload = v
20106	return s
20107}
20108
20109// SetExpiration sets the Expiration field's value.
20110func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
20111	s.Expiration = v
20112	return s
20113}
20114
20115// SetFilter sets the Filter field's value.
20116func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
20117	s.Filter = v
20118	return s
20119}
20120
20121// SetID sets the ID field's value.
20122func (s *LifecycleRule) SetID(v string) *LifecycleRule {
20123	s.ID = &v
20124	return s
20125}
20126
20127// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
20128func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
20129	s.NoncurrentVersionExpiration = v
20130	return s
20131}
20132
20133// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
20134func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
20135	s.NoncurrentVersionTransitions = v
20136	return s
20137}
20138
20139// SetPrefix sets the Prefix field's value.
20140func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
20141	s.Prefix = &v
20142	return s
20143}
20144
20145// SetStatus sets the Status field's value.
20146func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
20147	s.Status = &v
20148	return s
20149}
20150
20151// SetTransitions sets the Transitions field's value.
20152func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
20153	s.Transitions = v
20154	return s
20155}
20156
20157// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
20158// more predicates. The Lifecycle Rule will apply to any object matching all
20159// of the predicates configured inside the And operator.
20160type LifecycleRuleAndOperator struct {
20161	_ struct{} `type:"structure"`
20162
20163	// Prefix identifying one or more objects to which the rule applies.
20164	Prefix *string `type:"string"`
20165
20166	// All of these tags must exist in the object's tag set in order for the rule
20167	// to apply.
20168	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
20169}
20170
20171// String returns the string representation
20172func (s LifecycleRuleAndOperator) String() string {
20173	return awsutil.Prettify(s)
20174}
20175
20176// GoString returns the string representation
20177func (s LifecycleRuleAndOperator) GoString() string {
20178	return s.String()
20179}
20180
20181// Validate inspects the fields of the type to determine if they are valid.
20182func (s *LifecycleRuleAndOperator) Validate() error {
20183	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
20184	if s.Tags != nil {
20185		for i, v := range s.Tags {
20186			if v == nil {
20187				continue
20188			}
20189			if err := v.Validate(); err != nil {
20190				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
20191			}
20192		}
20193	}
20194
20195	if invalidParams.Len() > 0 {
20196		return invalidParams
20197	}
20198	return nil
20199}
20200
20201// SetPrefix sets the Prefix field's value.
20202func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
20203	s.Prefix = &v
20204	return s
20205}
20206
20207// SetTags sets the Tags field's value.
20208func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
20209	s.Tags = v
20210	return s
20211}
20212
20213// The Filter is used to identify objects that a Lifecycle Rule applies to.
20214// A Filter must have exactly one of Prefix, Tag, or And specified.
20215type LifecycleRuleFilter struct {
20216	_ struct{} `type:"structure"`
20217
20218	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
20219	// more predicates. The Lifecycle Rule will apply to any object matching all
20220	// of the predicates configured inside the And operator.
20221	And *LifecycleRuleAndOperator `type:"structure"`
20222
20223	// Prefix identifying one or more objects to which the rule applies.
20224	Prefix *string `type:"string"`
20225
20226	// This tag must exist in the object's tag set in order for the rule to apply.
20227	Tag *Tag `type:"structure"`
20228}
20229
20230// String returns the string representation
20231func (s LifecycleRuleFilter) String() string {
20232	return awsutil.Prettify(s)
20233}
20234
20235// GoString returns the string representation
20236func (s LifecycleRuleFilter) GoString() string {
20237	return s.String()
20238}
20239
20240// Validate inspects the fields of the type to determine if they are valid.
20241func (s *LifecycleRuleFilter) Validate() error {
20242	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
20243	if s.And != nil {
20244		if err := s.And.Validate(); err != nil {
20245			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
20246		}
20247	}
20248	if s.Tag != nil {
20249		if err := s.Tag.Validate(); err != nil {
20250			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
20251		}
20252	}
20253
20254	if invalidParams.Len() > 0 {
20255		return invalidParams
20256	}
20257	return nil
20258}
20259
20260// SetAnd sets the And field's value.
20261func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
20262	s.And = v
20263	return s
20264}
20265
20266// SetPrefix sets the Prefix field's value.
20267func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
20268	s.Prefix = &v
20269	return s
20270}
20271
20272// SetTag sets the Tag field's value.
20273func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
20274	s.Tag = v
20275	return s
20276}
20277
20278type ListBucketAnalyticsConfigurationsInput struct {
20279	_ struct{} `locationName:"ListBucketAnalyticsConfigurationsRequest" type:"structure"`
20280
20281	// The name of the bucket from which analytics configurations are retrieved.
20282	//
20283	// Bucket is a required field
20284	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20285
20286	// The ContinuationToken that represents a placeholder from where this request
20287	// should begin.
20288	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
20289}
20290
20291// String returns the string representation
20292func (s ListBucketAnalyticsConfigurationsInput) String() string {
20293	return awsutil.Prettify(s)
20294}
20295
20296// GoString returns the string representation
20297func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
20298	return s.String()
20299}
20300
20301// Validate inspects the fields of the type to determine if they are valid.
20302func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
20303	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
20304	if s.Bucket == nil {
20305		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20306	}
20307	if s.Bucket != nil && len(*s.Bucket) < 1 {
20308		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20309	}
20310
20311	if invalidParams.Len() > 0 {
20312		return invalidParams
20313	}
20314	return nil
20315}
20316
20317// SetBucket sets the Bucket field's value.
20318func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
20319	s.Bucket = &v
20320	return s
20321}
20322
20323func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
20324	if s.Bucket == nil {
20325		return v
20326	}
20327	return *s.Bucket
20328}
20329
20330// SetContinuationToken sets the ContinuationToken field's value.
20331func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
20332	s.ContinuationToken = &v
20333	return s
20334}
20335
20336func (s *ListBucketAnalyticsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
20337	if s.Bucket == nil {
20338		return nil, fmt.Errorf("member Bucket is nil")
20339	}
20340	return parseEndpointARN(*s.Bucket)
20341}
20342
20343func (s *ListBucketAnalyticsConfigurationsInput) hasEndpointARN() bool {
20344	if s.Bucket == nil {
20345		return false
20346	}
20347	return arn.IsARN(*s.Bucket)
20348}
20349
20350type ListBucketAnalyticsConfigurationsOutput struct {
20351	_ struct{} `type:"structure"`
20352
20353	// The list of analytics configurations for a bucket.
20354	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
20355
20356	// The marker that is used as a starting point for this analytics configuration
20357	// list response. This value is present if it was sent in the request.
20358	ContinuationToken *string `type:"string"`
20359
20360	// Indicates whether the returned list of analytics configurations is complete.
20361	// A value of true indicates that the list is not complete and the NextContinuationToken
20362	// will be provided for a subsequent request.
20363	IsTruncated *bool `type:"boolean"`
20364
20365	// NextContinuationToken is sent when isTruncated is true, which indicates that
20366	// there are more analytics configurations to list. The next request must include
20367	// this NextContinuationToken. The token is obfuscated and is not a usable value.
20368	NextContinuationToken *string `type:"string"`
20369}
20370
20371// String returns the string representation
20372func (s ListBucketAnalyticsConfigurationsOutput) String() string {
20373	return awsutil.Prettify(s)
20374}
20375
20376// GoString returns the string representation
20377func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
20378	return s.String()
20379}
20380
20381// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
20382func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
20383	s.AnalyticsConfigurationList = v
20384	return s
20385}
20386
20387// SetContinuationToken sets the ContinuationToken field's value.
20388func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
20389	s.ContinuationToken = &v
20390	return s
20391}
20392
20393// SetIsTruncated sets the IsTruncated field's value.
20394func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
20395	s.IsTruncated = &v
20396	return s
20397}
20398
20399// SetNextContinuationToken sets the NextContinuationToken field's value.
20400func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
20401	s.NextContinuationToken = &v
20402	return s
20403}
20404
20405type ListBucketInventoryConfigurationsInput struct {
20406	_ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"`
20407
20408	// The name of the bucket containing the inventory configurations to retrieve.
20409	//
20410	// Bucket is a required field
20411	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20412
20413	// The marker used to continue an inventory configuration listing that has been
20414	// truncated. Use the NextContinuationToken from a previously truncated list
20415	// response to continue the listing. The continuation token is an opaque value
20416	// that Amazon S3 understands.
20417	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
20418}
20419
20420// String returns the string representation
20421func (s ListBucketInventoryConfigurationsInput) String() string {
20422	return awsutil.Prettify(s)
20423}
20424
20425// GoString returns the string representation
20426func (s ListBucketInventoryConfigurationsInput) GoString() string {
20427	return s.String()
20428}
20429
20430// Validate inspects the fields of the type to determine if they are valid.
20431func (s *ListBucketInventoryConfigurationsInput) Validate() error {
20432	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
20433	if s.Bucket == nil {
20434		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20435	}
20436	if s.Bucket != nil && len(*s.Bucket) < 1 {
20437		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20438	}
20439
20440	if invalidParams.Len() > 0 {
20441		return invalidParams
20442	}
20443	return nil
20444}
20445
20446// SetBucket sets the Bucket field's value.
20447func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
20448	s.Bucket = &v
20449	return s
20450}
20451
20452func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
20453	if s.Bucket == nil {
20454		return v
20455	}
20456	return *s.Bucket
20457}
20458
20459// SetContinuationToken sets the ContinuationToken field's value.
20460func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
20461	s.ContinuationToken = &v
20462	return s
20463}
20464
20465func (s *ListBucketInventoryConfigurationsInput) getEndpointARN() (arn.Resource, error) {
20466	if s.Bucket == nil {
20467		return nil, fmt.Errorf("member Bucket is nil")
20468	}
20469	return parseEndpointARN(*s.Bucket)
20470}
20471
20472func (s *ListBucketInventoryConfigurationsInput) hasEndpointARN() bool {
20473	if s.Bucket == nil {
20474		return false
20475	}
20476	return arn.IsARN(*s.Bucket)
20477}
20478
20479type ListBucketInventoryConfigurationsOutput struct {
20480	_ struct{} `type:"structure"`
20481
20482	// If sent in the request, the marker that is used as a starting point for this
20483	// inventory configuration list response.
20484	ContinuationToken *string `type:"string"`
20485
20486	// The list of inventory configurations for a bucket.
20487	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
20488
20489	// Tells whether the returned list of inventory configurations is complete.
20490	// A value of true indicates that the list is not complete and the NextContinuationToken
20491	// is provided for a subsequent request.
20492	IsTruncated *bool `type:"boolean"`
20493
20494	// The marker used to continue this inventory configuration listing. Use the
20495	// NextContinuationToken from this response to continue the listing in a subsequent
20496	// request. The continuation token is an opaque value that Amazon S3 understands.
20497	NextContinuationToken *string `type:"string"`
20498}
20499
20500// String returns the string representation
20501func (s ListBucketInventoryConfigurationsOutput) String() string {
20502	return awsutil.Prettify(s)
20503}
20504
20505// GoString returns the string representation
20506func (s ListBucketInventoryConfigurationsOutput) GoString() string {
20507	return s.String()
20508}
20509
20510// SetContinuationToken sets the ContinuationToken field's value.
20511func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
20512	s.ContinuationToken = &v
20513	return s
20514}
20515
20516// SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
20517func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
20518	s.InventoryConfigurationList = v
20519	return s
20520}
20521
20522// SetIsTruncated sets the IsTruncated field's value.
20523func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
20524	s.IsTruncated = &v
20525	return s
20526}
20527
20528// SetNextContinuationToken sets the NextContinuationToken field's value.
20529func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
20530	s.NextContinuationToken = &v
20531	return s
20532}
20533
20534type ListBucketMetricsConfigurationsInput struct {
20535	_ struct{} `locationName:"ListBucketMetricsConfigurationsRequest" type:"structure"`
20536
20537	// The name of the bucket containing the metrics configurations to retrieve.
20538	//
20539	// Bucket is a required field
20540	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20541
20542	// The marker that is used to continue a metrics configuration listing that
20543	// has been truncated. Use the NextContinuationToken from a previously truncated
20544	// list response to continue the listing. The continuation token is an opaque
20545	// value that Amazon S3 understands.
20546	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
20547}
20548
20549// String returns the string representation
20550func (s ListBucketMetricsConfigurationsInput) String() string {
20551	return awsutil.Prettify(s)
20552}
20553
20554// GoString returns the string representation
20555func (s ListBucketMetricsConfigurationsInput) GoString() string {
20556	return s.String()
20557}
20558
20559// Validate inspects the fields of the type to determine if they are valid.
20560func (s *ListBucketMetricsConfigurationsInput) Validate() error {
20561	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
20562	if s.Bucket == nil {
20563		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20564	}
20565	if s.Bucket != nil && len(*s.Bucket) < 1 {
20566		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20567	}
20568
20569	if invalidParams.Len() > 0 {
20570		return invalidParams
20571	}
20572	return nil
20573}
20574
20575// SetBucket sets the Bucket field's value.
20576func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
20577	s.Bucket = &v
20578	return s
20579}
20580
20581func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
20582	if s.Bucket == nil {
20583		return v
20584	}
20585	return *s.Bucket
20586}
20587
20588// SetContinuationToken sets the ContinuationToken field's value.
20589func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
20590	s.ContinuationToken = &v
20591	return s
20592}
20593
20594func (s *ListBucketMetricsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
20595	if s.Bucket == nil {
20596		return nil, fmt.Errorf("member Bucket is nil")
20597	}
20598	return parseEndpointARN(*s.Bucket)
20599}
20600
20601func (s *ListBucketMetricsConfigurationsInput) hasEndpointARN() bool {
20602	if s.Bucket == nil {
20603		return false
20604	}
20605	return arn.IsARN(*s.Bucket)
20606}
20607
20608type ListBucketMetricsConfigurationsOutput struct {
20609	_ struct{} `type:"structure"`
20610
20611	// The marker that is used as a starting point for this metrics configuration
20612	// list response. This value is present if it was sent in the request.
20613	ContinuationToken *string `type:"string"`
20614
20615	// Indicates whether the returned list of metrics configurations is complete.
20616	// A value of true indicates that the list is not complete and the NextContinuationToken
20617	// will be provided for a subsequent request.
20618	IsTruncated *bool `type:"boolean"`
20619
20620	// The list of metrics configurations for a bucket.
20621	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
20622
20623	// The marker used to continue a metrics configuration listing that has been
20624	// truncated. Use the NextContinuationToken from a previously truncated list
20625	// response to continue the listing. The continuation token is an opaque value
20626	// that Amazon S3 understands.
20627	NextContinuationToken *string `type:"string"`
20628}
20629
20630// String returns the string representation
20631func (s ListBucketMetricsConfigurationsOutput) String() string {
20632	return awsutil.Prettify(s)
20633}
20634
20635// GoString returns the string representation
20636func (s ListBucketMetricsConfigurationsOutput) GoString() string {
20637	return s.String()
20638}
20639
20640// SetContinuationToken sets the ContinuationToken field's value.
20641func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
20642	s.ContinuationToken = &v
20643	return s
20644}
20645
20646// SetIsTruncated sets the IsTruncated field's value.
20647func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
20648	s.IsTruncated = &v
20649	return s
20650}
20651
20652// SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
20653func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
20654	s.MetricsConfigurationList = v
20655	return s
20656}
20657
20658// SetNextContinuationToken sets the NextContinuationToken field's value.
20659func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
20660	s.NextContinuationToken = &v
20661	return s
20662}
20663
20664type ListBucketsInput struct {
20665	_ struct{} `type:"structure"`
20666}
20667
20668// String returns the string representation
20669func (s ListBucketsInput) String() string {
20670	return awsutil.Prettify(s)
20671}
20672
20673// GoString returns the string representation
20674func (s ListBucketsInput) GoString() string {
20675	return s.String()
20676}
20677
20678type ListBucketsOutput struct {
20679	_ struct{} `type:"structure"`
20680
20681	// The list of buckets owned by the requestor.
20682	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
20683
20684	// The owner of the buckets listed.
20685	Owner *Owner `type:"structure"`
20686}
20687
20688// String returns the string representation
20689func (s ListBucketsOutput) String() string {
20690	return awsutil.Prettify(s)
20691}
20692
20693// GoString returns the string representation
20694func (s ListBucketsOutput) GoString() string {
20695	return s.String()
20696}
20697
20698// SetBuckets sets the Buckets field's value.
20699func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
20700	s.Buckets = v
20701	return s
20702}
20703
20704// SetOwner sets the Owner field's value.
20705func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
20706	s.Owner = v
20707	return s
20708}
20709
20710type ListMultipartUploadsInput struct {
20711	_ struct{} `locationName:"ListMultipartUploadsRequest" type:"structure"`
20712
20713	// Name of the bucket to which the multipart upload was initiated.
20714	//
20715	// When using this API with an access point, you must direct requests to the
20716	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20717	// When using this operation using an access point through the AWS SDKs, you
20718	// provide the access point ARN in place of the bucket name. For more information
20719	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
20720	// in the Amazon Simple Storage Service Developer Guide.
20721	//
20722	// Bucket is a required field
20723	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20724
20725	// Character you use to group keys.
20726	//
20727	// All keys that contain the same string between the prefix, if specified, and
20728	// the first occurrence of the delimiter after the prefix are grouped under
20729	// a single result element, CommonPrefixes. If you don't specify the prefix
20730	// parameter, then the substring starts at the beginning of the key. The keys
20731	// that are grouped under CommonPrefixes result element are not returned elsewhere
20732	// in the response.
20733	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
20734
20735	// Requests Amazon S3 to encode the object keys in the response and specifies
20736	// the encoding method to use. An object key may contain any Unicode character;
20737	// however, XML 1.0 parser cannot parse some characters, such as characters
20738	// with an ASCII value from 0 to 10. For characters that are not supported in
20739	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
20740	// keys in the response.
20741	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
20742
20743	// Together with upload-id-marker, this parameter specifies the multipart upload
20744	// after which listing should begin.
20745	//
20746	// If upload-id-marker is not specified, only the keys lexicographically greater
20747	// than the specified key-marker will be included in the list.
20748	//
20749	// If upload-id-marker is specified, any multipart uploads for a key equal to
20750	// the key-marker might also be included, provided those multipart uploads have
20751	// upload IDs lexicographically greater than the specified upload-id-marker.
20752	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
20753
20754	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
20755	// in the response body. 1,000 is the maximum number of uploads that can be
20756	// returned in a response.
20757	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
20758
20759	// Lists in-progress uploads only for those keys that begin with the specified
20760	// prefix. You can use prefixes to separate a bucket into different grouping
20761	// of keys. (You can think of using prefix to make groups in the same way you'd
20762	// use a folder in a file system.)
20763	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
20764
20765	// Together with key-marker, specifies the multipart upload after which listing
20766	// should begin. If key-marker is not specified, the upload-id-marker parameter
20767	// is ignored. Otherwise, any multipart uploads for a key equal to the key-marker
20768	// might be included in the list only if they have an upload ID lexicographically
20769	// greater than the specified upload-id-marker.
20770	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
20771}
20772
20773// String returns the string representation
20774func (s ListMultipartUploadsInput) String() string {
20775	return awsutil.Prettify(s)
20776}
20777
20778// GoString returns the string representation
20779func (s ListMultipartUploadsInput) GoString() string {
20780	return s.String()
20781}
20782
20783// Validate inspects the fields of the type to determine if they are valid.
20784func (s *ListMultipartUploadsInput) Validate() error {
20785	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
20786	if s.Bucket == nil {
20787		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20788	}
20789	if s.Bucket != nil && len(*s.Bucket) < 1 {
20790		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20791	}
20792
20793	if invalidParams.Len() > 0 {
20794		return invalidParams
20795	}
20796	return nil
20797}
20798
20799// SetBucket sets the Bucket field's value.
20800func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
20801	s.Bucket = &v
20802	return s
20803}
20804
20805func (s *ListMultipartUploadsInput) getBucket() (v string) {
20806	if s.Bucket == nil {
20807		return v
20808	}
20809	return *s.Bucket
20810}
20811
20812// SetDelimiter sets the Delimiter field's value.
20813func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
20814	s.Delimiter = &v
20815	return s
20816}
20817
20818// SetEncodingType sets the EncodingType field's value.
20819func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
20820	s.EncodingType = &v
20821	return s
20822}
20823
20824// SetKeyMarker sets the KeyMarker field's value.
20825func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
20826	s.KeyMarker = &v
20827	return s
20828}
20829
20830// SetMaxUploads sets the MaxUploads field's value.
20831func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
20832	s.MaxUploads = &v
20833	return s
20834}
20835
20836// SetPrefix sets the Prefix field's value.
20837func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
20838	s.Prefix = &v
20839	return s
20840}
20841
20842// SetUploadIdMarker sets the UploadIdMarker field's value.
20843func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
20844	s.UploadIdMarker = &v
20845	return s
20846}
20847
20848func (s *ListMultipartUploadsInput) getEndpointARN() (arn.Resource, error) {
20849	if s.Bucket == nil {
20850		return nil, fmt.Errorf("member Bucket is nil")
20851	}
20852	return parseEndpointARN(*s.Bucket)
20853}
20854
20855func (s *ListMultipartUploadsInput) hasEndpointARN() bool {
20856	if s.Bucket == nil {
20857		return false
20858	}
20859	return arn.IsARN(*s.Bucket)
20860}
20861
20862type ListMultipartUploadsOutput struct {
20863	_ struct{} `type:"structure"`
20864
20865	// Name of the bucket to which the multipart upload was initiated.
20866	Bucket *string `type:"string"`
20867
20868	// If you specify a delimiter in the request, then the result returns each distinct
20869	// key prefix containing the delimiter in a CommonPrefixes element. The distinct
20870	// key prefixes are returned in the Prefix child element.
20871	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
20872
20873	// Contains the delimiter you specified in the request. If you don't specify
20874	// a delimiter in your request, this element is absent from the response.
20875	Delimiter *string `type:"string"`
20876
20877	// Encoding type used by Amazon S3 to encode object keys in the response.
20878	//
20879	// If you specify encoding-type request parameter, Amazon S3 includes this element
20880	// in the response, and returns encoded key name values in the following response
20881	// elements:
20882	//
20883	// Delimiter, KeyMarker, Prefix, NextKeyMarker, Key.
20884	EncodingType *string `type:"string" enum:"EncodingType"`
20885
20886	// Indicates whether the returned list of multipart uploads is truncated. A
20887	// value of true indicates that the list was truncated. The list can be truncated
20888	// if the number of multipart uploads exceeds the limit allowed or specified
20889	// by max uploads.
20890	IsTruncated *bool `type:"boolean"`
20891
20892	// The key at or after which the listing began.
20893	KeyMarker *string `type:"string"`
20894
20895	// Maximum number of multipart uploads that could have been included in the
20896	// response.
20897	MaxUploads *int64 `type:"integer"`
20898
20899	// When a list is truncated, this element specifies the value that should be
20900	// used for the key-marker request parameter in a subsequent request.
20901	NextKeyMarker *string `type:"string"`
20902
20903	// When a list is truncated, this element specifies the value that should be
20904	// used for the upload-id-marker request parameter in a subsequent request.
20905	NextUploadIdMarker *string `type:"string"`
20906
20907	// When a prefix is provided in the request, this field contains the specified
20908	// prefix. The result contains only keys starting with the specified prefix.
20909	Prefix *string `type:"string"`
20910
20911	// Upload ID after which listing began.
20912	UploadIdMarker *string `type:"string"`
20913
20914	// Container for elements related to a particular multipart upload. A response
20915	// can contain zero or more Upload elements.
20916	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
20917}
20918
20919// String returns the string representation
20920func (s ListMultipartUploadsOutput) String() string {
20921	return awsutil.Prettify(s)
20922}
20923
20924// GoString returns the string representation
20925func (s ListMultipartUploadsOutput) GoString() string {
20926	return s.String()
20927}
20928
20929// SetBucket sets the Bucket field's value.
20930func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
20931	s.Bucket = &v
20932	return s
20933}
20934
20935func (s *ListMultipartUploadsOutput) getBucket() (v string) {
20936	if s.Bucket == nil {
20937		return v
20938	}
20939	return *s.Bucket
20940}
20941
20942// SetCommonPrefixes sets the CommonPrefixes field's value.
20943func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
20944	s.CommonPrefixes = v
20945	return s
20946}
20947
20948// SetDelimiter sets the Delimiter field's value.
20949func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
20950	s.Delimiter = &v
20951	return s
20952}
20953
20954// SetEncodingType sets the EncodingType field's value.
20955func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
20956	s.EncodingType = &v
20957	return s
20958}
20959
20960// SetIsTruncated sets the IsTruncated field's value.
20961func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
20962	s.IsTruncated = &v
20963	return s
20964}
20965
20966// SetKeyMarker sets the KeyMarker field's value.
20967func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
20968	s.KeyMarker = &v
20969	return s
20970}
20971
20972// SetMaxUploads sets the MaxUploads field's value.
20973func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
20974	s.MaxUploads = &v
20975	return s
20976}
20977
20978// SetNextKeyMarker sets the NextKeyMarker field's value.
20979func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
20980	s.NextKeyMarker = &v
20981	return s
20982}
20983
20984// SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
20985func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
20986	s.NextUploadIdMarker = &v
20987	return s
20988}
20989
20990// SetPrefix sets the Prefix field's value.
20991func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
20992	s.Prefix = &v
20993	return s
20994}
20995
20996// SetUploadIdMarker sets the UploadIdMarker field's value.
20997func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
20998	s.UploadIdMarker = &v
20999	return s
21000}
21001
21002// SetUploads sets the Uploads field's value.
21003func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
21004	s.Uploads = v
21005	return s
21006}
21007
21008type ListObjectVersionsInput struct {
21009	_ struct{} `locationName:"ListObjectVersionsRequest" type:"structure"`
21010
21011	// The bucket name that contains the objects.
21012	//
21013	// When using this API with an access point, you must direct requests to the
21014	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21015	// When using this operation using an access point through the AWS SDKs, you
21016	// provide the access point ARN in place of the bucket name. For more information
21017	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21018	// in the Amazon Simple Storage Service Developer Guide.
21019	//
21020	// Bucket is a required field
21021	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21022
21023	// A delimiter is a character that you specify to group keys. All keys that
21024	// contain the same string between the prefix and the first occurrence of the
21025	// delimiter are grouped under a single result element in CommonPrefixes. These
21026	// groups are counted as one result against the max-keys limitation. These keys
21027	// are not returned elsewhere in the response.
21028	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
21029
21030	// Requests Amazon S3 to encode the object keys in the response and specifies
21031	// the encoding method to use. An object key may contain any Unicode character;
21032	// however, XML 1.0 parser cannot parse some characters, such as characters
21033	// with an ASCII value from 0 to 10. For characters that are not supported in
21034	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
21035	// keys in the response.
21036	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
21037
21038	// Specifies the key to start with when listing objects in a bucket.
21039	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
21040
21041	// Sets the maximum number of keys returned in the response. By default the
21042	// API returns up to 1,000 key names. The response might contain fewer keys
21043	// but will never contain more. If additional keys satisfy the search criteria,
21044	// but were not returned because max-keys was exceeded, the response contains
21045	// <isTruncated>true</isTruncated>. To return the additional keys, see key-marker
21046	// and version-id-marker.
21047	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
21048
21049	// Use this parameter to select only those keys that begin with the specified
21050	// prefix. You can use prefixes to separate a bucket into different groupings
21051	// of keys. (You can think of using prefix to make groups in the same way you'd
21052	// use a folder in a file system.) You can use prefix with delimiter to roll
21053	// up numerous objects into a single result under CommonPrefixes.
21054	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
21055
21056	// Specifies the object version you want to start listing from.
21057	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
21058}
21059
21060// String returns the string representation
21061func (s ListObjectVersionsInput) String() string {
21062	return awsutil.Prettify(s)
21063}
21064
21065// GoString returns the string representation
21066func (s ListObjectVersionsInput) GoString() string {
21067	return s.String()
21068}
21069
21070// Validate inspects the fields of the type to determine if they are valid.
21071func (s *ListObjectVersionsInput) Validate() error {
21072	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
21073	if s.Bucket == nil {
21074		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21075	}
21076	if s.Bucket != nil && len(*s.Bucket) < 1 {
21077		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21078	}
21079
21080	if invalidParams.Len() > 0 {
21081		return invalidParams
21082	}
21083	return nil
21084}
21085
21086// SetBucket sets the Bucket field's value.
21087func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
21088	s.Bucket = &v
21089	return s
21090}
21091
21092func (s *ListObjectVersionsInput) getBucket() (v string) {
21093	if s.Bucket == nil {
21094		return v
21095	}
21096	return *s.Bucket
21097}
21098
21099// SetDelimiter sets the Delimiter field's value.
21100func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
21101	s.Delimiter = &v
21102	return s
21103}
21104
21105// SetEncodingType sets the EncodingType field's value.
21106func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
21107	s.EncodingType = &v
21108	return s
21109}
21110
21111// SetKeyMarker sets the KeyMarker field's value.
21112func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
21113	s.KeyMarker = &v
21114	return s
21115}
21116
21117// SetMaxKeys sets the MaxKeys field's value.
21118func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
21119	s.MaxKeys = &v
21120	return s
21121}
21122
21123// SetPrefix sets the Prefix field's value.
21124func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
21125	s.Prefix = &v
21126	return s
21127}
21128
21129// SetVersionIdMarker sets the VersionIdMarker field's value.
21130func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
21131	s.VersionIdMarker = &v
21132	return s
21133}
21134
21135func (s *ListObjectVersionsInput) getEndpointARN() (arn.Resource, error) {
21136	if s.Bucket == nil {
21137		return nil, fmt.Errorf("member Bucket is nil")
21138	}
21139	return parseEndpointARN(*s.Bucket)
21140}
21141
21142func (s *ListObjectVersionsInput) hasEndpointARN() bool {
21143	if s.Bucket == nil {
21144		return false
21145	}
21146	return arn.IsARN(*s.Bucket)
21147}
21148
21149type ListObjectVersionsOutput struct {
21150	_ struct{} `type:"structure"`
21151
21152	// All of the keys rolled up into a common prefix count as a single return when
21153	// calculating the number of returns.
21154	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
21155
21156	// Container for an object that is a delete marker.
21157	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
21158
21159	// The delimiter grouping the included keys. A delimiter is a character that
21160	// you specify to group keys. All keys that contain the same string between
21161	// the prefix and the first occurrence of the delimiter are grouped under a
21162	// single result element in CommonPrefixes. These groups are counted as one
21163	// result against the max-keys limitation. These keys are not returned elsewhere
21164	// in the response.
21165	Delimiter *string `type:"string"`
21166
21167	// Encoding type used by Amazon S3 to encode object key names in the XML response.
21168	//
21169	// If you specify encoding-type request parameter, Amazon S3 includes this element
21170	// in the response, and returns encoded key name values in the following response
21171	// elements:
21172	//
21173	// KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.
21174	EncodingType *string `type:"string" enum:"EncodingType"`
21175
21176	// A flag that indicates whether Amazon S3 returned all of the results that
21177	// satisfied the search criteria. If your results were truncated, you can make
21178	// a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
21179	// response parameters as a starting place in another request to return the
21180	// rest of the results.
21181	IsTruncated *bool `type:"boolean"`
21182
21183	// Marks the last key returned in a truncated response.
21184	KeyMarker *string `type:"string"`
21185
21186	// Specifies the maximum number of objects to return.
21187	MaxKeys *int64 `type:"integer"`
21188
21189	// Bucket name.
21190	Name *string `type:"string"`
21191
21192	// When the number of responses exceeds the value of MaxKeys, NextKeyMarker
21193	// specifies the first key not returned that satisfies the search criteria.
21194	// Use this value for the key-marker request parameter in a subsequent request.
21195	NextKeyMarker *string `type:"string"`
21196
21197	// When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker
21198	// specifies the first object version not returned that satisfies the search
21199	// criteria. Use this value for the version-id-marker request parameter in a
21200	// subsequent request.
21201	NextVersionIdMarker *string `type:"string"`
21202
21203	// Selects objects that start with the value supplied by this parameter.
21204	Prefix *string `type:"string"`
21205
21206	// Marks the last version of the key returned in a truncated response.
21207	VersionIdMarker *string `type:"string"`
21208
21209	// Container for version information.
21210	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
21211}
21212
21213// String returns the string representation
21214func (s ListObjectVersionsOutput) String() string {
21215	return awsutil.Prettify(s)
21216}
21217
21218// GoString returns the string representation
21219func (s ListObjectVersionsOutput) GoString() string {
21220	return s.String()
21221}
21222
21223// SetCommonPrefixes sets the CommonPrefixes field's value.
21224func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
21225	s.CommonPrefixes = v
21226	return s
21227}
21228
21229// SetDeleteMarkers sets the DeleteMarkers field's value.
21230func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
21231	s.DeleteMarkers = v
21232	return s
21233}
21234
21235// SetDelimiter sets the Delimiter field's value.
21236func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
21237	s.Delimiter = &v
21238	return s
21239}
21240
21241// SetEncodingType sets the EncodingType field's value.
21242func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
21243	s.EncodingType = &v
21244	return s
21245}
21246
21247// SetIsTruncated sets the IsTruncated field's value.
21248func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
21249	s.IsTruncated = &v
21250	return s
21251}
21252
21253// SetKeyMarker sets the KeyMarker field's value.
21254func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
21255	s.KeyMarker = &v
21256	return s
21257}
21258
21259// SetMaxKeys sets the MaxKeys field's value.
21260func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
21261	s.MaxKeys = &v
21262	return s
21263}
21264
21265// SetName sets the Name field's value.
21266func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
21267	s.Name = &v
21268	return s
21269}
21270
21271// SetNextKeyMarker sets the NextKeyMarker field's value.
21272func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
21273	s.NextKeyMarker = &v
21274	return s
21275}
21276
21277// SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
21278func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
21279	s.NextVersionIdMarker = &v
21280	return s
21281}
21282
21283// SetPrefix sets the Prefix field's value.
21284func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
21285	s.Prefix = &v
21286	return s
21287}
21288
21289// SetVersionIdMarker sets the VersionIdMarker field's value.
21290func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
21291	s.VersionIdMarker = &v
21292	return s
21293}
21294
21295// SetVersions sets the Versions field's value.
21296func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
21297	s.Versions = v
21298	return s
21299}
21300
21301type ListObjectsInput struct {
21302	_ struct{} `locationName:"ListObjectsRequest" type:"structure"`
21303
21304	// The name of the bucket containing the objects.
21305	//
21306	// Bucket is a required field
21307	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21308
21309	// A delimiter is a character you use to group keys.
21310	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
21311
21312	// Requests Amazon S3 to encode the object keys in the response and specifies
21313	// the encoding method to use. An object key may contain any Unicode character;
21314	// however, XML 1.0 parser cannot parse some characters, such as characters
21315	// with an ASCII value from 0 to 10. For characters that are not supported in
21316	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
21317	// keys in the response.
21318	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
21319
21320	// Specifies the key to start with when listing objects in a bucket.
21321	Marker *string `location:"querystring" locationName:"marker" type:"string"`
21322
21323	// Sets the maximum number of keys returned in the response. By default the
21324	// API returns up to 1,000 key names. The response might contain fewer keys
21325	// but will never contain more.
21326	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
21327
21328	// Limits the response to keys that begin with the specified prefix.
21329	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
21330
21331	// Confirms that the requester knows that she or he will be charged for the
21332	// list objects request. Bucket owners need not specify this parameter in their
21333	// requests.
21334	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21335}
21336
21337// String returns the string representation
21338func (s ListObjectsInput) String() string {
21339	return awsutil.Prettify(s)
21340}
21341
21342// GoString returns the string representation
21343func (s ListObjectsInput) GoString() string {
21344	return s.String()
21345}
21346
21347// Validate inspects the fields of the type to determine if they are valid.
21348func (s *ListObjectsInput) Validate() error {
21349	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
21350	if s.Bucket == nil {
21351		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21352	}
21353	if s.Bucket != nil && len(*s.Bucket) < 1 {
21354		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21355	}
21356
21357	if invalidParams.Len() > 0 {
21358		return invalidParams
21359	}
21360	return nil
21361}
21362
21363// SetBucket sets the Bucket field's value.
21364func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
21365	s.Bucket = &v
21366	return s
21367}
21368
21369func (s *ListObjectsInput) getBucket() (v string) {
21370	if s.Bucket == nil {
21371		return v
21372	}
21373	return *s.Bucket
21374}
21375
21376// SetDelimiter sets the Delimiter field's value.
21377func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
21378	s.Delimiter = &v
21379	return s
21380}
21381
21382// SetEncodingType sets the EncodingType field's value.
21383func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
21384	s.EncodingType = &v
21385	return s
21386}
21387
21388// SetMarker sets the Marker field's value.
21389func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
21390	s.Marker = &v
21391	return s
21392}
21393
21394// SetMaxKeys sets the MaxKeys field's value.
21395func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
21396	s.MaxKeys = &v
21397	return s
21398}
21399
21400// SetPrefix sets the Prefix field's value.
21401func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
21402	s.Prefix = &v
21403	return s
21404}
21405
21406// SetRequestPayer sets the RequestPayer field's value.
21407func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
21408	s.RequestPayer = &v
21409	return s
21410}
21411
21412func (s *ListObjectsInput) getEndpointARN() (arn.Resource, error) {
21413	if s.Bucket == nil {
21414		return nil, fmt.Errorf("member Bucket is nil")
21415	}
21416	return parseEndpointARN(*s.Bucket)
21417}
21418
21419func (s *ListObjectsInput) hasEndpointARN() bool {
21420	if s.Bucket == nil {
21421		return false
21422	}
21423	return arn.IsARN(*s.Bucket)
21424}
21425
21426type ListObjectsOutput struct {
21427	_ struct{} `type:"structure"`
21428
21429	// All of the keys rolled up in a common prefix count as a single return when
21430	// calculating the number of returns.
21431	//
21432	// A response can contain CommonPrefixes only if you specify a delimiter.
21433	//
21434	// CommonPrefixes contains all (if there are any) keys between Prefix and the
21435	// next occurrence of the string specified by the delimiter.
21436	//
21437	// CommonPrefixes lists keys that act like subdirectories in the directory specified
21438	// by Prefix.
21439	//
21440	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
21441	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
21442	// that roll up into a common prefix count as a single return when calculating
21443	// the number of returns.
21444	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
21445
21446	// Metadata about each object returned.
21447	Contents []*Object `type:"list" flattened:"true"`
21448
21449	// Causes keys that contain the same string between the prefix and the first
21450	// occurrence of the delimiter to be rolled up into a single result element
21451	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
21452	// in the response. Each rolled-up result counts as only one return against
21453	// the MaxKeys value.
21454	Delimiter *string `type:"string"`
21455
21456	// Encoding type used by Amazon S3 to encode object keys in the response.
21457	EncodingType *string `type:"string" enum:"EncodingType"`
21458
21459	// A flag that indicates whether Amazon S3 returned all of the results that
21460	// satisfied the search criteria.
21461	IsTruncated *bool `type:"boolean"`
21462
21463	// Indicates where in the bucket listing begins. Marker is included in the response
21464	// if it was sent with the request.
21465	Marker *string `type:"string"`
21466
21467	// The maximum number of keys returned in the response body.
21468	MaxKeys *int64 `type:"integer"`
21469
21470	// Bucket name.
21471	Name *string `type:"string"`
21472
21473	// When response is truncated (the IsTruncated element value in the response
21474	// is true), you can use the key name in this field as marker in the subsequent
21475	// request to get next set of objects. Amazon S3 lists objects in alphabetical
21476	// order Note: This element is returned only if you have delimiter request parameter
21477	// specified. If response does not include the NextMaker and it is truncated,
21478	// you can use the value of the last Key in the response as the marker in the
21479	// subsequent request to get the next set of object keys.
21480	NextMarker *string `type:"string"`
21481
21482	// Keys that begin with the indicated prefix.
21483	Prefix *string `type:"string"`
21484}
21485
21486// String returns the string representation
21487func (s ListObjectsOutput) String() string {
21488	return awsutil.Prettify(s)
21489}
21490
21491// GoString returns the string representation
21492func (s ListObjectsOutput) GoString() string {
21493	return s.String()
21494}
21495
21496// SetCommonPrefixes sets the CommonPrefixes field's value.
21497func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
21498	s.CommonPrefixes = v
21499	return s
21500}
21501
21502// SetContents sets the Contents field's value.
21503func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
21504	s.Contents = v
21505	return s
21506}
21507
21508// SetDelimiter sets the Delimiter field's value.
21509func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
21510	s.Delimiter = &v
21511	return s
21512}
21513
21514// SetEncodingType sets the EncodingType field's value.
21515func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
21516	s.EncodingType = &v
21517	return s
21518}
21519
21520// SetIsTruncated sets the IsTruncated field's value.
21521func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
21522	s.IsTruncated = &v
21523	return s
21524}
21525
21526// SetMarker sets the Marker field's value.
21527func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
21528	s.Marker = &v
21529	return s
21530}
21531
21532// SetMaxKeys sets the MaxKeys field's value.
21533func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
21534	s.MaxKeys = &v
21535	return s
21536}
21537
21538// SetName sets the Name field's value.
21539func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
21540	s.Name = &v
21541	return s
21542}
21543
21544// SetNextMarker sets the NextMarker field's value.
21545func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
21546	s.NextMarker = &v
21547	return s
21548}
21549
21550// SetPrefix sets the Prefix field's value.
21551func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
21552	s.Prefix = &v
21553	return s
21554}
21555
21556type ListObjectsV2Input struct {
21557	_ struct{} `locationName:"ListObjectsV2Request" type:"structure"`
21558
21559	// Bucket name to list.
21560	//
21561	// When using this API with an access point, you must direct requests to the
21562	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21563	// When using this operation using an access point through the AWS SDKs, you
21564	// provide the access point ARN in place of the bucket name. For more information
21565	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21566	// in the Amazon Simple Storage Service Developer Guide.
21567	//
21568	// Bucket is a required field
21569	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21570
21571	// ContinuationToken indicates Amazon S3 that the list is being continued on
21572	// this bucket with a token. ContinuationToken is obfuscated and is not a real
21573	// key.
21574	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
21575
21576	// A delimiter is a character you use to group keys.
21577	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
21578
21579	// Encoding type used by Amazon S3 to encode object keys in the response.
21580	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
21581
21582	// The owner field is not present in listV2 by default, if you want to return
21583	// owner field with each key in the result then set the fetch owner field to
21584	// true.
21585	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
21586
21587	// Sets the maximum number of keys returned in the response. By default the
21588	// API returns up to 1,000 key names. The response might contain fewer keys
21589	// but will never contain more.
21590	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
21591
21592	// Limits the response to keys that begin with the specified prefix.
21593	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
21594
21595	// Confirms that the requester knows that she or he will be charged for the
21596	// list objects request in V2 style. Bucket owners need not specify this parameter
21597	// in their requests.
21598	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21599
21600	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
21601	// listing after this specified key. StartAfter can be any key in the bucket.
21602	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
21603}
21604
21605// String returns the string representation
21606func (s ListObjectsV2Input) String() string {
21607	return awsutil.Prettify(s)
21608}
21609
21610// GoString returns the string representation
21611func (s ListObjectsV2Input) GoString() string {
21612	return s.String()
21613}
21614
21615// Validate inspects the fields of the type to determine if they are valid.
21616func (s *ListObjectsV2Input) Validate() error {
21617	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
21618	if s.Bucket == nil {
21619		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21620	}
21621	if s.Bucket != nil && len(*s.Bucket) < 1 {
21622		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21623	}
21624
21625	if invalidParams.Len() > 0 {
21626		return invalidParams
21627	}
21628	return nil
21629}
21630
21631// SetBucket sets the Bucket field's value.
21632func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
21633	s.Bucket = &v
21634	return s
21635}
21636
21637func (s *ListObjectsV2Input) getBucket() (v string) {
21638	if s.Bucket == nil {
21639		return v
21640	}
21641	return *s.Bucket
21642}
21643
21644// SetContinuationToken sets the ContinuationToken field's value.
21645func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
21646	s.ContinuationToken = &v
21647	return s
21648}
21649
21650// SetDelimiter sets the Delimiter field's value.
21651func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
21652	s.Delimiter = &v
21653	return s
21654}
21655
21656// SetEncodingType sets the EncodingType field's value.
21657func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
21658	s.EncodingType = &v
21659	return s
21660}
21661
21662// SetFetchOwner sets the FetchOwner field's value.
21663func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
21664	s.FetchOwner = &v
21665	return s
21666}
21667
21668// SetMaxKeys sets the MaxKeys field's value.
21669func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
21670	s.MaxKeys = &v
21671	return s
21672}
21673
21674// SetPrefix sets the Prefix field's value.
21675func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
21676	s.Prefix = &v
21677	return s
21678}
21679
21680// SetRequestPayer sets the RequestPayer field's value.
21681func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
21682	s.RequestPayer = &v
21683	return s
21684}
21685
21686// SetStartAfter sets the StartAfter field's value.
21687func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
21688	s.StartAfter = &v
21689	return s
21690}
21691
21692func (s *ListObjectsV2Input) getEndpointARN() (arn.Resource, error) {
21693	if s.Bucket == nil {
21694		return nil, fmt.Errorf("member Bucket is nil")
21695	}
21696	return parseEndpointARN(*s.Bucket)
21697}
21698
21699func (s *ListObjectsV2Input) hasEndpointARN() bool {
21700	if s.Bucket == nil {
21701		return false
21702	}
21703	return arn.IsARN(*s.Bucket)
21704}
21705
21706type ListObjectsV2Output struct {
21707	_ struct{} `type:"structure"`
21708
21709	// All of the keys rolled up into a common prefix count as a single return when
21710	// calculating the number of returns.
21711	//
21712	// A response can contain CommonPrefixes only if you specify a delimiter.
21713	//
21714	// CommonPrefixes contains all (if there are any) keys between Prefix and the
21715	// next occurrence of the string specified by a delimiter.
21716	//
21717	// CommonPrefixes lists keys that act like subdirectories in the directory specified
21718	// by Prefix.
21719	//
21720	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
21721	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
21722	// that roll up into a common prefix count as a single return when calculating
21723	// the number of returns.
21724	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
21725
21726	// Metadata about each object returned.
21727	Contents []*Object `type:"list" flattened:"true"`
21728
21729	// If ContinuationToken was sent with the request, it is included in the response.
21730	ContinuationToken *string `type:"string"`
21731
21732	// Causes keys that contain the same string between the prefix and the first
21733	// occurrence of the delimiter to be rolled up into a single result element
21734	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
21735	// in the response. Each rolled-up result counts as only one return against
21736	// the MaxKeys value.
21737	Delimiter *string `type:"string"`
21738
21739	// Encoding type used by Amazon S3 to encode object key names in the XML response.
21740	//
21741	// If you specify the encoding-type request parameter, Amazon S3 includes this
21742	// element in the response, and returns encoded key name values in the following
21743	// response elements:
21744	//
21745	// Delimiter, Prefix, Key, and StartAfter.
21746	EncodingType *string `type:"string" enum:"EncodingType"`
21747
21748	// Set to false if all of the results were returned. Set to true if more keys
21749	// are available to return. If the number of results exceeds that specified
21750	// by MaxKeys, all of the results might not be returned.
21751	IsTruncated *bool `type:"boolean"`
21752
21753	// KeyCount is the number of keys returned with this request. KeyCount will
21754	// always be less than equals to MaxKeys field. Say you ask for 50 keys, your
21755	// result will include less than equals 50 keys
21756	KeyCount *int64 `type:"integer"`
21757
21758	// Sets the maximum number of keys returned in the response. By default the
21759	// API returns up to 1,000 key names. The response might contain fewer keys
21760	// but will never contain more.
21761	MaxKeys *int64 `type:"integer"`
21762
21763	// Bucket name.
21764	//
21765	// When using this API with an access point, you must direct requests to the
21766	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21767	// When using this operation using an access point through the AWS SDKs, you
21768	// provide the access point ARN in place of the bucket name. For more information
21769	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21770	// in the Amazon Simple Storage Service Developer Guide.
21771	Name *string `type:"string"`
21772
21773	// NextContinuationToken is sent when isTruncated is true, which means there
21774	// are more keys in the bucket that can be listed. The next list requests to
21775	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
21776	// is obfuscated and is not a real key
21777	NextContinuationToken *string `type:"string"`
21778
21779	// Keys that begin with the indicated prefix.
21780	Prefix *string `type:"string"`
21781
21782	// If StartAfter was sent with the request, it is included in the response.
21783	StartAfter *string `type:"string"`
21784}
21785
21786// String returns the string representation
21787func (s ListObjectsV2Output) String() string {
21788	return awsutil.Prettify(s)
21789}
21790
21791// GoString returns the string representation
21792func (s ListObjectsV2Output) GoString() string {
21793	return s.String()
21794}
21795
21796// SetCommonPrefixes sets the CommonPrefixes field's value.
21797func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
21798	s.CommonPrefixes = v
21799	return s
21800}
21801
21802// SetContents sets the Contents field's value.
21803func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
21804	s.Contents = v
21805	return s
21806}
21807
21808// SetContinuationToken sets the ContinuationToken field's value.
21809func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
21810	s.ContinuationToken = &v
21811	return s
21812}
21813
21814// SetDelimiter sets the Delimiter field's value.
21815func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
21816	s.Delimiter = &v
21817	return s
21818}
21819
21820// SetEncodingType sets the EncodingType field's value.
21821func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
21822	s.EncodingType = &v
21823	return s
21824}
21825
21826// SetIsTruncated sets the IsTruncated field's value.
21827func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
21828	s.IsTruncated = &v
21829	return s
21830}
21831
21832// SetKeyCount sets the KeyCount field's value.
21833func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
21834	s.KeyCount = &v
21835	return s
21836}
21837
21838// SetMaxKeys sets the MaxKeys field's value.
21839func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
21840	s.MaxKeys = &v
21841	return s
21842}
21843
21844// SetName sets the Name field's value.
21845func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
21846	s.Name = &v
21847	return s
21848}
21849
21850// SetNextContinuationToken sets the NextContinuationToken field's value.
21851func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
21852	s.NextContinuationToken = &v
21853	return s
21854}
21855
21856// SetPrefix sets the Prefix field's value.
21857func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
21858	s.Prefix = &v
21859	return s
21860}
21861
21862// SetStartAfter sets the StartAfter field's value.
21863func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
21864	s.StartAfter = &v
21865	return s
21866}
21867
21868type ListPartsInput struct {
21869	_ struct{} `locationName:"ListPartsRequest" type:"structure"`
21870
21871	// Name of the bucket to which the parts are being uploaded.
21872	//
21873	// When using this API with an access point, you must direct requests to the
21874	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21875	// When using this operation using an access point through the AWS SDKs, you
21876	// provide the access point ARN in place of the bucket name. For more information
21877	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21878	// in the Amazon Simple Storage Service Developer Guide.
21879	//
21880	// Bucket is a required field
21881	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21882
21883	// Object key for which the multipart upload was initiated.
21884	//
21885	// Key is a required field
21886	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21887
21888	// Sets the maximum number of parts to return.
21889	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
21890
21891	// Specifies the part after which listing should begin. Only parts with higher
21892	// part numbers will be listed.
21893	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
21894
21895	// Confirms that the requester knows that they will be charged for the request.
21896	// Bucket owners need not specify this parameter in their requests. For information
21897	// about downloading objects from requester pays buckets, see Downloading Objects
21898	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21899	// in the Amazon S3 Developer Guide.
21900	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21901
21902	// Upload ID identifying the multipart upload whose parts are being listed.
21903	//
21904	// UploadId is a required field
21905	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
21906}
21907
21908// String returns the string representation
21909func (s ListPartsInput) String() string {
21910	return awsutil.Prettify(s)
21911}
21912
21913// GoString returns the string representation
21914func (s ListPartsInput) GoString() string {
21915	return s.String()
21916}
21917
21918// Validate inspects the fields of the type to determine if they are valid.
21919func (s *ListPartsInput) Validate() error {
21920	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
21921	if s.Bucket == nil {
21922		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21923	}
21924	if s.Bucket != nil && len(*s.Bucket) < 1 {
21925		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21926	}
21927	if s.Key == nil {
21928		invalidParams.Add(request.NewErrParamRequired("Key"))
21929	}
21930	if s.Key != nil && len(*s.Key) < 1 {
21931		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21932	}
21933	if s.UploadId == nil {
21934		invalidParams.Add(request.NewErrParamRequired("UploadId"))
21935	}
21936
21937	if invalidParams.Len() > 0 {
21938		return invalidParams
21939	}
21940	return nil
21941}
21942
21943// SetBucket sets the Bucket field's value.
21944func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
21945	s.Bucket = &v
21946	return s
21947}
21948
21949func (s *ListPartsInput) getBucket() (v string) {
21950	if s.Bucket == nil {
21951		return v
21952	}
21953	return *s.Bucket
21954}
21955
21956// SetKey sets the Key field's value.
21957func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
21958	s.Key = &v
21959	return s
21960}
21961
21962// SetMaxParts sets the MaxParts field's value.
21963func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
21964	s.MaxParts = &v
21965	return s
21966}
21967
21968// SetPartNumberMarker sets the PartNumberMarker field's value.
21969func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
21970	s.PartNumberMarker = &v
21971	return s
21972}
21973
21974// SetRequestPayer sets the RequestPayer field's value.
21975func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
21976	s.RequestPayer = &v
21977	return s
21978}
21979
21980// SetUploadId sets the UploadId field's value.
21981func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
21982	s.UploadId = &v
21983	return s
21984}
21985
21986func (s *ListPartsInput) getEndpointARN() (arn.Resource, error) {
21987	if s.Bucket == nil {
21988		return nil, fmt.Errorf("member Bucket is nil")
21989	}
21990	return parseEndpointARN(*s.Bucket)
21991}
21992
21993func (s *ListPartsInput) hasEndpointARN() bool {
21994	if s.Bucket == nil {
21995		return false
21996	}
21997	return arn.IsARN(*s.Bucket)
21998}
21999
22000type ListPartsOutput struct {
22001	_ struct{} `type:"structure"`
22002
22003	// If the bucket has a lifecycle rule configured with an action to abort incomplete
22004	// multipart uploads and the prefix in the lifecycle rule matches the object
22005	// name in the request, then the response includes this header indicating when
22006	// the initiated multipart upload will become eligible for abort operation.
22007	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
22008	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
22009	//
22010	// The response will also include the x-amz-abort-rule-id header that will provide
22011	// the ID of the lifecycle configuration rule that defines this action.
22012	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
22013
22014	// This header is returned along with the x-amz-abort-date header. It identifies
22015	// applicable lifecycle configuration rule that defines the action to abort
22016	// incomplete multipart uploads.
22017	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
22018
22019	// Name of the bucket to which the multipart upload was initiated.
22020	Bucket *string `type:"string"`
22021
22022	// Container element that identifies who initiated the multipart upload. If
22023	// the initiator is an AWS account, this element provides the same information
22024	// as the Owner element. If the initiator is an IAM User, this element provides
22025	// the user ARN and display name.
22026	Initiator *Initiator `type:"structure"`
22027
22028	// Indicates whether the returned list of parts is truncated. A true value indicates
22029	// that the list was truncated. A list can be truncated if the number of parts
22030	// exceeds the limit returned in the MaxParts element.
22031	IsTruncated *bool `type:"boolean"`
22032
22033	// Object key for which the multipart upload was initiated.
22034	Key *string `min:"1" type:"string"`
22035
22036	// Maximum number of parts that were allowed in the response.
22037	MaxParts *int64 `type:"integer"`
22038
22039	// When a list is truncated, this element specifies the last part in the list,
22040	// as well as the value to use for the part-number-marker request parameter
22041	// in a subsequent request.
22042	NextPartNumberMarker *int64 `type:"integer"`
22043
22044	// Container element that identifies the object owner, after the object is created.
22045	// If multipart upload is initiated by an IAM user, this element provides the
22046	// parent account ID and display name.
22047	Owner *Owner `type:"structure"`
22048
22049	// When a list is truncated, this element specifies the last part in the list,
22050	// as well as the value to use for the part-number-marker request parameter
22051	// in a subsequent request.
22052	PartNumberMarker *int64 `type:"integer"`
22053
22054	// Container for elements related to a particular part. A response can contain
22055	// zero or more Part elements.
22056	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
22057
22058	// If present, indicates that the requester was successfully charged for the
22059	// request.
22060	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
22061
22062	// Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
22063	// object.
22064	StorageClass *string `type:"string" enum:"StorageClass"`
22065
22066	// Upload ID identifying the multipart upload whose parts are being listed.
22067	UploadId *string `type:"string"`
22068}
22069
22070// String returns the string representation
22071func (s ListPartsOutput) String() string {
22072	return awsutil.Prettify(s)
22073}
22074
22075// GoString returns the string representation
22076func (s ListPartsOutput) GoString() string {
22077	return s.String()
22078}
22079
22080// SetAbortDate sets the AbortDate field's value.
22081func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
22082	s.AbortDate = &v
22083	return s
22084}
22085
22086// SetAbortRuleId sets the AbortRuleId field's value.
22087func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
22088	s.AbortRuleId = &v
22089	return s
22090}
22091
22092// SetBucket sets the Bucket field's value.
22093func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
22094	s.Bucket = &v
22095	return s
22096}
22097
22098func (s *ListPartsOutput) getBucket() (v string) {
22099	if s.Bucket == nil {
22100		return v
22101	}
22102	return *s.Bucket
22103}
22104
22105// SetInitiator sets the Initiator field's value.
22106func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
22107	s.Initiator = v
22108	return s
22109}
22110
22111// SetIsTruncated sets the IsTruncated field's value.
22112func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
22113	s.IsTruncated = &v
22114	return s
22115}
22116
22117// SetKey sets the Key field's value.
22118func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
22119	s.Key = &v
22120	return s
22121}
22122
22123// SetMaxParts sets the MaxParts field's value.
22124func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
22125	s.MaxParts = &v
22126	return s
22127}
22128
22129// SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
22130func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
22131	s.NextPartNumberMarker = &v
22132	return s
22133}
22134
22135// SetOwner sets the Owner field's value.
22136func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
22137	s.Owner = v
22138	return s
22139}
22140
22141// SetPartNumberMarker sets the PartNumberMarker field's value.
22142func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
22143	s.PartNumberMarker = &v
22144	return s
22145}
22146
22147// SetParts sets the Parts field's value.
22148func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
22149	s.Parts = v
22150	return s
22151}
22152
22153// SetRequestCharged sets the RequestCharged field's value.
22154func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
22155	s.RequestCharged = &v
22156	return s
22157}
22158
22159// SetStorageClass sets the StorageClass field's value.
22160func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
22161	s.StorageClass = &v
22162	return s
22163}
22164
22165// SetUploadId sets the UploadId field's value.
22166func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
22167	s.UploadId = &v
22168	return s
22169}
22170
22171// Describes an Amazon S3 location that will receive the results of the restore
22172// request.
22173type Location struct {
22174	_ struct{} `type:"structure"`
22175
22176	// A list of grants that control access to the staged results.
22177	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
22178
22179	// The name of the bucket where the restore results will be placed.
22180	//
22181	// BucketName is a required field
22182	BucketName *string `type:"string" required:"true"`
22183
22184	// The canned ACL to apply to the restore results.
22185	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
22186
22187	// Contains the type of server-side encryption used.
22188	Encryption *Encryption `type:"structure"`
22189
22190	// The prefix that is prepended to the restore results for this request.
22191	//
22192	// Prefix is a required field
22193	Prefix *string `type:"string" required:"true"`
22194
22195	// The class of storage used to store the restore results.
22196	StorageClass *string `type:"string" enum:"StorageClass"`
22197
22198	// The tag-set that is applied to the restore results.
22199	Tagging *Tagging `type:"structure"`
22200
22201	// A list of metadata to store with the restore results in S3.
22202	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
22203}
22204
22205// String returns the string representation
22206func (s Location) String() string {
22207	return awsutil.Prettify(s)
22208}
22209
22210// GoString returns the string representation
22211func (s Location) GoString() string {
22212	return s.String()
22213}
22214
22215// Validate inspects the fields of the type to determine if they are valid.
22216func (s *Location) Validate() error {
22217	invalidParams := request.ErrInvalidParams{Context: "Location"}
22218	if s.BucketName == nil {
22219		invalidParams.Add(request.NewErrParamRequired("BucketName"))
22220	}
22221	if s.Prefix == nil {
22222		invalidParams.Add(request.NewErrParamRequired("Prefix"))
22223	}
22224	if s.AccessControlList != nil {
22225		for i, v := range s.AccessControlList {
22226			if v == nil {
22227				continue
22228			}
22229			if err := v.Validate(); err != nil {
22230				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
22231			}
22232		}
22233	}
22234	if s.Encryption != nil {
22235		if err := s.Encryption.Validate(); err != nil {
22236			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
22237		}
22238	}
22239	if s.Tagging != nil {
22240		if err := s.Tagging.Validate(); err != nil {
22241			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
22242		}
22243	}
22244
22245	if invalidParams.Len() > 0 {
22246		return invalidParams
22247	}
22248	return nil
22249}
22250
22251// SetAccessControlList sets the AccessControlList field's value.
22252func (s *Location) SetAccessControlList(v []*Grant) *Location {
22253	s.AccessControlList = v
22254	return s
22255}
22256
22257// SetBucketName sets the BucketName field's value.
22258func (s *Location) SetBucketName(v string) *Location {
22259	s.BucketName = &v
22260	return s
22261}
22262
22263// SetCannedACL sets the CannedACL field's value.
22264func (s *Location) SetCannedACL(v string) *Location {
22265	s.CannedACL = &v
22266	return s
22267}
22268
22269// SetEncryption sets the Encryption field's value.
22270func (s *Location) SetEncryption(v *Encryption) *Location {
22271	s.Encryption = v
22272	return s
22273}
22274
22275// SetPrefix sets the Prefix field's value.
22276func (s *Location) SetPrefix(v string) *Location {
22277	s.Prefix = &v
22278	return s
22279}
22280
22281// SetStorageClass sets the StorageClass field's value.
22282func (s *Location) SetStorageClass(v string) *Location {
22283	s.StorageClass = &v
22284	return s
22285}
22286
22287// SetTagging sets the Tagging field's value.
22288func (s *Location) SetTagging(v *Tagging) *Location {
22289	s.Tagging = v
22290	return s
22291}
22292
22293// SetUserMetadata sets the UserMetadata field's value.
22294func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
22295	s.UserMetadata = v
22296	return s
22297}
22298
22299// Describes where logs are stored and the prefix that Amazon S3 assigns to
22300// all log object keys for a bucket. For more information, see PUT Bucket logging
22301// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
22302// in the Amazon Simple Storage Service API Reference.
22303type LoggingEnabled struct {
22304	_ struct{} `type:"structure"`
22305
22306	// Specifies the bucket where you want Amazon S3 to store server access logs.
22307	// You can have your logs delivered to any bucket that you own, including the
22308	// same bucket that is being logged. You can also configure multiple buckets
22309	// to deliver their logs to the same target bucket. In this case, you should
22310	// choose a different TargetPrefix for each source bucket so that the delivered
22311	// log files can be distinguished by key.
22312	//
22313	// TargetBucket is a required field
22314	TargetBucket *string `type:"string" required:"true"`
22315
22316	// Container for granting information.
22317	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
22318
22319	// A prefix for all log object keys. If you store log files from multiple Amazon
22320	// S3 buckets in a single bucket, you can use a prefix to distinguish which
22321	// log files came from which bucket.
22322	//
22323	// TargetPrefix is a required field
22324	TargetPrefix *string `type:"string" required:"true"`
22325}
22326
22327// String returns the string representation
22328func (s LoggingEnabled) String() string {
22329	return awsutil.Prettify(s)
22330}
22331
22332// GoString returns the string representation
22333func (s LoggingEnabled) GoString() string {
22334	return s.String()
22335}
22336
22337// Validate inspects the fields of the type to determine if they are valid.
22338func (s *LoggingEnabled) Validate() error {
22339	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
22340	if s.TargetBucket == nil {
22341		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
22342	}
22343	if s.TargetPrefix == nil {
22344		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
22345	}
22346	if s.TargetGrants != nil {
22347		for i, v := range s.TargetGrants {
22348			if v == nil {
22349				continue
22350			}
22351			if err := v.Validate(); err != nil {
22352				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
22353			}
22354		}
22355	}
22356
22357	if invalidParams.Len() > 0 {
22358		return invalidParams
22359	}
22360	return nil
22361}
22362
22363// SetTargetBucket sets the TargetBucket field's value.
22364func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
22365	s.TargetBucket = &v
22366	return s
22367}
22368
22369// SetTargetGrants sets the TargetGrants field's value.
22370func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
22371	s.TargetGrants = v
22372	return s
22373}
22374
22375// SetTargetPrefix sets the TargetPrefix field's value.
22376func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
22377	s.TargetPrefix = &v
22378	return s
22379}
22380
22381// A metadata key-value pair to store with an object.
22382type MetadataEntry struct {
22383	_ struct{} `type:"structure"`
22384
22385	// Name of the Object.
22386	Name *string `type:"string"`
22387
22388	// Value of the Object.
22389	Value *string `type:"string"`
22390}
22391
22392// String returns the string representation
22393func (s MetadataEntry) String() string {
22394	return awsutil.Prettify(s)
22395}
22396
22397// GoString returns the string representation
22398func (s MetadataEntry) GoString() string {
22399	return s.String()
22400}
22401
22402// SetName sets the Name field's value.
22403func (s *MetadataEntry) SetName(v string) *MetadataEntry {
22404	s.Name = &v
22405	return s
22406}
22407
22408// SetValue sets the Value field's value.
22409func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
22410	s.Value = &v
22411	return s
22412}
22413
22414// A container specifying replication metrics-related settings enabling metrics
22415// and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified
22416// together with a ReplicationTime block.
22417type Metrics struct {
22418	_ struct{} `type:"structure"`
22419
22420	// A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold
22421	// event.
22422	//
22423	// EventThreshold is a required field
22424	EventThreshold *ReplicationTimeValue `type:"structure" required:"true"`
22425
22426	// Specifies whether the replication metrics are enabled.
22427	//
22428	// Status is a required field
22429	Status *string `type:"string" required:"true" enum:"MetricsStatus"`
22430}
22431
22432// String returns the string representation
22433func (s Metrics) String() string {
22434	return awsutil.Prettify(s)
22435}
22436
22437// GoString returns the string representation
22438func (s Metrics) GoString() string {
22439	return s.String()
22440}
22441
22442// Validate inspects the fields of the type to determine if they are valid.
22443func (s *Metrics) Validate() error {
22444	invalidParams := request.ErrInvalidParams{Context: "Metrics"}
22445	if s.EventThreshold == nil {
22446		invalidParams.Add(request.NewErrParamRequired("EventThreshold"))
22447	}
22448	if s.Status == nil {
22449		invalidParams.Add(request.NewErrParamRequired("Status"))
22450	}
22451
22452	if invalidParams.Len() > 0 {
22453		return invalidParams
22454	}
22455	return nil
22456}
22457
22458// SetEventThreshold sets the EventThreshold field's value.
22459func (s *Metrics) SetEventThreshold(v *ReplicationTimeValue) *Metrics {
22460	s.EventThreshold = v
22461	return s
22462}
22463
22464// SetStatus sets the Status field's value.
22465func (s *Metrics) SetStatus(v string) *Metrics {
22466	s.Status = &v
22467	return s
22468}
22469
22470// A conjunction (logical AND) of predicates, which is used in evaluating a
22471// metrics filter. The operator must have at least two predicates, and an object
22472// must match all of the predicates in order for the filter to apply.
22473type MetricsAndOperator struct {
22474	_ struct{} `type:"structure"`
22475
22476	// The prefix used when evaluating an AND predicate.
22477	Prefix *string `type:"string"`
22478
22479	// The list of tags used when evaluating an AND predicate.
22480	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
22481}
22482
22483// String returns the string representation
22484func (s MetricsAndOperator) String() string {
22485	return awsutil.Prettify(s)
22486}
22487
22488// GoString returns the string representation
22489func (s MetricsAndOperator) GoString() string {
22490	return s.String()
22491}
22492
22493// Validate inspects the fields of the type to determine if they are valid.
22494func (s *MetricsAndOperator) Validate() error {
22495	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
22496	if s.Tags != nil {
22497		for i, v := range s.Tags {
22498			if v == nil {
22499				continue
22500			}
22501			if err := v.Validate(); err != nil {
22502				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
22503			}
22504		}
22505	}
22506
22507	if invalidParams.Len() > 0 {
22508		return invalidParams
22509	}
22510	return nil
22511}
22512
22513// SetPrefix sets the Prefix field's value.
22514func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
22515	s.Prefix = &v
22516	return s
22517}
22518
22519// SetTags sets the Tags field's value.
22520func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
22521	s.Tags = v
22522	return s
22523}
22524
22525// Specifies a metrics configuration for the CloudWatch request metrics (specified
22526// by the metrics configuration ID) from an Amazon S3 bucket. If you're updating
22527// an existing metrics configuration, note that this is a full replacement of
22528// the existing metrics configuration. If you don't include the elements you
22529// want to keep, they are erased. For more information, see PUT Bucket metrics
22530// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html)
22531// in the Amazon Simple Storage Service API Reference.
22532type MetricsConfiguration struct {
22533	_ struct{} `type:"structure"`
22534
22535	// Specifies a metrics configuration filter. The metrics configuration will
22536	// only include objects that meet the filter's criteria. A filter must be a
22537	// prefix, a tag, or a conjunction (MetricsAndOperator).
22538	Filter *MetricsFilter `type:"structure"`
22539
22540	// The ID used to identify the metrics configuration.
22541	//
22542	// Id is a required field
22543	Id *string `type:"string" required:"true"`
22544}
22545
22546// String returns the string representation
22547func (s MetricsConfiguration) String() string {
22548	return awsutil.Prettify(s)
22549}
22550
22551// GoString returns the string representation
22552func (s MetricsConfiguration) GoString() string {
22553	return s.String()
22554}
22555
22556// Validate inspects the fields of the type to determine if they are valid.
22557func (s *MetricsConfiguration) Validate() error {
22558	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
22559	if s.Id == nil {
22560		invalidParams.Add(request.NewErrParamRequired("Id"))
22561	}
22562	if s.Filter != nil {
22563		if err := s.Filter.Validate(); err != nil {
22564			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
22565		}
22566	}
22567
22568	if invalidParams.Len() > 0 {
22569		return invalidParams
22570	}
22571	return nil
22572}
22573
22574// SetFilter sets the Filter field's value.
22575func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
22576	s.Filter = v
22577	return s
22578}
22579
22580// SetId sets the Id field's value.
22581func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
22582	s.Id = &v
22583	return s
22584}
22585
22586// Specifies a metrics configuration filter. The metrics configuration only
22587// includes objects that meet the filter's criteria. A filter must be a prefix,
22588// a tag, or a conjunction (MetricsAndOperator).
22589type MetricsFilter struct {
22590	_ struct{} `type:"structure"`
22591
22592	// A conjunction (logical AND) of predicates, which is used in evaluating a
22593	// metrics filter. The operator must have at least two predicates, and an object
22594	// must match all of the predicates in order for the filter to apply.
22595	And *MetricsAndOperator `type:"structure"`
22596
22597	// The prefix used when evaluating a metrics filter.
22598	Prefix *string `type:"string"`
22599
22600	// The tag used when evaluating a metrics filter.
22601	Tag *Tag `type:"structure"`
22602}
22603
22604// String returns the string representation
22605func (s MetricsFilter) String() string {
22606	return awsutil.Prettify(s)
22607}
22608
22609// GoString returns the string representation
22610func (s MetricsFilter) GoString() string {
22611	return s.String()
22612}
22613
22614// Validate inspects the fields of the type to determine if they are valid.
22615func (s *MetricsFilter) Validate() error {
22616	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
22617	if s.And != nil {
22618		if err := s.And.Validate(); err != nil {
22619			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
22620		}
22621	}
22622	if s.Tag != nil {
22623		if err := s.Tag.Validate(); err != nil {
22624			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
22625		}
22626	}
22627
22628	if invalidParams.Len() > 0 {
22629		return invalidParams
22630	}
22631	return nil
22632}
22633
22634// SetAnd sets the And field's value.
22635func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
22636	s.And = v
22637	return s
22638}
22639
22640// SetPrefix sets the Prefix field's value.
22641func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
22642	s.Prefix = &v
22643	return s
22644}
22645
22646// SetTag sets the Tag field's value.
22647func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
22648	s.Tag = v
22649	return s
22650}
22651
22652// Container for the MultipartUpload for the Amazon S3 object.
22653type MultipartUpload struct {
22654	_ struct{} `type:"structure"`
22655
22656	// Date and time at which the multipart upload was initiated.
22657	Initiated *time.Time `type:"timestamp"`
22658
22659	// Identifies who initiated the multipart upload.
22660	Initiator *Initiator `type:"structure"`
22661
22662	// Key of the object for which the multipart upload was initiated.
22663	Key *string `min:"1" type:"string"`
22664
22665	// Specifies the owner of the object that is part of the multipart upload.
22666	Owner *Owner `type:"structure"`
22667
22668	// The class of storage used to store the object.
22669	StorageClass *string `type:"string" enum:"StorageClass"`
22670
22671	// Upload ID that identifies the multipart upload.
22672	UploadId *string `type:"string"`
22673}
22674
22675// String returns the string representation
22676func (s MultipartUpload) String() string {
22677	return awsutil.Prettify(s)
22678}
22679
22680// GoString returns the string representation
22681func (s MultipartUpload) GoString() string {
22682	return s.String()
22683}
22684
22685// SetInitiated sets the Initiated field's value.
22686func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
22687	s.Initiated = &v
22688	return s
22689}
22690
22691// SetInitiator sets the Initiator field's value.
22692func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
22693	s.Initiator = v
22694	return s
22695}
22696
22697// SetKey sets the Key field's value.
22698func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
22699	s.Key = &v
22700	return s
22701}
22702
22703// SetOwner sets the Owner field's value.
22704func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
22705	s.Owner = v
22706	return s
22707}
22708
22709// SetStorageClass sets the StorageClass field's value.
22710func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
22711	s.StorageClass = &v
22712	return s
22713}
22714
22715// SetUploadId sets the UploadId field's value.
22716func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
22717	s.UploadId = &v
22718	return s
22719}
22720
22721// Specifies when noncurrent object versions expire. Upon expiration, Amazon
22722// S3 permanently deletes the noncurrent object versions. You set this lifecycle
22723// configuration action on a bucket that has versioning enabled (or suspended)
22724// to request that Amazon S3 delete noncurrent object versions at a specific
22725// period in the object's lifetime.
22726type NoncurrentVersionExpiration struct {
22727	_ struct{} `type:"structure"`
22728
22729	// Specifies the number of days an object is noncurrent before Amazon S3 can
22730	// perform the associated action. For information about the noncurrent days
22731	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
22732	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
22733	// in the Amazon Simple Storage Service Developer Guide.
22734	NoncurrentDays *int64 `type:"integer"`
22735}
22736
22737// String returns the string representation
22738func (s NoncurrentVersionExpiration) String() string {
22739	return awsutil.Prettify(s)
22740}
22741
22742// GoString returns the string representation
22743func (s NoncurrentVersionExpiration) GoString() string {
22744	return s.String()
22745}
22746
22747// SetNoncurrentDays sets the NoncurrentDays field's value.
22748func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
22749	s.NoncurrentDays = &v
22750	return s
22751}
22752
22753// Container for the transition rule that describes when noncurrent objects
22754// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
22755// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
22756// is suspended), you can set this action to request that Amazon S3 transition
22757// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
22758// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
22759// lifetime.
22760type NoncurrentVersionTransition struct {
22761	_ struct{} `type:"structure"`
22762
22763	// Specifies the number of days an object is noncurrent before Amazon S3 can
22764	// perform the associated action. For information about the noncurrent days
22765	// calculations, see How Amazon S3 Calculates How Long an Object Has Been Noncurrent
22766	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
22767	// in the Amazon Simple Storage Service Developer Guide.
22768	NoncurrentDays *int64 `type:"integer"`
22769
22770	// The class of storage used to store the object.
22771	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
22772}
22773
22774// String returns the string representation
22775func (s NoncurrentVersionTransition) String() string {
22776	return awsutil.Prettify(s)
22777}
22778
22779// GoString returns the string representation
22780func (s NoncurrentVersionTransition) GoString() string {
22781	return s.String()
22782}
22783
22784// SetNoncurrentDays sets the NoncurrentDays field's value.
22785func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
22786	s.NoncurrentDays = &v
22787	return s
22788}
22789
22790// SetStorageClass sets the StorageClass field's value.
22791func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
22792	s.StorageClass = &v
22793	return s
22794}
22795
22796// A container for specifying the notification configuration of the bucket.
22797// If this element is empty, notifications are turned off for the bucket.
22798type NotificationConfiguration struct {
22799	_ struct{} `type:"structure"`
22800
22801	// Describes the AWS Lambda functions to invoke and the events for which to
22802	// invoke them.
22803	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
22804
22805	// The Amazon Simple Queue Service queues to publish messages to and the events
22806	// for which to publish messages.
22807	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
22808
22809	// The topic to which notifications are sent and the events for which notifications
22810	// are generated.
22811	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
22812}
22813
22814// String returns the string representation
22815func (s NotificationConfiguration) String() string {
22816	return awsutil.Prettify(s)
22817}
22818
22819// GoString returns the string representation
22820func (s NotificationConfiguration) GoString() string {
22821	return s.String()
22822}
22823
22824// Validate inspects the fields of the type to determine if they are valid.
22825func (s *NotificationConfiguration) Validate() error {
22826	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
22827	if s.LambdaFunctionConfigurations != nil {
22828		for i, v := range s.LambdaFunctionConfigurations {
22829			if v == nil {
22830				continue
22831			}
22832			if err := v.Validate(); err != nil {
22833				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
22834			}
22835		}
22836	}
22837	if s.QueueConfigurations != nil {
22838		for i, v := range s.QueueConfigurations {
22839			if v == nil {
22840				continue
22841			}
22842			if err := v.Validate(); err != nil {
22843				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
22844			}
22845		}
22846	}
22847	if s.TopicConfigurations != nil {
22848		for i, v := range s.TopicConfigurations {
22849			if v == nil {
22850				continue
22851			}
22852			if err := v.Validate(); err != nil {
22853				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
22854			}
22855		}
22856	}
22857
22858	if invalidParams.Len() > 0 {
22859		return invalidParams
22860	}
22861	return nil
22862}
22863
22864// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
22865func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
22866	s.LambdaFunctionConfigurations = v
22867	return s
22868}
22869
22870// SetQueueConfigurations sets the QueueConfigurations field's value.
22871func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
22872	s.QueueConfigurations = v
22873	return s
22874}
22875
22876// SetTopicConfigurations sets the TopicConfigurations field's value.
22877func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
22878	s.TopicConfigurations = v
22879	return s
22880}
22881
22882type NotificationConfigurationDeprecated struct {
22883	_ struct{} `type:"structure"`
22884
22885	// Container for specifying the AWS Lambda notification configuration.
22886	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
22887
22888	// This data type is deprecated. This data type specifies the configuration
22889	// for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue
22890	// when Amazon S3 detects specified events.
22891	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
22892
22893	// This data type is deprecated. A container for specifying the configuration
22894	// for publication of messages to an Amazon Simple Notification Service (Amazon
22895	// SNS) topic when Amazon S3 detects specified events.
22896	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
22897}
22898
22899// String returns the string representation
22900func (s NotificationConfigurationDeprecated) String() string {
22901	return awsutil.Prettify(s)
22902}
22903
22904// GoString returns the string representation
22905func (s NotificationConfigurationDeprecated) GoString() string {
22906	return s.String()
22907}
22908
22909// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
22910func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
22911	s.CloudFunctionConfiguration = v
22912	return s
22913}
22914
22915// SetQueueConfiguration sets the QueueConfiguration field's value.
22916func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
22917	s.QueueConfiguration = v
22918	return s
22919}
22920
22921// SetTopicConfiguration sets the TopicConfiguration field's value.
22922func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
22923	s.TopicConfiguration = v
22924	return s
22925}
22926
22927// Specifies object key name filtering rules. For information about key name
22928// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
22929// in the Amazon Simple Storage Service Developer Guide.
22930type NotificationConfigurationFilter struct {
22931	_ struct{} `type:"structure"`
22932
22933	// A container for object key name prefix and suffix filtering rules.
22934	Key *KeyFilter `locationName:"S3Key" type:"structure"`
22935}
22936
22937// String returns the string representation
22938func (s NotificationConfigurationFilter) String() string {
22939	return awsutil.Prettify(s)
22940}
22941
22942// GoString returns the string representation
22943func (s NotificationConfigurationFilter) GoString() string {
22944	return s.String()
22945}
22946
22947// SetKey sets the Key field's value.
22948func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
22949	s.Key = v
22950	return s
22951}
22952
22953// An object consists of data and its descriptive metadata.
22954type Object struct {
22955	_ struct{} `type:"structure"`
22956
22957	// The entity tag is an MD5 hash of the object. ETag reflects only changes to
22958	// the contents of an object, not its metadata.
22959	ETag *string `type:"string"`
22960
22961	// The name that you assign to an object. You use the object key to retrieve
22962	// the object.
22963	Key *string `min:"1" type:"string"`
22964
22965	// The date the Object was Last Modified
22966	LastModified *time.Time `type:"timestamp"`
22967
22968	// The owner of the object
22969	Owner *Owner `type:"structure"`
22970
22971	// Size in bytes of the object
22972	Size *int64 `type:"integer"`
22973
22974	// The class of storage used to store the object.
22975	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
22976}
22977
22978// String returns the string representation
22979func (s Object) String() string {
22980	return awsutil.Prettify(s)
22981}
22982
22983// GoString returns the string representation
22984func (s Object) GoString() string {
22985	return s.String()
22986}
22987
22988// SetETag sets the ETag field's value.
22989func (s *Object) SetETag(v string) *Object {
22990	s.ETag = &v
22991	return s
22992}
22993
22994// SetKey sets the Key field's value.
22995func (s *Object) SetKey(v string) *Object {
22996	s.Key = &v
22997	return s
22998}
22999
23000// SetLastModified sets the LastModified field's value.
23001func (s *Object) SetLastModified(v time.Time) *Object {
23002	s.LastModified = &v
23003	return s
23004}
23005
23006// SetOwner sets the Owner field's value.
23007func (s *Object) SetOwner(v *Owner) *Object {
23008	s.Owner = v
23009	return s
23010}
23011
23012// SetSize sets the Size field's value.
23013func (s *Object) SetSize(v int64) *Object {
23014	s.Size = &v
23015	return s
23016}
23017
23018// SetStorageClass sets the StorageClass field's value.
23019func (s *Object) SetStorageClass(v string) *Object {
23020	s.StorageClass = &v
23021	return s
23022}
23023
23024// Object Identifier is unique value to identify objects.
23025type ObjectIdentifier struct {
23026	_ struct{} `type:"structure"`
23027
23028	// Key name of the object to delete.
23029	//
23030	// Key is a required field
23031	Key *string `min:"1" type:"string" required:"true"`
23032
23033	// VersionId for the specific version of the object to delete.
23034	VersionId *string `type:"string"`
23035}
23036
23037// String returns the string representation
23038func (s ObjectIdentifier) String() string {
23039	return awsutil.Prettify(s)
23040}
23041
23042// GoString returns the string representation
23043func (s ObjectIdentifier) GoString() string {
23044	return s.String()
23045}
23046
23047// Validate inspects the fields of the type to determine if they are valid.
23048func (s *ObjectIdentifier) Validate() error {
23049	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
23050	if s.Key == nil {
23051		invalidParams.Add(request.NewErrParamRequired("Key"))
23052	}
23053	if s.Key != nil && len(*s.Key) < 1 {
23054		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
23055	}
23056
23057	if invalidParams.Len() > 0 {
23058		return invalidParams
23059	}
23060	return nil
23061}
23062
23063// SetKey sets the Key field's value.
23064func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
23065	s.Key = &v
23066	return s
23067}
23068
23069// SetVersionId sets the VersionId field's value.
23070func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
23071	s.VersionId = &v
23072	return s
23073}
23074
23075// The container element for Object Lock configuration parameters.
23076type ObjectLockConfiguration struct {
23077	_ struct{} `type:"structure"`
23078
23079	// Indicates whether this bucket has an Object Lock configuration enabled.
23080	ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"`
23081
23082	// The Object Lock rule in place for the specified object.
23083	Rule *ObjectLockRule `type:"structure"`
23084}
23085
23086// String returns the string representation
23087func (s ObjectLockConfiguration) String() string {
23088	return awsutil.Prettify(s)
23089}
23090
23091// GoString returns the string representation
23092func (s ObjectLockConfiguration) GoString() string {
23093	return s.String()
23094}
23095
23096// SetObjectLockEnabled sets the ObjectLockEnabled field's value.
23097func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration {
23098	s.ObjectLockEnabled = &v
23099	return s
23100}
23101
23102// SetRule sets the Rule field's value.
23103func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration {
23104	s.Rule = v
23105	return s
23106}
23107
23108// A Legal Hold configuration for an object.
23109type ObjectLockLegalHold struct {
23110	_ struct{} `type:"structure"`
23111
23112	// Indicates whether the specified object has a Legal Hold in place.
23113	Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"`
23114}
23115
23116// String returns the string representation
23117func (s ObjectLockLegalHold) String() string {
23118	return awsutil.Prettify(s)
23119}
23120
23121// GoString returns the string representation
23122func (s ObjectLockLegalHold) GoString() string {
23123	return s.String()
23124}
23125
23126// SetStatus sets the Status field's value.
23127func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold {
23128	s.Status = &v
23129	return s
23130}
23131
23132// A Retention configuration for an object.
23133type ObjectLockRetention struct {
23134	_ struct{} `type:"structure"`
23135
23136	// Indicates the Retention mode for the specified object.
23137	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
23138
23139	// The date on which this Object Lock Retention will expire.
23140	RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
23141}
23142
23143// String returns the string representation
23144func (s ObjectLockRetention) String() string {
23145	return awsutil.Prettify(s)
23146}
23147
23148// GoString returns the string representation
23149func (s ObjectLockRetention) GoString() string {
23150	return s.String()
23151}
23152
23153// SetMode sets the Mode field's value.
23154func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention {
23155	s.Mode = &v
23156	return s
23157}
23158
23159// SetRetainUntilDate sets the RetainUntilDate field's value.
23160func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention {
23161	s.RetainUntilDate = &v
23162	return s
23163}
23164
23165// The container element for an Object Lock rule.
23166type ObjectLockRule struct {
23167	_ struct{} `type:"structure"`
23168
23169	// The default retention period that you want to apply to new objects placed
23170	// in the specified bucket.
23171	DefaultRetention *DefaultRetention `type:"structure"`
23172}
23173
23174// String returns the string representation
23175func (s ObjectLockRule) String() string {
23176	return awsutil.Prettify(s)
23177}
23178
23179// GoString returns the string representation
23180func (s ObjectLockRule) GoString() string {
23181	return s.String()
23182}
23183
23184// SetDefaultRetention sets the DefaultRetention field's value.
23185func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule {
23186	s.DefaultRetention = v
23187	return s
23188}
23189
23190// The version of an object.
23191type ObjectVersion struct {
23192	_ struct{} `type:"structure"`
23193
23194	// The entity tag is an MD5 hash of that version of the object.
23195	ETag *string `type:"string"`
23196
23197	// Specifies whether the object is (true) or is not (false) the latest version
23198	// of an object.
23199	IsLatest *bool `type:"boolean"`
23200
23201	// The object key.
23202	Key *string `min:"1" type:"string"`
23203
23204	// Date and time the object was last modified.
23205	LastModified *time.Time `type:"timestamp"`
23206
23207	// Specifies the owner of the object.
23208	Owner *Owner `type:"structure"`
23209
23210	// Size in bytes of the object.
23211	Size *int64 `type:"integer"`
23212
23213	// The class of storage used to store the object.
23214	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
23215
23216	// Version ID of an object.
23217	VersionId *string `type:"string"`
23218}
23219
23220// String returns the string representation
23221func (s ObjectVersion) String() string {
23222	return awsutil.Prettify(s)
23223}
23224
23225// GoString returns the string representation
23226func (s ObjectVersion) GoString() string {
23227	return s.String()
23228}
23229
23230// SetETag sets the ETag field's value.
23231func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
23232	s.ETag = &v
23233	return s
23234}
23235
23236// SetIsLatest sets the IsLatest field's value.
23237func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
23238	s.IsLatest = &v
23239	return s
23240}
23241
23242// SetKey sets the Key field's value.
23243func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
23244	s.Key = &v
23245	return s
23246}
23247
23248// SetLastModified sets the LastModified field's value.
23249func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
23250	s.LastModified = &v
23251	return s
23252}
23253
23254// SetOwner sets the Owner field's value.
23255func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
23256	s.Owner = v
23257	return s
23258}
23259
23260// SetSize sets the Size field's value.
23261func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
23262	s.Size = &v
23263	return s
23264}
23265
23266// SetStorageClass sets the StorageClass field's value.
23267func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
23268	s.StorageClass = &v
23269	return s
23270}
23271
23272// SetVersionId sets the VersionId field's value.
23273func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
23274	s.VersionId = &v
23275	return s
23276}
23277
23278// Describes the location where the restore job's output is stored.
23279type OutputLocation struct {
23280	_ struct{} `type:"structure"`
23281
23282	// Describes an S3 location that will receive the results of the restore request.
23283	S3 *Location `type:"structure"`
23284}
23285
23286// String returns the string representation
23287func (s OutputLocation) String() string {
23288	return awsutil.Prettify(s)
23289}
23290
23291// GoString returns the string representation
23292func (s OutputLocation) GoString() string {
23293	return s.String()
23294}
23295
23296// Validate inspects the fields of the type to determine if they are valid.
23297func (s *OutputLocation) Validate() error {
23298	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
23299	if s.S3 != nil {
23300		if err := s.S3.Validate(); err != nil {
23301			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
23302		}
23303	}
23304
23305	if invalidParams.Len() > 0 {
23306		return invalidParams
23307	}
23308	return nil
23309}
23310
23311// SetS3 sets the S3 field's value.
23312func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
23313	s.S3 = v
23314	return s
23315}
23316
23317// Describes how results of the Select job are serialized.
23318type OutputSerialization struct {
23319	_ struct{} `type:"structure"`
23320
23321	// Describes the serialization of CSV-encoded Select results.
23322	CSV *CSVOutput `type:"structure"`
23323
23324	// Specifies JSON as request's output serialization format.
23325	JSON *JSONOutput `type:"structure"`
23326}
23327
23328// String returns the string representation
23329func (s OutputSerialization) String() string {
23330	return awsutil.Prettify(s)
23331}
23332
23333// GoString returns the string representation
23334func (s OutputSerialization) GoString() string {
23335	return s.String()
23336}
23337
23338// SetCSV sets the CSV field's value.
23339func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
23340	s.CSV = v
23341	return s
23342}
23343
23344// SetJSON sets the JSON field's value.
23345func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
23346	s.JSON = v
23347	return s
23348}
23349
23350// Container for the owner's display name and ID.
23351type Owner struct {
23352	_ struct{} `type:"structure"`
23353
23354	// Container for the display name of the owner.
23355	DisplayName *string `type:"string"`
23356
23357	// Container for the ID of the owner.
23358	ID *string `type:"string"`
23359}
23360
23361// String returns the string representation
23362func (s Owner) String() string {
23363	return awsutil.Prettify(s)
23364}
23365
23366// GoString returns the string representation
23367func (s Owner) GoString() string {
23368	return s.String()
23369}
23370
23371// SetDisplayName sets the DisplayName field's value.
23372func (s *Owner) SetDisplayName(v string) *Owner {
23373	s.DisplayName = &v
23374	return s
23375}
23376
23377// SetID sets the ID field's value.
23378func (s *Owner) SetID(v string) *Owner {
23379	s.ID = &v
23380	return s
23381}
23382
23383// Container for Parquet.
23384type ParquetInput struct {
23385	_ struct{} `type:"structure"`
23386}
23387
23388// String returns the string representation
23389func (s ParquetInput) String() string {
23390	return awsutil.Prettify(s)
23391}
23392
23393// GoString returns the string representation
23394func (s ParquetInput) GoString() string {
23395	return s.String()
23396}
23397
23398// Container for elements related to a part.
23399type Part struct {
23400	_ struct{} `type:"structure"`
23401
23402	// Entity tag returned when the part was uploaded.
23403	ETag *string `type:"string"`
23404
23405	// Date and time at which the part was uploaded.
23406	LastModified *time.Time `type:"timestamp"`
23407
23408	// Part number identifying the part. This is a positive integer between 1 and
23409	// 10,000.
23410	PartNumber *int64 `type:"integer"`
23411
23412	// Size in bytes of the uploaded part data.
23413	Size *int64 `type:"integer"`
23414}
23415
23416// String returns the string representation
23417func (s Part) String() string {
23418	return awsutil.Prettify(s)
23419}
23420
23421// GoString returns the string representation
23422func (s Part) GoString() string {
23423	return s.String()
23424}
23425
23426// SetETag sets the ETag field's value.
23427func (s *Part) SetETag(v string) *Part {
23428	s.ETag = &v
23429	return s
23430}
23431
23432// SetLastModified sets the LastModified field's value.
23433func (s *Part) SetLastModified(v time.Time) *Part {
23434	s.LastModified = &v
23435	return s
23436}
23437
23438// SetPartNumber sets the PartNumber field's value.
23439func (s *Part) SetPartNumber(v int64) *Part {
23440	s.PartNumber = &v
23441	return s
23442}
23443
23444// SetSize sets the Size field's value.
23445func (s *Part) SetSize(v int64) *Part {
23446	s.Size = &v
23447	return s
23448}
23449
23450// The container element for a bucket's policy status.
23451type PolicyStatus struct {
23452	_ struct{} `type:"structure"`
23453
23454	// The policy status for this bucket. TRUE indicates that this bucket is public.
23455	// FALSE indicates that the bucket is not public.
23456	IsPublic *bool `locationName:"IsPublic" type:"boolean"`
23457}
23458
23459// String returns the string representation
23460func (s PolicyStatus) String() string {
23461	return awsutil.Prettify(s)
23462}
23463
23464// GoString returns the string representation
23465func (s PolicyStatus) GoString() string {
23466	return s.String()
23467}
23468
23469// SetIsPublic sets the IsPublic field's value.
23470func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus {
23471	s.IsPublic = &v
23472	return s
23473}
23474
23475// This data type contains information about progress of an operation.
23476type Progress struct {
23477	_ struct{} `type:"structure"`
23478
23479	// The current number of uncompressed object bytes processed.
23480	BytesProcessed *int64 `type:"long"`
23481
23482	// The current number of bytes of records payload data returned.
23483	BytesReturned *int64 `type:"long"`
23484
23485	// The current number of object bytes scanned.
23486	BytesScanned *int64 `type:"long"`
23487}
23488
23489// String returns the string representation
23490func (s Progress) String() string {
23491	return awsutil.Prettify(s)
23492}
23493
23494// GoString returns the string representation
23495func (s Progress) GoString() string {
23496	return s.String()
23497}
23498
23499// SetBytesProcessed sets the BytesProcessed field's value.
23500func (s *Progress) SetBytesProcessed(v int64) *Progress {
23501	s.BytesProcessed = &v
23502	return s
23503}
23504
23505// SetBytesReturned sets the BytesReturned field's value.
23506func (s *Progress) SetBytesReturned(v int64) *Progress {
23507	s.BytesReturned = &v
23508	return s
23509}
23510
23511// SetBytesScanned sets the BytesScanned field's value.
23512func (s *Progress) SetBytesScanned(v int64) *Progress {
23513	s.BytesScanned = &v
23514	return s
23515}
23516
23517// This data type contains information about the progress event of an operation.
23518type ProgressEvent struct {
23519	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
23520
23521	// The Progress event details.
23522	Details *Progress `locationName:"Details" type:"structure"`
23523}
23524
23525// String returns the string representation
23526func (s ProgressEvent) String() string {
23527	return awsutil.Prettify(s)
23528}
23529
23530// GoString returns the string representation
23531func (s ProgressEvent) GoString() string {
23532	return s.String()
23533}
23534
23535// SetDetails sets the Details field's value.
23536func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
23537	s.Details = v
23538	return s
23539}
23540
23541// The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
23542func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
23543
23544// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
23545// This method is only used internally within the SDK's EventStream handling.
23546func (s *ProgressEvent) UnmarshalEvent(
23547	payloadUnmarshaler protocol.PayloadUnmarshaler,
23548	msg eventstream.Message,
23549) error {
23550	if err := payloadUnmarshaler.UnmarshalPayload(
23551		bytes.NewReader(msg.Payload), s,
23552	); err != nil {
23553		return err
23554	}
23555	return nil
23556}
23557
23558// MarshalEvent marshals the type into an stream event value. This method
23559// should only used internally within the SDK's EventStream handling.
23560func (s *ProgressEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
23561	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
23562	var buf bytes.Buffer
23563	if err = pm.MarshalPayload(&buf, s); err != nil {
23564		return eventstream.Message{}, err
23565	}
23566	msg.Payload = buf.Bytes()
23567	return msg, err
23568}
23569
23570// The PublicAccessBlock configuration that you want to apply to this Amazon
23571// S3 bucket. You can enable the configuration options in any combination. For
23572// more information about when Amazon S3 considers a bucket or object public,
23573// see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status)
23574// in the Amazon Simple Storage Service Developer Guide.
23575type PublicAccessBlockConfiguration struct {
23576	_ struct{} `type:"structure"`
23577
23578	// Specifies whether Amazon S3 should block public access control lists (ACLs)
23579	// for this bucket and objects in this bucket. Setting this element to TRUE
23580	// causes the following behavior:
23581	//
23582	//    * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is
23583	//    public.
23584	//
23585	//    * PUT Object calls fail if the request includes a public ACL.
23586	//
23587	//    * PUT Bucket calls fail if the request includes a public ACL.
23588	//
23589	// Enabling this setting doesn't affect existing policies or ACLs.
23590	BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"`
23591
23592	// Specifies whether Amazon S3 should block public bucket policies for this
23593	// bucket. Setting this element to TRUE causes Amazon S3 to reject calls to
23594	// PUT Bucket policy if the specified bucket policy allows public access.
23595	//
23596	// Enabling this setting doesn't affect existing bucket policies.
23597	BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"`
23598
23599	// Specifies whether Amazon S3 should ignore public ACLs for this bucket and
23600	// objects in this bucket. Setting this element to TRUE causes Amazon S3 to
23601	// ignore all public ACLs on this bucket and objects in this bucket.
23602	//
23603	// Enabling this setting doesn't affect the persistence of any existing ACLs
23604	// and doesn't prevent new public ACLs from being set.
23605	IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"`
23606
23607	// Specifies whether Amazon S3 should restrict public bucket policies for this
23608	// bucket. Setting this element to TRUE restricts access to this bucket to only
23609	// AWS services and authorized users within this account if the bucket has a
23610	// public policy.
23611	//
23612	// Enabling this setting doesn't affect previously stored bucket policies, except
23613	// that public and cross-account access within any public bucket policy, including
23614	// non-public delegation to specific accounts, is blocked.
23615	RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"`
23616}
23617
23618// String returns the string representation
23619func (s PublicAccessBlockConfiguration) String() string {
23620	return awsutil.Prettify(s)
23621}
23622
23623// GoString returns the string representation
23624func (s PublicAccessBlockConfiguration) GoString() string {
23625	return s.String()
23626}
23627
23628// SetBlockPublicAcls sets the BlockPublicAcls field's value.
23629func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration {
23630	s.BlockPublicAcls = &v
23631	return s
23632}
23633
23634// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
23635func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration {
23636	s.BlockPublicPolicy = &v
23637	return s
23638}
23639
23640// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
23641func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration {
23642	s.IgnorePublicAcls = &v
23643	return s
23644}
23645
23646// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
23647func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration {
23648	s.RestrictPublicBuckets = &v
23649	return s
23650}
23651
23652type PutBucketAccelerateConfigurationInput struct {
23653	_ struct{} `locationName:"PutBucketAccelerateConfigurationRequest" type:"structure" payload:"AccelerateConfiguration"`
23654
23655	// Container for setting the transfer acceleration state.
23656	//
23657	// AccelerateConfiguration is a required field
23658	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23659
23660	// Name of the bucket for which the accelerate configuration is set.
23661	//
23662	// Bucket is a required field
23663	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23664}
23665
23666// String returns the string representation
23667func (s PutBucketAccelerateConfigurationInput) String() string {
23668	return awsutil.Prettify(s)
23669}
23670
23671// GoString returns the string representation
23672func (s PutBucketAccelerateConfigurationInput) GoString() string {
23673	return s.String()
23674}
23675
23676// Validate inspects the fields of the type to determine if they are valid.
23677func (s *PutBucketAccelerateConfigurationInput) Validate() error {
23678	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
23679	if s.AccelerateConfiguration == nil {
23680		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
23681	}
23682	if s.Bucket == nil {
23683		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23684	}
23685	if s.Bucket != nil && len(*s.Bucket) < 1 {
23686		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23687	}
23688
23689	if invalidParams.Len() > 0 {
23690		return invalidParams
23691	}
23692	return nil
23693}
23694
23695// SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
23696func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
23697	s.AccelerateConfiguration = v
23698	return s
23699}
23700
23701// SetBucket sets the Bucket field's value.
23702func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
23703	s.Bucket = &v
23704	return s
23705}
23706
23707func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
23708	if s.Bucket == nil {
23709		return v
23710	}
23711	return *s.Bucket
23712}
23713
23714func (s *PutBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
23715	if s.Bucket == nil {
23716		return nil, fmt.Errorf("member Bucket is nil")
23717	}
23718	return parseEndpointARN(*s.Bucket)
23719}
23720
23721func (s *PutBucketAccelerateConfigurationInput) hasEndpointARN() bool {
23722	if s.Bucket == nil {
23723		return false
23724	}
23725	return arn.IsARN(*s.Bucket)
23726}
23727
23728type PutBucketAccelerateConfigurationOutput struct {
23729	_ struct{} `type:"structure"`
23730}
23731
23732// String returns the string representation
23733func (s PutBucketAccelerateConfigurationOutput) String() string {
23734	return awsutil.Prettify(s)
23735}
23736
23737// GoString returns the string representation
23738func (s PutBucketAccelerateConfigurationOutput) GoString() string {
23739	return s.String()
23740}
23741
23742type PutBucketAclInput struct {
23743	_ struct{} `locationName:"PutBucketAclRequest" type:"structure" payload:"AccessControlPolicy"`
23744
23745	// The canned ACL to apply to the bucket.
23746	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
23747
23748	// Contains the elements that set the ACL permissions for an object per grantee.
23749	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23750
23751	// The bucket to which to apply the ACL.
23752	//
23753	// Bucket is a required field
23754	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23755
23756	// Allows grantee the read, write, read ACP, and write ACP permissions on the
23757	// bucket.
23758	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
23759
23760	// Allows grantee to list the objects in the bucket.
23761	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
23762
23763	// Allows grantee to read the bucket ACL.
23764	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
23765
23766	// Allows grantee to create, overwrite, and delete any object in the bucket.
23767	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
23768
23769	// Allows grantee to write the ACL for the applicable bucket.
23770	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
23771}
23772
23773// String returns the string representation
23774func (s PutBucketAclInput) String() string {
23775	return awsutil.Prettify(s)
23776}
23777
23778// GoString returns the string representation
23779func (s PutBucketAclInput) GoString() string {
23780	return s.String()
23781}
23782
23783// Validate inspects the fields of the type to determine if they are valid.
23784func (s *PutBucketAclInput) Validate() error {
23785	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
23786	if s.Bucket == nil {
23787		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23788	}
23789	if s.Bucket != nil && len(*s.Bucket) < 1 {
23790		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23791	}
23792	if s.AccessControlPolicy != nil {
23793		if err := s.AccessControlPolicy.Validate(); err != nil {
23794			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
23795		}
23796	}
23797
23798	if invalidParams.Len() > 0 {
23799		return invalidParams
23800	}
23801	return nil
23802}
23803
23804// SetACL sets the ACL field's value.
23805func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
23806	s.ACL = &v
23807	return s
23808}
23809
23810// SetAccessControlPolicy sets the AccessControlPolicy field's value.
23811func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
23812	s.AccessControlPolicy = v
23813	return s
23814}
23815
23816// SetBucket sets the Bucket field's value.
23817func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
23818	s.Bucket = &v
23819	return s
23820}
23821
23822func (s *PutBucketAclInput) getBucket() (v string) {
23823	if s.Bucket == nil {
23824		return v
23825	}
23826	return *s.Bucket
23827}
23828
23829// SetGrantFullControl sets the GrantFullControl field's value.
23830func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
23831	s.GrantFullControl = &v
23832	return s
23833}
23834
23835// SetGrantRead sets the GrantRead field's value.
23836func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
23837	s.GrantRead = &v
23838	return s
23839}
23840
23841// SetGrantReadACP sets the GrantReadACP field's value.
23842func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
23843	s.GrantReadACP = &v
23844	return s
23845}
23846
23847// SetGrantWrite sets the GrantWrite field's value.
23848func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
23849	s.GrantWrite = &v
23850	return s
23851}
23852
23853// SetGrantWriteACP sets the GrantWriteACP field's value.
23854func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
23855	s.GrantWriteACP = &v
23856	return s
23857}
23858
23859func (s *PutBucketAclInput) getEndpointARN() (arn.Resource, error) {
23860	if s.Bucket == nil {
23861		return nil, fmt.Errorf("member Bucket is nil")
23862	}
23863	return parseEndpointARN(*s.Bucket)
23864}
23865
23866func (s *PutBucketAclInput) hasEndpointARN() bool {
23867	if s.Bucket == nil {
23868		return false
23869	}
23870	return arn.IsARN(*s.Bucket)
23871}
23872
23873type PutBucketAclOutput struct {
23874	_ struct{} `type:"structure"`
23875}
23876
23877// String returns the string representation
23878func (s PutBucketAclOutput) String() string {
23879	return awsutil.Prettify(s)
23880}
23881
23882// GoString returns the string representation
23883func (s PutBucketAclOutput) GoString() string {
23884	return s.String()
23885}
23886
23887type PutBucketAnalyticsConfigurationInput struct {
23888	_ struct{} `locationName:"PutBucketAnalyticsConfigurationRequest" type:"structure" payload:"AnalyticsConfiguration"`
23889
23890	// The configuration and any analyses for the analytics filter.
23891	//
23892	// AnalyticsConfiguration is a required field
23893	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23894
23895	// The name of the bucket to which an analytics configuration is stored.
23896	//
23897	// Bucket is a required field
23898	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23899
23900	// The ID that identifies the analytics configuration.
23901	//
23902	// Id is a required field
23903	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
23904}
23905
23906// String returns the string representation
23907func (s PutBucketAnalyticsConfigurationInput) String() string {
23908	return awsutil.Prettify(s)
23909}
23910
23911// GoString returns the string representation
23912func (s PutBucketAnalyticsConfigurationInput) GoString() string {
23913	return s.String()
23914}
23915
23916// Validate inspects the fields of the type to determine if they are valid.
23917func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
23918	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
23919	if s.AnalyticsConfiguration == nil {
23920		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
23921	}
23922	if s.Bucket == nil {
23923		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23924	}
23925	if s.Bucket != nil && len(*s.Bucket) < 1 {
23926		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23927	}
23928	if s.Id == nil {
23929		invalidParams.Add(request.NewErrParamRequired("Id"))
23930	}
23931	if s.AnalyticsConfiguration != nil {
23932		if err := s.AnalyticsConfiguration.Validate(); err != nil {
23933			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
23934		}
23935	}
23936
23937	if invalidParams.Len() > 0 {
23938		return invalidParams
23939	}
23940	return nil
23941}
23942
23943// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
23944func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
23945	s.AnalyticsConfiguration = v
23946	return s
23947}
23948
23949// SetBucket sets the Bucket field's value.
23950func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
23951	s.Bucket = &v
23952	return s
23953}
23954
23955func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
23956	if s.Bucket == nil {
23957		return v
23958	}
23959	return *s.Bucket
23960}
23961
23962// SetId sets the Id field's value.
23963func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
23964	s.Id = &v
23965	return s
23966}
23967
23968func (s *PutBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
23969	if s.Bucket == nil {
23970		return nil, fmt.Errorf("member Bucket is nil")
23971	}
23972	return parseEndpointARN(*s.Bucket)
23973}
23974
23975func (s *PutBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
23976	if s.Bucket == nil {
23977		return false
23978	}
23979	return arn.IsARN(*s.Bucket)
23980}
23981
23982type PutBucketAnalyticsConfigurationOutput struct {
23983	_ struct{} `type:"structure"`
23984}
23985
23986// String returns the string representation
23987func (s PutBucketAnalyticsConfigurationOutput) String() string {
23988	return awsutil.Prettify(s)
23989}
23990
23991// GoString returns the string representation
23992func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
23993	return s.String()
23994}
23995
23996type PutBucketCorsInput struct {
23997	_ struct{} `locationName:"PutBucketCorsRequest" type:"structure" payload:"CORSConfiguration"`
23998
23999	// Specifies the bucket impacted by the corsconfiguration.
24000	//
24001	// Bucket is a required field
24002	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24003
24004	// Describes the cross-origin access configuration for objects in an Amazon
24005	// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
24006	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
24007	// Simple Storage Service Developer Guide.
24008	//
24009	// CORSConfiguration is a required field
24010	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24011}
24012
24013// String returns the string representation
24014func (s PutBucketCorsInput) String() string {
24015	return awsutil.Prettify(s)
24016}
24017
24018// GoString returns the string representation
24019func (s PutBucketCorsInput) GoString() string {
24020	return s.String()
24021}
24022
24023// Validate inspects the fields of the type to determine if they are valid.
24024func (s *PutBucketCorsInput) Validate() error {
24025	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
24026	if s.Bucket == nil {
24027		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24028	}
24029	if s.Bucket != nil && len(*s.Bucket) < 1 {
24030		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24031	}
24032	if s.CORSConfiguration == nil {
24033		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
24034	}
24035	if s.CORSConfiguration != nil {
24036		if err := s.CORSConfiguration.Validate(); err != nil {
24037			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
24038		}
24039	}
24040
24041	if invalidParams.Len() > 0 {
24042		return invalidParams
24043	}
24044	return nil
24045}
24046
24047// SetBucket sets the Bucket field's value.
24048func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
24049	s.Bucket = &v
24050	return s
24051}
24052
24053func (s *PutBucketCorsInput) getBucket() (v string) {
24054	if s.Bucket == nil {
24055		return v
24056	}
24057	return *s.Bucket
24058}
24059
24060// SetCORSConfiguration sets the CORSConfiguration field's value.
24061func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
24062	s.CORSConfiguration = v
24063	return s
24064}
24065
24066func (s *PutBucketCorsInput) getEndpointARN() (arn.Resource, error) {
24067	if s.Bucket == nil {
24068		return nil, fmt.Errorf("member Bucket is nil")
24069	}
24070	return parseEndpointARN(*s.Bucket)
24071}
24072
24073func (s *PutBucketCorsInput) hasEndpointARN() bool {
24074	if s.Bucket == nil {
24075		return false
24076	}
24077	return arn.IsARN(*s.Bucket)
24078}
24079
24080type PutBucketCorsOutput struct {
24081	_ struct{} `type:"structure"`
24082}
24083
24084// String returns the string representation
24085func (s PutBucketCorsOutput) String() string {
24086	return awsutil.Prettify(s)
24087}
24088
24089// GoString returns the string representation
24090func (s PutBucketCorsOutput) GoString() string {
24091	return s.String()
24092}
24093
24094type PutBucketEncryptionInput struct {
24095	_ struct{} `locationName:"PutBucketEncryptionRequest" type:"structure" payload:"ServerSideEncryptionConfiguration"`
24096
24097	// Specifies default encryption for a bucket using server-side encryption with
24098	// Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
24099	// (SSE-KMS). For information about the Amazon S3 default encryption feature,
24100	// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
24101	// in the Amazon Simple Storage Service Developer Guide.
24102	//
24103	// Bucket is a required field
24104	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24105
24106	// Specifies the default server-side-encryption configuration.
24107	//
24108	// ServerSideEncryptionConfiguration is a required field
24109	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24110}
24111
24112// String returns the string representation
24113func (s PutBucketEncryptionInput) String() string {
24114	return awsutil.Prettify(s)
24115}
24116
24117// GoString returns the string representation
24118func (s PutBucketEncryptionInput) GoString() string {
24119	return s.String()
24120}
24121
24122// Validate inspects the fields of the type to determine if they are valid.
24123func (s *PutBucketEncryptionInput) Validate() error {
24124	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
24125	if s.Bucket == nil {
24126		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24127	}
24128	if s.Bucket != nil && len(*s.Bucket) < 1 {
24129		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24130	}
24131	if s.ServerSideEncryptionConfiguration == nil {
24132		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
24133	}
24134	if s.ServerSideEncryptionConfiguration != nil {
24135		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
24136			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
24137		}
24138	}
24139
24140	if invalidParams.Len() > 0 {
24141		return invalidParams
24142	}
24143	return nil
24144}
24145
24146// SetBucket sets the Bucket field's value.
24147func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
24148	s.Bucket = &v
24149	return s
24150}
24151
24152func (s *PutBucketEncryptionInput) getBucket() (v string) {
24153	if s.Bucket == nil {
24154		return v
24155	}
24156	return *s.Bucket
24157}
24158
24159// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
24160func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
24161	s.ServerSideEncryptionConfiguration = v
24162	return s
24163}
24164
24165func (s *PutBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
24166	if s.Bucket == nil {
24167		return nil, fmt.Errorf("member Bucket is nil")
24168	}
24169	return parseEndpointARN(*s.Bucket)
24170}
24171
24172func (s *PutBucketEncryptionInput) hasEndpointARN() bool {
24173	if s.Bucket == nil {
24174		return false
24175	}
24176	return arn.IsARN(*s.Bucket)
24177}
24178
24179type PutBucketEncryptionOutput struct {
24180	_ struct{} `type:"structure"`
24181}
24182
24183// String returns the string representation
24184func (s PutBucketEncryptionOutput) String() string {
24185	return awsutil.Prettify(s)
24186}
24187
24188// GoString returns the string representation
24189func (s PutBucketEncryptionOutput) GoString() string {
24190	return s.String()
24191}
24192
24193type PutBucketInventoryConfigurationInput struct {
24194	_ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"`
24195
24196	// The name of the bucket where the inventory configuration will be stored.
24197	//
24198	// Bucket is a required field
24199	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24200
24201	// The ID used to identify the inventory configuration.
24202	//
24203	// Id is a required field
24204	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
24205
24206	// Specifies the inventory configuration.
24207	//
24208	// InventoryConfiguration is a required field
24209	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24210}
24211
24212// String returns the string representation
24213func (s PutBucketInventoryConfigurationInput) String() string {
24214	return awsutil.Prettify(s)
24215}
24216
24217// GoString returns the string representation
24218func (s PutBucketInventoryConfigurationInput) GoString() string {
24219	return s.String()
24220}
24221
24222// Validate inspects the fields of the type to determine if they are valid.
24223func (s *PutBucketInventoryConfigurationInput) Validate() error {
24224	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
24225	if s.Bucket == nil {
24226		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24227	}
24228	if s.Bucket != nil && len(*s.Bucket) < 1 {
24229		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24230	}
24231	if s.Id == nil {
24232		invalidParams.Add(request.NewErrParamRequired("Id"))
24233	}
24234	if s.InventoryConfiguration == nil {
24235		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
24236	}
24237	if s.InventoryConfiguration != nil {
24238		if err := s.InventoryConfiguration.Validate(); err != nil {
24239			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
24240		}
24241	}
24242
24243	if invalidParams.Len() > 0 {
24244		return invalidParams
24245	}
24246	return nil
24247}
24248
24249// SetBucket sets the Bucket field's value.
24250func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
24251	s.Bucket = &v
24252	return s
24253}
24254
24255func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
24256	if s.Bucket == nil {
24257		return v
24258	}
24259	return *s.Bucket
24260}
24261
24262// SetId sets the Id field's value.
24263func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
24264	s.Id = &v
24265	return s
24266}
24267
24268// SetInventoryConfiguration sets the InventoryConfiguration field's value.
24269func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
24270	s.InventoryConfiguration = v
24271	return s
24272}
24273
24274func (s *PutBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
24275	if s.Bucket == nil {
24276		return nil, fmt.Errorf("member Bucket is nil")
24277	}
24278	return parseEndpointARN(*s.Bucket)
24279}
24280
24281func (s *PutBucketInventoryConfigurationInput) hasEndpointARN() bool {
24282	if s.Bucket == nil {
24283		return false
24284	}
24285	return arn.IsARN(*s.Bucket)
24286}
24287
24288type PutBucketInventoryConfigurationOutput struct {
24289	_ struct{} `type:"structure"`
24290}
24291
24292// String returns the string representation
24293func (s PutBucketInventoryConfigurationOutput) String() string {
24294	return awsutil.Prettify(s)
24295}
24296
24297// GoString returns the string representation
24298func (s PutBucketInventoryConfigurationOutput) GoString() string {
24299	return s.String()
24300}
24301
24302type PutBucketLifecycleConfigurationInput struct {
24303	_ struct{} `locationName:"PutBucketLifecycleConfigurationRequest" type:"structure" payload:"LifecycleConfiguration"`
24304
24305	// The name of the bucket for which to set the configuration.
24306	//
24307	// Bucket is a required field
24308	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24309
24310	// Container for lifecycle rules. You can add as many as 1,000 rules.
24311	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24312}
24313
24314// String returns the string representation
24315func (s PutBucketLifecycleConfigurationInput) String() string {
24316	return awsutil.Prettify(s)
24317}
24318
24319// GoString returns the string representation
24320func (s PutBucketLifecycleConfigurationInput) GoString() string {
24321	return s.String()
24322}
24323
24324// Validate inspects the fields of the type to determine if they are valid.
24325func (s *PutBucketLifecycleConfigurationInput) Validate() error {
24326	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
24327	if s.Bucket == nil {
24328		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24329	}
24330	if s.Bucket != nil && len(*s.Bucket) < 1 {
24331		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24332	}
24333	if s.LifecycleConfiguration != nil {
24334		if err := s.LifecycleConfiguration.Validate(); err != nil {
24335			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
24336		}
24337	}
24338
24339	if invalidParams.Len() > 0 {
24340		return invalidParams
24341	}
24342	return nil
24343}
24344
24345// SetBucket sets the Bucket field's value.
24346func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
24347	s.Bucket = &v
24348	return s
24349}
24350
24351func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
24352	if s.Bucket == nil {
24353		return v
24354	}
24355	return *s.Bucket
24356}
24357
24358// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
24359func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
24360	s.LifecycleConfiguration = v
24361	return s
24362}
24363
24364func (s *PutBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
24365	if s.Bucket == nil {
24366		return nil, fmt.Errorf("member Bucket is nil")
24367	}
24368	return parseEndpointARN(*s.Bucket)
24369}
24370
24371func (s *PutBucketLifecycleConfigurationInput) hasEndpointARN() bool {
24372	if s.Bucket == nil {
24373		return false
24374	}
24375	return arn.IsARN(*s.Bucket)
24376}
24377
24378type PutBucketLifecycleConfigurationOutput struct {
24379	_ struct{} `type:"structure"`
24380}
24381
24382// String returns the string representation
24383func (s PutBucketLifecycleConfigurationOutput) String() string {
24384	return awsutil.Prettify(s)
24385}
24386
24387// GoString returns the string representation
24388func (s PutBucketLifecycleConfigurationOutput) GoString() string {
24389	return s.String()
24390}
24391
24392type PutBucketLifecycleInput struct {
24393	_ struct{} `locationName:"PutBucketLifecycleRequest" type:"structure" payload:"LifecycleConfiguration"`
24394
24395	// Bucket is a required field
24396	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24397
24398	// Container for lifecycle rules. You can add as many as 1000 rules.
24399	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24400}
24401
24402// String returns the string representation
24403func (s PutBucketLifecycleInput) String() string {
24404	return awsutil.Prettify(s)
24405}
24406
24407// GoString returns the string representation
24408func (s PutBucketLifecycleInput) GoString() string {
24409	return s.String()
24410}
24411
24412// Validate inspects the fields of the type to determine if they are valid.
24413func (s *PutBucketLifecycleInput) Validate() error {
24414	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
24415	if s.Bucket == nil {
24416		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24417	}
24418	if s.Bucket != nil && len(*s.Bucket) < 1 {
24419		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24420	}
24421	if s.LifecycleConfiguration != nil {
24422		if err := s.LifecycleConfiguration.Validate(); err != nil {
24423			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
24424		}
24425	}
24426
24427	if invalidParams.Len() > 0 {
24428		return invalidParams
24429	}
24430	return nil
24431}
24432
24433// SetBucket sets the Bucket field's value.
24434func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
24435	s.Bucket = &v
24436	return s
24437}
24438
24439func (s *PutBucketLifecycleInput) getBucket() (v string) {
24440	if s.Bucket == nil {
24441		return v
24442	}
24443	return *s.Bucket
24444}
24445
24446// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
24447func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
24448	s.LifecycleConfiguration = v
24449	return s
24450}
24451
24452func (s *PutBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
24453	if s.Bucket == nil {
24454		return nil, fmt.Errorf("member Bucket is nil")
24455	}
24456	return parseEndpointARN(*s.Bucket)
24457}
24458
24459func (s *PutBucketLifecycleInput) hasEndpointARN() bool {
24460	if s.Bucket == nil {
24461		return false
24462	}
24463	return arn.IsARN(*s.Bucket)
24464}
24465
24466type PutBucketLifecycleOutput struct {
24467	_ struct{} `type:"structure"`
24468}
24469
24470// String returns the string representation
24471func (s PutBucketLifecycleOutput) String() string {
24472	return awsutil.Prettify(s)
24473}
24474
24475// GoString returns the string representation
24476func (s PutBucketLifecycleOutput) GoString() string {
24477	return s.String()
24478}
24479
24480type PutBucketLoggingInput struct {
24481	_ struct{} `locationName:"PutBucketLoggingRequest" type:"structure" payload:"BucketLoggingStatus"`
24482
24483	// The name of the bucket for which to set the logging parameters.
24484	//
24485	// Bucket is a required field
24486	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24487
24488	// Container for logging status information.
24489	//
24490	// BucketLoggingStatus is a required field
24491	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24492}
24493
24494// String returns the string representation
24495func (s PutBucketLoggingInput) String() string {
24496	return awsutil.Prettify(s)
24497}
24498
24499// GoString returns the string representation
24500func (s PutBucketLoggingInput) GoString() string {
24501	return s.String()
24502}
24503
24504// Validate inspects the fields of the type to determine if they are valid.
24505func (s *PutBucketLoggingInput) Validate() error {
24506	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
24507	if s.Bucket == nil {
24508		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24509	}
24510	if s.Bucket != nil && len(*s.Bucket) < 1 {
24511		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24512	}
24513	if s.BucketLoggingStatus == nil {
24514		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
24515	}
24516	if s.BucketLoggingStatus != nil {
24517		if err := s.BucketLoggingStatus.Validate(); err != nil {
24518			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
24519		}
24520	}
24521
24522	if invalidParams.Len() > 0 {
24523		return invalidParams
24524	}
24525	return nil
24526}
24527
24528// SetBucket sets the Bucket field's value.
24529func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
24530	s.Bucket = &v
24531	return s
24532}
24533
24534func (s *PutBucketLoggingInput) getBucket() (v string) {
24535	if s.Bucket == nil {
24536		return v
24537	}
24538	return *s.Bucket
24539}
24540
24541// SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
24542func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
24543	s.BucketLoggingStatus = v
24544	return s
24545}
24546
24547func (s *PutBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
24548	if s.Bucket == nil {
24549		return nil, fmt.Errorf("member Bucket is nil")
24550	}
24551	return parseEndpointARN(*s.Bucket)
24552}
24553
24554func (s *PutBucketLoggingInput) hasEndpointARN() bool {
24555	if s.Bucket == nil {
24556		return false
24557	}
24558	return arn.IsARN(*s.Bucket)
24559}
24560
24561type PutBucketLoggingOutput struct {
24562	_ struct{} `type:"structure"`
24563}
24564
24565// String returns the string representation
24566func (s PutBucketLoggingOutput) String() string {
24567	return awsutil.Prettify(s)
24568}
24569
24570// GoString returns the string representation
24571func (s PutBucketLoggingOutput) GoString() string {
24572	return s.String()
24573}
24574
24575type PutBucketMetricsConfigurationInput struct {
24576	_ struct{} `locationName:"PutBucketMetricsConfigurationRequest" type:"structure" payload:"MetricsConfiguration"`
24577
24578	// The name of the bucket for which the metrics configuration is set.
24579	//
24580	// Bucket is a required field
24581	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24582
24583	// The ID used to identify the metrics configuration.
24584	//
24585	// Id is a required field
24586	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
24587
24588	// Specifies the metrics configuration.
24589	//
24590	// MetricsConfiguration is a required field
24591	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24592}
24593
24594// String returns the string representation
24595func (s PutBucketMetricsConfigurationInput) String() string {
24596	return awsutil.Prettify(s)
24597}
24598
24599// GoString returns the string representation
24600func (s PutBucketMetricsConfigurationInput) GoString() string {
24601	return s.String()
24602}
24603
24604// Validate inspects the fields of the type to determine if they are valid.
24605func (s *PutBucketMetricsConfigurationInput) Validate() error {
24606	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
24607	if s.Bucket == nil {
24608		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24609	}
24610	if s.Bucket != nil && len(*s.Bucket) < 1 {
24611		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24612	}
24613	if s.Id == nil {
24614		invalidParams.Add(request.NewErrParamRequired("Id"))
24615	}
24616	if s.MetricsConfiguration == nil {
24617		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
24618	}
24619	if s.MetricsConfiguration != nil {
24620		if err := s.MetricsConfiguration.Validate(); err != nil {
24621			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
24622		}
24623	}
24624
24625	if invalidParams.Len() > 0 {
24626		return invalidParams
24627	}
24628	return nil
24629}
24630
24631// SetBucket sets the Bucket field's value.
24632func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
24633	s.Bucket = &v
24634	return s
24635}
24636
24637func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
24638	if s.Bucket == nil {
24639		return v
24640	}
24641	return *s.Bucket
24642}
24643
24644// SetId sets the Id field's value.
24645func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
24646	s.Id = &v
24647	return s
24648}
24649
24650// SetMetricsConfiguration sets the MetricsConfiguration field's value.
24651func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
24652	s.MetricsConfiguration = v
24653	return s
24654}
24655
24656func (s *PutBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
24657	if s.Bucket == nil {
24658		return nil, fmt.Errorf("member Bucket is nil")
24659	}
24660	return parseEndpointARN(*s.Bucket)
24661}
24662
24663func (s *PutBucketMetricsConfigurationInput) hasEndpointARN() bool {
24664	if s.Bucket == nil {
24665		return false
24666	}
24667	return arn.IsARN(*s.Bucket)
24668}
24669
24670type PutBucketMetricsConfigurationOutput struct {
24671	_ struct{} `type:"structure"`
24672}
24673
24674// String returns the string representation
24675func (s PutBucketMetricsConfigurationOutput) String() string {
24676	return awsutil.Prettify(s)
24677}
24678
24679// GoString returns the string representation
24680func (s PutBucketMetricsConfigurationOutput) GoString() string {
24681	return s.String()
24682}
24683
24684type PutBucketNotificationConfigurationInput struct {
24685	_ struct{} `locationName:"PutBucketNotificationConfigurationRequest" type:"structure" payload:"NotificationConfiguration"`
24686
24687	// The name of the bucket.
24688	//
24689	// Bucket is a required field
24690	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24691
24692	// A container for specifying the notification configuration of the bucket.
24693	// If this element is empty, notifications are turned off for the bucket.
24694	//
24695	// NotificationConfiguration is a required field
24696	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24697}
24698
24699// String returns the string representation
24700func (s PutBucketNotificationConfigurationInput) String() string {
24701	return awsutil.Prettify(s)
24702}
24703
24704// GoString returns the string representation
24705func (s PutBucketNotificationConfigurationInput) GoString() string {
24706	return s.String()
24707}
24708
24709// Validate inspects the fields of the type to determine if they are valid.
24710func (s *PutBucketNotificationConfigurationInput) Validate() error {
24711	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
24712	if s.Bucket == nil {
24713		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24714	}
24715	if s.Bucket != nil && len(*s.Bucket) < 1 {
24716		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24717	}
24718	if s.NotificationConfiguration == nil {
24719		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
24720	}
24721	if s.NotificationConfiguration != nil {
24722		if err := s.NotificationConfiguration.Validate(); err != nil {
24723			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
24724		}
24725	}
24726
24727	if invalidParams.Len() > 0 {
24728		return invalidParams
24729	}
24730	return nil
24731}
24732
24733// SetBucket sets the Bucket field's value.
24734func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
24735	s.Bucket = &v
24736	return s
24737}
24738
24739func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
24740	if s.Bucket == nil {
24741		return v
24742	}
24743	return *s.Bucket
24744}
24745
24746// SetNotificationConfiguration sets the NotificationConfiguration field's value.
24747func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
24748	s.NotificationConfiguration = v
24749	return s
24750}
24751
24752func (s *PutBucketNotificationConfigurationInput) getEndpointARN() (arn.Resource, error) {
24753	if s.Bucket == nil {
24754		return nil, fmt.Errorf("member Bucket is nil")
24755	}
24756	return parseEndpointARN(*s.Bucket)
24757}
24758
24759func (s *PutBucketNotificationConfigurationInput) hasEndpointARN() bool {
24760	if s.Bucket == nil {
24761		return false
24762	}
24763	return arn.IsARN(*s.Bucket)
24764}
24765
24766type PutBucketNotificationConfigurationOutput struct {
24767	_ struct{} `type:"structure"`
24768}
24769
24770// String returns the string representation
24771func (s PutBucketNotificationConfigurationOutput) String() string {
24772	return awsutil.Prettify(s)
24773}
24774
24775// GoString returns the string representation
24776func (s PutBucketNotificationConfigurationOutput) GoString() string {
24777	return s.String()
24778}
24779
24780type PutBucketNotificationInput struct {
24781	_ struct{} `locationName:"PutBucketNotificationRequest" type:"structure" payload:"NotificationConfiguration"`
24782
24783	// The name of the bucket.
24784	//
24785	// Bucket is a required field
24786	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24787
24788	// The container for the configuration.
24789	//
24790	// NotificationConfiguration is a required field
24791	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24792}
24793
24794// String returns the string representation
24795func (s PutBucketNotificationInput) String() string {
24796	return awsutil.Prettify(s)
24797}
24798
24799// GoString returns the string representation
24800func (s PutBucketNotificationInput) GoString() string {
24801	return s.String()
24802}
24803
24804// Validate inspects the fields of the type to determine if they are valid.
24805func (s *PutBucketNotificationInput) Validate() error {
24806	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
24807	if s.Bucket == nil {
24808		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24809	}
24810	if s.Bucket != nil && len(*s.Bucket) < 1 {
24811		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24812	}
24813	if s.NotificationConfiguration == nil {
24814		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
24815	}
24816
24817	if invalidParams.Len() > 0 {
24818		return invalidParams
24819	}
24820	return nil
24821}
24822
24823// SetBucket sets the Bucket field's value.
24824func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
24825	s.Bucket = &v
24826	return s
24827}
24828
24829func (s *PutBucketNotificationInput) getBucket() (v string) {
24830	if s.Bucket == nil {
24831		return v
24832	}
24833	return *s.Bucket
24834}
24835
24836// SetNotificationConfiguration sets the NotificationConfiguration field's value.
24837func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
24838	s.NotificationConfiguration = v
24839	return s
24840}
24841
24842func (s *PutBucketNotificationInput) getEndpointARN() (arn.Resource, error) {
24843	if s.Bucket == nil {
24844		return nil, fmt.Errorf("member Bucket is nil")
24845	}
24846	return parseEndpointARN(*s.Bucket)
24847}
24848
24849func (s *PutBucketNotificationInput) hasEndpointARN() bool {
24850	if s.Bucket == nil {
24851		return false
24852	}
24853	return arn.IsARN(*s.Bucket)
24854}
24855
24856type PutBucketNotificationOutput struct {
24857	_ struct{} `type:"structure"`
24858}
24859
24860// String returns the string representation
24861func (s PutBucketNotificationOutput) String() string {
24862	return awsutil.Prettify(s)
24863}
24864
24865// GoString returns the string representation
24866func (s PutBucketNotificationOutput) GoString() string {
24867	return s.String()
24868}
24869
24870type PutBucketPolicyInput struct {
24871	_ struct{} `locationName:"PutBucketPolicyRequest" type:"structure" payload:"Policy"`
24872
24873	// The name of the bucket.
24874	//
24875	// Bucket is a required field
24876	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24877
24878	// Set this parameter to true to confirm that you want to remove your permissions
24879	// to change this bucket policy in the future.
24880	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
24881
24882	// The bucket policy as a JSON document.
24883	//
24884	// Policy is a required field
24885	Policy *string `type:"string" required:"true"`
24886}
24887
24888// String returns the string representation
24889func (s PutBucketPolicyInput) String() string {
24890	return awsutil.Prettify(s)
24891}
24892
24893// GoString returns the string representation
24894func (s PutBucketPolicyInput) GoString() string {
24895	return s.String()
24896}
24897
24898// Validate inspects the fields of the type to determine if they are valid.
24899func (s *PutBucketPolicyInput) Validate() error {
24900	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
24901	if s.Bucket == nil {
24902		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24903	}
24904	if s.Bucket != nil && len(*s.Bucket) < 1 {
24905		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24906	}
24907	if s.Policy == nil {
24908		invalidParams.Add(request.NewErrParamRequired("Policy"))
24909	}
24910
24911	if invalidParams.Len() > 0 {
24912		return invalidParams
24913	}
24914	return nil
24915}
24916
24917// SetBucket sets the Bucket field's value.
24918func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
24919	s.Bucket = &v
24920	return s
24921}
24922
24923func (s *PutBucketPolicyInput) getBucket() (v string) {
24924	if s.Bucket == nil {
24925		return v
24926	}
24927	return *s.Bucket
24928}
24929
24930// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
24931func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
24932	s.ConfirmRemoveSelfBucketAccess = &v
24933	return s
24934}
24935
24936// SetPolicy sets the Policy field's value.
24937func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
24938	s.Policy = &v
24939	return s
24940}
24941
24942func (s *PutBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
24943	if s.Bucket == nil {
24944		return nil, fmt.Errorf("member Bucket is nil")
24945	}
24946	return parseEndpointARN(*s.Bucket)
24947}
24948
24949func (s *PutBucketPolicyInput) hasEndpointARN() bool {
24950	if s.Bucket == nil {
24951		return false
24952	}
24953	return arn.IsARN(*s.Bucket)
24954}
24955
24956type PutBucketPolicyOutput struct {
24957	_ struct{} `type:"structure"`
24958}
24959
24960// String returns the string representation
24961func (s PutBucketPolicyOutput) String() string {
24962	return awsutil.Prettify(s)
24963}
24964
24965// GoString returns the string representation
24966func (s PutBucketPolicyOutput) GoString() string {
24967	return s.String()
24968}
24969
24970type PutBucketReplicationInput struct {
24971	_ struct{} `locationName:"PutBucketReplicationRequest" type:"structure" payload:"ReplicationConfiguration"`
24972
24973	// The name of the bucket
24974	//
24975	// Bucket is a required field
24976	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24977
24978	// A container for replication rules. You can add up to 1,000 rules. The maximum
24979	// size of a replication configuration is 2 MB.
24980	//
24981	// ReplicationConfiguration is a required field
24982	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24983
24984	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
24985}
24986
24987// String returns the string representation
24988func (s PutBucketReplicationInput) String() string {
24989	return awsutil.Prettify(s)
24990}
24991
24992// GoString returns the string representation
24993func (s PutBucketReplicationInput) GoString() string {
24994	return s.String()
24995}
24996
24997// Validate inspects the fields of the type to determine if they are valid.
24998func (s *PutBucketReplicationInput) Validate() error {
24999	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
25000	if s.Bucket == nil {
25001		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25002	}
25003	if s.Bucket != nil && len(*s.Bucket) < 1 {
25004		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25005	}
25006	if s.ReplicationConfiguration == nil {
25007		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
25008	}
25009	if s.ReplicationConfiguration != nil {
25010		if err := s.ReplicationConfiguration.Validate(); err != nil {
25011			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
25012		}
25013	}
25014
25015	if invalidParams.Len() > 0 {
25016		return invalidParams
25017	}
25018	return nil
25019}
25020
25021// SetBucket sets the Bucket field's value.
25022func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
25023	s.Bucket = &v
25024	return s
25025}
25026
25027func (s *PutBucketReplicationInput) getBucket() (v string) {
25028	if s.Bucket == nil {
25029		return v
25030	}
25031	return *s.Bucket
25032}
25033
25034// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
25035func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
25036	s.ReplicationConfiguration = v
25037	return s
25038}
25039
25040// SetToken sets the Token field's value.
25041func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput {
25042	s.Token = &v
25043	return s
25044}
25045
25046func (s *PutBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
25047	if s.Bucket == nil {
25048		return nil, fmt.Errorf("member Bucket is nil")
25049	}
25050	return parseEndpointARN(*s.Bucket)
25051}
25052
25053func (s *PutBucketReplicationInput) hasEndpointARN() bool {
25054	if s.Bucket == nil {
25055		return false
25056	}
25057	return arn.IsARN(*s.Bucket)
25058}
25059
25060type PutBucketReplicationOutput struct {
25061	_ struct{} `type:"structure"`
25062}
25063
25064// String returns the string representation
25065func (s PutBucketReplicationOutput) String() string {
25066	return awsutil.Prettify(s)
25067}
25068
25069// GoString returns the string representation
25070func (s PutBucketReplicationOutput) GoString() string {
25071	return s.String()
25072}
25073
25074type PutBucketRequestPaymentInput struct {
25075	_ struct{} `locationName:"PutBucketRequestPaymentRequest" type:"structure" payload:"RequestPaymentConfiguration"`
25076
25077	// The bucket name.
25078	//
25079	// Bucket is a required field
25080	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25081
25082	// Container for Payer.
25083	//
25084	// RequestPaymentConfiguration is a required field
25085	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25086}
25087
25088// String returns the string representation
25089func (s PutBucketRequestPaymentInput) String() string {
25090	return awsutil.Prettify(s)
25091}
25092
25093// GoString returns the string representation
25094func (s PutBucketRequestPaymentInput) GoString() string {
25095	return s.String()
25096}
25097
25098// Validate inspects the fields of the type to determine if they are valid.
25099func (s *PutBucketRequestPaymentInput) Validate() error {
25100	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
25101	if s.Bucket == nil {
25102		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25103	}
25104	if s.Bucket != nil && len(*s.Bucket) < 1 {
25105		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25106	}
25107	if s.RequestPaymentConfiguration == nil {
25108		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
25109	}
25110	if s.RequestPaymentConfiguration != nil {
25111		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
25112			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
25113		}
25114	}
25115
25116	if invalidParams.Len() > 0 {
25117		return invalidParams
25118	}
25119	return nil
25120}
25121
25122// SetBucket sets the Bucket field's value.
25123func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
25124	s.Bucket = &v
25125	return s
25126}
25127
25128func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
25129	if s.Bucket == nil {
25130		return v
25131	}
25132	return *s.Bucket
25133}
25134
25135// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
25136func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
25137	s.RequestPaymentConfiguration = v
25138	return s
25139}
25140
25141func (s *PutBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
25142	if s.Bucket == nil {
25143		return nil, fmt.Errorf("member Bucket is nil")
25144	}
25145	return parseEndpointARN(*s.Bucket)
25146}
25147
25148func (s *PutBucketRequestPaymentInput) hasEndpointARN() bool {
25149	if s.Bucket == nil {
25150		return false
25151	}
25152	return arn.IsARN(*s.Bucket)
25153}
25154
25155type PutBucketRequestPaymentOutput struct {
25156	_ struct{} `type:"structure"`
25157}
25158
25159// String returns the string representation
25160func (s PutBucketRequestPaymentOutput) String() string {
25161	return awsutil.Prettify(s)
25162}
25163
25164// GoString returns the string representation
25165func (s PutBucketRequestPaymentOutput) GoString() string {
25166	return s.String()
25167}
25168
25169type PutBucketTaggingInput struct {
25170	_ struct{} `locationName:"PutBucketTaggingRequest" type:"structure" payload:"Tagging"`
25171
25172	// The bucket name.
25173	//
25174	// Bucket is a required field
25175	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25176
25177	// Container for the TagSet and Tag elements.
25178	//
25179	// Tagging is a required field
25180	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25181}
25182
25183// String returns the string representation
25184func (s PutBucketTaggingInput) String() string {
25185	return awsutil.Prettify(s)
25186}
25187
25188// GoString returns the string representation
25189func (s PutBucketTaggingInput) GoString() string {
25190	return s.String()
25191}
25192
25193// Validate inspects the fields of the type to determine if they are valid.
25194func (s *PutBucketTaggingInput) Validate() error {
25195	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
25196	if s.Bucket == nil {
25197		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25198	}
25199	if s.Bucket != nil && len(*s.Bucket) < 1 {
25200		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25201	}
25202	if s.Tagging == nil {
25203		invalidParams.Add(request.NewErrParamRequired("Tagging"))
25204	}
25205	if s.Tagging != nil {
25206		if err := s.Tagging.Validate(); err != nil {
25207			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
25208		}
25209	}
25210
25211	if invalidParams.Len() > 0 {
25212		return invalidParams
25213	}
25214	return nil
25215}
25216
25217// SetBucket sets the Bucket field's value.
25218func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
25219	s.Bucket = &v
25220	return s
25221}
25222
25223func (s *PutBucketTaggingInput) getBucket() (v string) {
25224	if s.Bucket == nil {
25225		return v
25226	}
25227	return *s.Bucket
25228}
25229
25230// SetTagging sets the Tagging field's value.
25231func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
25232	s.Tagging = v
25233	return s
25234}
25235
25236func (s *PutBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
25237	if s.Bucket == nil {
25238		return nil, fmt.Errorf("member Bucket is nil")
25239	}
25240	return parseEndpointARN(*s.Bucket)
25241}
25242
25243func (s *PutBucketTaggingInput) hasEndpointARN() bool {
25244	if s.Bucket == nil {
25245		return false
25246	}
25247	return arn.IsARN(*s.Bucket)
25248}
25249
25250type PutBucketTaggingOutput struct {
25251	_ struct{} `type:"structure"`
25252}
25253
25254// String returns the string representation
25255func (s PutBucketTaggingOutput) String() string {
25256	return awsutil.Prettify(s)
25257}
25258
25259// GoString returns the string representation
25260func (s PutBucketTaggingOutput) GoString() string {
25261	return s.String()
25262}
25263
25264type PutBucketVersioningInput struct {
25265	_ struct{} `locationName:"PutBucketVersioningRequest" type:"structure" payload:"VersioningConfiguration"`
25266
25267	// The bucket name.
25268	//
25269	// Bucket is a required field
25270	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25271
25272	// The concatenation of the authentication device's serial number, a space,
25273	// and the value that is displayed on your authentication device.
25274	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
25275
25276	// Container for setting the versioning state.
25277	//
25278	// VersioningConfiguration is a required field
25279	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25280}
25281
25282// String returns the string representation
25283func (s PutBucketVersioningInput) String() string {
25284	return awsutil.Prettify(s)
25285}
25286
25287// GoString returns the string representation
25288func (s PutBucketVersioningInput) GoString() string {
25289	return s.String()
25290}
25291
25292// Validate inspects the fields of the type to determine if they are valid.
25293func (s *PutBucketVersioningInput) Validate() error {
25294	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
25295	if s.Bucket == nil {
25296		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25297	}
25298	if s.Bucket != nil && len(*s.Bucket) < 1 {
25299		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25300	}
25301	if s.VersioningConfiguration == nil {
25302		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
25303	}
25304
25305	if invalidParams.Len() > 0 {
25306		return invalidParams
25307	}
25308	return nil
25309}
25310
25311// SetBucket sets the Bucket field's value.
25312func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
25313	s.Bucket = &v
25314	return s
25315}
25316
25317func (s *PutBucketVersioningInput) getBucket() (v string) {
25318	if s.Bucket == nil {
25319		return v
25320	}
25321	return *s.Bucket
25322}
25323
25324// SetMFA sets the MFA field's value.
25325func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
25326	s.MFA = &v
25327	return s
25328}
25329
25330// SetVersioningConfiguration sets the VersioningConfiguration field's value.
25331func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
25332	s.VersioningConfiguration = v
25333	return s
25334}
25335
25336func (s *PutBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
25337	if s.Bucket == nil {
25338		return nil, fmt.Errorf("member Bucket is nil")
25339	}
25340	return parseEndpointARN(*s.Bucket)
25341}
25342
25343func (s *PutBucketVersioningInput) hasEndpointARN() bool {
25344	if s.Bucket == nil {
25345		return false
25346	}
25347	return arn.IsARN(*s.Bucket)
25348}
25349
25350type PutBucketVersioningOutput struct {
25351	_ struct{} `type:"structure"`
25352}
25353
25354// String returns the string representation
25355func (s PutBucketVersioningOutput) String() string {
25356	return awsutil.Prettify(s)
25357}
25358
25359// GoString returns the string representation
25360func (s PutBucketVersioningOutput) GoString() string {
25361	return s.String()
25362}
25363
25364type PutBucketWebsiteInput struct {
25365	_ struct{} `locationName:"PutBucketWebsiteRequest" type:"structure" payload:"WebsiteConfiguration"`
25366
25367	// The bucket name.
25368	//
25369	// Bucket is a required field
25370	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25371
25372	// Container for the request.
25373	//
25374	// WebsiteConfiguration is a required field
25375	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25376}
25377
25378// String returns the string representation
25379func (s PutBucketWebsiteInput) String() string {
25380	return awsutil.Prettify(s)
25381}
25382
25383// GoString returns the string representation
25384func (s PutBucketWebsiteInput) GoString() string {
25385	return s.String()
25386}
25387
25388// Validate inspects the fields of the type to determine if they are valid.
25389func (s *PutBucketWebsiteInput) Validate() error {
25390	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
25391	if s.Bucket == nil {
25392		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25393	}
25394	if s.Bucket != nil && len(*s.Bucket) < 1 {
25395		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25396	}
25397	if s.WebsiteConfiguration == nil {
25398		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
25399	}
25400	if s.WebsiteConfiguration != nil {
25401		if err := s.WebsiteConfiguration.Validate(); err != nil {
25402			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
25403		}
25404	}
25405
25406	if invalidParams.Len() > 0 {
25407		return invalidParams
25408	}
25409	return nil
25410}
25411
25412// SetBucket sets the Bucket field's value.
25413func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
25414	s.Bucket = &v
25415	return s
25416}
25417
25418func (s *PutBucketWebsiteInput) getBucket() (v string) {
25419	if s.Bucket == nil {
25420		return v
25421	}
25422	return *s.Bucket
25423}
25424
25425// SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
25426func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
25427	s.WebsiteConfiguration = v
25428	return s
25429}
25430
25431func (s *PutBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
25432	if s.Bucket == nil {
25433		return nil, fmt.Errorf("member Bucket is nil")
25434	}
25435	return parseEndpointARN(*s.Bucket)
25436}
25437
25438func (s *PutBucketWebsiteInput) hasEndpointARN() bool {
25439	if s.Bucket == nil {
25440		return false
25441	}
25442	return arn.IsARN(*s.Bucket)
25443}
25444
25445type PutBucketWebsiteOutput struct {
25446	_ struct{} `type:"structure"`
25447}
25448
25449// String returns the string representation
25450func (s PutBucketWebsiteOutput) String() string {
25451	return awsutil.Prettify(s)
25452}
25453
25454// GoString returns the string representation
25455func (s PutBucketWebsiteOutput) GoString() string {
25456	return s.String()
25457}
25458
25459type PutObjectAclInput struct {
25460	_ struct{} `locationName:"PutObjectAclRequest" type:"structure" payload:"AccessControlPolicy"`
25461
25462	// The canned ACL to apply to the object. For more information, see Canned ACL
25463	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
25464	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
25465
25466	// Contains the elements that set the ACL permissions for an object per grantee.
25467	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25468
25469	// The bucket name that contains the object to which you want to attach the
25470	// ACL.
25471	//
25472	// When using this API with an access point, you must direct requests to the
25473	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25474	// When using this operation using an access point through the AWS SDKs, you
25475	// provide the access point ARN in place of the bucket name. For more information
25476	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
25477	// in the Amazon Simple Storage Service Developer Guide.
25478	//
25479	// Bucket is a required field
25480	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25481
25482	// Allows grantee the read, write, read ACP, and write ACP permissions on the
25483	// bucket.
25484	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
25485
25486	// Allows grantee to list the objects in the bucket.
25487	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
25488
25489	// Allows grantee to read the bucket ACL.
25490	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
25491
25492	// Allows grantee to create, overwrite, and delete any object in the bucket.
25493	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
25494
25495	// Allows grantee to write the ACL for the applicable bucket.
25496	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
25497
25498	// Key for which the PUT operation was initiated.
25499	//
25500	// Key is a required field
25501	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
25502
25503	// Confirms that the requester knows that they will be charged for the request.
25504	// Bucket owners need not specify this parameter in their requests. For information
25505	// about downloading objects from requester pays buckets, see Downloading Objects
25506	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
25507	// in the Amazon S3 Developer Guide.
25508	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
25509
25510	// VersionId used to reference a specific version of the object.
25511	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
25512}
25513
25514// String returns the string representation
25515func (s PutObjectAclInput) String() string {
25516	return awsutil.Prettify(s)
25517}
25518
25519// GoString returns the string representation
25520func (s PutObjectAclInput) GoString() string {
25521	return s.String()
25522}
25523
25524// Validate inspects the fields of the type to determine if they are valid.
25525func (s *PutObjectAclInput) Validate() error {
25526	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
25527	if s.Bucket == nil {
25528		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25529	}
25530	if s.Bucket != nil && len(*s.Bucket) < 1 {
25531		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25532	}
25533	if s.Key == nil {
25534		invalidParams.Add(request.NewErrParamRequired("Key"))
25535	}
25536	if s.Key != nil && len(*s.Key) < 1 {
25537		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
25538	}
25539	if s.AccessControlPolicy != nil {
25540		if err := s.AccessControlPolicy.Validate(); err != nil {
25541			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
25542		}
25543	}
25544
25545	if invalidParams.Len() > 0 {
25546		return invalidParams
25547	}
25548	return nil
25549}
25550
25551// SetACL sets the ACL field's value.
25552func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
25553	s.ACL = &v
25554	return s
25555}
25556
25557// SetAccessControlPolicy sets the AccessControlPolicy field's value.
25558func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
25559	s.AccessControlPolicy = v
25560	return s
25561}
25562
25563// SetBucket sets the Bucket field's value.
25564func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
25565	s.Bucket = &v
25566	return s
25567}
25568
25569func (s *PutObjectAclInput) getBucket() (v string) {
25570	if s.Bucket == nil {
25571		return v
25572	}
25573	return *s.Bucket
25574}
25575
25576// SetGrantFullControl sets the GrantFullControl field's value.
25577func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
25578	s.GrantFullControl = &v
25579	return s
25580}
25581
25582// SetGrantRead sets the GrantRead field's value.
25583func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
25584	s.GrantRead = &v
25585	return s
25586}
25587
25588// SetGrantReadACP sets the GrantReadACP field's value.
25589func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
25590	s.GrantReadACP = &v
25591	return s
25592}
25593
25594// SetGrantWrite sets the GrantWrite field's value.
25595func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
25596	s.GrantWrite = &v
25597	return s
25598}
25599
25600// SetGrantWriteACP sets the GrantWriteACP field's value.
25601func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
25602	s.GrantWriteACP = &v
25603	return s
25604}
25605
25606// SetKey sets the Key field's value.
25607func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
25608	s.Key = &v
25609	return s
25610}
25611
25612// SetRequestPayer sets the RequestPayer field's value.
25613func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
25614	s.RequestPayer = &v
25615	return s
25616}
25617
25618// SetVersionId sets the VersionId field's value.
25619func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
25620	s.VersionId = &v
25621	return s
25622}
25623
25624func (s *PutObjectAclInput) getEndpointARN() (arn.Resource, error) {
25625	if s.Bucket == nil {
25626		return nil, fmt.Errorf("member Bucket is nil")
25627	}
25628	return parseEndpointARN(*s.Bucket)
25629}
25630
25631func (s *PutObjectAclInput) hasEndpointARN() bool {
25632	if s.Bucket == nil {
25633		return false
25634	}
25635	return arn.IsARN(*s.Bucket)
25636}
25637
25638type PutObjectAclOutput struct {
25639	_ struct{} `type:"structure"`
25640
25641	// If present, indicates that the requester was successfully charged for the
25642	// request.
25643	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
25644}
25645
25646// String returns the string representation
25647func (s PutObjectAclOutput) String() string {
25648	return awsutil.Prettify(s)
25649}
25650
25651// GoString returns the string representation
25652func (s PutObjectAclOutput) GoString() string {
25653	return s.String()
25654}
25655
25656// SetRequestCharged sets the RequestCharged field's value.
25657func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
25658	s.RequestCharged = &v
25659	return s
25660}
25661
25662type PutObjectInput struct {
25663	_ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"`
25664
25665	// The canned ACL to apply to the object. For more information, see Canned ACL
25666	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
25667	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
25668
25669	// Object data.
25670	Body io.ReadSeeker `type:"blob"`
25671
25672	// Bucket name to which the PUT operation was initiated.
25673	//
25674	// When using this API with an access point, you must direct requests to the
25675	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25676	// When using this operation using an access point through the AWS SDKs, you
25677	// provide the access point ARN in place of the bucket name. For more information
25678	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
25679	// in the Amazon Simple Storage Service Developer Guide.
25680	//
25681	// Bucket is a required field
25682	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25683
25684	// Can be used to specify caching behavior along the request/reply chain. For
25685	// more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
25686	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).
25687	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
25688
25689	// Specifies presentational information for the object. For more information,
25690	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1).
25691	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
25692
25693	// Specifies what content encodings have been applied to the object and thus
25694	// what decoding mechanisms must be applied to obtain the media-type referenced
25695	// by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
25696	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).
25697	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
25698
25699	// The language the content is in.
25700	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
25701
25702	// Size of the body in bytes. This parameter is useful when the size of the
25703	// body cannot be determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
25704	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).
25705	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
25706
25707	// The base64-encoded 128-bit MD5 digest of the message (without the headers)
25708	// according to RFC 1864. This header can be used as a message integrity check
25709	// to verify that the data is the same data that was originally sent. Although
25710	// it is optional, we recommend using the Content-MD5 mechanism as an end-to-end
25711	// integrity check. For more information about REST request authentication,
25712	// see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
25713	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
25714
25715	// A standard MIME type describing the format of the contents. For more information,
25716	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).
25717	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
25718
25719	// The date and time at which the object is no longer cacheable. For more information,
25720	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).
25721	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
25722
25723	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
25724	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
25725
25726	// Allows grantee to read the object data and its metadata.
25727	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
25728
25729	// Allows grantee to read the object ACL.
25730	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
25731
25732	// Allows grantee to write the ACL for the applicable object.
25733	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
25734
25735	// Object key for which the PUT operation was initiated.
25736	//
25737	// Key is a required field
25738	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
25739
25740	// A map of metadata to store with the object in S3.
25741	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
25742
25743	// Specifies whether a legal hold will be applied to this object. For more information
25744	// about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
25745	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
25746
25747	// The Object Lock mode that you want to apply to this object.
25748	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
25749
25750	// The date and time when you want this object's Object Lock to expire.
25751	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
25752
25753	// Confirms that the requester knows that they will be charged for the request.
25754	// Bucket owners need not specify this parameter in their requests. For information
25755	// about downloading objects from requester pays buckets, see Downloading Objects
25756	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
25757	// in the Amazon S3 Developer Guide.
25758	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
25759
25760	// Specifies the algorithm to use to when encrypting the object (for example,
25761	// AES256).
25762	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
25763
25764	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
25765	// data. This value is used to store the object and then it is discarded; Amazon
25766	// S3 does not store the encryption key. The key must be appropriate for use
25767	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
25768	// header.
25769	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
25770
25771	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
25772	// Amazon S3 uses this header for a message integrity check to ensure that the
25773	// encryption key was transmitted without error.
25774	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
25775
25776	// Specifies the AWS KMS Encryption Context to use for object encryption. The
25777	// value of this header is a base64-encoded UTF-8 string holding JSON with the
25778	// encryption context key-value pairs.
25779	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
25780
25781	// If x-amz-server-side-encryption is present and has the value of aws:kms,
25782	// this header specifies the ID of the AWS Key Management Service (AWS KMS)
25783	// symmetrical customer managed customer master key (CMK) that was used for
25784	// the object.
25785	//
25786	// If the value of x-amz-server-side-encryption is aws:kms, this header specifies
25787	// the ID of the symmetric customer managed AWS KMS CMK that will be used for
25788	// the object. If you specify x-amz-server-side-encryption:aws:kms, but do not
25789	// providex-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the AWS
25790	// managed CMK in AWS to protect the data.
25791	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
25792
25793	// The server-side encryption algorithm used when storing this object in Amazon
25794	// S3 (for example, AES256, aws:kms).
25795	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
25796
25797	// If you don't specify, S3 Standard is the default storage class. Amazon S3
25798	// supports other storage classes.
25799	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
25800
25801	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
25802	// (For example, "Key1=Value1")
25803	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
25804
25805	// If the bucket is configured as a website, redirects requests for this object
25806	// to another object in the same bucket or to an external URL. Amazon S3 stores
25807	// the value of this header in the object metadata. For information about object
25808	// metadata, see Object Key and Metadata (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html).
25809	//
25810	// In the following example, the request header sets the redirect to an object
25811	// (anotherPage.html) in the same bucket:
25812	//
25813	// x-amz-website-redirect-location: /anotherPage.html
25814	//
25815	// In the following example, the request header sets the object redirect to
25816	// another website:
25817	//
25818	// x-amz-website-redirect-location: http://www.example.com/
25819	//
25820	// For more information about website hosting in Amazon S3, see Hosting Websites
25821	// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
25822	// and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
25823	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
25824}
25825
25826// String returns the string representation
25827func (s PutObjectInput) String() string {
25828	return awsutil.Prettify(s)
25829}
25830
25831// GoString returns the string representation
25832func (s PutObjectInput) GoString() string {
25833	return s.String()
25834}
25835
25836// Validate inspects the fields of the type to determine if they are valid.
25837func (s *PutObjectInput) Validate() error {
25838	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
25839	if s.Bucket == nil {
25840		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25841	}
25842	if s.Bucket != nil && len(*s.Bucket) < 1 {
25843		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25844	}
25845	if s.Key == nil {
25846		invalidParams.Add(request.NewErrParamRequired("Key"))
25847	}
25848	if s.Key != nil && len(*s.Key) < 1 {
25849		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
25850	}
25851
25852	if invalidParams.Len() > 0 {
25853		return invalidParams
25854	}
25855	return nil
25856}
25857
25858// SetACL sets the ACL field's value.
25859func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
25860	s.ACL = &v
25861	return s
25862}
25863
25864// SetBody sets the Body field's value.
25865func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
25866	s.Body = v
25867	return s
25868}
25869
25870// SetBucket sets the Bucket field's value.
25871func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
25872	s.Bucket = &v
25873	return s
25874}
25875
25876func (s *PutObjectInput) getBucket() (v string) {
25877	if s.Bucket == nil {
25878		return v
25879	}
25880	return *s.Bucket
25881}
25882
25883// SetCacheControl sets the CacheControl field's value.
25884func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
25885	s.CacheControl = &v
25886	return s
25887}
25888
25889// SetContentDisposition sets the ContentDisposition field's value.
25890func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
25891	s.ContentDisposition = &v
25892	return s
25893}
25894
25895// SetContentEncoding sets the ContentEncoding field's value.
25896func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
25897	s.ContentEncoding = &v
25898	return s
25899}
25900
25901// SetContentLanguage sets the ContentLanguage field's value.
25902func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
25903	s.ContentLanguage = &v
25904	return s
25905}
25906
25907// SetContentLength sets the ContentLength field's value.
25908func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
25909	s.ContentLength = &v
25910	return s
25911}
25912
25913// SetContentMD5 sets the ContentMD5 field's value.
25914func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
25915	s.ContentMD5 = &v
25916	return s
25917}
25918
25919// SetContentType sets the ContentType field's value.
25920func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
25921	s.ContentType = &v
25922	return s
25923}
25924
25925// SetExpires sets the Expires field's value.
25926func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
25927	s.Expires = &v
25928	return s
25929}
25930
25931// SetGrantFullControl sets the GrantFullControl field's value.
25932func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
25933	s.GrantFullControl = &v
25934	return s
25935}
25936
25937// SetGrantRead sets the GrantRead field's value.
25938func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
25939	s.GrantRead = &v
25940	return s
25941}
25942
25943// SetGrantReadACP sets the GrantReadACP field's value.
25944func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
25945	s.GrantReadACP = &v
25946	return s
25947}
25948
25949// SetGrantWriteACP sets the GrantWriteACP field's value.
25950func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
25951	s.GrantWriteACP = &v
25952	return s
25953}
25954
25955// SetKey sets the Key field's value.
25956func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
25957	s.Key = &v
25958	return s
25959}
25960
25961// SetMetadata sets the Metadata field's value.
25962func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
25963	s.Metadata = v
25964	return s
25965}
25966
25967// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
25968func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput {
25969	s.ObjectLockLegalHoldStatus = &v
25970	return s
25971}
25972
25973// SetObjectLockMode sets the ObjectLockMode field's value.
25974func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput {
25975	s.ObjectLockMode = &v
25976	return s
25977}
25978
25979// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
25980func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput {
25981	s.ObjectLockRetainUntilDate = &v
25982	return s
25983}
25984
25985// SetRequestPayer sets the RequestPayer field's value.
25986func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
25987	s.RequestPayer = &v
25988	return s
25989}
25990
25991// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
25992func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
25993	s.SSECustomerAlgorithm = &v
25994	return s
25995}
25996
25997// SetSSECustomerKey sets the SSECustomerKey field's value.
25998func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
25999	s.SSECustomerKey = &v
26000	return s
26001}
26002
26003func (s *PutObjectInput) getSSECustomerKey() (v string) {
26004	if s.SSECustomerKey == nil {
26005		return v
26006	}
26007	return *s.SSECustomerKey
26008}
26009
26010// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
26011func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
26012	s.SSECustomerKeyMD5 = &v
26013	return s
26014}
26015
26016// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
26017func (s *PutObjectInput) SetSSEKMSEncryptionContext(v string) *PutObjectInput {
26018	s.SSEKMSEncryptionContext = &v
26019	return s
26020}
26021
26022// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
26023func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
26024	s.SSEKMSKeyId = &v
26025	return s
26026}
26027
26028// SetServerSideEncryption sets the ServerSideEncryption field's value.
26029func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
26030	s.ServerSideEncryption = &v
26031	return s
26032}
26033
26034// SetStorageClass sets the StorageClass field's value.
26035func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
26036	s.StorageClass = &v
26037	return s
26038}
26039
26040// SetTagging sets the Tagging field's value.
26041func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
26042	s.Tagging = &v
26043	return s
26044}
26045
26046// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
26047func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
26048	s.WebsiteRedirectLocation = &v
26049	return s
26050}
26051
26052func (s *PutObjectInput) getEndpointARN() (arn.Resource, error) {
26053	if s.Bucket == nil {
26054		return nil, fmt.Errorf("member Bucket is nil")
26055	}
26056	return parseEndpointARN(*s.Bucket)
26057}
26058
26059func (s *PutObjectInput) hasEndpointARN() bool {
26060	if s.Bucket == nil {
26061		return false
26062	}
26063	return arn.IsARN(*s.Bucket)
26064}
26065
26066type PutObjectLegalHoldInput struct {
26067	_ struct{} `locationName:"PutObjectLegalHoldRequest" type:"structure" payload:"LegalHold"`
26068
26069	// The bucket name containing the object that you want to place a Legal Hold
26070	// on.
26071	//
26072	// When using this API with an access point, you must direct requests to the
26073	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26074	// When using this operation using an access point through the AWS SDKs, you
26075	// provide the access point ARN in place of the bucket name. For more information
26076	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
26077	// in the Amazon Simple Storage Service Developer Guide.
26078	//
26079	// Bucket is a required field
26080	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26081
26082	// The key name for the object that you want to place a Legal Hold on.
26083	//
26084	// Key is a required field
26085	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26086
26087	// Container element for the Legal Hold configuration you want to apply to the
26088	// specified object.
26089	LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26090
26091	// Confirms that the requester knows that they will be charged for the request.
26092	// Bucket owners need not specify this parameter in their requests. For information
26093	// about downloading objects from requester pays buckets, see Downloading Objects
26094	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
26095	// in the Amazon S3 Developer Guide.
26096	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26097
26098	// The version ID of the object that you want to place a Legal Hold on.
26099	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
26100}
26101
26102// String returns the string representation
26103func (s PutObjectLegalHoldInput) String() string {
26104	return awsutil.Prettify(s)
26105}
26106
26107// GoString returns the string representation
26108func (s PutObjectLegalHoldInput) GoString() string {
26109	return s.String()
26110}
26111
26112// Validate inspects the fields of the type to determine if they are valid.
26113func (s *PutObjectLegalHoldInput) Validate() error {
26114	invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"}
26115	if s.Bucket == nil {
26116		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26117	}
26118	if s.Bucket != nil && len(*s.Bucket) < 1 {
26119		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26120	}
26121	if s.Key == nil {
26122		invalidParams.Add(request.NewErrParamRequired("Key"))
26123	}
26124	if s.Key != nil && len(*s.Key) < 1 {
26125		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
26126	}
26127
26128	if invalidParams.Len() > 0 {
26129		return invalidParams
26130	}
26131	return nil
26132}
26133
26134// SetBucket sets the Bucket field's value.
26135func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput {
26136	s.Bucket = &v
26137	return s
26138}
26139
26140func (s *PutObjectLegalHoldInput) getBucket() (v string) {
26141	if s.Bucket == nil {
26142		return v
26143	}
26144	return *s.Bucket
26145}
26146
26147// SetKey sets the Key field's value.
26148func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput {
26149	s.Key = &v
26150	return s
26151}
26152
26153// SetLegalHold sets the LegalHold field's value.
26154func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput {
26155	s.LegalHold = v
26156	return s
26157}
26158
26159// SetRequestPayer sets the RequestPayer field's value.
26160func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput {
26161	s.RequestPayer = &v
26162	return s
26163}
26164
26165// SetVersionId sets the VersionId field's value.
26166func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput {
26167	s.VersionId = &v
26168	return s
26169}
26170
26171func (s *PutObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
26172	if s.Bucket == nil {
26173		return nil, fmt.Errorf("member Bucket is nil")
26174	}
26175	return parseEndpointARN(*s.Bucket)
26176}
26177
26178func (s *PutObjectLegalHoldInput) hasEndpointARN() bool {
26179	if s.Bucket == nil {
26180		return false
26181	}
26182	return arn.IsARN(*s.Bucket)
26183}
26184
26185type PutObjectLegalHoldOutput struct {
26186	_ struct{} `type:"structure"`
26187
26188	// If present, indicates that the requester was successfully charged for the
26189	// request.
26190	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
26191}
26192
26193// String returns the string representation
26194func (s PutObjectLegalHoldOutput) String() string {
26195	return awsutil.Prettify(s)
26196}
26197
26198// GoString returns the string representation
26199func (s PutObjectLegalHoldOutput) GoString() string {
26200	return s.String()
26201}
26202
26203// SetRequestCharged sets the RequestCharged field's value.
26204func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput {
26205	s.RequestCharged = &v
26206	return s
26207}
26208
26209type PutObjectLockConfigurationInput struct {
26210	_ struct{} `locationName:"PutObjectLockConfigurationRequest" type:"structure" payload:"ObjectLockConfiguration"`
26211
26212	// The bucket whose Object Lock configuration you want to create or replace.
26213	//
26214	// Bucket is a required field
26215	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26216
26217	// The Object Lock configuration that you want to apply to the specified bucket.
26218	ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26219
26220	// Confirms that the requester knows that they will be charged for the request.
26221	// Bucket owners need not specify this parameter in their requests. For information
26222	// about downloading objects from requester pays buckets, see Downloading Objects
26223	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
26224	// in the Amazon S3 Developer Guide.
26225	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26226
26227	// A token to allow Object Lock to be enabled for an existing bucket.
26228	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
26229}
26230
26231// String returns the string representation
26232func (s PutObjectLockConfigurationInput) String() string {
26233	return awsutil.Prettify(s)
26234}
26235
26236// GoString returns the string representation
26237func (s PutObjectLockConfigurationInput) GoString() string {
26238	return s.String()
26239}
26240
26241// Validate inspects the fields of the type to determine if they are valid.
26242func (s *PutObjectLockConfigurationInput) Validate() error {
26243	invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"}
26244	if s.Bucket == nil {
26245		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26246	}
26247	if s.Bucket != nil && len(*s.Bucket) < 1 {
26248		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26249	}
26250
26251	if invalidParams.Len() > 0 {
26252		return invalidParams
26253	}
26254	return nil
26255}
26256
26257// SetBucket sets the Bucket field's value.
26258func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput {
26259	s.Bucket = &v
26260	return s
26261}
26262
26263func (s *PutObjectLockConfigurationInput) getBucket() (v string) {
26264	if s.Bucket == nil {
26265		return v
26266	}
26267	return *s.Bucket
26268}
26269
26270// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
26271func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput {
26272	s.ObjectLockConfiguration = v
26273	return s
26274}
26275
26276// SetRequestPayer sets the RequestPayer field's value.
26277func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput {
26278	s.RequestPayer = &v
26279	return s
26280}
26281
26282// SetToken sets the Token field's value.
26283func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput {
26284	s.Token = &v
26285	return s
26286}
26287
26288func (s *PutObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
26289	if s.Bucket == nil {
26290		return nil, fmt.Errorf("member Bucket is nil")
26291	}
26292	return parseEndpointARN(*s.Bucket)
26293}
26294
26295func (s *PutObjectLockConfigurationInput) hasEndpointARN() bool {
26296	if s.Bucket == nil {
26297		return false
26298	}
26299	return arn.IsARN(*s.Bucket)
26300}
26301
26302type PutObjectLockConfigurationOutput struct {
26303	_ struct{} `type:"structure"`
26304
26305	// If present, indicates that the requester was successfully charged for the
26306	// request.
26307	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
26308}
26309
26310// String returns the string representation
26311func (s PutObjectLockConfigurationOutput) String() string {
26312	return awsutil.Prettify(s)
26313}
26314
26315// GoString returns the string representation
26316func (s PutObjectLockConfigurationOutput) GoString() string {
26317	return s.String()
26318}
26319
26320// SetRequestCharged sets the RequestCharged field's value.
26321func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput {
26322	s.RequestCharged = &v
26323	return s
26324}
26325
26326type PutObjectOutput struct {
26327	_ struct{} `type:"structure"`
26328
26329	// Entity tag for the uploaded object.
26330	ETag *string `location:"header" locationName:"ETag" type:"string"`
26331
26332	// If the expiration is configured for the object (see PutBucketLifecycleConfiguration),
26333	// the response includes this header. It includes the expiry-date and rule-id
26334	// key-value pairs that provide information about object expiration. The value
26335	// of the rule-id is URL encoded.
26336	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
26337
26338	// If present, indicates that the requester was successfully charged for the
26339	// request.
26340	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
26341
26342	// If server-side encryption with a customer-provided encryption key was requested,
26343	// the response will include this header confirming the encryption algorithm
26344	// used.
26345	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
26346
26347	// If server-side encryption with a customer-provided encryption key was requested,
26348	// the response will include this header to provide round-trip message integrity
26349	// verification of the customer-provided encryption key.
26350	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
26351
26352	// If present, specifies the AWS KMS Encryption Context to use for object encryption.
26353	// The value of this header is a base64-encoded UTF-8 string holding JSON with
26354	// the encryption context key-value pairs.
26355	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
26356
26357	// If x-amz-server-side-encryption is present and has the value of aws:kms,
26358	// this header specifies the ID of the AWS Key Management Service (AWS KMS)
26359	// symmetric customer managed customer master key (CMK) that was used for the
26360	// object.
26361	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
26362
26363	// If you specified server-side encryption either with an AWS KMS customer master
26364	// key (CMK) or Amazon S3-managed encryption key in your PUT request, the response
26365	// includes this header. It confirms the encryption algorithm that Amazon S3
26366	// used to encrypt the object.
26367	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
26368
26369	// Version of the object.
26370	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
26371}
26372
26373// String returns the string representation
26374func (s PutObjectOutput) String() string {
26375	return awsutil.Prettify(s)
26376}
26377
26378// GoString returns the string representation
26379func (s PutObjectOutput) GoString() string {
26380	return s.String()
26381}
26382
26383// SetETag sets the ETag field's value.
26384func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
26385	s.ETag = &v
26386	return s
26387}
26388
26389// SetExpiration sets the Expiration field's value.
26390func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
26391	s.Expiration = &v
26392	return s
26393}
26394
26395// SetRequestCharged sets the RequestCharged field's value.
26396func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
26397	s.RequestCharged = &v
26398	return s
26399}
26400
26401// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
26402func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
26403	s.SSECustomerAlgorithm = &v
26404	return s
26405}
26406
26407// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
26408func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
26409	s.SSECustomerKeyMD5 = &v
26410	return s
26411}
26412
26413// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
26414func (s *PutObjectOutput) SetSSEKMSEncryptionContext(v string) *PutObjectOutput {
26415	s.SSEKMSEncryptionContext = &v
26416	return s
26417}
26418
26419// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
26420func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
26421	s.SSEKMSKeyId = &v
26422	return s
26423}
26424
26425// SetServerSideEncryption sets the ServerSideEncryption field's value.
26426func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
26427	s.ServerSideEncryption = &v
26428	return s
26429}
26430
26431// SetVersionId sets the VersionId field's value.
26432func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
26433	s.VersionId = &v
26434	return s
26435}
26436
26437type PutObjectRetentionInput struct {
26438	_ struct{} `locationName:"PutObjectRetentionRequest" type:"structure" payload:"Retention"`
26439
26440	// The bucket name that contains the object you want to apply this Object Retention
26441	// configuration to.
26442	//
26443	// When using this API with an access point, you must direct requests to the
26444	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26445	// When using this operation using an access point through the AWS SDKs, you
26446	// provide the access point ARN in place of the bucket name. For more information
26447	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
26448	// in the Amazon Simple Storage Service Developer Guide.
26449	//
26450	// Bucket is a required field
26451	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26452
26453	// Indicates whether this operation should bypass Governance-mode restrictions.
26454	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
26455
26456	// The key name for the object that you want to apply this Object Retention
26457	// configuration to.
26458	//
26459	// Key is a required field
26460	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26461
26462	// Confirms that the requester knows that they will be charged for the request.
26463	// Bucket owners need not specify this parameter in their requests. For information
26464	// about downloading objects from requester pays buckets, see Downloading Objects
26465	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
26466	// in the Amazon S3 Developer Guide.
26467	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26468
26469	// The container element for the Object Retention configuration.
26470	Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26471
26472	// The version ID for the object that you want to apply this Object Retention
26473	// configuration to.
26474	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
26475}
26476
26477// String returns the string representation
26478func (s PutObjectRetentionInput) String() string {
26479	return awsutil.Prettify(s)
26480}
26481
26482// GoString returns the string representation
26483func (s PutObjectRetentionInput) GoString() string {
26484	return s.String()
26485}
26486
26487// Validate inspects the fields of the type to determine if they are valid.
26488func (s *PutObjectRetentionInput) Validate() error {
26489	invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"}
26490	if s.Bucket == nil {
26491		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26492	}
26493	if s.Bucket != nil && len(*s.Bucket) < 1 {
26494		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26495	}
26496	if s.Key == nil {
26497		invalidParams.Add(request.NewErrParamRequired("Key"))
26498	}
26499	if s.Key != nil && len(*s.Key) < 1 {
26500		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
26501	}
26502
26503	if invalidParams.Len() > 0 {
26504		return invalidParams
26505	}
26506	return nil
26507}
26508
26509// SetBucket sets the Bucket field's value.
26510func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput {
26511	s.Bucket = &v
26512	return s
26513}
26514
26515func (s *PutObjectRetentionInput) getBucket() (v string) {
26516	if s.Bucket == nil {
26517		return v
26518	}
26519	return *s.Bucket
26520}
26521
26522// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
26523func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput {
26524	s.BypassGovernanceRetention = &v
26525	return s
26526}
26527
26528// SetKey sets the Key field's value.
26529func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput {
26530	s.Key = &v
26531	return s
26532}
26533
26534// SetRequestPayer sets the RequestPayer field's value.
26535func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput {
26536	s.RequestPayer = &v
26537	return s
26538}
26539
26540// SetRetention sets the Retention field's value.
26541func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput {
26542	s.Retention = v
26543	return s
26544}
26545
26546// SetVersionId sets the VersionId field's value.
26547func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput {
26548	s.VersionId = &v
26549	return s
26550}
26551
26552func (s *PutObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
26553	if s.Bucket == nil {
26554		return nil, fmt.Errorf("member Bucket is nil")
26555	}
26556	return parseEndpointARN(*s.Bucket)
26557}
26558
26559func (s *PutObjectRetentionInput) hasEndpointARN() bool {
26560	if s.Bucket == nil {
26561		return false
26562	}
26563	return arn.IsARN(*s.Bucket)
26564}
26565
26566type PutObjectRetentionOutput struct {
26567	_ struct{} `type:"structure"`
26568
26569	// If present, indicates that the requester was successfully charged for the
26570	// request.
26571	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
26572}
26573
26574// String returns the string representation
26575func (s PutObjectRetentionOutput) String() string {
26576	return awsutil.Prettify(s)
26577}
26578
26579// GoString returns the string representation
26580func (s PutObjectRetentionOutput) GoString() string {
26581	return s.String()
26582}
26583
26584// SetRequestCharged sets the RequestCharged field's value.
26585func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput {
26586	s.RequestCharged = &v
26587	return s
26588}
26589
26590type PutObjectTaggingInput struct {
26591	_ struct{} `locationName:"PutObjectTaggingRequest" type:"structure" payload:"Tagging"`
26592
26593	// The bucket name containing the object.
26594	//
26595	// When using this API with an access point, you must direct requests to the
26596	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26597	// When using this operation using an access point through the AWS SDKs, you
26598	// provide the access point ARN in place of the bucket name. For more information
26599	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
26600	// in the Amazon Simple Storage Service Developer Guide.
26601	//
26602	// Bucket is a required field
26603	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26604
26605	// Name of the tag.
26606	//
26607	// Key is a required field
26608	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26609
26610	// Container for the TagSet and Tag elements
26611	//
26612	// Tagging is a required field
26613	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26614
26615	// The versionId of the object that the tag-set will be added to.
26616	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
26617}
26618
26619// String returns the string representation
26620func (s PutObjectTaggingInput) String() string {
26621	return awsutil.Prettify(s)
26622}
26623
26624// GoString returns the string representation
26625func (s PutObjectTaggingInput) GoString() string {
26626	return s.String()
26627}
26628
26629// Validate inspects the fields of the type to determine if they are valid.
26630func (s *PutObjectTaggingInput) Validate() error {
26631	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
26632	if s.Bucket == nil {
26633		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26634	}
26635	if s.Bucket != nil && len(*s.Bucket) < 1 {
26636		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26637	}
26638	if s.Key == nil {
26639		invalidParams.Add(request.NewErrParamRequired("Key"))
26640	}
26641	if s.Key != nil && len(*s.Key) < 1 {
26642		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
26643	}
26644	if s.Tagging == nil {
26645		invalidParams.Add(request.NewErrParamRequired("Tagging"))
26646	}
26647	if s.Tagging != nil {
26648		if err := s.Tagging.Validate(); err != nil {
26649			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
26650		}
26651	}
26652
26653	if invalidParams.Len() > 0 {
26654		return invalidParams
26655	}
26656	return nil
26657}
26658
26659// SetBucket sets the Bucket field's value.
26660func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
26661	s.Bucket = &v
26662	return s
26663}
26664
26665func (s *PutObjectTaggingInput) getBucket() (v string) {
26666	if s.Bucket == nil {
26667		return v
26668	}
26669	return *s.Bucket
26670}
26671
26672// SetKey sets the Key field's value.
26673func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
26674	s.Key = &v
26675	return s
26676}
26677
26678// SetTagging sets the Tagging field's value.
26679func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
26680	s.Tagging = v
26681	return s
26682}
26683
26684// SetVersionId sets the VersionId field's value.
26685func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
26686	s.VersionId = &v
26687	return s
26688}
26689
26690func (s *PutObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
26691	if s.Bucket == nil {
26692		return nil, fmt.Errorf("member Bucket is nil")
26693	}
26694	return parseEndpointARN(*s.Bucket)
26695}
26696
26697func (s *PutObjectTaggingInput) hasEndpointARN() bool {
26698	if s.Bucket == nil {
26699		return false
26700	}
26701	return arn.IsARN(*s.Bucket)
26702}
26703
26704type PutObjectTaggingOutput struct {
26705	_ struct{} `type:"structure"`
26706
26707	// The versionId of the object the tag-set was added to.
26708	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
26709}
26710
26711// String returns the string representation
26712func (s PutObjectTaggingOutput) String() string {
26713	return awsutil.Prettify(s)
26714}
26715
26716// GoString returns the string representation
26717func (s PutObjectTaggingOutput) GoString() string {
26718	return s.String()
26719}
26720
26721// SetVersionId sets the VersionId field's value.
26722func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
26723	s.VersionId = &v
26724	return s
26725}
26726
26727type PutPublicAccessBlockInput struct {
26728	_ struct{} `locationName:"PutPublicAccessBlockRequest" type:"structure" payload:"PublicAccessBlockConfiguration"`
26729
26730	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
26731	// want to set.
26732	//
26733	// Bucket is a required field
26734	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26735
26736	// The PublicAccessBlock configuration that you want to apply to this Amazon
26737	// S3 bucket. You can enable the configuration options in any combination. For
26738	// more information about when Amazon S3 considers a bucket or object public,
26739	// see The Meaning of "Public" (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html#access-control-block-public-access-policy-status)
26740	// in the Amazon Simple Storage Service Developer Guide.
26741	//
26742	// PublicAccessBlockConfiguration is a required field
26743	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26744}
26745
26746// String returns the string representation
26747func (s PutPublicAccessBlockInput) String() string {
26748	return awsutil.Prettify(s)
26749}
26750
26751// GoString returns the string representation
26752func (s PutPublicAccessBlockInput) GoString() string {
26753	return s.String()
26754}
26755
26756// Validate inspects the fields of the type to determine if they are valid.
26757func (s *PutPublicAccessBlockInput) Validate() error {
26758	invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"}
26759	if s.Bucket == nil {
26760		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26761	}
26762	if s.Bucket != nil && len(*s.Bucket) < 1 {
26763		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26764	}
26765	if s.PublicAccessBlockConfiguration == nil {
26766		invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration"))
26767	}
26768
26769	if invalidParams.Len() > 0 {
26770		return invalidParams
26771	}
26772	return nil
26773}
26774
26775// SetBucket sets the Bucket field's value.
26776func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput {
26777	s.Bucket = &v
26778	return s
26779}
26780
26781func (s *PutPublicAccessBlockInput) getBucket() (v string) {
26782	if s.Bucket == nil {
26783		return v
26784	}
26785	return *s.Bucket
26786}
26787
26788// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
26789func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput {
26790	s.PublicAccessBlockConfiguration = v
26791	return s
26792}
26793
26794func (s *PutPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
26795	if s.Bucket == nil {
26796		return nil, fmt.Errorf("member Bucket is nil")
26797	}
26798	return parseEndpointARN(*s.Bucket)
26799}
26800
26801func (s *PutPublicAccessBlockInput) hasEndpointARN() bool {
26802	if s.Bucket == nil {
26803		return false
26804	}
26805	return arn.IsARN(*s.Bucket)
26806}
26807
26808type PutPublicAccessBlockOutput struct {
26809	_ struct{} `type:"structure"`
26810}
26811
26812// String returns the string representation
26813func (s PutPublicAccessBlockOutput) String() string {
26814	return awsutil.Prettify(s)
26815}
26816
26817// GoString returns the string representation
26818func (s PutPublicAccessBlockOutput) GoString() string {
26819	return s.String()
26820}
26821
26822// Specifies the configuration for publishing messages to an Amazon Simple Queue
26823// Service (Amazon SQS) queue when Amazon S3 detects specified events.
26824type QueueConfiguration struct {
26825	_ struct{} `type:"structure"`
26826
26827	// A collection of bucket events for which to send notifications
26828	//
26829	// Events is a required field
26830	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
26831
26832	// Specifies object key name filtering rules. For information about key name
26833	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
26834	// in the Amazon Simple Storage Service Developer Guide.
26835	Filter *NotificationConfigurationFilter `type:"structure"`
26836
26837	// An optional unique identifier for configurations in a notification configuration.
26838	// If you don't provide one, Amazon S3 will assign an ID.
26839	Id *string `type:"string"`
26840
26841	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
26842	// publishes a message when it detects events of the specified type.
26843	//
26844	// QueueArn is a required field
26845	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
26846}
26847
26848// String returns the string representation
26849func (s QueueConfiguration) String() string {
26850	return awsutil.Prettify(s)
26851}
26852
26853// GoString returns the string representation
26854func (s QueueConfiguration) GoString() string {
26855	return s.String()
26856}
26857
26858// Validate inspects the fields of the type to determine if they are valid.
26859func (s *QueueConfiguration) Validate() error {
26860	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
26861	if s.Events == nil {
26862		invalidParams.Add(request.NewErrParamRequired("Events"))
26863	}
26864	if s.QueueArn == nil {
26865		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
26866	}
26867
26868	if invalidParams.Len() > 0 {
26869		return invalidParams
26870	}
26871	return nil
26872}
26873
26874// SetEvents sets the Events field's value.
26875func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
26876	s.Events = v
26877	return s
26878}
26879
26880// SetFilter sets the Filter field's value.
26881func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
26882	s.Filter = v
26883	return s
26884}
26885
26886// SetId sets the Id field's value.
26887func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
26888	s.Id = &v
26889	return s
26890}
26891
26892// SetQueueArn sets the QueueArn field's value.
26893func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
26894	s.QueueArn = &v
26895	return s
26896}
26897
26898// This data type is deprecated. Use QueueConfiguration for the same purposes.
26899// This data type specifies the configuration for publishing messages to an
26900// Amazon Simple Queue Service (Amazon SQS) queue when Amazon S3 detects specified
26901// events.
26902type QueueConfigurationDeprecated struct {
26903	_ struct{} `type:"structure"`
26904
26905	// The bucket event for which to send notifications.
26906	//
26907	// Deprecated: Event has been deprecated
26908	Event *string `deprecated:"true" type:"string" enum:"Event"`
26909
26910	// A collection of bucket events for which to send notifications
26911	Events []*string `locationName:"Event" type:"list" flattened:"true"`
26912
26913	// An optional unique identifier for configurations in a notification configuration.
26914	// If you don't provide one, Amazon S3 will assign an ID.
26915	Id *string `type:"string"`
26916
26917	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
26918	// publishes a message when it detects events of the specified type.
26919	Queue *string `type:"string"`
26920}
26921
26922// String returns the string representation
26923func (s QueueConfigurationDeprecated) String() string {
26924	return awsutil.Prettify(s)
26925}
26926
26927// GoString returns the string representation
26928func (s QueueConfigurationDeprecated) GoString() string {
26929	return s.String()
26930}
26931
26932// SetEvent sets the Event field's value.
26933func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
26934	s.Event = &v
26935	return s
26936}
26937
26938// SetEvents sets the Events field's value.
26939func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
26940	s.Events = v
26941	return s
26942}
26943
26944// SetId sets the Id field's value.
26945func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
26946	s.Id = &v
26947	return s
26948}
26949
26950// SetQueue sets the Queue field's value.
26951func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
26952	s.Queue = &v
26953	return s
26954}
26955
26956// The container for the records event.
26957type RecordsEvent struct {
26958	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
26959
26960	// The byte array of partial, one or more result records.
26961	//
26962	// Payload is automatically base64 encoded/decoded by the SDK.
26963	Payload []byte `type:"blob"`
26964}
26965
26966// String returns the string representation
26967func (s RecordsEvent) String() string {
26968	return awsutil.Prettify(s)
26969}
26970
26971// GoString returns the string representation
26972func (s RecordsEvent) GoString() string {
26973	return s.String()
26974}
26975
26976// SetPayload sets the Payload field's value.
26977func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
26978	s.Payload = v
26979	return s
26980}
26981
26982// The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
26983func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
26984
26985// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
26986// This method is only used internally within the SDK's EventStream handling.
26987func (s *RecordsEvent) UnmarshalEvent(
26988	payloadUnmarshaler protocol.PayloadUnmarshaler,
26989	msg eventstream.Message,
26990) error {
26991	s.Payload = make([]byte, len(msg.Payload))
26992	copy(s.Payload, msg.Payload)
26993	return nil
26994}
26995
26996// MarshalEvent marshals the type into an stream event value. This method
26997// should only used internally within the SDK's EventStream handling.
26998func (s *RecordsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
26999	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
27000	msg.Headers.Set(":content-type", eventstream.StringValue("application/octet-stream"))
27001	msg.Payload = s.Payload
27002	return msg, err
27003}
27004
27005// Specifies how requests are redirected. In the event of an error, you can
27006// specify a different error code to return.
27007type Redirect struct {
27008	_ struct{} `type:"structure"`
27009
27010	// The host name to use in the redirect request.
27011	HostName *string `type:"string"`
27012
27013	// The HTTP redirect code to use on the response. Not required if one of the
27014	// siblings is present.
27015	HttpRedirectCode *string `type:"string"`
27016
27017	// Protocol to use when redirecting requests. The default is the protocol that
27018	// is used in the original request.
27019	Protocol *string `type:"string" enum:"Protocol"`
27020
27021	// The object key prefix to use in the redirect request. For example, to redirect
27022	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
27023	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
27024	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
27025	// if one of the siblings is present. Can be present only if ReplaceKeyWith
27026	// is not provided.
27027	ReplaceKeyPrefixWith *string `type:"string"`
27028
27029	// The specific object key to use in the redirect request. For example, redirect
27030	// request to error.html. Not required if one of the siblings is present. Can
27031	// be present only if ReplaceKeyPrefixWith is not provided.
27032	ReplaceKeyWith *string `type:"string"`
27033}
27034
27035// String returns the string representation
27036func (s Redirect) String() string {
27037	return awsutil.Prettify(s)
27038}
27039
27040// GoString returns the string representation
27041func (s Redirect) GoString() string {
27042	return s.String()
27043}
27044
27045// SetHostName sets the HostName field's value.
27046func (s *Redirect) SetHostName(v string) *Redirect {
27047	s.HostName = &v
27048	return s
27049}
27050
27051// SetHttpRedirectCode sets the HttpRedirectCode field's value.
27052func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
27053	s.HttpRedirectCode = &v
27054	return s
27055}
27056
27057// SetProtocol sets the Protocol field's value.
27058func (s *Redirect) SetProtocol(v string) *Redirect {
27059	s.Protocol = &v
27060	return s
27061}
27062
27063// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
27064func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
27065	s.ReplaceKeyPrefixWith = &v
27066	return s
27067}
27068
27069// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
27070func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
27071	s.ReplaceKeyWith = &v
27072	return s
27073}
27074
27075// Specifies the redirect behavior of all requests to a website endpoint of
27076// an Amazon S3 bucket.
27077type RedirectAllRequestsTo struct {
27078	_ struct{} `type:"structure"`
27079
27080	// Name of the host where requests are redirected.
27081	//
27082	// HostName is a required field
27083	HostName *string `type:"string" required:"true"`
27084
27085	// Protocol to use when redirecting requests. The default is the protocol that
27086	// is used in the original request.
27087	Protocol *string `type:"string" enum:"Protocol"`
27088}
27089
27090// String returns the string representation
27091func (s RedirectAllRequestsTo) String() string {
27092	return awsutil.Prettify(s)
27093}
27094
27095// GoString returns the string representation
27096func (s RedirectAllRequestsTo) GoString() string {
27097	return s.String()
27098}
27099
27100// Validate inspects the fields of the type to determine if they are valid.
27101func (s *RedirectAllRequestsTo) Validate() error {
27102	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
27103	if s.HostName == nil {
27104		invalidParams.Add(request.NewErrParamRequired("HostName"))
27105	}
27106
27107	if invalidParams.Len() > 0 {
27108		return invalidParams
27109	}
27110	return nil
27111}
27112
27113// SetHostName sets the HostName field's value.
27114func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
27115	s.HostName = &v
27116	return s
27117}
27118
27119// SetProtocol sets the Protocol field's value.
27120func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
27121	s.Protocol = &v
27122	return s
27123}
27124
27125// A container for replication rules. You can add up to 1,000 rules. The maximum
27126// size of a replication configuration is 2 MB.
27127type ReplicationConfiguration struct {
27128	_ struct{} `type:"structure"`
27129
27130	// The Amazon Resource Name (ARN) of the AWS Identity and Access Management
27131	// (IAM) role that Amazon S3 assumes when replicating objects. For more information,
27132	// see How to Set Up Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html)
27133	// in the Amazon Simple Storage Service Developer Guide.
27134	//
27135	// Role is a required field
27136	Role *string `type:"string" required:"true"`
27137
27138	// A container for one or more replication rules. A replication configuration
27139	// must have at least one rule and can contain a maximum of 1,000 rules.
27140	//
27141	// Rules is a required field
27142	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
27143}
27144
27145// String returns the string representation
27146func (s ReplicationConfiguration) String() string {
27147	return awsutil.Prettify(s)
27148}
27149
27150// GoString returns the string representation
27151func (s ReplicationConfiguration) GoString() string {
27152	return s.String()
27153}
27154
27155// Validate inspects the fields of the type to determine if they are valid.
27156func (s *ReplicationConfiguration) Validate() error {
27157	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
27158	if s.Role == nil {
27159		invalidParams.Add(request.NewErrParamRequired("Role"))
27160	}
27161	if s.Rules == nil {
27162		invalidParams.Add(request.NewErrParamRequired("Rules"))
27163	}
27164	if s.Rules != nil {
27165		for i, v := range s.Rules {
27166			if v == nil {
27167				continue
27168			}
27169			if err := v.Validate(); err != nil {
27170				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
27171			}
27172		}
27173	}
27174
27175	if invalidParams.Len() > 0 {
27176		return invalidParams
27177	}
27178	return nil
27179}
27180
27181// SetRole sets the Role field's value.
27182func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
27183	s.Role = &v
27184	return s
27185}
27186
27187// SetRules sets the Rules field's value.
27188func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
27189	s.Rules = v
27190	return s
27191}
27192
27193// Specifies which Amazon S3 objects to replicate and where to store the replicas.
27194type ReplicationRule struct {
27195	_ struct{} `type:"structure"`
27196
27197	// Specifies whether Amazon S3 replicates the delete markers. If you specify
27198	// a Filter, you must specify this element. However, in the latest version of
27199	// replication configuration (when Filter is specified), Amazon S3 doesn't replicate
27200	// delete markers. Therefore, the DeleteMarkerReplication element can contain
27201	// only <Status>Disabled</Status>. For an example configuration, see Basic Rule
27202	// Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
27203	//
27204	// If you don't specify the Filter element, Amazon S3 assumes that the replication
27205	// configuration is the earlier version, V1. In the earlier version, Amazon
27206	// S3 handled replication of delete markers differently. For more information,
27207	// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
27208	DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
27209
27210	// A container for information about the replication destination and its configurations
27211	// including enabling the S3 Replication Time Control (S3 RTC).
27212	//
27213	// Destination is a required field
27214	Destination *Destination `type:"structure" required:"true"`
27215
27216	// Optional configuration to replicate existing source bucket objects. For more
27217	// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
27218	// in the Amazon S3 Developer Guide.
27219	ExistingObjectReplication *ExistingObjectReplication `type:"structure"`
27220
27221	// A filter that identifies the subset of objects to which the replication rule
27222	// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
27223	Filter *ReplicationRuleFilter `type:"structure"`
27224
27225	// A unique identifier for the rule. The maximum value is 255 characters.
27226	ID *string `type:"string"`
27227
27228	// An object key name prefix that identifies the object or objects to which
27229	// the rule applies. The maximum prefix length is 1,024 characters. To include
27230	// all objects in a bucket, specify an empty string.
27231	//
27232	// Deprecated: Prefix has been deprecated
27233	Prefix *string `deprecated:"true" type:"string"`
27234
27235	// The priority associated with the rule. If you specify multiple rules in a
27236	// replication configuration, Amazon S3 prioritizes the rules to prevent conflicts
27237	// when filtering. If two or more rules identify the same object based on a
27238	// specified filter, the rule with higher priority takes precedence. For example:
27239	//
27240	//    * Same object quality prefix-based filter criteria if prefixes you specified
27241	//    in multiple rules overlap
27242	//
27243	//    * Same object qualify tag-based filter criteria specified in multiple
27244	//    rules
27245	//
27246	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
27247	// in the Amazon Simple Storage Service Developer Guide.
27248	Priority *int64 `type:"integer"`
27249
27250	// A container that describes additional filters for identifying the source
27251	// objects that you want to replicate. You can choose to enable or disable the
27252	// replication of these objects. Currently, Amazon S3 supports only the filter
27253	// that you can specify for objects created with server-side encryption using
27254	// a customer master key (CMK) stored in AWS Key Management Service (SSE-KMS).
27255	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
27256
27257	// Specifies whether the rule is enabled.
27258	//
27259	// Status is a required field
27260	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
27261}
27262
27263// String returns the string representation
27264func (s ReplicationRule) String() string {
27265	return awsutil.Prettify(s)
27266}
27267
27268// GoString returns the string representation
27269func (s ReplicationRule) GoString() string {
27270	return s.String()
27271}
27272
27273// Validate inspects the fields of the type to determine if they are valid.
27274func (s *ReplicationRule) Validate() error {
27275	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
27276	if s.Destination == nil {
27277		invalidParams.Add(request.NewErrParamRequired("Destination"))
27278	}
27279	if s.Status == nil {
27280		invalidParams.Add(request.NewErrParamRequired("Status"))
27281	}
27282	if s.Destination != nil {
27283		if err := s.Destination.Validate(); err != nil {
27284			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
27285		}
27286	}
27287	if s.ExistingObjectReplication != nil {
27288		if err := s.ExistingObjectReplication.Validate(); err != nil {
27289			invalidParams.AddNested("ExistingObjectReplication", err.(request.ErrInvalidParams))
27290		}
27291	}
27292	if s.Filter != nil {
27293		if err := s.Filter.Validate(); err != nil {
27294			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
27295		}
27296	}
27297	if s.SourceSelectionCriteria != nil {
27298		if err := s.SourceSelectionCriteria.Validate(); err != nil {
27299			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
27300		}
27301	}
27302
27303	if invalidParams.Len() > 0 {
27304		return invalidParams
27305	}
27306	return nil
27307}
27308
27309// SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value.
27310func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule {
27311	s.DeleteMarkerReplication = v
27312	return s
27313}
27314
27315// SetDestination sets the Destination field's value.
27316func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
27317	s.Destination = v
27318	return s
27319}
27320
27321// SetExistingObjectReplication sets the ExistingObjectReplication field's value.
27322func (s *ReplicationRule) SetExistingObjectReplication(v *ExistingObjectReplication) *ReplicationRule {
27323	s.ExistingObjectReplication = v
27324	return s
27325}
27326
27327// SetFilter sets the Filter field's value.
27328func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule {
27329	s.Filter = v
27330	return s
27331}
27332
27333// SetID sets the ID field's value.
27334func (s *ReplicationRule) SetID(v string) *ReplicationRule {
27335	s.ID = &v
27336	return s
27337}
27338
27339// SetPrefix sets the Prefix field's value.
27340func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
27341	s.Prefix = &v
27342	return s
27343}
27344
27345// SetPriority sets the Priority field's value.
27346func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule {
27347	s.Priority = &v
27348	return s
27349}
27350
27351// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
27352func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
27353	s.SourceSelectionCriteria = v
27354	return s
27355}
27356
27357// SetStatus sets the Status field's value.
27358func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
27359	s.Status = &v
27360	return s
27361}
27362
27363// A container for specifying rule filters. The filters determine the subset
27364// of objects to which the rule applies. This element is required only if you
27365// specify more than one filter.
27366//
27367// For example:
27368//
27369//    * If you specify both a Prefix and a Tag filter, wrap these filters in
27370//    an And tag.
27371//
27372//    * If you specify a filter based on multiple tags, wrap the Tag elements
27373//    in an And tag
27374type ReplicationRuleAndOperator struct {
27375	_ struct{} `type:"structure"`
27376
27377	// An object key name prefix that identifies the subset of objects to which
27378	// the rule applies.
27379	Prefix *string `type:"string"`
27380
27381	// An array of tags containing key and value pairs.
27382	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
27383}
27384
27385// String returns the string representation
27386func (s ReplicationRuleAndOperator) String() string {
27387	return awsutil.Prettify(s)
27388}
27389
27390// GoString returns the string representation
27391func (s ReplicationRuleAndOperator) GoString() string {
27392	return s.String()
27393}
27394
27395// Validate inspects the fields of the type to determine if they are valid.
27396func (s *ReplicationRuleAndOperator) Validate() error {
27397	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"}
27398	if s.Tags != nil {
27399		for i, v := range s.Tags {
27400			if v == nil {
27401				continue
27402			}
27403			if err := v.Validate(); err != nil {
27404				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
27405			}
27406		}
27407	}
27408
27409	if invalidParams.Len() > 0 {
27410		return invalidParams
27411	}
27412	return nil
27413}
27414
27415// SetPrefix sets the Prefix field's value.
27416func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator {
27417	s.Prefix = &v
27418	return s
27419}
27420
27421// SetTags sets the Tags field's value.
27422func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator {
27423	s.Tags = v
27424	return s
27425}
27426
27427// A filter that identifies the subset of objects to which the replication rule
27428// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
27429type ReplicationRuleFilter struct {
27430	_ struct{} `type:"structure"`
27431
27432	// A container for specifying rule filters. The filters determine the subset
27433	// of objects to which the rule applies. This element is required only if you
27434	// specify more than one filter. For example:
27435	//
27436	//    * If you specify both a Prefix and a Tag filter, wrap these filters in
27437	//    an And tag.
27438	//
27439	//    * If you specify a filter based on multiple tags, wrap the Tag elements
27440	//    in an And tag.
27441	And *ReplicationRuleAndOperator `type:"structure"`
27442
27443	// An object key name prefix that identifies the subset of objects to which
27444	// the rule applies.
27445	Prefix *string `type:"string"`
27446
27447	// A container for specifying a tag key and value.
27448	//
27449	// The rule applies only to objects that have the tag in their tag set.
27450	Tag *Tag `type:"structure"`
27451}
27452
27453// String returns the string representation
27454func (s ReplicationRuleFilter) String() string {
27455	return awsutil.Prettify(s)
27456}
27457
27458// GoString returns the string representation
27459func (s ReplicationRuleFilter) GoString() string {
27460	return s.String()
27461}
27462
27463// Validate inspects the fields of the type to determine if they are valid.
27464func (s *ReplicationRuleFilter) Validate() error {
27465	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"}
27466	if s.And != nil {
27467		if err := s.And.Validate(); err != nil {
27468			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
27469		}
27470	}
27471	if s.Tag != nil {
27472		if err := s.Tag.Validate(); err != nil {
27473			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
27474		}
27475	}
27476
27477	if invalidParams.Len() > 0 {
27478		return invalidParams
27479	}
27480	return nil
27481}
27482
27483// SetAnd sets the And field's value.
27484func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter {
27485	s.And = v
27486	return s
27487}
27488
27489// SetPrefix sets the Prefix field's value.
27490func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter {
27491	s.Prefix = &v
27492	return s
27493}
27494
27495// SetTag sets the Tag field's value.
27496func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter {
27497	s.Tag = v
27498	return s
27499}
27500
27501// A container specifying S3 Replication Time Control (S3 RTC) related information,
27502// including whether S3 RTC is enabled and the time when all objects and operations
27503// on objects must be replicated. Must be specified together with a Metrics
27504// block.
27505type ReplicationTime struct {
27506	_ struct{} `type:"structure"`
27507
27508	// Specifies whether the replication time is enabled.
27509	//
27510	// Status is a required field
27511	Status *string `type:"string" required:"true" enum:"ReplicationTimeStatus"`
27512
27513	// A container specifying the time by which replication should be complete for
27514	// all objects and operations on objects.
27515	//
27516	// Time is a required field
27517	Time *ReplicationTimeValue `type:"structure" required:"true"`
27518}
27519
27520// String returns the string representation
27521func (s ReplicationTime) String() string {
27522	return awsutil.Prettify(s)
27523}
27524
27525// GoString returns the string representation
27526func (s ReplicationTime) GoString() string {
27527	return s.String()
27528}
27529
27530// Validate inspects the fields of the type to determine if they are valid.
27531func (s *ReplicationTime) Validate() error {
27532	invalidParams := request.ErrInvalidParams{Context: "ReplicationTime"}
27533	if s.Status == nil {
27534		invalidParams.Add(request.NewErrParamRequired("Status"))
27535	}
27536	if s.Time == nil {
27537		invalidParams.Add(request.NewErrParamRequired("Time"))
27538	}
27539
27540	if invalidParams.Len() > 0 {
27541		return invalidParams
27542	}
27543	return nil
27544}
27545
27546// SetStatus sets the Status field's value.
27547func (s *ReplicationTime) SetStatus(v string) *ReplicationTime {
27548	s.Status = &v
27549	return s
27550}
27551
27552// SetTime sets the Time field's value.
27553func (s *ReplicationTime) SetTime(v *ReplicationTimeValue) *ReplicationTime {
27554	s.Time = v
27555	return s
27556}
27557
27558// A container specifying the time value for S3 Replication Time Control (S3
27559// RTC) and replication metrics EventThreshold.
27560type ReplicationTimeValue struct {
27561	_ struct{} `type:"structure"`
27562
27563	// Contains an integer specifying time in minutes.
27564	//
27565	// Valid values: 15 minutes.
27566	Minutes *int64 `type:"integer"`
27567}
27568
27569// String returns the string representation
27570func (s ReplicationTimeValue) String() string {
27571	return awsutil.Prettify(s)
27572}
27573
27574// GoString returns the string representation
27575func (s ReplicationTimeValue) GoString() string {
27576	return s.String()
27577}
27578
27579// SetMinutes sets the Minutes field's value.
27580func (s *ReplicationTimeValue) SetMinutes(v int64) *ReplicationTimeValue {
27581	s.Minutes = &v
27582	return s
27583}
27584
27585// Container for Payer.
27586type RequestPaymentConfiguration struct {
27587	_ struct{} `type:"structure"`
27588
27589	// Specifies who pays for the download and request fees.
27590	//
27591	// Payer is a required field
27592	Payer *string `type:"string" required:"true" enum:"Payer"`
27593}
27594
27595// String returns the string representation
27596func (s RequestPaymentConfiguration) String() string {
27597	return awsutil.Prettify(s)
27598}
27599
27600// GoString returns the string representation
27601func (s RequestPaymentConfiguration) GoString() string {
27602	return s.String()
27603}
27604
27605// Validate inspects the fields of the type to determine if they are valid.
27606func (s *RequestPaymentConfiguration) Validate() error {
27607	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
27608	if s.Payer == nil {
27609		invalidParams.Add(request.NewErrParamRequired("Payer"))
27610	}
27611
27612	if invalidParams.Len() > 0 {
27613		return invalidParams
27614	}
27615	return nil
27616}
27617
27618// SetPayer sets the Payer field's value.
27619func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
27620	s.Payer = &v
27621	return s
27622}
27623
27624// Container for specifying if periodic QueryProgress messages should be sent.
27625type RequestProgress struct {
27626	_ struct{} `type:"structure"`
27627
27628	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
27629	// TRUE, FALSE. Default value: FALSE.
27630	Enabled *bool `type:"boolean"`
27631}
27632
27633// String returns the string representation
27634func (s RequestProgress) String() string {
27635	return awsutil.Prettify(s)
27636}
27637
27638// GoString returns the string representation
27639func (s RequestProgress) GoString() string {
27640	return s.String()
27641}
27642
27643// SetEnabled sets the Enabled field's value.
27644func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
27645	s.Enabled = &v
27646	return s
27647}
27648
27649type RestoreObjectInput struct {
27650	_ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"`
27651
27652	// The bucket name or containing the object to restore.
27653	//
27654	// When using this API with an access point, you must direct requests to the
27655	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
27656	// When using this operation using an access point through the AWS SDKs, you
27657	// provide the access point ARN in place of the bucket name. For more information
27658	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
27659	// in the Amazon Simple Storage Service Developer Guide.
27660	//
27661	// Bucket is a required field
27662	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
27663
27664	// Object key for which the operation was initiated.
27665	//
27666	// Key is a required field
27667	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
27668
27669	// Confirms that the requester knows that they will be charged for the request.
27670	// Bucket owners need not specify this parameter in their requests. For information
27671	// about downloading objects from requester pays buckets, see Downloading Objects
27672	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
27673	// in the Amazon S3 Developer Guide.
27674	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
27675
27676	// Container for restore job parameters.
27677	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
27678
27679	// VersionId used to reference a specific version of the object.
27680	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
27681}
27682
27683// String returns the string representation
27684func (s RestoreObjectInput) String() string {
27685	return awsutil.Prettify(s)
27686}
27687
27688// GoString returns the string representation
27689func (s RestoreObjectInput) GoString() string {
27690	return s.String()
27691}
27692
27693// Validate inspects the fields of the type to determine if they are valid.
27694func (s *RestoreObjectInput) Validate() error {
27695	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
27696	if s.Bucket == nil {
27697		invalidParams.Add(request.NewErrParamRequired("Bucket"))
27698	}
27699	if s.Bucket != nil && len(*s.Bucket) < 1 {
27700		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
27701	}
27702	if s.Key == nil {
27703		invalidParams.Add(request.NewErrParamRequired("Key"))
27704	}
27705	if s.Key != nil && len(*s.Key) < 1 {
27706		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
27707	}
27708	if s.RestoreRequest != nil {
27709		if err := s.RestoreRequest.Validate(); err != nil {
27710			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
27711		}
27712	}
27713
27714	if invalidParams.Len() > 0 {
27715		return invalidParams
27716	}
27717	return nil
27718}
27719
27720// SetBucket sets the Bucket field's value.
27721func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
27722	s.Bucket = &v
27723	return s
27724}
27725
27726func (s *RestoreObjectInput) getBucket() (v string) {
27727	if s.Bucket == nil {
27728		return v
27729	}
27730	return *s.Bucket
27731}
27732
27733// SetKey sets the Key field's value.
27734func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
27735	s.Key = &v
27736	return s
27737}
27738
27739// SetRequestPayer sets the RequestPayer field's value.
27740func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
27741	s.RequestPayer = &v
27742	return s
27743}
27744
27745// SetRestoreRequest sets the RestoreRequest field's value.
27746func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
27747	s.RestoreRequest = v
27748	return s
27749}
27750
27751// SetVersionId sets the VersionId field's value.
27752func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
27753	s.VersionId = &v
27754	return s
27755}
27756
27757func (s *RestoreObjectInput) getEndpointARN() (arn.Resource, error) {
27758	if s.Bucket == nil {
27759		return nil, fmt.Errorf("member Bucket is nil")
27760	}
27761	return parseEndpointARN(*s.Bucket)
27762}
27763
27764func (s *RestoreObjectInput) hasEndpointARN() bool {
27765	if s.Bucket == nil {
27766		return false
27767	}
27768	return arn.IsARN(*s.Bucket)
27769}
27770
27771type RestoreObjectOutput struct {
27772	_ struct{} `type:"structure"`
27773
27774	// If present, indicates that the requester was successfully charged for the
27775	// request.
27776	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
27777
27778	// Indicates the path in the provided S3 output location where Select results
27779	// will be restored to.
27780	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
27781}
27782
27783// String returns the string representation
27784func (s RestoreObjectOutput) String() string {
27785	return awsutil.Prettify(s)
27786}
27787
27788// GoString returns the string representation
27789func (s RestoreObjectOutput) GoString() string {
27790	return s.String()
27791}
27792
27793// SetRequestCharged sets the RequestCharged field's value.
27794func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
27795	s.RequestCharged = &v
27796	return s
27797}
27798
27799// SetRestoreOutputPath sets the RestoreOutputPath field's value.
27800func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
27801	s.RestoreOutputPath = &v
27802	return s
27803}
27804
27805// Container for restore job parameters.
27806type RestoreRequest struct {
27807	_ struct{} `type:"structure"`
27808
27809	// Lifetime of the active copy in days. Do not use with restores that specify
27810	// OutputLocation.
27811	Days *int64 `type:"integer"`
27812
27813	// The optional description for the job.
27814	Description *string `type:"string"`
27815
27816	// S3 Glacier related parameters pertaining to this job. Do not use with restores
27817	// that specify OutputLocation.
27818	GlacierJobParameters *GlacierJobParameters `type:"structure"`
27819
27820	// Describes the location where the restore job's output is stored.
27821	OutputLocation *OutputLocation `type:"structure"`
27822
27823	// Describes the parameters for Select job types.
27824	SelectParameters *SelectParameters `type:"structure"`
27825
27826	// S3 Glacier retrieval tier at which the restore will be processed.
27827	Tier *string `type:"string" enum:"Tier"`
27828
27829	// Type of restore request.
27830	Type *string `type:"string" enum:"RestoreRequestType"`
27831}
27832
27833// String returns the string representation
27834func (s RestoreRequest) String() string {
27835	return awsutil.Prettify(s)
27836}
27837
27838// GoString returns the string representation
27839func (s RestoreRequest) GoString() string {
27840	return s.String()
27841}
27842
27843// Validate inspects the fields of the type to determine if they are valid.
27844func (s *RestoreRequest) Validate() error {
27845	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
27846	if s.GlacierJobParameters != nil {
27847		if err := s.GlacierJobParameters.Validate(); err != nil {
27848			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
27849		}
27850	}
27851	if s.OutputLocation != nil {
27852		if err := s.OutputLocation.Validate(); err != nil {
27853			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
27854		}
27855	}
27856	if s.SelectParameters != nil {
27857		if err := s.SelectParameters.Validate(); err != nil {
27858			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
27859		}
27860	}
27861
27862	if invalidParams.Len() > 0 {
27863		return invalidParams
27864	}
27865	return nil
27866}
27867
27868// SetDays sets the Days field's value.
27869func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
27870	s.Days = &v
27871	return s
27872}
27873
27874// SetDescription sets the Description field's value.
27875func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
27876	s.Description = &v
27877	return s
27878}
27879
27880// SetGlacierJobParameters sets the GlacierJobParameters field's value.
27881func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
27882	s.GlacierJobParameters = v
27883	return s
27884}
27885
27886// SetOutputLocation sets the OutputLocation field's value.
27887func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
27888	s.OutputLocation = v
27889	return s
27890}
27891
27892// SetSelectParameters sets the SelectParameters field's value.
27893func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
27894	s.SelectParameters = v
27895	return s
27896}
27897
27898// SetTier sets the Tier field's value.
27899func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
27900	s.Tier = &v
27901	return s
27902}
27903
27904// SetType sets the Type field's value.
27905func (s *RestoreRequest) SetType(v string) *RestoreRequest {
27906	s.Type = &v
27907	return s
27908}
27909
27910// Specifies the redirect behavior and when a redirect is applied.
27911type RoutingRule struct {
27912	_ struct{} `type:"structure"`
27913
27914	// A container for describing a condition that must be met for the specified
27915	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
27916	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
27917	// redirect request to another host where you might process the error.
27918	Condition *Condition `type:"structure"`
27919
27920	// Container for redirect information. You can redirect requests to another
27921	// host, to another page, or with another protocol. In the event of an error,
27922	// you can specify a different error code to return.
27923	//
27924	// Redirect is a required field
27925	Redirect *Redirect `type:"structure" required:"true"`
27926}
27927
27928// String returns the string representation
27929func (s RoutingRule) String() string {
27930	return awsutil.Prettify(s)
27931}
27932
27933// GoString returns the string representation
27934func (s RoutingRule) GoString() string {
27935	return s.String()
27936}
27937
27938// Validate inspects the fields of the type to determine if they are valid.
27939func (s *RoutingRule) Validate() error {
27940	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
27941	if s.Redirect == nil {
27942		invalidParams.Add(request.NewErrParamRequired("Redirect"))
27943	}
27944
27945	if invalidParams.Len() > 0 {
27946		return invalidParams
27947	}
27948	return nil
27949}
27950
27951// SetCondition sets the Condition field's value.
27952func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
27953	s.Condition = v
27954	return s
27955}
27956
27957// SetRedirect sets the Redirect field's value.
27958func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
27959	s.Redirect = v
27960	return s
27961}
27962
27963// Specifies lifecycle rules for an Amazon S3 bucket. For more information,
27964// see Put Bucket Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)
27965// in the Amazon Simple Storage Service API Reference. For examples, see Put
27966// Bucket Lifecycle Configuration Examples (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples)
27967type Rule struct {
27968	_ struct{} `type:"structure"`
27969
27970	// Specifies the days since the initiation of an incomplete multipart upload
27971	// that Amazon S3 will wait before permanently removing all parts of the upload.
27972	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
27973	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
27974	// in the Amazon Simple Storage Service Developer Guide.
27975	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
27976
27977	// Specifies the expiration for the lifecycle of the object.
27978	Expiration *LifecycleExpiration `type:"structure"`
27979
27980	// Unique identifier for the rule. The value can't be longer than 255 characters.
27981	ID *string `type:"string"`
27982
27983	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
27984	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
27985	// configuration action on a bucket that has versioning enabled (or suspended)
27986	// to request that Amazon S3 delete noncurrent object versions at a specific
27987	// period in the object's lifetime.
27988	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
27989
27990	// Container for the transition rule that describes when noncurrent objects
27991	// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
27992	// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
27993	// is suspended), you can set this action to request that Amazon S3 transition
27994	// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
27995	// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
27996	// lifetime.
27997	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
27998
27999	// Object key prefix that identifies one or more objects to which this rule
28000	// applies.
28001	//
28002	// Prefix is a required field
28003	Prefix *string `type:"string" required:"true"`
28004
28005	// If Enabled, the rule is currently being applied. If Disabled, the rule is
28006	// not currently being applied.
28007	//
28008	// Status is a required field
28009	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
28010
28011	// Specifies when an object transitions to a specified storage class. For more
28012	// information about Amazon S3 lifecycle configuration rules, see Transitioning
28013	// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
28014	// in the Amazon Simple Storage Service Developer Guide.
28015	Transition *Transition `type:"structure"`
28016}
28017
28018// String returns the string representation
28019func (s Rule) String() string {
28020	return awsutil.Prettify(s)
28021}
28022
28023// GoString returns the string representation
28024func (s Rule) GoString() string {
28025	return s.String()
28026}
28027
28028// Validate inspects the fields of the type to determine if they are valid.
28029func (s *Rule) Validate() error {
28030	invalidParams := request.ErrInvalidParams{Context: "Rule"}
28031	if s.Prefix == nil {
28032		invalidParams.Add(request.NewErrParamRequired("Prefix"))
28033	}
28034	if s.Status == nil {
28035		invalidParams.Add(request.NewErrParamRequired("Status"))
28036	}
28037
28038	if invalidParams.Len() > 0 {
28039		return invalidParams
28040	}
28041	return nil
28042}
28043
28044// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
28045func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
28046	s.AbortIncompleteMultipartUpload = v
28047	return s
28048}
28049
28050// SetExpiration sets the Expiration field's value.
28051func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
28052	s.Expiration = v
28053	return s
28054}
28055
28056// SetID sets the ID field's value.
28057func (s *Rule) SetID(v string) *Rule {
28058	s.ID = &v
28059	return s
28060}
28061
28062// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
28063func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
28064	s.NoncurrentVersionExpiration = v
28065	return s
28066}
28067
28068// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
28069func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
28070	s.NoncurrentVersionTransition = v
28071	return s
28072}
28073
28074// SetPrefix sets the Prefix field's value.
28075func (s *Rule) SetPrefix(v string) *Rule {
28076	s.Prefix = &v
28077	return s
28078}
28079
28080// SetStatus sets the Status field's value.
28081func (s *Rule) SetStatus(v string) *Rule {
28082	s.Status = &v
28083	return s
28084}
28085
28086// SetTransition sets the Transition field's value.
28087func (s *Rule) SetTransition(v *Transition) *Rule {
28088	s.Transition = v
28089	return s
28090}
28091
28092// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
28093type SSEKMS struct {
28094	_ struct{} `locationName:"SSE-KMS" type:"structure"`
28095
28096	// Specifies the ID of the AWS Key Management Service (AWS KMS) symmetric customer
28097	// managed customer master key (CMK) to use for encrypting inventory reports.
28098	//
28099	// KeyId is a required field
28100	KeyId *string `type:"string" required:"true" sensitive:"true"`
28101}
28102
28103// String returns the string representation
28104func (s SSEKMS) String() string {
28105	return awsutil.Prettify(s)
28106}
28107
28108// GoString returns the string representation
28109func (s SSEKMS) GoString() string {
28110	return s.String()
28111}
28112
28113// Validate inspects the fields of the type to determine if they are valid.
28114func (s *SSEKMS) Validate() error {
28115	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
28116	if s.KeyId == nil {
28117		invalidParams.Add(request.NewErrParamRequired("KeyId"))
28118	}
28119
28120	if invalidParams.Len() > 0 {
28121		return invalidParams
28122	}
28123	return nil
28124}
28125
28126// SetKeyId sets the KeyId field's value.
28127func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
28128	s.KeyId = &v
28129	return s
28130}
28131
28132// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
28133type SSES3 struct {
28134	_ struct{} `locationName:"SSE-S3" type:"structure"`
28135}
28136
28137// String returns the string representation
28138func (s SSES3) String() string {
28139	return awsutil.Prettify(s)
28140}
28141
28142// GoString returns the string representation
28143func (s SSES3) GoString() string {
28144	return s.String()
28145}
28146
28147// Specifies the byte range of the object to get the records from. A record
28148// is processed when its first byte is contained by the range. This parameter
28149// is optional, but when specified, it must not be empty. See RFC 2616, Section
28150// 14.35.1 about how to specify the start and end of the range.
28151type ScanRange struct {
28152	_ struct{} `type:"structure"`
28153
28154	// Specifies the end of the byte range. This parameter is optional. Valid values:
28155	// non-negative integers. The default value is one less than the size of the
28156	// object being queried. If only the End parameter is supplied, it is interpreted
28157	// to mean scan the last N bytes of the file. For example, <scanrange><end>50</end></scanrange>
28158	// means scan the last 50 bytes.
28159	End *int64 `type:"long"`
28160
28161	// Specifies the start of the byte range. This parameter is optional. Valid
28162	// values: non-negative integers. The default value is 0. If only start is supplied,
28163	// it means scan from that point to the end of the file.For example; <scanrange><start>50</start></scanrange>
28164	// means scan from byte 50 until the end of the file.
28165	Start *int64 `type:"long"`
28166}
28167
28168// String returns the string representation
28169func (s ScanRange) String() string {
28170	return awsutil.Prettify(s)
28171}
28172
28173// GoString returns the string representation
28174func (s ScanRange) GoString() string {
28175	return s.String()
28176}
28177
28178// SetEnd sets the End field's value.
28179func (s *ScanRange) SetEnd(v int64) *ScanRange {
28180	s.End = &v
28181	return s
28182}
28183
28184// SetStart sets the Start field's value.
28185func (s *ScanRange) SetStart(v int64) *ScanRange {
28186	s.Start = &v
28187	return s
28188}
28189
28190// SelectObjectContentEventStreamEvent groups together all EventStream
28191// events writes for SelectObjectContentEventStream.
28192//
28193// These events are:
28194//
28195//     * ContinuationEvent
28196//     * EndEvent
28197//     * ProgressEvent
28198//     * RecordsEvent
28199//     * StatsEvent
28200type SelectObjectContentEventStreamEvent interface {
28201	eventSelectObjectContentEventStream()
28202	eventstreamapi.Marshaler
28203	eventstreamapi.Unmarshaler
28204}
28205
28206// SelectObjectContentEventStreamReader provides the interface for reading to the stream. The
28207// default implementation for this interface will be SelectObjectContentEventStreamData.
28208//
28209// The reader's Close method must allow multiple concurrent calls.
28210//
28211// These events are:
28212//
28213//     * ContinuationEvent
28214//     * EndEvent
28215//     * ProgressEvent
28216//     * RecordsEvent
28217//     * StatsEvent
28218//     * SelectObjectContentEventStreamUnknownEvent
28219type SelectObjectContentEventStreamReader interface {
28220	// Returns a channel of events as they are read from the event stream.
28221	Events() <-chan SelectObjectContentEventStreamEvent
28222
28223	// Close will stop the reader reading events from the stream.
28224	Close() error
28225
28226	// Returns any error that has occurred while reading from the event stream.
28227	Err() error
28228}
28229
28230type readSelectObjectContentEventStream struct {
28231	eventReader *eventstreamapi.EventReader
28232	stream      chan SelectObjectContentEventStreamEvent
28233	err         *eventstreamapi.OnceError
28234
28235	done      chan struct{}
28236	closeOnce sync.Once
28237}
28238
28239func newReadSelectObjectContentEventStream(eventReader *eventstreamapi.EventReader) *readSelectObjectContentEventStream {
28240	r := &readSelectObjectContentEventStream{
28241		eventReader: eventReader,
28242		stream:      make(chan SelectObjectContentEventStreamEvent),
28243		done:        make(chan struct{}),
28244		err:         eventstreamapi.NewOnceError(),
28245	}
28246	go r.readEventStream()
28247
28248	return r
28249}
28250
28251// Close will close the underlying event stream reader.
28252func (r *readSelectObjectContentEventStream) Close() error {
28253	r.closeOnce.Do(r.safeClose)
28254	return r.Err()
28255}
28256
28257func (r *readSelectObjectContentEventStream) ErrorSet() <-chan struct{} {
28258	return r.err.ErrorSet()
28259}
28260
28261func (r *readSelectObjectContentEventStream) Closed() <-chan struct{} {
28262	return r.done
28263}
28264
28265func (r *readSelectObjectContentEventStream) safeClose() {
28266	close(r.done)
28267}
28268
28269func (r *readSelectObjectContentEventStream) Err() error {
28270	return r.err.Err()
28271}
28272
28273func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
28274	return r.stream
28275}
28276
28277func (r *readSelectObjectContentEventStream) readEventStream() {
28278	defer r.Close()
28279	defer close(r.stream)
28280
28281	for {
28282		event, err := r.eventReader.ReadEvent()
28283		if err != nil {
28284			if err == io.EOF {
28285				return
28286			}
28287			select {
28288			case <-r.done:
28289				// If closed already ignore the error
28290				return
28291			default:
28292			}
28293			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
28294				continue
28295			}
28296			r.err.SetError(err)
28297			return
28298		}
28299
28300		select {
28301		case r.stream <- event.(SelectObjectContentEventStreamEvent):
28302		case <-r.done:
28303			return
28304		}
28305	}
28306}
28307
28308type unmarshalerForSelectObjectContentEventStreamEvent struct {
28309	metadata protocol.ResponseMetadata
28310}
28311
28312func (u unmarshalerForSelectObjectContentEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
28313	switch eventType {
28314	case "Cont":
28315		return &ContinuationEvent{}, nil
28316	case "End":
28317		return &EndEvent{}, nil
28318	case "Progress":
28319		return &ProgressEvent{}, nil
28320	case "Records":
28321		return &RecordsEvent{}, nil
28322	case "Stats":
28323		return &StatsEvent{}, nil
28324	default:
28325		return &SelectObjectContentEventStreamUnknownEvent{Type: eventType}, nil
28326	}
28327}
28328
28329// SelectObjectContentEventStreamUnknownEvent provides a failsafe event for the
28330// SelectObjectContentEventStream group of events when an unknown event is received.
28331type SelectObjectContentEventStreamUnknownEvent struct {
28332	Type    string
28333	Message eventstream.Message
28334}
28335
28336// The SelectObjectContentEventStreamUnknownEvent is and event in the SelectObjectContentEventStream
28337// group of events.
28338func (s *SelectObjectContentEventStreamUnknownEvent) eventSelectObjectContentEventStream() {}
28339
28340// MarshalEvent marshals the type into an stream event value. This method
28341// should only used internally within the SDK's EventStream handling.
28342func (e *SelectObjectContentEventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
28343	msg eventstream.Message, err error,
28344) {
28345	return e.Message.Clone(), nil
28346}
28347
28348// UnmarshalEvent unmarshals the EventStream Message into the SelectObjectContentEventStreamData value.
28349// This method is only used internally within the SDK's EventStream handling.
28350func (e *SelectObjectContentEventStreamUnknownEvent) UnmarshalEvent(
28351	payloadUnmarshaler protocol.PayloadUnmarshaler,
28352	msg eventstream.Message,
28353) error {
28354	e.Message = msg.Clone()
28355	return nil
28356}
28357
28358// Request to filter the contents of an Amazon S3 object based on a simple Structured
28359// Query Language (SQL) statement. In the request, along with the SQL expression,
28360// you must specify a data serialization format (JSON or CSV) of the object.
28361// Amazon S3 uses this to parse object data into records. It returns only records
28362// that match the specified SQL expression. You must also specify the data serialization
28363// format for the response. For more information, see S3Select API Documentation
28364// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
28365type SelectObjectContentInput struct {
28366	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
28367
28368	// The S3 bucket.
28369	//
28370	// Bucket is a required field
28371	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
28372
28373	// The expression that is used to query the object.
28374	//
28375	// Expression is a required field
28376	Expression *string `type:"string" required:"true"`
28377
28378	// The type of the provided expression (for example, SQL).
28379	//
28380	// ExpressionType is a required field
28381	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
28382
28383	// Describes the format of the data in the object that is being queried.
28384	//
28385	// InputSerialization is a required field
28386	InputSerialization *InputSerialization `type:"structure" required:"true"`
28387
28388	// The object key.
28389	//
28390	// Key is a required field
28391	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
28392
28393	// Describes the format of the data that you want Amazon S3 to return in response.
28394	//
28395	// OutputSerialization is a required field
28396	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
28397
28398	// Specifies if periodic request progress information should be enabled.
28399	RequestProgress *RequestProgress `type:"structure"`
28400
28401	// The SSE Algorithm used to encrypt the object. For more information, see Server-Side
28402	// Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
28403	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
28404
28405	// The SSE Customer Key. For more information, see Server-Side Encryption (Using
28406	// Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
28407	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
28408
28409	// The SSE Customer Key MD5. For more information, see Server-Side Encryption
28410	// (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
28411	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
28412
28413	// Specifies the byte range of the object to get the records from. A record
28414	// is processed when its first byte is contained by the range. This parameter
28415	// is optional, but when specified, it must not be empty. See RFC 2616, Section
28416	// 14.35.1 about how to specify the start and end of the range.
28417	//
28418	// ScanRangemay be used in the following ways:
28419	//
28420	//    * <scanrange><start>50</start><end>100</end></scanrange> - process only
28421	//    the records starting between the bytes 50 and 100 (inclusive, counting
28422	//    from zero)
28423	//
28424	//    * <scanrange><start>50</start></scanrange> - process only the records
28425	//    starting after the byte 50
28426	//
28427	//    * <scanrange><end>50</end></scanrange> - process only the records within
28428	//    the last 50 bytes of the file.
28429	ScanRange *ScanRange `type:"structure"`
28430}
28431
28432// String returns the string representation
28433func (s SelectObjectContentInput) String() string {
28434	return awsutil.Prettify(s)
28435}
28436
28437// GoString returns the string representation
28438func (s SelectObjectContentInput) GoString() string {
28439	return s.String()
28440}
28441
28442// Validate inspects the fields of the type to determine if they are valid.
28443func (s *SelectObjectContentInput) Validate() error {
28444	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
28445	if s.Bucket == nil {
28446		invalidParams.Add(request.NewErrParamRequired("Bucket"))
28447	}
28448	if s.Bucket != nil && len(*s.Bucket) < 1 {
28449		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
28450	}
28451	if s.Expression == nil {
28452		invalidParams.Add(request.NewErrParamRequired("Expression"))
28453	}
28454	if s.ExpressionType == nil {
28455		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
28456	}
28457	if s.InputSerialization == nil {
28458		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
28459	}
28460	if s.Key == nil {
28461		invalidParams.Add(request.NewErrParamRequired("Key"))
28462	}
28463	if s.Key != nil && len(*s.Key) < 1 {
28464		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
28465	}
28466	if s.OutputSerialization == nil {
28467		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
28468	}
28469
28470	if invalidParams.Len() > 0 {
28471		return invalidParams
28472	}
28473	return nil
28474}
28475
28476// SetBucket sets the Bucket field's value.
28477func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
28478	s.Bucket = &v
28479	return s
28480}
28481
28482func (s *SelectObjectContentInput) getBucket() (v string) {
28483	if s.Bucket == nil {
28484		return v
28485	}
28486	return *s.Bucket
28487}
28488
28489// SetExpression sets the Expression field's value.
28490func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
28491	s.Expression = &v
28492	return s
28493}
28494
28495// SetExpressionType sets the ExpressionType field's value.
28496func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
28497	s.ExpressionType = &v
28498	return s
28499}
28500
28501// SetInputSerialization sets the InputSerialization field's value.
28502func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
28503	s.InputSerialization = v
28504	return s
28505}
28506
28507// SetKey sets the Key field's value.
28508func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
28509	s.Key = &v
28510	return s
28511}
28512
28513// SetOutputSerialization sets the OutputSerialization field's value.
28514func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
28515	s.OutputSerialization = v
28516	return s
28517}
28518
28519// SetRequestProgress sets the RequestProgress field's value.
28520func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
28521	s.RequestProgress = v
28522	return s
28523}
28524
28525// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
28526func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
28527	s.SSECustomerAlgorithm = &v
28528	return s
28529}
28530
28531// SetSSECustomerKey sets the SSECustomerKey field's value.
28532func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
28533	s.SSECustomerKey = &v
28534	return s
28535}
28536
28537func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
28538	if s.SSECustomerKey == nil {
28539		return v
28540	}
28541	return *s.SSECustomerKey
28542}
28543
28544// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
28545func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
28546	s.SSECustomerKeyMD5 = &v
28547	return s
28548}
28549
28550// SetScanRange sets the ScanRange field's value.
28551func (s *SelectObjectContentInput) SetScanRange(v *ScanRange) *SelectObjectContentInput {
28552	s.ScanRange = v
28553	return s
28554}
28555
28556func (s *SelectObjectContentInput) getEndpointARN() (arn.Resource, error) {
28557	if s.Bucket == nil {
28558		return nil, fmt.Errorf("member Bucket is nil")
28559	}
28560	return parseEndpointARN(*s.Bucket)
28561}
28562
28563func (s *SelectObjectContentInput) hasEndpointARN() bool {
28564	if s.Bucket == nil {
28565		return false
28566	}
28567	return arn.IsARN(*s.Bucket)
28568}
28569
28570type SelectObjectContentOutput struct {
28571	_ struct{} `type:"structure" payload:"Payload"`
28572
28573	EventStream *SelectObjectContentEventStream
28574}
28575
28576// String returns the string representation
28577func (s SelectObjectContentOutput) String() string {
28578	return awsutil.Prettify(s)
28579}
28580
28581// GoString returns the string representation
28582func (s SelectObjectContentOutput) GoString() string {
28583	return s.String()
28584}
28585
28586func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
28587	s.EventStream = v
28588	return s
28589}
28590func (s *SelectObjectContentOutput) GetEventStream() *SelectObjectContentEventStream {
28591	return s.EventStream
28592}
28593
28594// GetStream returns the type to interact with the event stream.
28595func (s *SelectObjectContentOutput) GetStream() *SelectObjectContentEventStream {
28596	return s.EventStream
28597}
28598
28599// Describes the parameters for Select job types.
28600type SelectParameters struct {
28601	_ struct{} `type:"structure"`
28602
28603	// The expression that is used to query the object.
28604	//
28605	// Expression is a required field
28606	Expression *string `type:"string" required:"true"`
28607
28608	// The type of the provided expression (for example, SQL).
28609	//
28610	// ExpressionType is a required field
28611	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
28612
28613	// Describes the serialization format of the object.
28614	//
28615	// InputSerialization is a required field
28616	InputSerialization *InputSerialization `type:"structure" required:"true"`
28617
28618	// Describes how the results of the Select job are serialized.
28619	//
28620	// OutputSerialization is a required field
28621	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
28622}
28623
28624// String returns the string representation
28625func (s SelectParameters) String() string {
28626	return awsutil.Prettify(s)
28627}
28628
28629// GoString returns the string representation
28630func (s SelectParameters) GoString() string {
28631	return s.String()
28632}
28633
28634// Validate inspects the fields of the type to determine if they are valid.
28635func (s *SelectParameters) Validate() error {
28636	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
28637	if s.Expression == nil {
28638		invalidParams.Add(request.NewErrParamRequired("Expression"))
28639	}
28640	if s.ExpressionType == nil {
28641		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
28642	}
28643	if s.InputSerialization == nil {
28644		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
28645	}
28646	if s.OutputSerialization == nil {
28647		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
28648	}
28649
28650	if invalidParams.Len() > 0 {
28651		return invalidParams
28652	}
28653	return nil
28654}
28655
28656// SetExpression sets the Expression field's value.
28657func (s *SelectParameters) SetExpression(v string) *SelectParameters {
28658	s.Expression = &v
28659	return s
28660}
28661
28662// SetExpressionType sets the ExpressionType field's value.
28663func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
28664	s.ExpressionType = &v
28665	return s
28666}
28667
28668// SetInputSerialization sets the InputSerialization field's value.
28669func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
28670	s.InputSerialization = v
28671	return s
28672}
28673
28674// SetOutputSerialization sets the OutputSerialization field's value.
28675func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
28676	s.OutputSerialization = v
28677	return s
28678}
28679
28680// Describes the default server-side encryption to apply to new objects in the
28681// bucket. If a PUT Object request doesn't specify any server-side encryption,
28682// this default encryption will be applied. For more information, see PUT Bucket
28683// encryption (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)
28684// in the Amazon Simple Storage Service API Reference.
28685type ServerSideEncryptionByDefault struct {
28686	_ struct{} `type:"structure"`
28687
28688	// AWS Key Management Service (KMS) customer master key ID to use for the default
28689	// encryption. This parameter is allowed if and only if SSEAlgorithm is set
28690	// to aws:kms.
28691	//
28692	// You can specify the key ID or the Amazon Resource Name (ARN) of the CMK.
28693	// However, if you are using encryption with cross-account operations, you must
28694	// use a fully qualified CMK ARN. For more information, see Using encryption
28695	// for cross-account operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).
28696	//
28697	// For example:
28698	//
28699	//    * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
28700	//
28701	//    * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
28702	//
28703	// Amazon S3 only supports symmetric CMKs and not asymmetric CMKs. For more
28704	// information, see Using Symmetric and Asymmetric Keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
28705	// in the AWS Key Management Service Developer Guide.
28706	KMSMasterKeyID *string `type:"string" sensitive:"true"`
28707
28708	// Server-side encryption algorithm to use for the default encryption.
28709	//
28710	// SSEAlgorithm is a required field
28711	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
28712}
28713
28714// String returns the string representation
28715func (s ServerSideEncryptionByDefault) String() string {
28716	return awsutil.Prettify(s)
28717}
28718
28719// GoString returns the string representation
28720func (s ServerSideEncryptionByDefault) GoString() string {
28721	return s.String()
28722}
28723
28724// Validate inspects the fields of the type to determine if they are valid.
28725func (s *ServerSideEncryptionByDefault) Validate() error {
28726	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
28727	if s.SSEAlgorithm == nil {
28728		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
28729	}
28730
28731	if invalidParams.Len() > 0 {
28732		return invalidParams
28733	}
28734	return nil
28735}
28736
28737// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
28738func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
28739	s.KMSMasterKeyID = &v
28740	return s
28741}
28742
28743// SetSSEAlgorithm sets the SSEAlgorithm field's value.
28744func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
28745	s.SSEAlgorithm = &v
28746	return s
28747}
28748
28749// Specifies the default server-side-encryption configuration.
28750type ServerSideEncryptionConfiguration struct {
28751	_ struct{} `type:"structure"`
28752
28753	// Container for information about a particular server-side encryption configuration
28754	// rule.
28755	//
28756	// Rules is a required field
28757	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
28758}
28759
28760// String returns the string representation
28761func (s ServerSideEncryptionConfiguration) String() string {
28762	return awsutil.Prettify(s)
28763}
28764
28765// GoString returns the string representation
28766func (s ServerSideEncryptionConfiguration) GoString() string {
28767	return s.String()
28768}
28769
28770// Validate inspects the fields of the type to determine if they are valid.
28771func (s *ServerSideEncryptionConfiguration) Validate() error {
28772	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
28773	if s.Rules == nil {
28774		invalidParams.Add(request.NewErrParamRequired("Rules"))
28775	}
28776	if s.Rules != nil {
28777		for i, v := range s.Rules {
28778			if v == nil {
28779				continue
28780			}
28781			if err := v.Validate(); err != nil {
28782				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
28783			}
28784		}
28785	}
28786
28787	if invalidParams.Len() > 0 {
28788		return invalidParams
28789	}
28790	return nil
28791}
28792
28793// SetRules sets the Rules field's value.
28794func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
28795	s.Rules = v
28796	return s
28797}
28798
28799// Specifies the default server-side encryption configuration.
28800type ServerSideEncryptionRule struct {
28801	_ struct{} `type:"structure"`
28802
28803	// Specifies the default server-side encryption to apply to new objects in the
28804	// bucket. If a PUT Object request doesn't specify any server-side encryption,
28805	// this default encryption will be applied.
28806	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
28807}
28808
28809// String returns the string representation
28810func (s ServerSideEncryptionRule) String() string {
28811	return awsutil.Prettify(s)
28812}
28813
28814// GoString returns the string representation
28815func (s ServerSideEncryptionRule) GoString() string {
28816	return s.String()
28817}
28818
28819// Validate inspects the fields of the type to determine if they are valid.
28820func (s *ServerSideEncryptionRule) Validate() error {
28821	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
28822	if s.ApplyServerSideEncryptionByDefault != nil {
28823		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
28824			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
28825		}
28826	}
28827
28828	if invalidParams.Len() > 0 {
28829		return invalidParams
28830	}
28831	return nil
28832}
28833
28834// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
28835func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
28836	s.ApplyServerSideEncryptionByDefault = v
28837	return s
28838}
28839
28840// A container that describes additional filters for identifying the source
28841// objects that you want to replicate. You can choose to enable or disable the
28842// replication of these objects. Currently, Amazon S3 supports only the filter
28843// that you can specify for objects created with server-side encryption using
28844// a customer master key (CMK) stored in AWS Key Management Service (SSE-KMS).
28845type SourceSelectionCriteria struct {
28846	_ struct{} `type:"structure"`
28847
28848	// A container for filter information for the selection of Amazon S3 objects
28849	// encrypted with AWS KMS. If you include SourceSelectionCriteria in the replication
28850	// configuration, this element is required.
28851	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
28852}
28853
28854// String returns the string representation
28855func (s SourceSelectionCriteria) String() string {
28856	return awsutil.Prettify(s)
28857}
28858
28859// GoString returns the string representation
28860func (s SourceSelectionCriteria) GoString() string {
28861	return s.String()
28862}
28863
28864// Validate inspects the fields of the type to determine if they are valid.
28865func (s *SourceSelectionCriteria) Validate() error {
28866	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
28867	if s.SseKmsEncryptedObjects != nil {
28868		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
28869			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
28870		}
28871	}
28872
28873	if invalidParams.Len() > 0 {
28874		return invalidParams
28875	}
28876	return nil
28877}
28878
28879// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
28880func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
28881	s.SseKmsEncryptedObjects = v
28882	return s
28883}
28884
28885// A container for filter information for the selection of S3 objects encrypted
28886// with AWS KMS.
28887type SseKmsEncryptedObjects struct {
28888	_ struct{} `type:"structure"`
28889
28890	// Specifies whether Amazon S3 replicates objects created with server-side encryption
28891	// using a customer master key (CMK) stored in AWS Key Management Service.
28892	//
28893	// Status is a required field
28894	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
28895}
28896
28897// String returns the string representation
28898func (s SseKmsEncryptedObjects) String() string {
28899	return awsutil.Prettify(s)
28900}
28901
28902// GoString returns the string representation
28903func (s SseKmsEncryptedObjects) GoString() string {
28904	return s.String()
28905}
28906
28907// Validate inspects the fields of the type to determine if they are valid.
28908func (s *SseKmsEncryptedObjects) Validate() error {
28909	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
28910	if s.Status == nil {
28911		invalidParams.Add(request.NewErrParamRequired("Status"))
28912	}
28913
28914	if invalidParams.Len() > 0 {
28915		return invalidParams
28916	}
28917	return nil
28918}
28919
28920// SetStatus sets the Status field's value.
28921func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
28922	s.Status = &v
28923	return s
28924}
28925
28926// Container for the stats details.
28927type Stats struct {
28928	_ struct{} `type:"structure"`
28929
28930	// The total number of uncompressed object bytes processed.
28931	BytesProcessed *int64 `type:"long"`
28932
28933	// The total number of bytes of records payload data returned.
28934	BytesReturned *int64 `type:"long"`
28935
28936	// The total number of object bytes scanned.
28937	BytesScanned *int64 `type:"long"`
28938}
28939
28940// String returns the string representation
28941func (s Stats) String() string {
28942	return awsutil.Prettify(s)
28943}
28944
28945// GoString returns the string representation
28946func (s Stats) GoString() string {
28947	return s.String()
28948}
28949
28950// SetBytesProcessed sets the BytesProcessed field's value.
28951func (s *Stats) SetBytesProcessed(v int64) *Stats {
28952	s.BytesProcessed = &v
28953	return s
28954}
28955
28956// SetBytesReturned sets the BytesReturned field's value.
28957func (s *Stats) SetBytesReturned(v int64) *Stats {
28958	s.BytesReturned = &v
28959	return s
28960}
28961
28962// SetBytesScanned sets the BytesScanned field's value.
28963func (s *Stats) SetBytesScanned(v int64) *Stats {
28964	s.BytesScanned = &v
28965	return s
28966}
28967
28968// Container for the Stats Event.
28969type StatsEvent struct {
28970	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
28971
28972	// The Stats event details.
28973	Details *Stats `locationName:"Details" type:"structure"`
28974}
28975
28976// String returns the string representation
28977func (s StatsEvent) String() string {
28978	return awsutil.Prettify(s)
28979}
28980
28981// GoString returns the string representation
28982func (s StatsEvent) GoString() string {
28983	return s.String()
28984}
28985
28986// SetDetails sets the Details field's value.
28987func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
28988	s.Details = v
28989	return s
28990}
28991
28992// The StatsEvent is and event in the SelectObjectContentEventStream group of events.
28993func (s *StatsEvent) eventSelectObjectContentEventStream() {}
28994
28995// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
28996// This method is only used internally within the SDK's EventStream handling.
28997func (s *StatsEvent) UnmarshalEvent(
28998	payloadUnmarshaler protocol.PayloadUnmarshaler,
28999	msg eventstream.Message,
29000) error {
29001	if err := payloadUnmarshaler.UnmarshalPayload(
29002		bytes.NewReader(msg.Payload), s,
29003	); err != nil {
29004		return err
29005	}
29006	return nil
29007}
29008
29009// MarshalEvent marshals the type into an stream event value. This method
29010// should only used internally within the SDK's EventStream handling.
29011func (s *StatsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
29012	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
29013	var buf bytes.Buffer
29014	if err = pm.MarshalPayload(&buf, s); err != nil {
29015		return eventstream.Message{}, err
29016	}
29017	msg.Payload = buf.Bytes()
29018	return msg, err
29019}
29020
29021// Specifies data related to access patterns to be collected and made available
29022// to analyze the tradeoffs between different storage classes for an Amazon
29023// S3 bucket.
29024type StorageClassAnalysis struct {
29025	_ struct{} `type:"structure"`
29026
29027	// Specifies how data related to the storage class analysis for an Amazon S3
29028	// bucket should be exported.
29029	DataExport *StorageClassAnalysisDataExport `type:"structure"`
29030}
29031
29032// String returns the string representation
29033func (s StorageClassAnalysis) String() string {
29034	return awsutil.Prettify(s)
29035}
29036
29037// GoString returns the string representation
29038func (s StorageClassAnalysis) GoString() string {
29039	return s.String()
29040}
29041
29042// Validate inspects the fields of the type to determine if they are valid.
29043func (s *StorageClassAnalysis) Validate() error {
29044	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
29045	if s.DataExport != nil {
29046		if err := s.DataExport.Validate(); err != nil {
29047			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
29048		}
29049	}
29050
29051	if invalidParams.Len() > 0 {
29052		return invalidParams
29053	}
29054	return nil
29055}
29056
29057// SetDataExport sets the DataExport field's value.
29058func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
29059	s.DataExport = v
29060	return s
29061}
29062
29063// Container for data related to the storage class analysis for an Amazon S3
29064// bucket for export.
29065type StorageClassAnalysisDataExport struct {
29066	_ struct{} `type:"structure"`
29067
29068	// The place to store the data for an analysis.
29069	//
29070	// Destination is a required field
29071	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
29072
29073	// The version of the output schema to use when exporting data. Must be V_1.
29074	//
29075	// OutputSchemaVersion is a required field
29076	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
29077}
29078
29079// String returns the string representation
29080func (s StorageClassAnalysisDataExport) String() string {
29081	return awsutil.Prettify(s)
29082}
29083
29084// GoString returns the string representation
29085func (s StorageClassAnalysisDataExport) GoString() string {
29086	return s.String()
29087}
29088
29089// Validate inspects the fields of the type to determine if they are valid.
29090func (s *StorageClassAnalysisDataExport) Validate() error {
29091	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
29092	if s.Destination == nil {
29093		invalidParams.Add(request.NewErrParamRequired("Destination"))
29094	}
29095	if s.OutputSchemaVersion == nil {
29096		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
29097	}
29098	if s.Destination != nil {
29099		if err := s.Destination.Validate(); err != nil {
29100			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
29101		}
29102	}
29103
29104	if invalidParams.Len() > 0 {
29105		return invalidParams
29106	}
29107	return nil
29108}
29109
29110// SetDestination sets the Destination field's value.
29111func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
29112	s.Destination = v
29113	return s
29114}
29115
29116// SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
29117func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
29118	s.OutputSchemaVersion = &v
29119	return s
29120}
29121
29122// A container of a key value name pair.
29123type Tag struct {
29124	_ struct{} `type:"structure"`
29125
29126	// Name of the tag.
29127	//
29128	// Key is a required field
29129	Key *string `min:"1" type:"string" required:"true"`
29130
29131	// Value of the tag.
29132	//
29133	// Value is a required field
29134	Value *string `type:"string" required:"true"`
29135}
29136
29137// String returns the string representation
29138func (s Tag) String() string {
29139	return awsutil.Prettify(s)
29140}
29141
29142// GoString returns the string representation
29143func (s Tag) GoString() string {
29144	return s.String()
29145}
29146
29147// Validate inspects the fields of the type to determine if they are valid.
29148func (s *Tag) Validate() error {
29149	invalidParams := request.ErrInvalidParams{Context: "Tag"}
29150	if s.Key == nil {
29151		invalidParams.Add(request.NewErrParamRequired("Key"))
29152	}
29153	if s.Key != nil && len(*s.Key) < 1 {
29154		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
29155	}
29156	if s.Value == nil {
29157		invalidParams.Add(request.NewErrParamRequired("Value"))
29158	}
29159
29160	if invalidParams.Len() > 0 {
29161		return invalidParams
29162	}
29163	return nil
29164}
29165
29166// SetKey sets the Key field's value.
29167func (s *Tag) SetKey(v string) *Tag {
29168	s.Key = &v
29169	return s
29170}
29171
29172// SetValue sets the Value field's value.
29173func (s *Tag) SetValue(v string) *Tag {
29174	s.Value = &v
29175	return s
29176}
29177
29178// Container for TagSet elements.
29179type Tagging struct {
29180	_ struct{} `type:"structure"`
29181
29182	// A collection for a set of tags
29183	//
29184	// TagSet is a required field
29185	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
29186}
29187
29188// String returns the string representation
29189func (s Tagging) String() string {
29190	return awsutil.Prettify(s)
29191}
29192
29193// GoString returns the string representation
29194func (s Tagging) GoString() string {
29195	return s.String()
29196}
29197
29198// Validate inspects the fields of the type to determine if they are valid.
29199func (s *Tagging) Validate() error {
29200	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
29201	if s.TagSet == nil {
29202		invalidParams.Add(request.NewErrParamRequired("TagSet"))
29203	}
29204	if s.TagSet != nil {
29205		for i, v := range s.TagSet {
29206			if v == nil {
29207				continue
29208			}
29209			if err := v.Validate(); err != nil {
29210				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
29211			}
29212		}
29213	}
29214
29215	if invalidParams.Len() > 0 {
29216		return invalidParams
29217	}
29218	return nil
29219}
29220
29221// SetTagSet sets the TagSet field's value.
29222func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
29223	s.TagSet = v
29224	return s
29225}
29226
29227// Container for granting information.
29228type TargetGrant struct {
29229	_ struct{} `type:"structure"`
29230
29231	// Container for the person being granted permissions.
29232	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
29233
29234	// Logging permissions assigned to the Grantee for the bucket.
29235	Permission *string `type:"string" enum:"BucketLogsPermission"`
29236}
29237
29238// String returns the string representation
29239func (s TargetGrant) String() string {
29240	return awsutil.Prettify(s)
29241}
29242
29243// GoString returns the string representation
29244func (s TargetGrant) GoString() string {
29245	return s.String()
29246}
29247
29248// Validate inspects the fields of the type to determine if they are valid.
29249func (s *TargetGrant) Validate() error {
29250	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
29251	if s.Grantee != nil {
29252		if err := s.Grantee.Validate(); err != nil {
29253			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
29254		}
29255	}
29256
29257	if invalidParams.Len() > 0 {
29258		return invalidParams
29259	}
29260	return nil
29261}
29262
29263// SetGrantee sets the Grantee field's value.
29264func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
29265	s.Grantee = v
29266	return s
29267}
29268
29269// SetPermission sets the Permission field's value.
29270func (s *TargetGrant) SetPermission(v string) *TargetGrant {
29271	s.Permission = &v
29272	return s
29273}
29274
29275// A container for specifying the configuration for publication of messages
29276// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
29277// detects specified events.
29278type TopicConfiguration struct {
29279	_ struct{} `type:"structure"`
29280
29281	// The Amazon S3 bucket event about which to send notifications. For more information,
29282	// see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
29283	// in the Amazon Simple Storage Service Developer Guide.
29284	//
29285	// Events is a required field
29286	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
29287
29288	// Specifies object key name filtering rules. For information about key name
29289	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
29290	// in the Amazon Simple Storage Service Developer Guide.
29291	Filter *NotificationConfigurationFilter `type:"structure"`
29292
29293	// An optional unique identifier for configurations in a notification configuration.
29294	// If you don't provide one, Amazon S3 will assign an ID.
29295	Id *string `type:"string"`
29296
29297	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
29298	// publishes a message when it detects events of the specified type.
29299	//
29300	// TopicArn is a required field
29301	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
29302}
29303
29304// String returns the string representation
29305func (s TopicConfiguration) String() string {
29306	return awsutil.Prettify(s)
29307}
29308
29309// GoString returns the string representation
29310func (s TopicConfiguration) GoString() string {
29311	return s.String()
29312}
29313
29314// Validate inspects the fields of the type to determine if they are valid.
29315func (s *TopicConfiguration) Validate() error {
29316	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
29317	if s.Events == nil {
29318		invalidParams.Add(request.NewErrParamRequired("Events"))
29319	}
29320	if s.TopicArn == nil {
29321		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
29322	}
29323
29324	if invalidParams.Len() > 0 {
29325		return invalidParams
29326	}
29327	return nil
29328}
29329
29330// SetEvents sets the Events field's value.
29331func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
29332	s.Events = v
29333	return s
29334}
29335
29336// SetFilter sets the Filter field's value.
29337func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
29338	s.Filter = v
29339	return s
29340}
29341
29342// SetId sets the Id field's value.
29343func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
29344	s.Id = &v
29345	return s
29346}
29347
29348// SetTopicArn sets the TopicArn field's value.
29349func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
29350	s.TopicArn = &v
29351	return s
29352}
29353
29354// A container for specifying the configuration for publication of messages
29355// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
29356// detects specified events. This data type is deprecated. Use TopicConfiguration
29357// instead.
29358type TopicConfigurationDeprecated struct {
29359	_ struct{} `type:"structure"`
29360
29361	// Bucket event for which to send notifications.
29362	//
29363	// Deprecated: Event has been deprecated
29364	Event *string `deprecated:"true" type:"string" enum:"Event"`
29365
29366	// A collection of events related to objects
29367	Events []*string `locationName:"Event" type:"list" flattened:"true"`
29368
29369	// An optional unique identifier for configurations in a notification configuration.
29370	// If you don't provide one, Amazon S3 will assign an ID.
29371	Id *string `type:"string"`
29372
29373	// Amazon SNS topic to which Amazon S3 will publish a message to report the
29374	// specified events for the bucket.
29375	Topic *string `type:"string"`
29376}
29377
29378// String returns the string representation
29379func (s TopicConfigurationDeprecated) String() string {
29380	return awsutil.Prettify(s)
29381}
29382
29383// GoString returns the string representation
29384func (s TopicConfigurationDeprecated) GoString() string {
29385	return s.String()
29386}
29387
29388// SetEvent sets the Event field's value.
29389func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
29390	s.Event = &v
29391	return s
29392}
29393
29394// SetEvents sets the Events field's value.
29395func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
29396	s.Events = v
29397	return s
29398}
29399
29400// SetId sets the Id field's value.
29401func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
29402	s.Id = &v
29403	return s
29404}
29405
29406// SetTopic sets the Topic field's value.
29407func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
29408	s.Topic = &v
29409	return s
29410}
29411
29412// Specifies when an object transitions to a specified storage class. For more
29413// information about Amazon S3 lifecycle configuration rules, see Transitioning
29414// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
29415// in the Amazon Simple Storage Service Developer Guide.
29416type Transition struct {
29417	_ struct{} `type:"structure"`
29418
29419	// Indicates when objects are transitioned to the specified storage class. The
29420	// date value must be in ISO 8601 format. The time is always midnight UTC.
29421	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
29422
29423	// Indicates the number of days after creation when objects are transitioned
29424	// to the specified storage class. The value must be a positive integer.
29425	Days *int64 `type:"integer"`
29426
29427	// The storage class to which you want the object to transition.
29428	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
29429}
29430
29431// String returns the string representation
29432func (s Transition) String() string {
29433	return awsutil.Prettify(s)
29434}
29435
29436// GoString returns the string representation
29437func (s Transition) GoString() string {
29438	return s.String()
29439}
29440
29441// SetDate sets the Date field's value.
29442func (s *Transition) SetDate(v time.Time) *Transition {
29443	s.Date = &v
29444	return s
29445}
29446
29447// SetDays sets the Days field's value.
29448func (s *Transition) SetDays(v int64) *Transition {
29449	s.Days = &v
29450	return s
29451}
29452
29453// SetStorageClass sets the StorageClass field's value.
29454func (s *Transition) SetStorageClass(v string) *Transition {
29455	s.StorageClass = &v
29456	return s
29457}
29458
29459type UploadPartCopyInput struct {
29460	_ struct{} `locationName:"UploadPartCopyRequest" type:"structure"`
29461
29462	// The bucket name.
29463	//
29464	// Bucket is a required field
29465	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29466
29467	// The name of the source bucket and key name of the source object, separated
29468	// by a slash (/). Must be URL-encoded.
29469	//
29470	// CopySource is a required field
29471	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
29472
29473	// Copies the object if its entity tag (ETag) matches the specified tag.
29474	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
29475
29476	// Copies the object if it has been modified since the specified time.
29477	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
29478
29479	// Copies the object if its entity tag (ETag) is different than the specified
29480	// ETag.
29481	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
29482
29483	// Copies the object if it hasn't been modified since the specified time.
29484	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
29485
29486	// The range of bytes to copy from the source object. The range value must use
29487	// the form bytes=first-last, where the first and last are the zero-based byte
29488	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
29489	// first 10 bytes of the source. You can copy a range only if the source object
29490	// is greater than 5 MB.
29491	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
29492
29493	// Specifies the algorithm to use when decrypting the source object (for example,
29494	// AES256).
29495	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
29496
29497	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
29498	// the source object. The encryption key provided in this header must be one
29499	// that was used when the source object was created.
29500	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
29501
29502	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
29503	// Amazon S3 uses this header for a message integrity check to ensure that the
29504	// encryption key was transmitted without error.
29505	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
29506
29507	// Object key for which the multipart upload was initiated.
29508	//
29509	// Key is a required field
29510	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
29511
29512	// Part number of part being copied. This is a positive integer between 1 and
29513	// 10,000.
29514	//
29515	// PartNumber is a required field
29516	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
29517
29518	// Confirms that the requester knows that they will be charged for the request.
29519	// Bucket owners need not specify this parameter in their requests. For information
29520	// about downloading objects from requester pays buckets, see Downloading Objects
29521	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
29522	// in the Amazon S3 Developer Guide.
29523	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
29524
29525	// Specifies the algorithm to use to when encrypting the object (for example,
29526	// AES256).
29527	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29528
29529	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
29530	// data. This value is used to store the object and then it is discarded; Amazon
29531	// S3 does not store the encryption key. The key must be appropriate for use
29532	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
29533	// header. This must be the same encryption key specified in the initiate multipart
29534	// upload request.
29535	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
29536
29537	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
29538	// Amazon S3 uses this header for a message integrity check to ensure that the
29539	// encryption key was transmitted without error.
29540	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29541
29542	// Upload ID identifying the multipart upload whose part is being copied.
29543	//
29544	// UploadId is a required field
29545	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
29546}
29547
29548// String returns the string representation
29549func (s UploadPartCopyInput) String() string {
29550	return awsutil.Prettify(s)
29551}
29552
29553// GoString returns the string representation
29554func (s UploadPartCopyInput) GoString() string {
29555	return s.String()
29556}
29557
29558// Validate inspects the fields of the type to determine if they are valid.
29559func (s *UploadPartCopyInput) Validate() error {
29560	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
29561	if s.Bucket == nil {
29562		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29563	}
29564	if s.Bucket != nil && len(*s.Bucket) < 1 {
29565		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29566	}
29567	if s.CopySource == nil {
29568		invalidParams.Add(request.NewErrParamRequired("CopySource"))
29569	}
29570	if s.Key == nil {
29571		invalidParams.Add(request.NewErrParamRequired("Key"))
29572	}
29573	if s.Key != nil && len(*s.Key) < 1 {
29574		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
29575	}
29576	if s.PartNumber == nil {
29577		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
29578	}
29579	if s.UploadId == nil {
29580		invalidParams.Add(request.NewErrParamRequired("UploadId"))
29581	}
29582
29583	if invalidParams.Len() > 0 {
29584		return invalidParams
29585	}
29586	return nil
29587}
29588
29589// SetBucket sets the Bucket field's value.
29590func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
29591	s.Bucket = &v
29592	return s
29593}
29594
29595func (s *UploadPartCopyInput) getBucket() (v string) {
29596	if s.Bucket == nil {
29597		return v
29598	}
29599	return *s.Bucket
29600}
29601
29602// SetCopySource sets the CopySource field's value.
29603func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
29604	s.CopySource = &v
29605	return s
29606}
29607
29608// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
29609func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
29610	s.CopySourceIfMatch = &v
29611	return s
29612}
29613
29614// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
29615func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
29616	s.CopySourceIfModifiedSince = &v
29617	return s
29618}
29619
29620// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
29621func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
29622	s.CopySourceIfNoneMatch = &v
29623	return s
29624}
29625
29626// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
29627func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
29628	s.CopySourceIfUnmodifiedSince = &v
29629	return s
29630}
29631
29632// SetCopySourceRange sets the CopySourceRange field's value.
29633func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
29634	s.CopySourceRange = &v
29635	return s
29636}
29637
29638// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
29639func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
29640	s.CopySourceSSECustomerAlgorithm = &v
29641	return s
29642}
29643
29644// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
29645func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
29646	s.CopySourceSSECustomerKey = &v
29647	return s
29648}
29649
29650func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
29651	if s.CopySourceSSECustomerKey == nil {
29652		return v
29653	}
29654	return *s.CopySourceSSECustomerKey
29655}
29656
29657// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
29658func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
29659	s.CopySourceSSECustomerKeyMD5 = &v
29660	return s
29661}
29662
29663// SetKey sets the Key field's value.
29664func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
29665	s.Key = &v
29666	return s
29667}
29668
29669// SetPartNumber sets the PartNumber field's value.
29670func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
29671	s.PartNumber = &v
29672	return s
29673}
29674
29675// SetRequestPayer sets the RequestPayer field's value.
29676func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
29677	s.RequestPayer = &v
29678	return s
29679}
29680
29681// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29682func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
29683	s.SSECustomerAlgorithm = &v
29684	return s
29685}
29686
29687// SetSSECustomerKey sets the SSECustomerKey field's value.
29688func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
29689	s.SSECustomerKey = &v
29690	return s
29691}
29692
29693func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
29694	if s.SSECustomerKey == nil {
29695		return v
29696	}
29697	return *s.SSECustomerKey
29698}
29699
29700// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29701func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
29702	s.SSECustomerKeyMD5 = &v
29703	return s
29704}
29705
29706// SetUploadId sets the UploadId field's value.
29707func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
29708	s.UploadId = &v
29709	return s
29710}
29711
29712func (s *UploadPartCopyInput) getEndpointARN() (arn.Resource, error) {
29713	if s.Bucket == nil {
29714		return nil, fmt.Errorf("member Bucket is nil")
29715	}
29716	return parseEndpointARN(*s.Bucket)
29717}
29718
29719func (s *UploadPartCopyInput) hasEndpointARN() bool {
29720	if s.Bucket == nil {
29721		return false
29722	}
29723	return arn.IsARN(*s.Bucket)
29724}
29725
29726type UploadPartCopyOutput struct {
29727	_ struct{} `type:"structure" payload:"CopyPartResult"`
29728
29729	// Container for all response elements.
29730	CopyPartResult *CopyPartResult `type:"structure"`
29731
29732	// The version of the source object that was copied, if you have enabled versioning
29733	// on the source bucket.
29734	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
29735
29736	// If present, indicates that the requester was successfully charged for the
29737	// request.
29738	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
29739
29740	// If server-side encryption with a customer-provided encryption key was requested,
29741	// the response will include this header confirming the encryption algorithm
29742	// used.
29743	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29744
29745	// If server-side encryption with a customer-provided encryption key was requested,
29746	// the response will include this header to provide round-trip message integrity
29747	// verification of the customer-provided encryption key.
29748	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29749
29750	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
29751	// symmetric customer managed customer master key (CMK) that was used for the
29752	// object.
29753	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
29754
29755	// The server-side encryption algorithm used when storing this object in Amazon
29756	// S3 (for example, AES256, aws:kms).
29757	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
29758}
29759
29760// String returns the string representation
29761func (s UploadPartCopyOutput) String() string {
29762	return awsutil.Prettify(s)
29763}
29764
29765// GoString returns the string representation
29766func (s UploadPartCopyOutput) GoString() string {
29767	return s.String()
29768}
29769
29770// SetCopyPartResult sets the CopyPartResult field's value.
29771func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
29772	s.CopyPartResult = v
29773	return s
29774}
29775
29776// SetCopySourceVersionId sets the CopySourceVersionId field's value.
29777func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
29778	s.CopySourceVersionId = &v
29779	return s
29780}
29781
29782// SetRequestCharged sets the RequestCharged field's value.
29783func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
29784	s.RequestCharged = &v
29785	return s
29786}
29787
29788// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29789func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
29790	s.SSECustomerAlgorithm = &v
29791	return s
29792}
29793
29794// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29795func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
29796	s.SSECustomerKeyMD5 = &v
29797	return s
29798}
29799
29800// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
29801func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
29802	s.SSEKMSKeyId = &v
29803	return s
29804}
29805
29806// SetServerSideEncryption sets the ServerSideEncryption field's value.
29807func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
29808	s.ServerSideEncryption = &v
29809	return s
29810}
29811
29812type UploadPartInput struct {
29813	_ struct{} `locationName:"UploadPartRequest" type:"structure" payload:"Body"`
29814
29815	// Object data.
29816	Body io.ReadSeeker `type:"blob"`
29817
29818	// Name of the bucket to which the multipart upload was initiated.
29819	//
29820	// Bucket is a required field
29821	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29822
29823	// Size of the body in bytes. This parameter is useful when the size of the
29824	// body cannot be determined automatically.
29825	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
29826
29827	// The base64-encoded 128-bit MD5 digest of the part data. This parameter is
29828	// auto-populated when using the command from the CLI. This parameter is required
29829	// if object lock parameters are specified.
29830	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
29831
29832	// Object key for which the multipart upload was initiated.
29833	//
29834	// Key is a required field
29835	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
29836
29837	// Part number of part being uploaded. This is a positive integer between 1
29838	// and 10,000.
29839	//
29840	// PartNumber is a required field
29841	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
29842
29843	// Confirms that the requester knows that they will be charged for the request.
29844	// Bucket owners need not specify this parameter in their requests. For information
29845	// about downloading objects from requester pays buckets, see Downloading Objects
29846	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
29847	// in the Amazon S3 Developer Guide.
29848	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
29849
29850	// Specifies the algorithm to use to when encrypting the object (for example,
29851	// AES256).
29852	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29853
29854	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
29855	// data. This value is used to store the object and then it is discarded; Amazon
29856	// S3 does not store the encryption key. The key must be appropriate for use
29857	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
29858	// header. This must be the same encryption key specified in the initiate multipart
29859	// upload request.
29860	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
29861
29862	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
29863	// Amazon S3 uses this header for a message integrity check to ensure that the
29864	// encryption key was transmitted without error.
29865	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29866
29867	// Upload ID identifying the multipart upload whose part is being uploaded.
29868	//
29869	// UploadId is a required field
29870	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
29871}
29872
29873// String returns the string representation
29874func (s UploadPartInput) String() string {
29875	return awsutil.Prettify(s)
29876}
29877
29878// GoString returns the string representation
29879func (s UploadPartInput) GoString() string {
29880	return s.String()
29881}
29882
29883// Validate inspects the fields of the type to determine if they are valid.
29884func (s *UploadPartInput) Validate() error {
29885	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
29886	if s.Bucket == nil {
29887		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29888	}
29889	if s.Bucket != nil && len(*s.Bucket) < 1 {
29890		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29891	}
29892	if s.Key == nil {
29893		invalidParams.Add(request.NewErrParamRequired("Key"))
29894	}
29895	if s.Key != nil && len(*s.Key) < 1 {
29896		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
29897	}
29898	if s.PartNumber == nil {
29899		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
29900	}
29901	if s.UploadId == nil {
29902		invalidParams.Add(request.NewErrParamRequired("UploadId"))
29903	}
29904
29905	if invalidParams.Len() > 0 {
29906		return invalidParams
29907	}
29908	return nil
29909}
29910
29911// SetBody sets the Body field's value.
29912func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
29913	s.Body = v
29914	return s
29915}
29916
29917// SetBucket sets the Bucket field's value.
29918func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
29919	s.Bucket = &v
29920	return s
29921}
29922
29923func (s *UploadPartInput) getBucket() (v string) {
29924	if s.Bucket == nil {
29925		return v
29926	}
29927	return *s.Bucket
29928}
29929
29930// SetContentLength sets the ContentLength field's value.
29931func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
29932	s.ContentLength = &v
29933	return s
29934}
29935
29936// SetContentMD5 sets the ContentMD5 field's value.
29937func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
29938	s.ContentMD5 = &v
29939	return s
29940}
29941
29942// SetKey sets the Key field's value.
29943func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
29944	s.Key = &v
29945	return s
29946}
29947
29948// SetPartNumber sets the PartNumber field's value.
29949func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
29950	s.PartNumber = &v
29951	return s
29952}
29953
29954// SetRequestPayer sets the RequestPayer field's value.
29955func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
29956	s.RequestPayer = &v
29957	return s
29958}
29959
29960// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29961func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
29962	s.SSECustomerAlgorithm = &v
29963	return s
29964}
29965
29966// SetSSECustomerKey sets the SSECustomerKey field's value.
29967func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
29968	s.SSECustomerKey = &v
29969	return s
29970}
29971
29972func (s *UploadPartInput) getSSECustomerKey() (v string) {
29973	if s.SSECustomerKey == nil {
29974		return v
29975	}
29976	return *s.SSECustomerKey
29977}
29978
29979// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29980func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
29981	s.SSECustomerKeyMD5 = &v
29982	return s
29983}
29984
29985// SetUploadId sets the UploadId field's value.
29986func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
29987	s.UploadId = &v
29988	return s
29989}
29990
29991func (s *UploadPartInput) getEndpointARN() (arn.Resource, error) {
29992	if s.Bucket == nil {
29993		return nil, fmt.Errorf("member Bucket is nil")
29994	}
29995	return parseEndpointARN(*s.Bucket)
29996}
29997
29998func (s *UploadPartInput) hasEndpointARN() bool {
29999	if s.Bucket == nil {
30000		return false
30001	}
30002	return arn.IsARN(*s.Bucket)
30003}
30004
30005type UploadPartOutput struct {
30006	_ struct{} `type:"structure"`
30007
30008	// Entity tag for the uploaded object.
30009	ETag *string `location:"header" locationName:"ETag" type:"string"`
30010
30011	// If present, indicates that the requester was successfully charged for the
30012	// request.
30013	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
30014
30015	// If server-side encryption with a customer-provided encryption key was requested,
30016	// the response will include this header confirming the encryption algorithm
30017	// used.
30018	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
30019
30020	// If server-side encryption with a customer-provided encryption key was requested,
30021	// the response will include this header to provide round-trip message integrity
30022	// verification of the customer-provided encryption key.
30023	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
30024
30025	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
30026	// symmetric customer managed customer master key (CMK) was used for the object.
30027	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
30028
30029	// The server-side encryption algorithm used when storing this object in Amazon
30030	// S3 (for example, AES256, aws:kms).
30031	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
30032}
30033
30034// String returns the string representation
30035func (s UploadPartOutput) String() string {
30036	return awsutil.Prettify(s)
30037}
30038
30039// GoString returns the string representation
30040func (s UploadPartOutput) GoString() string {
30041	return s.String()
30042}
30043
30044// SetETag sets the ETag field's value.
30045func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
30046	s.ETag = &v
30047	return s
30048}
30049
30050// SetRequestCharged sets the RequestCharged field's value.
30051func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
30052	s.RequestCharged = &v
30053	return s
30054}
30055
30056// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
30057func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
30058	s.SSECustomerAlgorithm = &v
30059	return s
30060}
30061
30062// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
30063func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
30064	s.SSECustomerKeyMD5 = &v
30065	return s
30066}
30067
30068// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
30069func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
30070	s.SSEKMSKeyId = &v
30071	return s
30072}
30073
30074// SetServerSideEncryption sets the ServerSideEncryption field's value.
30075func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
30076	s.ServerSideEncryption = &v
30077	return s
30078}
30079
30080// Describes the versioning state of an Amazon S3 bucket. For more information,
30081// see PUT Bucket versioning (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html)
30082// in the Amazon Simple Storage Service API Reference.
30083type VersioningConfiguration struct {
30084	_ struct{} `type:"structure"`
30085
30086	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
30087	// This element is only returned if the bucket has been configured with MFA
30088	// delete. If the bucket has never been so configured, this element is not returned.
30089	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
30090
30091	// The versioning state of the bucket.
30092	Status *string `type:"string" enum:"BucketVersioningStatus"`
30093}
30094
30095// String returns the string representation
30096func (s VersioningConfiguration) String() string {
30097	return awsutil.Prettify(s)
30098}
30099
30100// GoString returns the string representation
30101func (s VersioningConfiguration) GoString() string {
30102	return s.String()
30103}
30104
30105// SetMFADelete sets the MFADelete field's value.
30106func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
30107	s.MFADelete = &v
30108	return s
30109}
30110
30111// SetStatus sets the Status field's value.
30112func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
30113	s.Status = &v
30114	return s
30115}
30116
30117// Specifies website configuration parameters for an Amazon S3 bucket.
30118type WebsiteConfiguration struct {
30119	_ struct{} `type:"structure"`
30120
30121	// The name of the error document for the website.
30122	ErrorDocument *ErrorDocument `type:"structure"`
30123
30124	// The name of the index document for the website.
30125	IndexDocument *IndexDocument `type:"structure"`
30126
30127	// The redirect behavior for every request to this bucket's website endpoint.
30128	//
30129	// If you specify this property, you can't specify any other property.
30130	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
30131
30132	// Rules that define when a redirect is applied and the redirect behavior.
30133	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
30134}
30135
30136// String returns the string representation
30137func (s WebsiteConfiguration) String() string {
30138	return awsutil.Prettify(s)
30139}
30140
30141// GoString returns the string representation
30142func (s WebsiteConfiguration) GoString() string {
30143	return s.String()
30144}
30145
30146// Validate inspects the fields of the type to determine if they are valid.
30147func (s *WebsiteConfiguration) Validate() error {
30148	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
30149	if s.ErrorDocument != nil {
30150		if err := s.ErrorDocument.Validate(); err != nil {
30151			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
30152		}
30153	}
30154	if s.IndexDocument != nil {
30155		if err := s.IndexDocument.Validate(); err != nil {
30156			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
30157		}
30158	}
30159	if s.RedirectAllRequestsTo != nil {
30160		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
30161			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
30162		}
30163	}
30164	if s.RoutingRules != nil {
30165		for i, v := range s.RoutingRules {
30166			if v == nil {
30167				continue
30168			}
30169			if err := v.Validate(); err != nil {
30170				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
30171			}
30172		}
30173	}
30174
30175	if invalidParams.Len() > 0 {
30176		return invalidParams
30177	}
30178	return nil
30179}
30180
30181// SetErrorDocument sets the ErrorDocument field's value.
30182func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
30183	s.ErrorDocument = v
30184	return s
30185}
30186
30187// SetIndexDocument sets the IndexDocument field's value.
30188func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
30189	s.IndexDocument = v
30190	return s
30191}
30192
30193// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
30194func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
30195	s.RedirectAllRequestsTo = v
30196	return s
30197}
30198
30199// SetRoutingRules sets the RoutingRules field's value.
30200func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
30201	s.RoutingRules = v
30202	return s
30203}
30204
30205const (
30206	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
30207	AnalyticsS3ExportFileFormatCsv = "CSV"
30208)
30209
30210const (
30211	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
30212	BucketAccelerateStatusEnabled = "Enabled"
30213
30214	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
30215	BucketAccelerateStatusSuspended = "Suspended"
30216)
30217
30218const (
30219	// BucketCannedACLPrivate is a BucketCannedACL enum value
30220	BucketCannedACLPrivate = "private"
30221
30222	// BucketCannedACLPublicRead is a BucketCannedACL enum value
30223	BucketCannedACLPublicRead = "public-read"
30224
30225	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
30226	BucketCannedACLPublicReadWrite = "public-read-write"
30227
30228	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
30229	BucketCannedACLAuthenticatedRead = "authenticated-read"
30230)
30231
30232const (
30233	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
30234	BucketLocationConstraintEu = "EU"
30235
30236	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
30237	BucketLocationConstraintEuWest1 = "eu-west-1"
30238
30239	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
30240	BucketLocationConstraintUsWest1 = "us-west-1"
30241
30242	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
30243	BucketLocationConstraintUsWest2 = "us-west-2"
30244
30245	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
30246	BucketLocationConstraintApSouth1 = "ap-south-1"
30247
30248	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
30249	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
30250
30251	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
30252	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
30253
30254	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
30255	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
30256
30257	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
30258	BucketLocationConstraintSaEast1 = "sa-east-1"
30259
30260	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
30261	BucketLocationConstraintCnNorth1 = "cn-north-1"
30262
30263	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
30264	BucketLocationConstraintEuCentral1 = "eu-central-1"
30265)
30266
30267const (
30268	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
30269	BucketLogsPermissionFullControl = "FULL_CONTROL"
30270
30271	// BucketLogsPermissionRead is a BucketLogsPermission enum value
30272	BucketLogsPermissionRead = "READ"
30273
30274	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
30275	BucketLogsPermissionWrite = "WRITE"
30276)
30277
30278const (
30279	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
30280	BucketVersioningStatusEnabled = "Enabled"
30281
30282	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
30283	BucketVersioningStatusSuspended = "Suspended"
30284)
30285
30286const (
30287	// CompressionTypeNone is a CompressionType enum value
30288	CompressionTypeNone = "NONE"
30289
30290	// CompressionTypeGzip is a CompressionType enum value
30291	CompressionTypeGzip = "GZIP"
30292
30293	// CompressionTypeBzip2 is a CompressionType enum value
30294	CompressionTypeBzip2 = "BZIP2"
30295)
30296
30297const (
30298	// DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value
30299	DeleteMarkerReplicationStatusEnabled = "Enabled"
30300
30301	// DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value
30302	DeleteMarkerReplicationStatusDisabled = "Disabled"
30303)
30304
30305// Requests Amazon S3 to encode the object keys in the response and specifies
30306// the encoding method to use. An object key may contain any Unicode character;
30307// however, XML 1.0 parser cannot parse some characters, such as characters
30308// with an ASCII value from 0 to 10. For characters that are not supported in
30309// XML 1.0, you can add this parameter to request that Amazon S3 encode the
30310// keys in the response.
30311const (
30312	// EncodingTypeUrl is a EncodingType enum value
30313	EncodingTypeUrl = "url"
30314)
30315
30316// The bucket event for which to send notifications.
30317const (
30318	// EventS3ReducedRedundancyLostObject is a Event enum value
30319	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
30320
30321	// EventS3ObjectCreated is a Event enum value
30322	EventS3ObjectCreated = "s3:ObjectCreated:*"
30323
30324	// EventS3ObjectCreatedPut is a Event enum value
30325	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
30326
30327	// EventS3ObjectCreatedPost is a Event enum value
30328	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
30329
30330	// EventS3ObjectCreatedCopy is a Event enum value
30331	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
30332
30333	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
30334	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
30335
30336	// EventS3ObjectRemoved is a Event enum value
30337	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
30338
30339	// EventS3ObjectRemovedDelete is a Event enum value
30340	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
30341
30342	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
30343	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
30344
30345	// EventS3ObjectRestore is a Event enum value
30346	EventS3ObjectRestore = "s3:ObjectRestore:*"
30347
30348	// EventS3ObjectRestorePost is a Event enum value
30349	EventS3ObjectRestorePost = "s3:ObjectRestore:Post"
30350
30351	// EventS3ObjectRestoreCompleted is a Event enum value
30352	EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed"
30353
30354	// EventS3Replication is a Event enum value
30355	EventS3Replication = "s3:Replication:*"
30356
30357	// EventS3ReplicationOperationFailedReplication is a Event enum value
30358	EventS3ReplicationOperationFailedReplication = "s3:Replication:OperationFailedReplication"
30359
30360	// EventS3ReplicationOperationNotTracked is a Event enum value
30361	EventS3ReplicationOperationNotTracked = "s3:Replication:OperationNotTracked"
30362
30363	// EventS3ReplicationOperationMissedThreshold is a Event enum value
30364	EventS3ReplicationOperationMissedThreshold = "s3:Replication:OperationMissedThreshold"
30365
30366	// EventS3ReplicationOperationReplicatedAfterThreshold is a Event enum value
30367	EventS3ReplicationOperationReplicatedAfterThreshold = "s3:Replication:OperationReplicatedAfterThreshold"
30368)
30369
30370const (
30371	// ExistingObjectReplicationStatusEnabled is a ExistingObjectReplicationStatus enum value
30372	ExistingObjectReplicationStatusEnabled = "Enabled"
30373
30374	// ExistingObjectReplicationStatusDisabled is a ExistingObjectReplicationStatus enum value
30375	ExistingObjectReplicationStatusDisabled = "Disabled"
30376)
30377
30378const (
30379	// ExpirationStatusEnabled is a ExpirationStatus enum value
30380	ExpirationStatusEnabled = "Enabled"
30381
30382	// ExpirationStatusDisabled is a ExpirationStatus enum value
30383	ExpirationStatusDisabled = "Disabled"
30384)
30385
30386const (
30387	// ExpressionTypeSql is a ExpressionType enum value
30388	ExpressionTypeSql = "SQL"
30389)
30390
30391const (
30392	// FileHeaderInfoUse is a FileHeaderInfo enum value
30393	FileHeaderInfoUse = "USE"
30394
30395	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
30396	FileHeaderInfoIgnore = "IGNORE"
30397
30398	// FileHeaderInfoNone is a FileHeaderInfo enum value
30399	FileHeaderInfoNone = "NONE"
30400)
30401
30402const (
30403	// FilterRuleNamePrefix is a FilterRuleName enum value
30404	FilterRuleNamePrefix = "prefix"
30405
30406	// FilterRuleNameSuffix is a FilterRuleName enum value
30407	FilterRuleNameSuffix = "suffix"
30408)
30409
30410const (
30411	// InventoryFormatCsv is a InventoryFormat enum value
30412	InventoryFormatCsv = "CSV"
30413
30414	// InventoryFormatOrc is a InventoryFormat enum value
30415	InventoryFormatOrc = "ORC"
30416
30417	// InventoryFormatParquet is a InventoryFormat enum value
30418	InventoryFormatParquet = "Parquet"
30419)
30420
30421const (
30422	// InventoryFrequencyDaily is a InventoryFrequency enum value
30423	InventoryFrequencyDaily = "Daily"
30424
30425	// InventoryFrequencyWeekly is a InventoryFrequency enum value
30426	InventoryFrequencyWeekly = "Weekly"
30427)
30428
30429const (
30430	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
30431	InventoryIncludedObjectVersionsAll = "All"
30432
30433	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
30434	InventoryIncludedObjectVersionsCurrent = "Current"
30435)
30436
30437const (
30438	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
30439	InventoryOptionalFieldSize = "Size"
30440
30441	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
30442	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
30443
30444	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
30445	InventoryOptionalFieldStorageClass = "StorageClass"
30446
30447	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
30448	InventoryOptionalFieldEtag = "ETag"
30449
30450	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
30451	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
30452
30453	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
30454	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
30455
30456	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
30457	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
30458
30459	// InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value
30460	InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate"
30461
30462	// InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value
30463	InventoryOptionalFieldObjectLockMode = "ObjectLockMode"
30464
30465	// InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value
30466	InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus"
30467
30468	// InventoryOptionalFieldIntelligentTieringAccessTier is a InventoryOptionalField enum value
30469	InventoryOptionalFieldIntelligentTieringAccessTier = "IntelligentTieringAccessTier"
30470)
30471
30472const (
30473	// JSONTypeDocument is a JSONType enum value
30474	JSONTypeDocument = "DOCUMENT"
30475
30476	// JSONTypeLines is a JSONType enum value
30477	JSONTypeLines = "LINES"
30478)
30479
30480const (
30481	// MFADeleteEnabled is a MFADelete enum value
30482	MFADeleteEnabled = "Enabled"
30483
30484	// MFADeleteDisabled is a MFADelete enum value
30485	MFADeleteDisabled = "Disabled"
30486)
30487
30488const (
30489	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
30490	MFADeleteStatusEnabled = "Enabled"
30491
30492	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
30493	MFADeleteStatusDisabled = "Disabled"
30494)
30495
30496const (
30497	// MetadataDirectiveCopy is a MetadataDirective enum value
30498	MetadataDirectiveCopy = "COPY"
30499
30500	// MetadataDirectiveReplace is a MetadataDirective enum value
30501	MetadataDirectiveReplace = "REPLACE"
30502)
30503
30504const (
30505	// MetricsStatusEnabled is a MetricsStatus enum value
30506	MetricsStatusEnabled = "Enabled"
30507
30508	// MetricsStatusDisabled is a MetricsStatus enum value
30509	MetricsStatusDisabled = "Disabled"
30510)
30511
30512const (
30513	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
30514	ObjectCannedACLPrivate = "private"
30515
30516	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
30517	ObjectCannedACLPublicRead = "public-read"
30518
30519	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
30520	ObjectCannedACLPublicReadWrite = "public-read-write"
30521
30522	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
30523	ObjectCannedACLAuthenticatedRead = "authenticated-read"
30524
30525	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
30526	ObjectCannedACLAwsExecRead = "aws-exec-read"
30527
30528	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
30529	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
30530
30531	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
30532	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
30533)
30534
30535const (
30536	// ObjectLockEnabledEnabled is a ObjectLockEnabled enum value
30537	ObjectLockEnabledEnabled = "Enabled"
30538)
30539
30540const (
30541	// ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value
30542	ObjectLockLegalHoldStatusOn = "ON"
30543
30544	// ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value
30545	ObjectLockLegalHoldStatusOff = "OFF"
30546)
30547
30548const (
30549	// ObjectLockModeGovernance is a ObjectLockMode enum value
30550	ObjectLockModeGovernance = "GOVERNANCE"
30551
30552	// ObjectLockModeCompliance is a ObjectLockMode enum value
30553	ObjectLockModeCompliance = "COMPLIANCE"
30554)
30555
30556const (
30557	// ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value
30558	ObjectLockRetentionModeGovernance = "GOVERNANCE"
30559
30560	// ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value
30561	ObjectLockRetentionModeCompliance = "COMPLIANCE"
30562)
30563
30564const (
30565	// ObjectStorageClassStandard is a ObjectStorageClass enum value
30566	ObjectStorageClassStandard = "STANDARD"
30567
30568	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
30569	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
30570
30571	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
30572	ObjectStorageClassGlacier = "GLACIER"
30573
30574	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
30575	ObjectStorageClassStandardIa = "STANDARD_IA"
30576
30577	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
30578	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
30579
30580	// ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value
30581	ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
30582
30583	// ObjectStorageClassDeepArchive is a ObjectStorageClass enum value
30584	ObjectStorageClassDeepArchive = "DEEP_ARCHIVE"
30585)
30586
30587const (
30588	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
30589	ObjectVersionStorageClassStandard = "STANDARD"
30590)
30591
30592const (
30593	// OwnerOverrideDestination is a OwnerOverride enum value
30594	OwnerOverrideDestination = "Destination"
30595)
30596
30597const (
30598	// PayerRequester is a Payer enum value
30599	PayerRequester = "Requester"
30600
30601	// PayerBucketOwner is a Payer enum value
30602	PayerBucketOwner = "BucketOwner"
30603)
30604
30605const (
30606	// PermissionFullControl is a Permission enum value
30607	PermissionFullControl = "FULL_CONTROL"
30608
30609	// PermissionWrite is a Permission enum value
30610	PermissionWrite = "WRITE"
30611
30612	// PermissionWriteAcp is a Permission enum value
30613	PermissionWriteAcp = "WRITE_ACP"
30614
30615	// PermissionRead is a Permission enum value
30616	PermissionRead = "READ"
30617
30618	// PermissionReadAcp is a Permission enum value
30619	PermissionReadAcp = "READ_ACP"
30620)
30621
30622const (
30623	// ProtocolHttp is a Protocol enum value
30624	ProtocolHttp = "http"
30625
30626	// ProtocolHttps is a Protocol enum value
30627	ProtocolHttps = "https"
30628)
30629
30630const (
30631	// QuoteFieldsAlways is a QuoteFields enum value
30632	QuoteFieldsAlways = "ALWAYS"
30633
30634	// QuoteFieldsAsneeded is a QuoteFields enum value
30635	QuoteFieldsAsneeded = "ASNEEDED"
30636)
30637
30638const (
30639	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
30640	ReplicationRuleStatusEnabled = "Enabled"
30641
30642	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
30643	ReplicationRuleStatusDisabled = "Disabled"
30644)
30645
30646const (
30647	// ReplicationStatusComplete is a ReplicationStatus enum value
30648	ReplicationStatusComplete = "COMPLETE"
30649
30650	// ReplicationStatusPending is a ReplicationStatus enum value
30651	ReplicationStatusPending = "PENDING"
30652
30653	// ReplicationStatusFailed is a ReplicationStatus enum value
30654	ReplicationStatusFailed = "FAILED"
30655
30656	// ReplicationStatusReplica is a ReplicationStatus enum value
30657	ReplicationStatusReplica = "REPLICA"
30658)
30659
30660const (
30661	// ReplicationTimeStatusEnabled is a ReplicationTimeStatus enum value
30662	ReplicationTimeStatusEnabled = "Enabled"
30663
30664	// ReplicationTimeStatusDisabled is a ReplicationTimeStatus enum value
30665	ReplicationTimeStatusDisabled = "Disabled"
30666)
30667
30668// If present, indicates that the requester was successfully charged for the
30669// request.
30670const (
30671	// RequestChargedRequester is a RequestCharged enum value
30672	RequestChargedRequester = "requester"
30673)
30674
30675// Confirms that the requester knows that they will be charged for the request.
30676// Bucket owners need not specify this parameter in their requests. For information
30677// about downloading objects from requester pays buckets, see Downloading Objects
30678// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
30679// in the Amazon S3 Developer Guide.
30680const (
30681	// RequestPayerRequester is a RequestPayer enum value
30682	RequestPayerRequester = "requester"
30683)
30684
30685const (
30686	// RestoreRequestTypeSelect is a RestoreRequestType enum value
30687	RestoreRequestTypeSelect = "SELECT"
30688)
30689
30690const (
30691	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
30692	ServerSideEncryptionAes256 = "AES256"
30693
30694	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
30695	ServerSideEncryptionAwsKms = "aws:kms"
30696)
30697
30698const (
30699	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
30700	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
30701
30702	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
30703	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
30704)
30705
30706const (
30707	// StorageClassStandard is a StorageClass enum value
30708	StorageClassStandard = "STANDARD"
30709
30710	// StorageClassReducedRedundancy is a StorageClass enum value
30711	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
30712
30713	// StorageClassStandardIa is a StorageClass enum value
30714	StorageClassStandardIa = "STANDARD_IA"
30715
30716	// StorageClassOnezoneIa is a StorageClass enum value
30717	StorageClassOnezoneIa = "ONEZONE_IA"
30718
30719	// StorageClassIntelligentTiering is a StorageClass enum value
30720	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"
30721
30722	// StorageClassGlacier is a StorageClass enum value
30723	StorageClassGlacier = "GLACIER"
30724
30725	// StorageClassDeepArchive is a StorageClass enum value
30726	StorageClassDeepArchive = "DEEP_ARCHIVE"
30727)
30728
30729const (
30730	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
30731	StorageClassAnalysisSchemaVersionV1 = "V_1"
30732)
30733
30734const (
30735	// TaggingDirectiveCopy is a TaggingDirective enum value
30736	TaggingDirectiveCopy = "COPY"
30737
30738	// TaggingDirectiveReplace is a TaggingDirective enum value
30739	TaggingDirectiveReplace = "REPLACE"
30740)
30741
30742const (
30743	// TierStandard is a Tier enum value
30744	TierStandard = "Standard"
30745
30746	// TierBulk is a Tier enum value
30747	TierBulk = "Bulk"
30748
30749	// TierExpedited is a Tier enum value
30750	TierExpedited = "Expedited"
30751)
30752
30753const (
30754	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
30755	TransitionStorageClassGlacier = "GLACIER"
30756
30757	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
30758	TransitionStorageClassStandardIa = "STANDARD_IA"
30759
30760	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
30761	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
30762
30763	// TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value
30764	TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
30765
30766	// TransitionStorageClassDeepArchive is a TransitionStorageClass enum value
30767	TransitionStorageClassDeepArchive = "DEEP_ARCHIVE"
30768)
30769
30770const (
30771	// TypeCanonicalUser is a Type enum value
30772	TypeCanonicalUser = "CanonicalUser"
30773
30774	// TypeAmazonCustomerByEmail is a Type enum value
30775	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
30776
30777	// TypeGroup is a Type enum value
30778	TypeGroup = "Group"
30779)
30780