1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package s3
4
5import (
6	"bytes"
7	"fmt"
8	"io"
9	"sync"
10	"sync/atomic"
11	"time"
12
13	"github.com/aws/aws-sdk-go/aws"
14	"github.com/aws/aws-sdk-go/aws/awserr"
15	"github.com/aws/aws-sdk-go/aws/awsutil"
16	"github.com/aws/aws-sdk-go/aws/client"
17	"github.com/aws/aws-sdk-go/aws/request"
18	"github.com/aws/aws-sdk-go/private/protocol"
19	"github.com/aws/aws-sdk-go/private/protocol/eventstream"
20	"github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
21	"github.com/aws/aws-sdk-go/private/protocol/rest"
22	"github.com/aws/aws-sdk-go/private/protocol/restxml"
23	"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 DeleteBucketMetricsConfiguration:
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, for copying an object greater than 5 GB, you must use
310// the multipart upload Upload Part - Copy API. For more information, see Copy
311// Object Using the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html).
312//
313// When copying an object, you can preserve all metadata (default) or specify
314// new metadata. However, the ACL is not preserved and is set to private for
315// the user making the request. To override the default ACL setting, specify
316// a new ACL when generating a copy request. For more information, see Using
317// ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
318//
319// Amazon S3 transfer acceleration does not support cross-region copies. If
320// you request a cross-region copy using a transfer acceleration endpoint, you
321// get a 400 Bad Request error. For more information about transfer acceleration,
322// see Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
323//
324// All copy requests must be authenticated. Additionally, you must have read
325// access to the source object and write access to the destination bucket. For
326// more information, see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
327// Both the Region that you want to copy the object from and the Region that
328// you want to copy the object to must be enabled for your account.
329//
330// To only copy an object under certain conditions, such as whether the Etag
331// matches or whether the object was modified before or after a specified date,
332// use the request parameters x-amz-copy-source-if-match, x-amz-copy-source-if-none-match,
333// x-amz-copy-source-if-unmodified-since, or x-amz-copy-source-if-modified-since.
334//
335// All headers with the x-amz- prefix, including x-amz-copy-source, must be
336// signed.
337//
338// You can use this operation to change the storage class of an object that
339// is already stored in Amazon S3 using the StorageClass parameter. For more
340// information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html).
341//
342// The source object that you are copying can be encrypted or unencrypted. If
343// the source object is encrypted, it can be encrypted by server-side encryption
344// using AWS managed encryption keys or by using a customer-provided encryption
345// key. When copying an object, you can request that Amazon S3 encrypt the target
346// object by using either the AWS managed encryption keys or by using your own
347// encryption key. You can do this regardless of the form of server-side encryption
348// that was used to encrypt the source, or even if the source object was not
349// encrypted. For more information about server-side encryption, see Using Server-Side
350// Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
351//
352// A copy request might return an error when Amazon S3 receives the copy request
353// or while Amazon S3 is copying the files. If the error occurs before the copy
354// operation starts, you receive a standard Amazon S3 error. If the error occurs
355// during the copy operation, the error response is embedded in the 200 OK response.
356// This means that a 200 OK response can contain either a success or an error.
357// Design your application to parse the contents of the response and handle
358// it appropriately.
359//
360// If the copy is successful, you receive a response with information about
361// the copied object.
362//
363// If the request is an HTTP 1.1 request, the response is chunk encoded. If
364// it were not, it would not contain the content-length, and you would need
365// to read the entire body.
366//
367// Consider the following when using request headers:
368//
369//    * Consideration 1 – If both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
370//    headers are present in the request and evaluate as follows, Amazon S3
371//    returns 200 OK and copies the data: x-amz-copy-source-if-match condition
372//    evaluates to true x-amz-copy-source-if-unmodified-since condition evaluates
373//    to false
374//
375//    * Consideration 2 – If both of the x-amz-copy-source-if-none-match and
376//    x-amz-copy-source-if-modified-since headers are present in the request
377//    and evaluate as follows, Amazon S3 returns the 412 Precondition Failed
378//    response code: x-amz-copy-source-if-none-match condition evaluates to
379//    false x-amz-copy-source-if-modified-since condition evaluates to true
380//
381// The copy request charge is based on the storage class and Region you specify
382// for the destination object. For pricing information, see Amazon S3 Pricing
383// (https://aws.amazon.com/s3/pricing/).
384//
385// Following are other considerations when using CopyObject:
386//
387// Versioning
388//
389// By default, x-amz-copy-source identifies the current version of an object
390// to copy. (If the current version is a delete marker, Amazon S3 behaves as
391// if the object was deleted.) To copy a different version, use the versionId
392// subresource.
393//
394// If you enable versioning on the target bucket, Amazon S3 generates a unique
395// version ID for the object being copied. This version ID is different from
396// the version ID of the source object. Amazon S3 returns the version ID of
397// the copied object in the x-amz-version-id response header in the response.
398//
399// If you do not enable versioning or suspend it on the target bucket, the version
400// ID that Amazon S3 generates is always null.
401//
402// If the source object's storage class is GLACIER, you must restore a copy
403// of this object before you can use it as a source object for the copy operation.
404// For more information, see .
405//
406// Access Permissions
407//
408// When copying an object, you can optionally specify the accounts or groups
409// that should be granted specific permissions on the new object. There are
410// two ways to grant the permissions using the request headers:
411//
412//    * Specify a canned ACL with the x-amz-acl request header. For more information,
413//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
414//
415//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
416//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
417//    map to the set of permissions that Amazon S3 supports in an ACL. For more
418//    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
419//
420// You can use either a canned ACL or specify access permissions explicitly.
421// You cannot do both.
422//
423// Server-Side- Encryption-Specific Request Headers
424//
425// To encrypt the target object, you must provide the appropriate encryption-related
426// request headers. The one you use depends on whether you want to use AWS managed
427// encryption keys or provide your own encryption key.
428//
429//    * To encrypt the target object using server-side encryption with an AWS
430//    managed encryption key, provide the following request headers, as appropriate.
431//    x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id
432//    x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms
433//    but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon
434//    S3 uses the AWS managed customer master key (CMK) in AWS KMS to protect
435//    the data. All GET and PUT requests for an object protected by AWS KMS
436//    fail if you don't make them with SSL or by using SigV4. For more information
437//    about server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see
438//    Protecting Data Using Server-Side Encryption with CMKs stored in KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
439//
440//    * To encrypt the target object using server-side encryption with an encryption
441//    key that you provide, use the following headers. x-amz-server-side​-encryption​-customer-algorithm
442//    x-amz-server-side​-encryption​-customer-key x-amz-server-side​-encryption​-customer-key-MD5
443//
444//    * If the source object is encrypted using server-side encryption with
445//    customer-provided encryption keys, you must use the following headers.
446//    x-amz-copy-source​-server-side​-encryption​-customer-algorithm x-amz-copy-source​-server-side​-encryption​-customer-key
447//    x-amz-copy-source-​server-side​-encryption​-customer-key-MD5 For
448//    more information about server-side encryption with CMKs stored in AWS
449//    KMS (SSE-KMS), see Protecting Data Using Server-Side Encryption with CMKs
450//    stored in Amazon KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
451//
452// Access-Control-List (ACL)-Specific Request Headers
453//
454// You also can use the following access control–related headers with this
455// operation. By default, all objects are private. Only the owner has full access
456// control. When adding a new object, you can grant permissions to individual
457// AWS accounts or to predefined groups defined by Amazon S3. These permissions
458// are then added to the access control list (ACL) on the object. For more information,
459// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
460// With this operation, you can grant access permissions using one of the following
461// two methods:
462//
463//    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
464//    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
465//    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
466//
467//    * Specify access permissions explicitly — To explicitly grant access
468//    permissions to specific AWS accounts or groups, use the following headers.
469//    Each header maps to specific permissions that Amazon S3 supports in an
470//    ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
471//    In the header, you specify a list of grantees who get the specific permission.
472//    To grant permissions explicitly, use: x-amz-grant-read x-amz-grant-write
473//    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
474//    specify each grantee as a type=value pair, where the type is one of the
475//    following: emailAddress – if the value specified is the email address
476//    of an AWS account id – if the value specified is the canonical user
477//    ID of an AWS account uri – if you are granting permissions to a predefined
478//    group For example, the following x-amz-grant-read header grants the AWS
479//    accounts identified by email addresses permissions to read object data
480//    and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
481//
482// The following operations are related to CopyObject:
483//
484//    * PutObject
485//
486//    * GetObject
487//
488// For more information, see Copying Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html).
489//
490// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
491// with awserr.Error's Code and Message methods to get detailed information about
492// the error.
493//
494// See the AWS API reference guide for Amazon Simple Storage Service's
495// API operation CopyObject for usage and error information.
496//
497// Returned Error Codes:
498//   * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError"
499//   The source object of the COPY operation is not in the active tier and is
500//   only stored in Amazon S3 Glacier.
501//
502// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
503func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) {
504	req, out := c.CopyObjectRequest(input)
505	return out, req.Send()
506}
507
508// CopyObjectWithContext is the same as CopyObject with the addition of
509// the ability to pass a context and additional request options.
510//
511// See CopyObject for details on how to use this API operation.
512//
513// The context must be non-nil and will be used for request cancellation. If
514// the context is nil a panic will occur. In the future the SDK may create
515// sub-contexts for http.Requests. See https://golang.org/pkg/context/
516// for more information on using Contexts.
517func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) {
518	req, out := c.CopyObjectRequest(input)
519	req.SetContext(ctx)
520	req.ApplyOptions(opts...)
521	return out, req.Send()
522}
523
524const opCreateBucket = "CreateBucket"
525
526// CreateBucketRequest generates a "aws/request.Request" representing the
527// client's request for the CreateBucket operation. The "output" return
528// value will be populated with the request's response once the request completes
529// successfully.
530//
531// Use "Send" method on the returned Request to send the API call to the service.
532// the "output" return value is not valid until after Send returns without error.
533//
534// See CreateBucket for more information on using the CreateBucket
535// API call, and error handling.
536//
537// This method is useful when you want to inject custom logic or configuration
538// into the SDK's request lifecycle. Such as custom headers, or retry logic.
539//
540//
541//    // Example sending a request using the CreateBucketRequest method.
542//    req, resp := client.CreateBucketRequest(params)
543//
544//    err := req.Send()
545//    if err == nil { // resp is now filled
546//        fmt.Println(resp)
547//    }
548//
549// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
550func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) {
551	op := &request.Operation{
552		Name:       opCreateBucket,
553		HTTPMethod: "PUT",
554		HTTPPath:   "/{Bucket}",
555	}
556
557	if input == nil {
558		input = &CreateBucketInput{}
559	}
560
561	output = &CreateBucketOutput{}
562	req = c.newRequest(op, input, output)
563	return
564}
565
566// CreateBucket API operation for Amazon Simple Storage Service.
567//
568// Creates a new bucket. To create a bucket, you must register with Amazon S3
569// and have a valid AWS Access Key ID to authenticate requests. Anonymous requests
570// are never allowed to create buckets. By creating the bucket, you become the
571// bucket owner.
572//
573// Not every string is an acceptable bucket name. For information on bucket
574// naming restrictions, see Working with Amazon S3 Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html).
575//
576// By default, the bucket is created in the US East (N. Virginia) Region. You
577// can optionally specify a Region in the request body. You might choose a Region
578// to optimize latency, minimize costs, or address regulatory requirements.
579// For example, if you reside in Europe, you will probably find it advantageous
580// to create buckets in the EU (Ireland) Region. For more information, see How
581// to Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
582//
583// If you send your create bucket request to the s3.amazonaws.com endpoint,
584// the request goes to the us-east-1 Region. Accordingly, the signature calculations
585// in Signature Version 4 must use us-east-1 as the Region, even if the location
586// constraint in the request specifies another Region where the bucket is to
587// be created. If you create a bucket in a Region other than US East (N. Virginia),
588// your application must be able to handle 307 redirect. For more information,
589// see Virtual Hosting of Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).
590//
591// When creating a bucket using this operation, you can optionally specify the
592// accounts or groups that should be granted specific permissions on the bucket.
593// There are two ways to grant the appropriate permissions using the request
594// headers.
595//
596//    * Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports
597//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
598//    predefined set of grantees and permissions. For more information, see
599//    Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
600//
601//    * Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write,
602//    x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
603//    headers. These headers map to the set of permissions Amazon S3 supports
604//    in an ACL. For more information, see Access Control List (ACL) Overview
605//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You
606//    specify each grantee as a type=value pair, where the type is one of the
607//    following: emailAddress – if the value specified is the email address
608//    of an AWS account id – if the value specified is the canonical user
609//    ID of an AWS account uri – if you are granting permissions to a predefined
610//    group For example, the following x-amz-grant-read header grants the AWS
611//    accounts identified by email addresses permissions to read object data
612//    and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
613//
614// You can use either a canned ACL or specify access permissions explicitly.
615// You cannot do both.
616//
617// The following operations are related to CreateBucket:
618//
619//    * PutObject
620//
621//    * DeleteBucket
622//
623// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
624// with awserr.Error's Code and Message methods to get detailed information about
625// the error.
626//
627// See the AWS API reference guide for Amazon Simple Storage Service's
628// API operation CreateBucket for usage and error information.
629//
630// Returned Error Codes:
631//   * ErrCodeBucketAlreadyExists "BucketAlreadyExists"
632//   The requested bucket name is not available. The bucket namespace is shared
633//   by all users of the system. Please select a different name and try again.
634//
635//   * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou"
636//   The bucket you tried to create already exists, and you own it. Amazon S3
637//   returns this error in all AWS Regions except in the North Virginia Region.
638//   For legacy compatibility, if you re-create an existing bucket that you already
639//   own in the North Virginia Region, Amazon S3 returns 200 OK and resets the
640//   bucket access control lists (ACLs).
641//
642// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
643func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
644	req, out := c.CreateBucketRequest(input)
645	return out, req.Send()
646}
647
648// CreateBucketWithContext is the same as CreateBucket with the addition of
649// the ability to pass a context and additional request options.
650//
651// See CreateBucket for details on how to use this API operation.
652//
653// The context must be non-nil and will be used for request cancellation. If
654// the context is nil a panic will occur. In the future the SDK may create
655// sub-contexts for http.Requests. See https://golang.org/pkg/context/
656// for more information on using Contexts.
657func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) {
658	req, out := c.CreateBucketRequest(input)
659	req.SetContext(ctx)
660	req.ApplyOptions(opts...)
661	return out, req.Send()
662}
663
664const opCreateMultipartUpload = "CreateMultipartUpload"
665
666// CreateMultipartUploadRequest generates a "aws/request.Request" representing the
667// client's request for the CreateMultipartUpload operation. The "output" return
668// value will be populated with the request's response once the request completes
669// successfully.
670//
671// Use "Send" method on the returned Request to send the API call to the service.
672// the "output" return value is not valid until after Send returns without error.
673//
674// See CreateMultipartUpload for more information on using the CreateMultipartUpload
675// API call, and error handling.
676//
677// This method is useful when you want to inject custom logic or configuration
678// into the SDK's request lifecycle. Such as custom headers, or retry logic.
679//
680//
681//    // Example sending a request using the CreateMultipartUploadRequest method.
682//    req, resp := client.CreateMultipartUploadRequest(params)
683//
684//    err := req.Send()
685//    if err == nil { // resp is now filled
686//        fmt.Println(resp)
687//    }
688//
689// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
690func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) {
691	op := &request.Operation{
692		Name:       opCreateMultipartUpload,
693		HTTPMethod: "POST",
694		HTTPPath:   "/{Bucket}/{Key+}?uploads",
695	}
696
697	if input == nil {
698		input = &CreateMultipartUploadInput{}
699	}
700
701	output = &CreateMultipartUploadOutput{}
702	req = c.newRequest(op, input, output)
703	return
704}
705
706// CreateMultipartUpload API operation for Amazon Simple Storage Service.
707//
708// This operation initiates a multipart upload and returns an upload ID. This
709// upload ID is used to associate all of the parts in the specific multipart
710// upload. You specify this upload ID in each of your subsequent upload part
711// requests (see UploadPart). You also include this upload ID in the final request
712// to either complete or abort the multipart upload request.
713//
714// For more information about multipart uploads, see Multipart Upload Overview
715// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html).
716//
717// If you have configured a lifecycle rule to abort incomplete multipart uploads,
718// the upload must complete within the number of days specified in the bucket
719// lifecycle configuration. Otherwise, the incomplete multipart upload becomes
720// eligible for an abort operation and Amazon S3 aborts the multipart upload.
721// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
722// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
723//
724// For information about the permissions required to use the multipart upload
725// API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
726//
727// For request signing, multipart upload is just a series of regular requests.
728// You initiate a multipart upload, send one or more requests to upload parts,
729// and then complete the multipart upload process. You sign each request individually.
730// There is nothing special about signing multipart upload requests. For more
731// information about signing, see Authenticating Requests (AWS Signature Version
732// 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
733//
734// After you initiate a multipart upload and upload one or more parts, to stop
735// being charged for storing the uploaded parts, you must either complete or
736// abort the multipart upload. Amazon S3 frees up the space used to store the
737// parts and stop charging you for storing them only after you either complete
738// or abort a multipart upload.
739//
740// You can optionally request server-side encryption. For server-side encryption,
741// Amazon S3 encrypts your data as it writes it to disks in its data centers
742// and decrypts it when you access it. You can provide your own encryption key,
743// or use AWS Key Management Service (AWS KMS) customer master keys (CMKs) or
744// Amazon S3-managed encryption keys. If you choose to provide your own encryption
745// key, the request headers you provide in UploadPart) and UploadPartCopy) requests
746// must match the headers you used in the request to initiate the upload by
747// using CreateMultipartUpload.
748//
749// To perform a multipart upload with encryption using an AWS KMS CMK, the requester
750// must have permission to the kms:Encrypt, kms:Decrypt, kms:ReEncrypt*, kms:GenerateDataKey*,
751// and kms:DescribeKey actions on the key. These permissions are required because
752// Amazon S3 must decrypt and read data from the encrypted file parts before
753// it completes the multipart upload.
754//
755// If your AWS Identity and Access Management (IAM) user or role is in the same
756// AWS account as the AWS KMS CMK, then you must have these permissions on the
757// key policy. If your IAM user or role belongs to a different account than
758// the key, then you must have the permissions on both the key policy and your
759// IAM user or role.
760//
761// For more information, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
762//
763// Access Permissions
764//
765// When copying an object, you can optionally specify the accounts or groups
766// that should be granted specific permissions on the new object. There are
767// two ways to grant the permissions using the request headers:
768//
769//    * Specify a canned ACL with the x-amz-acl request header. For more information,
770//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
771//
772//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
773//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
774//    map to the set of permissions that Amazon S3 supports in an ACL. For more
775//    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
776//
777// You can use either a canned ACL or specify access permissions explicitly.
778// You cannot do both.
779//
780// Server-Side- Encryption-Specific Request Headers
781//
782// You can optionally tell Amazon S3 to encrypt data at rest using server-side
783// encryption. Server-side encryption is for data encryption at rest. Amazon
784// S3 encrypts your data as it writes it to disks in its data centers and decrypts
785// it when you access it. The option you use depends on whether you want to
786// use AWS managed encryption keys or provide your own encryption key.
787//
788//    * Use encryption keys managed by Amazon S3 or customer master keys (CMKs)
789//    stored in AWS Key Management Service (AWS KMS) – If you want AWS to
790//    manage the keys used to encrypt data, specify the following headers in
791//    the request. x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id
792//    x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms,
793//    but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon
794//    S3 uses the AWS managed CMK in AWS KMS to protect the data. All GET and
795//    PUT requests for an object protected by AWS KMS fail if you don't make
796//    them with SSL or by using SigV4. For more information about server-side
797//    encryption with CMKs stored in AWS KMS (SSE-KMS), see Protecting Data
798//    Using Server-Side Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
799//
800//    * Use customer-provided encryption keys – If you want to manage your
801//    own encryption keys, provide all the following headers in the request.
802//    x-amz-server-side​-encryption​-customer-algorithm x-amz-server-side​-encryption​-customer-key
803//    x-amz-server-side​-encryption​-customer-key-MD5 For more information
804//    about server-side encryption with CMKs stored in AWS KMS (SSE-KMS), see
805//    Protecting Data Using Server-Side Encryption with CMKs stored in AWS KMS
806//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
807//
808// Access-Control-List (ACL)-Specific Request Headers
809//
810// You also can use the following access control–related headers with this
811// operation. By default, all objects are private. Only the owner has full access
812// control. When adding a new object, you can grant permissions to individual
813// AWS accounts or to predefined groups defined by Amazon S3. These permissions
814// are then added to the access control list (ACL) on the object. For more information,
815// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
816// With this operation, you can grant access permissions using one of the following
817// two methods:
818//
819//    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
820//    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
821//    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
822//
823//    * Specify access permissions explicitly — To explicitly grant access
824//    permissions to specific AWS accounts or groups, use the following headers.
825//    Each header maps to specific permissions that Amazon S3 supports in an
826//    ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
827//    In the header, you specify a list of grantees who get the specific permission.
828//    To grant permissions explicitly, use: x-amz-grant-read x-amz-grant-write
829//    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
830//    specify each grantee as a type=value pair, where the type is one of the
831//    following: emailAddress – if the value specified is the email address
832//    of an AWS account id – if the value specified is the canonical user
833//    ID of an AWS account uri – if you are granting permissions to a predefined
834//    group For example, the following x-amz-grant-read header grants the AWS
835//    accounts identified by email addresses permissions to read object data
836//    and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
837//
838// The following operations are related to CreateMultipartUpload:
839//
840//    * UploadPart
841//
842//    * CompleteMultipartUpload
843//
844//    * AbortMultipartUpload
845//
846//    * ListParts
847//
848//    * ListMultipartUploads
849//
850// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
851// with awserr.Error's Code and Message methods to get detailed information about
852// the error.
853//
854// See the AWS API reference guide for Amazon Simple Storage Service's
855// API operation CreateMultipartUpload for usage and error information.
856// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
857func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) {
858	req, out := c.CreateMultipartUploadRequest(input)
859	return out, req.Send()
860}
861
862// CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of
863// the ability to pass a context and additional request options.
864//
865// See CreateMultipartUpload for details on how to use this API operation.
866//
867// The context must be non-nil and will be used for request cancellation. If
868// the context is nil a panic will occur. In the future the SDK may create
869// sub-contexts for http.Requests. See https://golang.org/pkg/context/
870// for more information on using Contexts.
871func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) {
872	req, out := c.CreateMultipartUploadRequest(input)
873	req.SetContext(ctx)
874	req.ApplyOptions(opts...)
875	return out, req.Send()
876}
877
878const opDeleteBucket = "DeleteBucket"
879
880// DeleteBucketRequest generates a "aws/request.Request" representing the
881// client's request for the DeleteBucket operation. The "output" return
882// value will be populated with the request's response once the request completes
883// successfully.
884//
885// Use "Send" method on the returned Request to send the API call to the service.
886// the "output" return value is not valid until after Send returns without error.
887//
888// See DeleteBucket for more information on using the DeleteBucket
889// API call, and error handling.
890//
891// This method is useful when you want to inject custom logic or configuration
892// into the SDK's request lifecycle. Such as custom headers, or retry logic.
893//
894//
895//    // Example sending a request using the DeleteBucketRequest method.
896//    req, resp := client.DeleteBucketRequest(params)
897//
898//    err := req.Send()
899//    if err == nil { // resp is now filled
900//        fmt.Println(resp)
901//    }
902//
903// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
904func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) {
905	op := &request.Operation{
906		Name:       opDeleteBucket,
907		HTTPMethod: "DELETE",
908		HTTPPath:   "/{Bucket}",
909	}
910
911	if input == nil {
912		input = &DeleteBucketInput{}
913	}
914
915	output = &DeleteBucketOutput{}
916	req = c.newRequest(op, input, output)
917	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
918	return
919}
920
921// DeleteBucket API operation for Amazon Simple Storage Service.
922//
923// Deletes the bucket. All objects (including all object versions and delete
924// markers) in the bucket must be deleted before the bucket itself can be deleted.
925//
926// Related Resources
927//
928//    *
929//
930//    *
931//
932// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
933// with awserr.Error's Code and Message methods to get detailed information about
934// the error.
935//
936// See the AWS API reference guide for Amazon Simple Storage Service's
937// API operation DeleteBucket for usage and error information.
938// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
939func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
940	req, out := c.DeleteBucketRequest(input)
941	return out, req.Send()
942}
943
944// DeleteBucketWithContext is the same as DeleteBucket with the addition of
945// the ability to pass a context and additional request options.
946//
947// See DeleteBucket for details on how to use this API operation.
948//
949// The context must be non-nil and will be used for request cancellation. If
950// the context is nil a panic will occur. In the future the SDK may create
951// sub-contexts for http.Requests. See https://golang.org/pkg/context/
952// for more information on using Contexts.
953func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
954	req, out := c.DeleteBucketRequest(input)
955	req.SetContext(ctx)
956	req.ApplyOptions(opts...)
957	return out, req.Send()
958}
959
960const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
961
962// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
963// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
964// value will be populated with the request's response once the request completes
965// successfully.
966//
967// Use "Send" method on the returned Request to send the API call to the service.
968// the "output" return value is not valid until after Send returns without error.
969//
970// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
971// API call, and error handling.
972//
973// This method is useful when you want to inject custom logic or configuration
974// into the SDK's request lifecycle. Such as custom headers, or retry logic.
975//
976//
977//    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
978//    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
979//
980//    err := req.Send()
981//    if err == nil { // resp is now filled
982//        fmt.Println(resp)
983//    }
984//
985// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
986func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
987	op := &request.Operation{
988		Name:       opDeleteBucketAnalyticsConfiguration,
989		HTTPMethod: "DELETE",
990		HTTPPath:   "/{Bucket}?analytics",
991	}
992
993	if input == nil {
994		input = &DeleteBucketAnalyticsConfigurationInput{}
995	}
996
997	output = &DeleteBucketAnalyticsConfigurationOutput{}
998	req = c.newRequest(op, input, output)
999	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1000	return
1001}
1002
1003// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
1004//
1005// Deletes an analytics configuration for the bucket (specified by the analytics
1006// configuration ID).
1007//
1008// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
1009// action. The bucket owner has this permission by default. The bucket owner
1010// can grant this permission to others. For more information about permissions,
1011// 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)
1012// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1013//
1014// For information about the Amazon S3 analytics feature, see Amazon S3 Analytics
1015// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
1016//
1017// The following operations are related to DeleteBucketAnalyticsConfiguration:
1018//
1019//    *
1020//
1021//    *
1022//
1023//    *
1024//
1025// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1026// with awserr.Error's Code and Message methods to get detailed information about
1027// the error.
1028//
1029// See the AWS API reference guide for Amazon Simple Storage Service's
1030// API operation DeleteBucketAnalyticsConfiguration for usage and error information.
1031// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
1032func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1033	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1034	return out, req.Send()
1035}
1036
1037// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
1038// the ability to pass a context and additional request options.
1039//
1040// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
1041//
1042// The context must be non-nil and will be used for request cancellation. If
1043// the context is nil a panic will occur. In the future the SDK may create
1044// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1045// for more information on using Contexts.
1046func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1047	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1048	req.SetContext(ctx)
1049	req.ApplyOptions(opts...)
1050	return out, req.Send()
1051}
1052
1053const opDeleteBucketCors = "DeleteBucketCors"
1054
1055// DeleteBucketCorsRequest generates a "aws/request.Request" representing the
1056// client's request for the DeleteBucketCors operation. The "output" return
1057// value will be populated with the request's response once the request completes
1058// successfully.
1059//
1060// Use "Send" method on the returned Request to send the API call to the service.
1061// the "output" return value is not valid until after Send returns without error.
1062//
1063// See DeleteBucketCors for more information on using the DeleteBucketCors
1064// API call, and error handling.
1065//
1066// This method is useful when you want to inject custom logic or configuration
1067// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1068//
1069//
1070//    // Example sending a request using the DeleteBucketCorsRequest method.
1071//    req, resp := client.DeleteBucketCorsRequest(params)
1072//
1073//    err := req.Send()
1074//    if err == nil { // resp is now filled
1075//        fmt.Println(resp)
1076//    }
1077//
1078// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1079func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
1080	op := &request.Operation{
1081		Name:       opDeleteBucketCors,
1082		HTTPMethod: "DELETE",
1083		HTTPPath:   "/{Bucket}?cors",
1084	}
1085
1086	if input == nil {
1087		input = &DeleteBucketCorsInput{}
1088	}
1089
1090	output = &DeleteBucketCorsOutput{}
1091	req = c.newRequest(op, input, output)
1092	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1093	return
1094}
1095
1096// DeleteBucketCors API operation for Amazon Simple Storage Service.
1097//
1098// Deletes the cors configuration information set for the bucket.
1099//
1100// To use this operation, you must have permission to perform the s3:PutBucketCORS
1101// action. The bucket owner has this permission by default and can grant this
1102// permission to others.
1103//
1104// For information about cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)
1105// in the Amazon Simple Storage Service Developer Guide.
1106//
1107// Related Resources:
1108//
1109//    *
1110//
1111//    * RESTOPTIONSobject
1112//
1113// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1114// with awserr.Error's Code and Message methods to get detailed information about
1115// the error.
1116//
1117// See the AWS API reference guide for Amazon Simple Storage Service's
1118// API operation DeleteBucketCors for usage and error information.
1119// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1120func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
1121	req, out := c.DeleteBucketCorsRequest(input)
1122	return out, req.Send()
1123}
1124
1125// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
1126// the ability to pass a context and additional request options.
1127//
1128// See DeleteBucketCors for details on how to use this API operation.
1129//
1130// The context must be non-nil and will be used for request cancellation. If
1131// the context is nil a panic will occur. In the future the SDK may create
1132// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1133// for more information on using Contexts.
1134func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
1135	req, out := c.DeleteBucketCorsRequest(input)
1136	req.SetContext(ctx)
1137	req.ApplyOptions(opts...)
1138	return out, req.Send()
1139}
1140
1141const opDeleteBucketEncryption = "DeleteBucketEncryption"
1142
1143// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
1144// client's request for the DeleteBucketEncryption operation. The "output" return
1145// value will be populated with the request's response once the request completes
1146// successfully.
1147//
1148// Use "Send" method on the returned Request to send the API call to the service.
1149// the "output" return value is not valid until after Send returns without error.
1150//
1151// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
1152// API call, and error handling.
1153//
1154// This method is useful when you want to inject custom logic or configuration
1155// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1156//
1157//
1158//    // Example sending a request using the DeleteBucketEncryptionRequest method.
1159//    req, resp := client.DeleteBucketEncryptionRequest(params)
1160//
1161//    err := req.Send()
1162//    if err == nil { // resp is now filled
1163//        fmt.Println(resp)
1164//    }
1165//
1166// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1167func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
1168	op := &request.Operation{
1169		Name:       opDeleteBucketEncryption,
1170		HTTPMethod: "DELETE",
1171		HTTPPath:   "/{Bucket}?encryption",
1172	}
1173
1174	if input == nil {
1175		input = &DeleteBucketEncryptionInput{}
1176	}
1177
1178	output = &DeleteBucketEncryptionOutput{}
1179	req = c.newRequest(op, input, output)
1180	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1181	return
1182}
1183
1184// DeleteBucketEncryption API operation for Amazon Simple Storage Service.
1185//
1186// This implementation of the DELETE operation removes default encryption from
1187// the bucket. For information about the Amazon S3 default encryption feature,
1188// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev//bucket-encryption.html)
1189// in the Amazon Simple Storage Service Developer Guide.
1190//
1191// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
1192// action. The bucket owner has this permission by default. The bucket owner
1193// can grant this permission to others. For more information about permissions,
1194// 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)
1195// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html)
1196// in the Amazon Simple Storage Service Developer Guide.
1197//
1198// Related Resources
1199//
1200//    * PutBucketEncryption
1201//
1202//    * GetBucketEncryption
1203//
1204// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1205// with awserr.Error's Code and Message methods to get detailed information about
1206// the error.
1207//
1208// See the AWS API reference guide for Amazon Simple Storage Service's
1209// API operation DeleteBucketEncryption for usage and error information.
1210// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1211func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
1212	req, out := c.DeleteBucketEncryptionRequest(input)
1213	return out, req.Send()
1214}
1215
1216// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
1217// the ability to pass a context and additional request options.
1218//
1219// See DeleteBucketEncryption for details on how to use this API operation.
1220//
1221// The context must be non-nil and will be used for request cancellation. If
1222// the context is nil a panic will occur. In the future the SDK may create
1223// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1224// for more information on using Contexts.
1225func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
1226	req, out := c.DeleteBucketEncryptionRequest(input)
1227	req.SetContext(ctx)
1228	req.ApplyOptions(opts...)
1229	return out, req.Send()
1230}
1231
1232const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
1233
1234// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
1235// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
1236// value will be populated with the request's response once the request completes
1237// successfully.
1238//
1239// Use "Send" method on the returned Request to send the API call to the service.
1240// the "output" return value is not valid until after Send returns without error.
1241//
1242// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
1243// API call, and error handling.
1244//
1245// This method is useful when you want to inject custom logic or configuration
1246// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1247//
1248//
1249//    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
1250//    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
1251//
1252//    err := req.Send()
1253//    if err == nil { // resp is now filled
1254//        fmt.Println(resp)
1255//    }
1256//
1257// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1258func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
1259	op := &request.Operation{
1260		Name:       opDeleteBucketInventoryConfiguration,
1261		HTTPMethod: "DELETE",
1262		HTTPPath:   "/{Bucket}?inventory",
1263	}
1264
1265	if input == nil {
1266		input = &DeleteBucketInventoryConfigurationInput{}
1267	}
1268
1269	output = &DeleteBucketInventoryConfigurationOutput{}
1270	req = c.newRequest(op, input, output)
1271	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1272	return
1273}
1274
1275// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
1276//
1277// Deletes an inventory configuration (identified by the inventory ID) from
1278// the bucket.
1279//
1280// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
1281// action. The bucket owner has this permission by default. The bucket owner
1282// can grant this permission to others. For more information about permissions,
1283// 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)
1284// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1285//
1286// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
1287// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
1288//
1289// Operations related to DeleteBucketInventoryConfiguration include:
1290//
1291//    * GetBucketInventoryConfiguration
1292//
1293//    * PutBucketInventoryConfiguration
1294//
1295//    * ListBucketInventoryConfigurations
1296//
1297// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1298// with awserr.Error's Code and Message methods to get detailed information about
1299// the error.
1300//
1301// See the AWS API reference guide for Amazon Simple Storage Service's
1302// API operation DeleteBucketInventoryConfiguration for usage and error information.
1303// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1304func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
1305	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1306	return out, req.Send()
1307}
1308
1309// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
1310// the ability to pass a context and additional request options.
1311//
1312// See DeleteBucketInventoryConfiguration for details on how to use this API operation.
1313//
1314// The context must be non-nil and will be used for request cancellation. If
1315// the context is nil a panic will occur. In the future the SDK may create
1316// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1317// for more information on using Contexts.
1318func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
1319	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1320	req.SetContext(ctx)
1321	req.ApplyOptions(opts...)
1322	return out, req.Send()
1323}
1324
1325const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
1326
1327// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
1328// client's request for the DeleteBucketLifecycle operation. The "output" return
1329// value will be populated with the request's response once the request completes
1330// successfully.
1331//
1332// Use "Send" method on the returned Request to send the API call to the service.
1333// the "output" return value is not valid until after Send returns without error.
1334//
1335// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
1336// API call, and error handling.
1337//
1338// This method is useful when you want to inject custom logic or configuration
1339// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1340//
1341//
1342//    // Example sending a request using the DeleteBucketLifecycleRequest method.
1343//    req, resp := client.DeleteBucketLifecycleRequest(params)
1344//
1345//    err := req.Send()
1346//    if err == nil { // resp is now filled
1347//        fmt.Println(resp)
1348//    }
1349//
1350// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1351func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
1352	op := &request.Operation{
1353		Name:       opDeleteBucketLifecycle,
1354		HTTPMethod: "DELETE",
1355		HTTPPath:   "/{Bucket}?lifecycle",
1356	}
1357
1358	if input == nil {
1359		input = &DeleteBucketLifecycleInput{}
1360	}
1361
1362	output = &DeleteBucketLifecycleOutput{}
1363	req = c.newRequest(op, input, output)
1364	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1365	return
1366}
1367
1368// DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
1369//
1370// Deletes the lifecycle configuration from the specified bucket. Amazon S3
1371// removes all the lifecycle configuration rules in the lifecycle subresource
1372// associated with the bucket. Your objects never expire, and Amazon S3 no longer
1373// automatically deletes any objects on the basis of rules contained in the
1374// deleted lifecycle configuration.
1375//
1376// To use this operation, you must have permission to perform the s3:PutLifecycleConfiguration
1377// action. By default, the bucket owner has this permission and the bucket owner
1378// can grant this permission to others.
1379//
1380// There is usually some time lag before lifecycle configuration deletion is
1381// fully propagated to all the Amazon S3 systems.
1382//
1383// For more information about the object expiration, see Elements to Describe
1384// Lifecycle Actions (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions).
1385//
1386// Related actions include:
1387//
1388//    * PutBucketLifecycleConfiguration
1389//
1390//    * GetBucketLifecycleConfiguration
1391//
1392// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1393// with awserr.Error's Code and Message methods to get detailed information about
1394// the error.
1395//
1396// See the AWS API reference guide for Amazon Simple Storage Service's
1397// API operation DeleteBucketLifecycle for usage and error information.
1398// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1399func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
1400	req, out := c.DeleteBucketLifecycleRequest(input)
1401	return out, req.Send()
1402}
1403
1404// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
1405// the ability to pass a context and additional request options.
1406//
1407// See DeleteBucketLifecycle for details on how to use this API operation.
1408//
1409// The context must be non-nil and will be used for request cancellation. If
1410// the context is nil a panic will occur. In the future the SDK may create
1411// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1412// for more information on using Contexts.
1413func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
1414	req, out := c.DeleteBucketLifecycleRequest(input)
1415	req.SetContext(ctx)
1416	req.ApplyOptions(opts...)
1417	return out, req.Send()
1418}
1419
1420const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
1421
1422// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
1423// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
1424// value will be populated with the request's response once the request completes
1425// successfully.
1426//
1427// Use "Send" method on the returned Request to send the API call to the service.
1428// the "output" return value is not valid until after Send returns without error.
1429//
1430// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
1431// API call, and error handling.
1432//
1433// This method is useful when you want to inject custom logic or configuration
1434// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1435//
1436//
1437//    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
1438//    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
1439//
1440//    err := req.Send()
1441//    if err == nil { // resp is now filled
1442//        fmt.Println(resp)
1443//    }
1444//
1445// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1446func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
1447	op := &request.Operation{
1448		Name:       opDeleteBucketMetricsConfiguration,
1449		HTTPMethod: "DELETE",
1450		HTTPPath:   "/{Bucket}?metrics",
1451	}
1452
1453	if input == nil {
1454		input = &DeleteBucketMetricsConfigurationInput{}
1455	}
1456
1457	output = &DeleteBucketMetricsConfigurationOutput{}
1458	req = c.newRequest(op, input, output)
1459	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1460	return
1461}
1462
1463// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
1464//
1465// Deletes a metrics configuration for the Amazon CloudWatch request metrics
1466// (specified by the metrics configuration ID) from the bucket. Note that this
1467// doesn't include the daily storage metrics.
1468//
1469// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
1470// action. The bucket owner has this permission by default. The bucket owner
1471// can grant this permission to others. For more information about permissions,
1472// 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)
1473// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1474//
1475// For information about CloudWatch request metrics for Amazon S3, see Monitoring
1476// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
1477//
1478// The following operations are related to DeleteBucketMetricsConfiguration:
1479//
1480//    * GetBucketMetricsConfiguration
1481//
1482//    * PutBucketMetricsConfiguration
1483//
1484//    * ListBucketMetricsConfigurations
1485//
1486//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
1487//
1488// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1489// with awserr.Error's Code and Message methods to get detailed information about
1490// the error.
1491//
1492// See the AWS API reference guide for Amazon Simple Storage Service's
1493// API operation DeleteBucketMetricsConfiguration for usage and error information.
1494// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1495func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
1496	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1497	return out, req.Send()
1498}
1499
1500// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
1501// the ability to pass a context and additional request options.
1502//
1503// See DeleteBucketMetricsConfiguration for details on how to use this API operation.
1504//
1505// The context must be non-nil and will be used for request cancellation. If
1506// the context is nil a panic will occur. In the future the SDK may create
1507// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1508// for more information on using Contexts.
1509func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
1510	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1511	req.SetContext(ctx)
1512	req.ApplyOptions(opts...)
1513	return out, req.Send()
1514}
1515
1516const opDeleteBucketPolicy = "DeleteBucketPolicy"
1517
1518// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
1519// client's request for the DeleteBucketPolicy operation. The "output" return
1520// value will be populated with the request's response once the request completes
1521// successfully.
1522//
1523// Use "Send" method on the returned Request to send the API call to the service.
1524// the "output" return value is not valid until after Send returns without error.
1525//
1526// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
1527// API call, and error handling.
1528//
1529// This method is useful when you want to inject custom logic or configuration
1530// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1531//
1532//
1533//    // Example sending a request using the DeleteBucketPolicyRequest method.
1534//    req, resp := client.DeleteBucketPolicyRequest(params)
1535//
1536//    err := req.Send()
1537//    if err == nil { // resp is now filled
1538//        fmt.Println(resp)
1539//    }
1540//
1541// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1542func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
1543	op := &request.Operation{
1544		Name:       opDeleteBucketPolicy,
1545		HTTPMethod: "DELETE",
1546		HTTPPath:   "/{Bucket}?policy",
1547	}
1548
1549	if input == nil {
1550		input = &DeleteBucketPolicyInput{}
1551	}
1552
1553	output = &DeleteBucketPolicyOutput{}
1554	req = c.newRequest(op, input, output)
1555	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1556	return
1557}
1558
1559// DeleteBucketPolicy API operation for Amazon Simple Storage Service.
1560//
1561// This implementation of the DELETE operation uses the policy subresource to
1562// delete the policy of a specified bucket. If you are using an identity other
1563// than the root user of the AWS account that owns the bucket, the calling identity
1564// must have the DeleteBucketPolicy permissions on the specified bucket and
1565// belong to the bucket owner's account to use this operation.
1566//
1567// If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403
1568// Access Denied error. If you have the correct permissions, but you're not
1569// using an identity that belongs to the bucket owner's account, Amazon S3 returns
1570// a 405 Method Not Allowed error.
1571//
1572// As a security precaution, the root user of the AWS account that owns a bucket
1573// can always use this operation, even if the policy explicitly denies the root
1574// user the ability to perform this action.
1575//
1576// For more information about bucket policies, see Using Bucket Policies and
1577// UserPolicies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
1578//
1579// The following operations are related to DeleteBucketPolicy
1580//
1581//    * CreateBucket
1582//
1583//    * DeleteObject
1584//
1585// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1586// with awserr.Error's Code and Message methods to get detailed information about
1587// the error.
1588//
1589// See the AWS API reference guide for Amazon Simple Storage Service's
1590// API operation DeleteBucketPolicy for usage and error information.
1591// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1592func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
1593	req, out := c.DeleteBucketPolicyRequest(input)
1594	return out, req.Send()
1595}
1596
1597// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
1598// the ability to pass a context and additional request options.
1599//
1600// See DeleteBucketPolicy for details on how to use this API operation.
1601//
1602// The context must be non-nil and will be used for request cancellation. If
1603// the context is nil a panic will occur. In the future the SDK may create
1604// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1605// for more information on using Contexts.
1606func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
1607	req, out := c.DeleteBucketPolicyRequest(input)
1608	req.SetContext(ctx)
1609	req.ApplyOptions(opts...)
1610	return out, req.Send()
1611}
1612
1613const opDeleteBucketReplication = "DeleteBucketReplication"
1614
1615// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
1616// client's request for the DeleteBucketReplication operation. The "output" return
1617// value will be populated with the request's response once the request completes
1618// successfully.
1619//
1620// Use "Send" method on the returned Request to send the API call to the service.
1621// the "output" return value is not valid until after Send returns without error.
1622//
1623// See DeleteBucketReplication for more information on using the DeleteBucketReplication
1624// API call, and error handling.
1625//
1626// This method is useful when you want to inject custom logic or configuration
1627// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1628//
1629//
1630//    // Example sending a request using the DeleteBucketReplicationRequest method.
1631//    req, resp := client.DeleteBucketReplicationRequest(params)
1632//
1633//    err := req.Send()
1634//    if err == nil { // resp is now filled
1635//        fmt.Println(resp)
1636//    }
1637//
1638// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1639func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
1640	op := &request.Operation{
1641		Name:       opDeleteBucketReplication,
1642		HTTPMethod: "DELETE",
1643		HTTPPath:   "/{Bucket}?replication",
1644	}
1645
1646	if input == nil {
1647		input = &DeleteBucketReplicationInput{}
1648	}
1649
1650	output = &DeleteBucketReplicationOutput{}
1651	req = c.newRequest(op, input, output)
1652	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1653	return
1654}
1655
1656// DeleteBucketReplication API operation for Amazon Simple Storage Service.
1657//
1658// Deletes the replication configuration from the bucket.
1659//
1660// To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration
1661// action. The bucket owner has these permissions by default and can grant it
1662// to others. For more information about permissions, see Permissions Related
1663// 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)
1664// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
1665//
1666// It can take a while for the deletion of a replication configuration to fully
1667// propagate.
1668//
1669// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
1670// in the Amazon S3 Developer Guide.
1671//
1672// The following operations are related to DeleteBucketReplication:
1673//
1674//    * PutBucketReplication
1675//
1676//    * GetBucketReplication
1677//
1678// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1679// with awserr.Error's Code and Message methods to get detailed information about
1680// the error.
1681//
1682// See the AWS API reference guide for Amazon Simple Storage Service's
1683// API operation DeleteBucketReplication for usage and error information.
1684// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1685func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
1686	req, out := c.DeleteBucketReplicationRequest(input)
1687	return out, req.Send()
1688}
1689
1690// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
1691// the ability to pass a context and additional request options.
1692//
1693// See DeleteBucketReplication for details on how to use this API operation.
1694//
1695// The context must be non-nil and will be used for request cancellation. If
1696// the context is nil a panic will occur. In the future the SDK may create
1697// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1698// for more information on using Contexts.
1699func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
1700	req, out := c.DeleteBucketReplicationRequest(input)
1701	req.SetContext(ctx)
1702	req.ApplyOptions(opts...)
1703	return out, req.Send()
1704}
1705
1706const opDeleteBucketTagging = "DeleteBucketTagging"
1707
1708// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
1709// client's request for the DeleteBucketTagging operation. The "output" return
1710// value will be populated with the request's response once the request completes
1711// successfully.
1712//
1713// Use "Send" method on the returned Request to send the API call to the service.
1714// the "output" return value is not valid until after Send returns without error.
1715//
1716// See DeleteBucketTagging for more information on using the DeleteBucketTagging
1717// API call, and error handling.
1718//
1719// This method is useful when you want to inject custom logic or configuration
1720// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1721//
1722//
1723//    // Example sending a request using the DeleteBucketTaggingRequest method.
1724//    req, resp := client.DeleteBucketTaggingRequest(params)
1725//
1726//    err := req.Send()
1727//    if err == nil { // resp is now filled
1728//        fmt.Println(resp)
1729//    }
1730//
1731// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1732func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
1733	op := &request.Operation{
1734		Name:       opDeleteBucketTagging,
1735		HTTPMethod: "DELETE",
1736		HTTPPath:   "/{Bucket}?tagging",
1737	}
1738
1739	if input == nil {
1740		input = &DeleteBucketTaggingInput{}
1741	}
1742
1743	output = &DeleteBucketTaggingOutput{}
1744	req = c.newRequest(op, input, output)
1745	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1746	return
1747}
1748
1749// DeleteBucketTagging API operation for Amazon Simple Storage Service.
1750//
1751// Deletes the tags from the bucket.
1752//
1753// To use this operation, you must have permission to perform the s3:PutBucketTagging
1754// action. By default, the bucket owner has this permission and can grant this
1755// permission to others.
1756//
1757// The following operations are related to DeleteBucketTagging:
1758//
1759//    * GetBucketTagging
1760//
1761//    * PutBucketTagging
1762//
1763// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1764// with awserr.Error's Code and Message methods to get detailed information about
1765// the error.
1766//
1767// See the AWS API reference guide for Amazon Simple Storage Service's
1768// API operation DeleteBucketTagging for usage and error information.
1769// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1770func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
1771	req, out := c.DeleteBucketTaggingRequest(input)
1772	return out, req.Send()
1773}
1774
1775// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
1776// the ability to pass a context and additional request options.
1777//
1778// See DeleteBucketTagging for details on how to use this API operation.
1779//
1780// The context must be non-nil and will be used for request cancellation. If
1781// the context is nil a panic will occur. In the future the SDK may create
1782// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1783// for more information on using Contexts.
1784func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
1785	req, out := c.DeleteBucketTaggingRequest(input)
1786	req.SetContext(ctx)
1787	req.ApplyOptions(opts...)
1788	return out, req.Send()
1789}
1790
1791const opDeleteBucketWebsite = "DeleteBucketWebsite"
1792
1793// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
1794// client's request for the DeleteBucketWebsite operation. The "output" return
1795// value will be populated with the request's response once the request completes
1796// successfully.
1797//
1798// Use "Send" method on the returned Request to send the API call to the service.
1799// the "output" return value is not valid until after Send returns without error.
1800//
1801// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
1802// API call, and error handling.
1803//
1804// This method is useful when you want to inject custom logic or configuration
1805// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1806//
1807//
1808//    // Example sending a request using the DeleteBucketWebsiteRequest method.
1809//    req, resp := client.DeleteBucketWebsiteRequest(params)
1810//
1811//    err := req.Send()
1812//    if err == nil { // resp is now filled
1813//        fmt.Println(resp)
1814//    }
1815//
1816// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1817func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
1818	op := &request.Operation{
1819		Name:       opDeleteBucketWebsite,
1820		HTTPMethod: "DELETE",
1821		HTTPPath:   "/{Bucket}?website",
1822	}
1823
1824	if input == nil {
1825		input = &DeleteBucketWebsiteInput{}
1826	}
1827
1828	output = &DeleteBucketWebsiteOutput{}
1829	req = c.newRequest(op, input, output)
1830	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1831	return
1832}
1833
1834// DeleteBucketWebsite API operation for Amazon Simple Storage Service.
1835//
1836// This operation removes the website configuration for a bucket. Amazon S3
1837// returns a 200 OK response upon successfully deleting a website configuration
1838// on the specified bucket. You will get a 200 OK response if the website configuration
1839// you are trying to delete does not exist on the bucket. Amazon S3 returns
1840// a 404 response if the bucket specified in the request does not exist.
1841//
1842// This DELETE operation requires the S3:DeleteBucketWebsite permission. By
1843// default, only the bucket owner can delete the website configuration attached
1844// to a bucket. However, bucket owners can grant other users permission to delete
1845// the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite
1846// permission.
1847//
1848// For more information about hosting websites, see Hosting Websites on Amazon
1849// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
1850//
1851// The following operations are related to DeleteBucketWebsite:
1852//
1853//    * GetBucketWebsite
1854//
1855//    * PutBucketWebsite
1856//
1857// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1858// with awserr.Error's Code and Message methods to get detailed information about
1859// the error.
1860//
1861// See the AWS API reference guide for Amazon Simple Storage Service's
1862// API operation DeleteBucketWebsite for usage and error information.
1863// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
1864func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
1865	req, out := c.DeleteBucketWebsiteRequest(input)
1866	return out, req.Send()
1867}
1868
1869// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
1870// the ability to pass a context and additional request options.
1871//
1872// See DeleteBucketWebsite for details on how to use this API operation.
1873//
1874// The context must be non-nil and will be used for request cancellation. If
1875// the context is nil a panic will occur. In the future the SDK may create
1876// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1877// for more information on using Contexts.
1878func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
1879	req, out := c.DeleteBucketWebsiteRequest(input)
1880	req.SetContext(ctx)
1881	req.ApplyOptions(opts...)
1882	return out, req.Send()
1883}
1884
1885const opDeleteObject = "DeleteObject"
1886
1887// DeleteObjectRequest generates a "aws/request.Request" representing the
1888// client's request for the DeleteObject operation. The "output" return
1889// value will be populated with the request's response once the request completes
1890// successfully.
1891//
1892// Use "Send" method on the returned Request to send the API call to the service.
1893// the "output" return value is not valid until after Send returns without error.
1894//
1895// See DeleteObject for more information on using the DeleteObject
1896// API call, and error handling.
1897//
1898// This method is useful when you want to inject custom logic or configuration
1899// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1900//
1901//
1902//    // Example sending a request using the DeleteObjectRequest method.
1903//    req, resp := client.DeleteObjectRequest(params)
1904//
1905//    err := req.Send()
1906//    if err == nil { // resp is now filled
1907//        fmt.Println(resp)
1908//    }
1909//
1910// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1911func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
1912	op := &request.Operation{
1913		Name:       opDeleteObject,
1914		HTTPMethod: "DELETE",
1915		HTTPPath:   "/{Bucket}/{Key+}",
1916	}
1917
1918	if input == nil {
1919		input = &DeleteObjectInput{}
1920	}
1921
1922	output = &DeleteObjectOutput{}
1923	req = c.newRequest(op, input, output)
1924	return
1925}
1926
1927// DeleteObject API operation for Amazon Simple Storage Service.
1928//
1929// Removes the null version (if there is one) of an object and inserts a delete
1930// marker, which becomes the latest version of the object. If there isn't a
1931// null version, Amazon S3 does not remove any objects.
1932//
1933// To remove a specific version, you must be the bucket owner and you must use
1934// the version Id subresource. Using this subresource permanently deletes the
1935// version. If the object deleted is a delete marker, Amazon S3 sets the response
1936// header, x-amz-delete-marker, to true.
1937//
1938// If the object you want to delete is in a bucket where the bucket versioning
1939// configuration is MFA Delete enabled, you must include the x-amz-mfa request
1940// header in the DELETE versionId request. Requests that include x-amz-mfa must
1941// use HTTPS.
1942//
1943// For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html).
1944// To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
1945//
1946// You can delete objects by explicitly calling the DELETE Object API or configure
1947// its lifecycle (PutBucketLifecycle) to enable Amazon S3 to remove them for
1948// you. If you want to block users or accounts from removing or deleting objects
1949// from your bucket, you must deny them the s3:DeleteObject, s3:DeleteObjectVersion,
1950// and s3:PutLifeCycleConfiguration actions.
1951//
1952// The following operation is related to DeleteObject:
1953//
1954//    * PutObject
1955//
1956// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1957// with awserr.Error's Code and Message methods to get detailed information about
1958// the error.
1959//
1960// See the AWS API reference guide for Amazon Simple Storage Service's
1961// API operation DeleteObject for usage and error information.
1962// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
1963func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
1964	req, out := c.DeleteObjectRequest(input)
1965	return out, req.Send()
1966}
1967
1968// DeleteObjectWithContext is the same as DeleteObject with the addition of
1969// the ability to pass a context and additional request options.
1970//
1971// See DeleteObject for details on how to use this API operation.
1972//
1973// The context must be non-nil and will be used for request cancellation. If
1974// the context is nil a panic will occur. In the future the SDK may create
1975// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1976// for more information on using Contexts.
1977func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
1978	req, out := c.DeleteObjectRequest(input)
1979	req.SetContext(ctx)
1980	req.ApplyOptions(opts...)
1981	return out, req.Send()
1982}
1983
1984const opDeleteObjectTagging = "DeleteObjectTagging"
1985
1986// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
1987// client's request for the DeleteObjectTagging operation. The "output" return
1988// value will be populated with the request's response once the request completes
1989// successfully.
1990//
1991// Use "Send" method on the returned Request to send the API call to the service.
1992// the "output" return value is not valid until after Send returns without error.
1993//
1994// See DeleteObjectTagging for more information on using the DeleteObjectTagging
1995// API call, and error handling.
1996//
1997// This method is useful when you want to inject custom logic or configuration
1998// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1999//
2000//
2001//    // Example sending a request using the DeleteObjectTaggingRequest method.
2002//    req, resp := client.DeleteObjectTaggingRequest(params)
2003//
2004//    err := req.Send()
2005//    if err == nil { // resp is now filled
2006//        fmt.Println(resp)
2007//    }
2008//
2009// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2010func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
2011	op := &request.Operation{
2012		Name:       opDeleteObjectTagging,
2013		HTTPMethod: "DELETE",
2014		HTTPPath:   "/{Bucket}/{Key+}?tagging",
2015	}
2016
2017	if input == nil {
2018		input = &DeleteObjectTaggingInput{}
2019	}
2020
2021	output = &DeleteObjectTaggingOutput{}
2022	req = c.newRequest(op, input, output)
2023	return
2024}
2025
2026// DeleteObjectTagging API operation for Amazon Simple Storage Service.
2027//
2028// Removes the entire tag set from the specified object. For more information
2029// about managing object tags, see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
2030//
2031// To use this operation, you must have permission to perform the s3:DeleteObjectTagging
2032// action.
2033//
2034// To delete tags of a specific object version, add the versionId query parameter
2035// in the request. You will need permission for the s3:DeleteObjectVersionTagging
2036// action.
2037//
2038// The following operations are related to DeleteBucketMetricsConfiguration:
2039//
2040//    * PutObjectTagging
2041//
2042//    * GetObjectTagging
2043//
2044// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2045// with awserr.Error's Code and Message methods to get detailed information about
2046// the error.
2047//
2048// See the AWS API reference guide for Amazon Simple Storage Service's
2049// API operation DeleteObjectTagging for usage and error information.
2050// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2051func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
2052	req, out := c.DeleteObjectTaggingRequest(input)
2053	return out, req.Send()
2054}
2055
2056// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
2057// the ability to pass a context and additional request options.
2058//
2059// See DeleteObjectTagging for details on how to use this API operation.
2060//
2061// The context must be non-nil and will be used for request cancellation. If
2062// the context is nil a panic will occur. In the future the SDK may create
2063// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2064// for more information on using Contexts.
2065func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
2066	req, out := c.DeleteObjectTaggingRequest(input)
2067	req.SetContext(ctx)
2068	req.ApplyOptions(opts...)
2069	return out, req.Send()
2070}
2071
2072const opDeleteObjects = "DeleteObjects"
2073
2074// DeleteObjectsRequest generates a "aws/request.Request" representing the
2075// client's request for the DeleteObjects operation. The "output" return
2076// value will be populated with the request's response once the request completes
2077// successfully.
2078//
2079// Use "Send" method on the returned Request to send the API call to the service.
2080// the "output" return value is not valid until after Send returns without error.
2081//
2082// See DeleteObjects for more information on using the DeleteObjects
2083// API call, and error handling.
2084//
2085// This method is useful when you want to inject custom logic or configuration
2086// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2087//
2088//
2089//    // Example sending a request using the DeleteObjectsRequest method.
2090//    req, resp := client.DeleteObjectsRequest(params)
2091//
2092//    err := req.Send()
2093//    if err == nil { // resp is now filled
2094//        fmt.Println(resp)
2095//    }
2096//
2097// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2098func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
2099	op := &request.Operation{
2100		Name:       opDeleteObjects,
2101		HTTPMethod: "POST",
2102		HTTPPath:   "/{Bucket}?delete",
2103	}
2104
2105	if input == nil {
2106		input = &DeleteObjectsInput{}
2107	}
2108
2109	output = &DeleteObjectsOutput{}
2110	req = c.newRequest(op, input, output)
2111	return
2112}
2113
2114// DeleteObjects API operation for Amazon Simple Storage Service.
2115//
2116// This operation enables you to delete multiple objects from a bucket using
2117// a single HTTP request. If you know the object keys that you want to delete,
2118// then this operation provides a suitable alternative to sending individual
2119// delete requests, reducing per-request overhead.
2120//
2121// The request contains a list of up to 1000 keys that you want to delete. In
2122// the XML, you provide the object key names, and optionally, version IDs if
2123// you want to delete a specific version of the object from a versioning-enabled
2124// bucket. For each key, Amazon S3 performs a delete operation and returns the
2125// result of that delete, success, or failure, in the response. Note that if
2126// the object specified in the request is not found, Amazon S3 returns the result
2127// as deleted.
2128//
2129// The operation supports two modes for the response: verbose and quiet. By
2130// default, the operation uses verbose mode in which the response includes the
2131// result of deletion of each key in your request. In quiet mode the response
2132// includes only keys where the delete operation encountered an error. For a
2133// successful deletion, the operation does not return any information about
2134// the delete in the response body.
2135//
2136// When performing this operation on an MFA Delete enabled bucket, that attempts
2137// to delete any versioned objects, you must include an MFA token. If you do
2138// not provide one, the entire request will fail, even if there are non-versioned
2139// objects you are trying to delete. If you provide an invalid token, whether
2140// there are versioned keys in the request or not, the entire Multi-Object Delete
2141// request will fail. For information about MFA Delete, see MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
2142//
2143// Finally, the Content-MD5 header is required for all Multi-Object Delete requests.
2144// Amazon S3 uses the header value to ensure that your request body has not
2145// been altered in transit.
2146//
2147// The following operations are related to DeleteObjects:
2148//
2149//    * CreateMultipartUpload
2150//
2151//    * UploadPart
2152//
2153//    * CompleteMultipartUpload
2154//
2155//    * ListParts
2156//
2157//    * AbortMultipartUpload
2158//
2159// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2160// with awserr.Error's Code and Message methods to get detailed information about
2161// the error.
2162//
2163// See the AWS API reference guide for Amazon Simple Storage Service's
2164// API operation DeleteObjects for usage and error information.
2165// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2166func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
2167	req, out := c.DeleteObjectsRequest(input)
2168	return out, req.Send()
2169}
2170
2171// DeleteObjectsWithContext is the same as DeleteObjects with the addition of
2172// the ability to pass a context and additional request options.
2173//
2174// See DeleteObjects for details on how to use this API operation.
2175//
2176// The context must be non-nil and will be used for request cancellation. If
2177// the context is nil a panic will occur. In the future the SDK may create
2178// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2179// for more information on using Contexts.
2180func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
2181	req, out := c.DeleteObjectsRequest(input)
2182	req.SetContext(ctx)
2183	req.ApplyOptions(opts...)
2184	return out, req.Send()
2185}
2186
2187const opDeletePublicAccessBlock = "DeletePublicAccessBlock"
2188
2189// DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the
2190// client's request for the DeletePublicAccessBlock operation. The "output" return
2191// value will be populated with the request's response once the request completes
2192// successfully.
2193//
2194// Use "Send" method on the returned Request to send the API call to the service.
2195// the "output" return value is not valid until after Send returns without error.
2196//
2197// See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock
2198// API call, and error handling.
2199//
2200// This method is useful when you want to inject custom logic or configuration
2201// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2202//
2203//
2204//    // Example sending a request using the DeletePublicAccessBlockRequest method.
2205//    req, resp := client.DeletePublicAccessBlockRequest(params)
2206//
2207//    err := req.Send()
2208//    if err == nil { // resp is now filled
2209//        fmt.Println(resp)
2210//    }
2211//
2212// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2213func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) {
2214	op := &request.Operation{
2215		Name:       opDeletePublicAccessBlock,
2216		HTTPMethod: "DELETE",
2217		HTTPPath:   "/{Bucket}?publicAccessBlock",
2218	}
2219
2220	if input == nil {
2221		input = &DeletePublicAccessBlockInput{}
2222	}
2223
2224	output = &DeletePublicAccessBlockOutput{}
2225	req = c.newRequest(op, input, output)
2226	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2227	return
2228}
2229
2230// DeletePublicAccessBlock API operation for Amazon Simple Storage Service.
2231//
2232// Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use
2233// this operation, you must have the s3:PutBucketPublicAccessBlock permission.
2234// For more information about permissions, see Permissions Related to Bucket
2235// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2236// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2237//
2238// The following operations are related to DeleteBucketMetricsConfiguration:
2239//
2240//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
2241//
2242//    * GetPublicAccessBlock
2243//
2244//    * PutPublicAccessBlock
2245//
2246//    * GetBucketPolicyStatus
2247//
2248// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2249// with awserr.Error's Code and Message methods to get detailed information about
2250// the error.
2251//
2252// See the AWS API reference guide for Amazon Simple Storage Service's
2253// API operation DeletePublicAccessBlock for usage and error information.
2254// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2255func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) {
2256	req, out := c.DeletePublicAccessBlockRequest(input)
2257	return out, req.Send()
2258}
2259
2260// DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of
2261// the ability to pass a context and additional request options.
2262//
2263// See DeletePublicAccessBlock for details on how to use this API operation.
2264//
2265// The context must be non-nil and will be used for request cancellation. If
2266// the context is nil a panic will occur. In the future the SDK may create
2267// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2268// for more information on using Contexts.
2269func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) {
2270	req, out := c.DeletePublicAccessBlockRequest(input)
2271	req.SetContext(ctx)
2272	req.ApplyOptions(opts...)
2273	return out, req.Send()
2274}
2275
2276const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
2277
2278// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
2279// client's request for the GetBucketAccelerateConfiguration operation. The "output" return
2280// value will be populated with the request's response once the request completes
2281// successfully.
2282//
2283// Use "Send" method on the returned Request to send the API call to the service.
2284// the "output" return value is not valid until after Send returns without error.
2285//
2286// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
2287// API call, and error handling.
2288//
2289// This method is useful when you want to inject custom logic or configuration
2290// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2291//
2292//
2293//    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
2294//    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
2295//
2296//    err := req.Send()
2297//    if err == nil { // resp is now filled
2298//        fmt.Println(resp)
2299//    }
2300//
2301// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2302func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
2303	op := &request.Operation{
2304		Name:       opGetBucketAccelerateConfiguration,
2305		HTTPMethod: "GET",
2306		HTTPPath:   "/{Bucket}?accelerate",
2307	}
2308
2309	if input == nil {
2310		input = &GetBucketAccelerateConfigurationInput{}
2311	}
2312
2313	output = &GetBucketAccelerateConfigurationOutput{}
2314	req = c.newRequest(op, input, output)
2315	return
2316}
2317
2318// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
2319//
2320// This implementation of the GET operation uses the accelerate subresource
2321// to return the Transfer Acceleration state of a bucket, which is either Enabled
2322// or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that
2323// enables you to perform faster data transfers to and from Amazon S3.
2324//
2325// To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration
2326// action. The bucket owner has this permission by default. The bucket owner
2327// can grant this permission to others. For more information about permissions,
2328// 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)
2329// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html)
2330// in the Amazon Simple Storage Service Developer Guide.
2331//
2332// You set the Transfer Acceleration state of an existing bucket to Enabled
2333// or Suspended by using the PutBucketAccelerateConfiguration operation.
2334//
2335// A GET accelerate request does not return a state value for a bucket that
2336// has no transfer acceleration state. A bucket has no Transfer Acceleration
2337// state if a state has never been set on the bucket.
2338//
2339// For more information about transfer acceleration, see Transfer Acceleration
2340// (https://docs.aws.amazon.com/AmazonS3/latest/dev//transfer-acceleration.html)
2341// in the Amazon Simple Storage Service Developer Guide.
2342//
2343// Related Resources
2344//
2345//    * PutBucketAccelerateConfiguration
2346//
2347// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2348// with awserr.Error's Code and Message methods to get detailed information about
2349// the error.
2350//
2351// See the AWS API reference guide for Amazon Simple Storage Service's
2352// API operation GetBucketAccelerateConfiguration for usage and error information.
2353// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2354func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
2355	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2356	return out, req.Send()
2357}
2358
2359// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
2360// the ability to pass a context and additional request options.
2361//
2362// See GetBucketAccelerateConfiguration for details on how to use this API operation.
2363//
2364// The context must be non-nil and will be used for request cancellation. If
2365// the context is nil a panic will occur. In the future the SDK may create
2366// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2367// for more information on using Contexts.
2368func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
2369	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2370	req.SetContext(ctx)
2371	req.ApplyOptions(opts...)
2372	return out, req.Send()
2373}
2374
2375const opGetBucketAcl = "GetBucketAcl"
2376
2377// GetBucketAclRequest generates a "aws/request.Request" representing the
2378// client's request for the GetBucketAcl operation. The "output" return
2379// value will be populated with the request's response once the request completes
2380// successfully.
2381//
2382// Use "Send" method on the returned Request to send the API call to the service.
2383// the "output" return value is not valid until after Send returns without error.
2384//
2385// See GetBucketAcl for more information on using the GetBucketAcl
2386// API call, and error handling.
2387//
2388// This method is useful when you want to inject custom logic or configuration
2389// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2390//
2391//
2392//    // Example sending a request using the GetBucketAclRequest method.
2393//    req, resp := client.GetBucketAclRequest(params)
2394//
2395//    err := req.Send()
2396//    if err == nil { // resp is now filled
2397//        fmt.Println(resp)
2398//    }
2399//
2400// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2401func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
2402	op := &request.Operation{
2403		Name:       opGetBucketAcl,
2404		HTTPMethod: "GET",
2405		HTTPPath:   "/{Bucket}?acl",
2406	}
2407
2408	if input == nil {
2409		input = &GetBucketAclInput{}
2410	}
2411
2412	output = &GetBucketAclOutput{}
2413	req = c.newRequest(op, input, output)
2414	return
2415}
2416
2417// GetBucketAcl API operation for Amazon Simple Storage Service.
2418//
2419// This implementation of the GET operation uses the acl subresource to return
2420// the access control list (ACL) of a bucket. To use GET to return the ACL of
2421// the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission
2422// is granted to the anonymous user, you can return the ACL of the bucket without
2423// using an authorization header.
2424//
2425// Related Resources
2426//
2427//    *
2428//
2429// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2430// with awserr.Error's Code and Message methods to get detailed information about
2431// the error.
2432//
2433// See the AWS API reference guide for Amazon Simple Storage Service's
2434// API operation GetBucketAcl for usage and error information.
2435// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2436func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
2437	req, out := c.GetBucketAclRequest(input)
2438	return out, req.Send()
2439}
2440
2441// GetBucketAclWithContext is the same as GetBucketAcl with the addition of
2442// the ability to pass a context and additional request options.
2443//
2444// See GetBucketAcl for details on how to use this API operation.
2445//
2446// The context must be non-nil and will be used for request cancellation. If
2447// the context is nil a panic will occur. In the future the SDK may create
2448// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2449// for more information on using Contexts.
2450func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
2451	req, out := c.GetBucketAclRequest(input)
2452	req.SetContext(ctx)
2453	req.ApplyOptions(opts...)
2454	return out, req.Send()
2455}
2456
2457const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
2458
2459// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
2460// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
2461// value will be populated with the request's response once the request completes
2462// successfully.
2463//
2464// Use "Send" method on the returned Request to send the API call to the service.
2465// the "output" return value is not valid until after Send returns without error.
2466//
2467// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
2468// API call, and error handling.
2469//
2470// This method is useful when you want to inject custom logic or configuration
2471// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2472//
2473//
2474//    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
2475//    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
2476//
2477//    err := req.Send()
2478//    if err == nil { // resp is now filled
2479//        fmt.Println(resp)
2480//    }
2481//
2482// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2483func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
2484	op := &request.Operation{
2485		Name:       opGetBucketAnalyticsConfiguration,
2486		HTTPMethod: "GET",
2487		HTTPPath:   "/{Bucket}?analytics",
2488	}
2489
2490	if input == nil {
2491		input = &GetBucketAnalyticsConfigurationInput{}
2492	}
2493
2494	output = &GetBucketAnalyticsConfigurationOutput{}
2495	req = c.newRequest(op, input, output)
2496	return
2497}
2498
2499// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
2500//
2501// This implementation of the GET operation returns an analytics configuration
2502// (identified by the analytics configuration ID) from the bucket.
2503//
2504// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
2505// action. The bucket owner has this permission by default. The bucket owner
2506// can grant this permission to others. For more information about permissions,
2507// 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)
2508// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
2509// in the Amazon Simple Storage Service Developer Guide.
2510//
2511// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
2512// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html)
2513// in the Amazon Simple Storage Service Developer Guide.
2514//
2515// Related Resources
2516//
2517//    *
2518//
2519//    *
2520//
2521//    *
2522//
2523// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2524// with awserr.Error's Code and Message methods to get detailed information about
2525// the error.
2526//
2527// See the AWS API reference guide for Amazon Simple Storage Service's
2528// API operation GetBucketAnalyticsConfiguration for usage and error information.
2529// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2530func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
2531	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2532	return out, req.Send()
2533}
2534
2535// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
2536// the ability to pass a context and additional request options.
2537//
2538// See GetBucketAnalyticsConfiguration for details on how to use this API operation.
2539//
2540// The context must be non-nil and will be used for request cancellation. If
2541// the context is nil a panic will occur. In the future the SDK may create
2542// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2543// for more information on using Contexts.
2544func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
2545	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2546	req.SetContext(ctx)
2547	req.ApplyOptions(opts...)
2548	return out, req.Send()
2549}
2550
2551const opGetBucketCors = "GetBucketCors"
2552
2553// GetBucketCorsRequest generates a "aws/request.Request" representing the
2554// client's request for the GetBucketCors operation. The "output" return
2555// value will be populated with the request's response once the request completes
2556// successfully.
2557//
2558// Use "Send" method on the returned Request to send the API call to the service.
2559// the "output" return value is not valid until after Send returns without error.
2560//
2561// See GetBucketCors for more information on using the GetBucketCors
2562// API call, and error handling.
2563//
2564// This method is useful when you want to inject custom logic or configuration
2565// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2566//
2567//
2568//    // Example sending a request using the GetBucketCorsRequest method.
2569//    req, resp := client.GetBucketCorsRequest(params)
2570//
2571//    err := req.Send()
2572//    if err == nil { // resp is now filled
2573//        fmt.Println(resp)
2574//    }
2575//
2576// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2577func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
2578	op := &request.Operation{
2579		Name:       opGetBucketCors,
2580		HTTPMethod: "GET",
2581		HTTPPath:   "/{Bucket}?cors",
2582	}
2583
2584	if input == nil {
2585		input = &GetBucketCorsInput{}
2586	}
2587
2588	output = &GetBucketCorsOutput{}
2589	req = c.newRequest(op, input, output)
2590	return
2591}
2592
2593// GetBucketCors API operation for Amazon Simple Storage Service.
2594//
2595// Returns the cors configuration information set for the bucket.
2596//
2597// To use this operation, you must have permission to perform the s3:GetBucketCORS
2598// action. By default, the bucket owner has this permission and can grant it
2599// to others.
2600//
2601// For more information about cors, see Enabling Cross-Origin Resource Sharing
2602// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html).
2603//
2604// The following operations are related to GetBucketCors:
2605//
2606//    * PutBucketCors
2607//
2608//    * DeleteBucketCors
2609//
2610// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2611// with awserr.Error's Code and Message methods to get detailed information about
2612// the error.
2613//
2614// See the AWS API reference guide for Amazon Simple Storage Service's
2615// API operation GetBucketCors for usage and error information.
2616// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2617func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
2618	req, out := c.GetBucketCorsRequest(input)
2619	return out, req.Send()
2620}
2621
2622// GetBucketCorsWithContext is the same as GetBucketCors with the addition of
2623// the ability to pass a context and additional request options.
2624//
2625// See GetBucketCors for details on how to use this API operation.
2626//
2627// The context must be non-nil and will be used for request cancellation. If
2628// the context is nil a panic will occur. In the future the SDK may create
2629// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2630// for more information on using Contexts.
2631func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
2632	req, out := c.GetBucketCorsRequest(input)
2633	req.SetContext(ctx)
2634	req.ApplyOptions(opts...)
2635	return out, req.Send()
2636}
2637
2638const opGetBucketEncryption = "GetBucketEncryption"
2639
2640// GetBucketEncryptionRequest generates a "aws/request.Request" representing the
2641// client's request for the GetBucketEncryption operation. The "output" return
2642// value will be populated with the request's response once the request completes
2643// successfully.
2644//
2645// Use "Send" method on the returned Request to send the API call to the service.
2646// the "output" return value is not valid until after Send returns without error.
2647//
2648// See GetBucketEncryption for more information on using the GetBucketEncryption
2649// API call, and error handling.
2650//
2651// This method is useful when you want to inject custom logic or configuration
2652// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2653//
2654//
2655//    // Example sending a request using the GetBucketEncryptionRequest method.
2656//    req, resp := client.GetBucketEncryptionRequest(params)
2657//
2658//    err := req.Send()
2659//    if err == nil { // resp is now filled
2660//        fmt.Println(resp)
2661//    }
2662//
2663// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2664func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
2665	op := &request.Operation{
2666		Name:       opGetBucketEncryption,
2667		HTTPMethod: "GET",
2668		HTTPPath:   "/{Bucket}?encryption",
2669	}
2670
2671	if input == nil {
2672		input = &GetBucketEncryptionInput{}
2673	}
2674
2675	output = &GetBucketEncryptionOutput{}
2676	req = c.newRequest(op, input, output)
2677	return
2678}
2679
2680// GetBucketEncryption API operation for Amazon Simple Storage Service.
2681//
2682// Returns the default encryption configuration for an Amazon S3 bucket. For
2683// information about the Amazon S3 default encryption feature, see Amazon S3
2684// Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html).
2685//
2686// To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration
2687// action. The bucket owner has this permission by default. The bucket owner
2688// can grant this permission to others. For more information about permissions,
2689// 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)
2690// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2691//
2692// The following operations are related to GetBucketEncryption:
2693//
2694//    * PutBucketEncryption
2695//
2696//    * DeleteBucketEncryption
2697//
2698// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2699// with awserr.Error's Code and Message methods to get detailed information about
2700// the error.
2701//
2702// See the AWS API reference guide for Amazon Simple Storage Service's
2703// API operation GetBucketEncryption for usage and error information.
2704// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2705func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
2706	req, out := c.GetBucketEncryptionRequest(input)
2707	return out, req.Send()
2708}
2709
2710// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
2711// the ability to pass a context and additional request options.
2712//
2713// See GetBucketEncryption for details on how to use this API operation.
2714//
2715// The context must be non-nil and will be used for request cancellation. If
2716// the context is nil a panic will occur. In the future the SDK may create
2717// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2718// for more information on using Contexts.
2719func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
2720	req, out := c.GetBucketEncryptionRequest(input)
2721	req.SetContext(ctx)
2722	req.ApplyOptions(opts...)
2723	return out, req.Send()
2724}
2725
2726const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
2727
2728// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
2729// client's request for the GetBucketInventoryConfiguration operation. The "output" return
2730// value will be populated with the request's response once the request completes
2731// successfully.
2732//
2733// Use "Send" method on the returned Request to send the API call to the service.
2734// the "output" return value is not valid until after Send returns without error.
2735//
2736// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
2737// API call, and error handling.
2738//
2739// This method is useful when you want to inject custom logic or configuration
2740// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2741//
2742//
2743//    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
2744//    req, resp := client.GetBucketInventoryConfigurationRequest(params)
2745//
2746//    err := req.Send()
2747//    if err == nil { // resp is now filled
2748//        fmt.Println(resp)
2749//    }
2750//
2751// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
2752func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
2753	op := &request.Operation{
2754		Name:       opGetBucketInventoryConfiguration,
2755		HTTPMethod: "GET",
2756		HTTPPath:   "/{Bucket}?inventory",
2757	}
2758
2759	if input == nil {
2760		input = &GetBucketInventoryConfigurationInput{}
2761	}
2762
2763	output = &GetBucketInventoryConfigurationOutput{}
2764	req = c.newRequest(op, input, output)
2765	return
2766}
2767
2768// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
2769//
2770// Returns an inventory configuration (identified by the inventory configuration
2771// ID) from the bucket.
2772//
2773// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
2774// action. The bucket owner has this permission by default and can grant this
2775// permission to others. For more information about permissions, see Permissions
2776// 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)
2777// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2778//
2779// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
2780// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
2781//
2782// The following operations are related to GetBucketInventoryConfiguration:
2783//
2784//    * DeleteBucketInventoryConfiguration
2785//
2786//    * ListBucketInventoryConfigurations
2787//
2788//    * PutBucketInventoryConfiguration
2789//
2790// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2791// with awserr.Error's Code and Message methods to get detailed information about
2792// the error.
2793//
2794// See the AWS API reference guide for Amazon Simple Storage Service's
2795// API operation GetBucketInventoryConfiguration for usage and error information.
2796// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
2797func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
2798	req, out := c.GetBucketInventoryConfigurationRequest(input)
2799	return out, req.Send()
2800}
2801
2802// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
2803// the ability to pass a context and additional request options.
2804//
2805// See GetBucketInventoryConfiguration for details on how to use this API operation.
2806//
2807// The context must be non-nil and will be used for request cancellation. If
2808// the context is nil a panic will occur. In the future the SDK may create
2809// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2810// for more information on using Contexts.
2811func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
2812	req, out := c.GetBucketInventoryConfigurationRequest(input)
2813	req.SetContext(ctx)
2814	req.ApplyOptions(opts...)
2815	return out, req.Send()
2816}
2817
2818const opGetBucketLifecycle = "GetBucketLifecycle"
2819
2820// GetBucketLifecycleRequest generates a "aws/request.Request" representing the
2821// client's request for the GetBucketLifecycle operation. The "output" return
2822// value will be populated with the request's response once the request completes
2823// successfully.
2824//
2825// Use "Send" method on the returned Request to send the API call to the service.
2826// the "output" return value is not valid until after Send returns without error.
2827//
2828// See GetBucketLifecycle for more information on using the GetBucketLifecycle
2829// API call, and error handling.
2830//
2831// This method is useful when you want to inject custom logic or configuration
2832// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2833//
2834//
2835//    // Example sending a request using the GetBucketLifecycleRequest method.
2836//    req, resp := client.GetBucketLifecycleRequest(params)
2837//
2838//    err := req.Send()
2839//    if err == nil { // resp is now filled
2840//        fmt.Println(resp)
2841//    }
2842//
2843// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
2844//
2845// Deprecated: GetBucketLifecycle has been deprecated
2846func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
2847	if c.Client.Config.Logger != nil {
2848		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
2849	}
2850	op := &request.Operation{
2851		Name:       opGetBucketLifecycle,
2852		HTTPMethod: "GET",
2853		HTTPPath:   "/{Bucket}?lifecycle",
2854	}
2855
2856	if input == nil {
2857		input = &GetBucketLifecycleInput{}
2858	}
2859
2860	output = &GetBucketLifecycleOutput{}
2861	req = c.newRequest(op, input, output)
2862	return
2863}
2864
2865// GetBucketLifecycle API operation for Amazon Simple Storage Service.
2866//
2867//
2868// For an updated version of this API, see GetBucketLifecycleConfiguration.
2869// If you configured a bucket lifecycle using the filter element, you should
2870// see the updated version of this topic. This topic is provided for backward
2871// compatibility.
2872//
2873// Returns the lifecycle configuration information set on the bucket. For information
2874// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
2875//
2876// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
2877// action. The bucket owner has this permission by default. The bucket owner
2878// can grant this permission to others. For more information about permissions,
2879// 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)
2880// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2881//
2882// GetBucketLifecycle has the following special error:
2883//
2884//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
2885//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
2886//    Code Prefix: Client
2887//
2888// The following operations are related to GetBucketLifecycle:
2889//
2890//    * GetBucketLifecycleConfiguration
2891//
2892//    * PutBucketLifecycle
2893//
2894//    * DeleteBucketLifecycle
2895//
2896// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2897// with awserr.Error's Code and Message methods to get detailed information about
2898// the error.
2899//
2900// See the AWS API reference guide for Amazon Simple Storage Service's
2901// API operation GetBucketLifecycle for usage and error information.
2902// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
2903//
2904// Deprecated: GetBucketLifecycle has been deprecated
2905func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
2906	req, out := c.GetBucketLifecycleRequest(input)
2907	return out, req.Send()
2908}
2909
2910// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
2911// the ability to pass a context and additional request options.
2912//
2913// See GetBucketLifecycle for details on how to use this API operation.
2914//
2915// The context must be non-nil and will be used for request cancellation. If
2916// the context is nil a panic will occur. In the future the SDK may create
2917// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2918// for more information on using Contexts.
2919//
2920// Deprecated: GetBucketLifecycleWithContext has been deprecated
2921func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
2922	req, out := c.GetBucketLifecycleRequest(input)
2923	req.SetContext(ctx)
2924	req.ApplyOptions(opts...)
2925	return out, req.Send()
2926}
2927
2928const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
2929
2930// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
2931// client's request for the GetBucketLifecycleConfiguration operation. The "output" return
2932// value will be populated with the request's response once the request completes
2933// successfully.
2934//
2935// Use "Send" method on the returned Request to send the API call to the service.
2936// the "output" return value is not valid until after Send returns without error.
2937//
2938// See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
2939// API call, and error handling.
2940//
2941// This method is useful when you want to inject custom logic or configuration
2942// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2943//
2944//
2945//    // Example sending a request using the GetBucketLifecycleConfigurationRequest method.
2946//    req, resp := client.GetBucketLifecycleConfigurationRequest(params)
2947//
2948//    err := req.Send()
2949//    if err == nil { // resp is now filled
2950//        fmt.Println(resp)
2951//    }
2952//
2953// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
2954func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
2955	op := &request.Operation{
2956		Name:       opGetBucketLifecycleConfiguration,
2957		HTTPMethod: "GET",
2958		HTTPPath:   "/{Bucket}?lifecycle",
2959	}
2960
2961	if input == nil {
2962		input = &GetBucketLifecycleConfigurationInput{}
2963	}
2964
2965	output = &GetBucketLifecycleConfigurationOutput{}
2966	req = c.newRequest(op, input, output)
2967	return
2968}
2969
2970// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
2971//
2972//
2973// Bucket lifecycle configuration now supports specifying a lifecycle rule using
2974// an object key name prefix, one or more object tags, or a combination of both.
2975// Accordingly, this section describes the latest API. The response describes
2976// the new filter element that you can use to specify a filter to select a subset
2977// of objects to which the rule applies. If you are still using previous version
2978// of the lifecycle configuration, it works. For the earlier API description,
2979// see GetBucketLifecycle.
2980//
2981// Returns the lifecycle configuration information set on the bucket. For information
2982// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
2983//
2984// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
2985// action. The bucket owner has this permission, by default. The bucket owner
2986// can grant this permission to others. For more information about permissions,
2987// 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)
2988// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
2989//
2990// GetBucketLifecycleConfiguration has the following special error:
2991//
2992//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
2993//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
2994//    Code Prefix: Client
2995//
2996// The following operations are related to DeleteBucketMetricsConfiguration:
2997//
2998//    * GetBucketLifecycle
2999//
3000//    * PutBucketLifecycle
3001//
3002//    * DeleteBucketLifecycle
3003//
3004// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3005// with awserr.Error's Code and Message methods to get detailed information about
3006// the error.
3007//
3008// See the AWS API reference guide for Amazon Simple Storage Service's
3009// API operation GetBucketLifecycleConfiguration for usage and error information.
3010// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
3011func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
3012	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3013	return out, req.Send()
3014}
3015
3016// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
3017// the ability to pass a context and additional request options.
3018//
3019// See GetBucketLifecycleConfiguration for details on how to use this API operation.
3020//
3021// The context must be non-nil and will be used for request cancellation. If
3022// the context is nil a panic will occur. In the future the SDK may create
3023// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3024// for more information on using Contexts.
3025func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
3026	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3027	req.SetContext(ctx)
3028	req.ApplyOptions(opts...)
3029	return out, req.Send()
3030}
3031
3032const opGetBucketLocation = "GetBucketLocation"
3033
3034// GetBucketLocationRequest generates a "aws/request.Request" representing the
3035// client's request for the GetBucketLocation operation. The "output" return
3036// value will be populated with the request's response once the request completes
3037// successfully.
3038//
3039// Use "Send" method on the returned Request to send the API call to the service.
3040// the "output" return value is not valid until after Send returns without error.
3041//
3042// See GetBucketLocation for more information on using the GetBucketLocation
3043// API call, and error handling.
3044//
3045// This method is useful when you want to inject custom logic or configuration
3046// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3047//
3048//
3049//    // Example sending a request using the GetBucketLocationRequest method.
3050//    req, resp := client.GetBucketLocationRequest(params)
3051//
3052//    err := req.Send()
3053//    if err == nil { // resp is now filled
3054//        fmt.Println(resp)
3055//    }
3056//
3057// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3058func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
3059	op := &request.Operation{
3060		Name:       opGetBucketLocation,
3061		HTTPMethod: "GET",
3062		HTTPPath:   "/{Bucket}?location",
3063	}
3064
3065	if input == nil {
3066		input = &GetBucketLocationInput{}
3067	}
3068
3069	output = &GetBucketLocationOutput{}
3070	req = c.newRequest(op, input, output)
3071	return
3072}
3073
3074// GetBucketLocation API operation for Amazon Simple Storage Service.
3075//
3076// Returns the Region the bucket resides in. You set the bucket's Region using
3077// the LocationConstraint request parameter in a CreateBucket request. For more
3078// information, see CreateBucket.
3079//
3080// To use this implementation of the operation, you must be the bucket owner.
3081//
3082// The following operations are related to GetBucketLocation:
3083//
3084//    * GetObject
3085//
3086//    * CreateBucket
3087//
3088// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3089// with awserr.Error's Code and Message methods to get detailed information about
3090// the error.
3091//
3092// See the AWS API reference guide for Amazon Simple Storage Service's
3093// API operation GetBucketLocation for usage and error information.
3094// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3095func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
3096	req, out := c.GetBucketLocationRequest(input)
3097	return out, req.Send()
3098}
3099
3100// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
3101// the ability to pass a context and additional request options.
3102//
3103// See GetBucketLocation for details on how to use this API operation.
3104//
3105// The context must be non-nil and will be used for request cancellation. If
3106// the context is nil a panic will occur. In the future the SDK may create
3107// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3108// for more information on using Contexts.
3109func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
3110	req, out := c.GetBucketLocationRequest(input)
3111	req.SetContext(ctx)
3112	req.ApplyOptions(opts...)
3113	return out, req.Send()
3114}
3115
3116const opGetBucketLogging = "GetBucketLogging"
3117
3118// GetBucketLoggingRequest generates a "aws/request.Request" representing the
3119// client's request for the GetBucketLogging operation. The "output" return
3120// value will be populated with the request's response once the request completes
3121// successfully.
3122//
3123// Use "Send" method on the returned Request to send the API call to the service.
3124// the "output" return value is not valid until after Send returns without error.
3125//
3126// See GetBucketLogging for more information on using the GetBucketLogging
3127// API call, and error handling.
3128//
3129// This method is useful when you want to inject custom logic or configuration
3130// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3131//
3132//
3133//    // Example sending a request using the GetBucketLoggingRequest method.
3134//    req, resp := client.GetBucketLoggingRequest(params)
3135//
3136//    err := req.Send()
3137//    if err == nil { // resp is now filled
3138//        fmt.Println(resp)
3139//    }
3140//
3141// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3142func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
3143	op := &request.Operation{
3144		Name:       opGetBucketLogging,
3145		HTTPMethod: "GET",
3146		HTTPPath:   "/{Bucket}?logging",
3147	}
3148
3149	if input == nil {
3150		input = &GetBucketLoggingInput{}
3151	}
3152
3153	output = &GetBucketLoggingOutput{}
3154	req = c.newRequest(op, input, output)
3155	return
3156}
3157
3158// GetBucketLogging API operation for Amazon Simple Storage Service.
3159//
3160// Returns the logging status of a bucket and the permissions users have to
3161// view and modify that status. To use GET, you must be the bucket owner.
3162//
3163// The following operations are related to GetBucketLogging:
3164//
3165//    * CreateBucket
3166//
3167//    * PutBucketLogging
3168//
3169// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3170// with awserr.Error's Code and Message methods to get detailed information about
3171// the error.
3172//
3173// See the AWS API reference guide for Amazon Simple Storage Service's
3174// API operation GetBucketLogging for usage and error information.
3175// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3176func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
3177	req, out := c.GetBucketLoggingRequest(input)
3178	return out, req.Send()
3179}
3180
3181// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
3182// the ability to pass a context and additional request options.
3183//
3184// See GetBucketLogging for details on how to use this API operation.
3185//
3186// The context must be non-nil and will be used for request cancellation. If
3187// the context is nil a panic will occur. In the future the SDK may create
3188// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3189// for more information on using Contexts.
3190func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
3191	req, out := c.GetBucketLoggingRequest(input)
3192	req.SetContext(ctx)
3193	req.ApplyOptions(opts...)
3194	return out, req.Send()
3195}
3196
3197const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
3198
3199// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
3200// client's request for the GetBucketMetricsConfiguration operation. The "output" return
3201// value will be populated with the request's response once the request completes
3202// successfully.
3203//
3204// Use "Send" method on the returned Request to send the API call to the service.
3205// the "output" return value is not valid until after Send returns without error.
3206//
3207// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
3208// API call, and error handling.
3209//
3210// This method is useful when you want to inject custom logic or configuration
3211// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3212//
3213//
3214//    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
3215//    req, resp := client.GetBucketMetricsConfigurationRequest(params)
3216//
3217//    err := req.Send()
3218//    if err == nil { // resp is now filled
3219//        fmt.Println(resp)
3220//    }
3221//
3222// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3223func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
3224	op := &request.Operation{
3225		Name:       opGetBucketMetricsConfiguration,
3226		HTTPMethod: "GET",
3227		HTTPPath:   "/{Bucket}?metrics",
3228	}
3229
3230	if input == nil {
3231		input = &GetBucketMetricsConfigurationInput{}
3232	}
3233
3234	output = &GetBucketMetricsConfigurationOutput{}
3235	req = c.newRequest(op, input, output)
3236	return
3237}
3238
3239// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
3240//
3241// Gets a metrics configuration (specified by the metrics configuration ID)
3242// from the bucket. Note that this doesn't include the daily storage metrics.
3243//
3244// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
3245// action. The bucket owner has this permission by default. The bucket owner
3246// can grant this permission to others. For more information about permissions,
3247// 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)
3248// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
3249//
3250// For information about CloudWatch request metrics for Amazon S3, see Monitoring
3251// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
3252//
3253// The following operations are related to GetBucketMetricsConfiguration:
3254//
3255//    * PutBucketMetricsConfiguration
3256//
3257//    * DeleteBucketMetricsConfiguration
3258//
3259//    * ListBucketMetricsConfigurations
3260//
3261//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
3262//
3263// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3264// with awserr.Error's Code and Message methods to get detailed information about
3265// the error.
3266//
3267// See the AWS API reference guide for Amazon Simple Storage Service's
3268// API operation GetBucketMetricsConfiguration for usage and error information.
3269// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3270func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
3271	req, out := c.GetBucketMetricsConfigurationRequest(input)
3272	return out, req.Send()
3273}
3274
3275// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
3276// the ability to pass a context and additional request options.
3277//
3278// See GetBucketMetricsConfiguration for details on how to use this API operation.
3279//
3280// The context must be non-nil and will be used for request cancellation. If
3281// the context is nil a panic will occur. In the future the SDK may create
3282// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3283// for more information on using Contexts.
3284func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
3285	req, out := c.GetBucketMetricsConfigurationRequest(input)
3286	req.SetContext(ctx)
3287	req.ApplyOptions(opts...)
3288	return out, req.Send()
3289}
3290
3291const opGetBucketNotification = "GetBucketNotification"
3292
3293// GetBucketNotificationRequest generates a "aws/request.Request" representing the
3294// client's request for the GetBucketNotification operation. The "output" return
3295// value will be populated with the request's response once the request completes
3296// successfully.
3297//
3298// Use "Send" method on the returned Request to send the API call to the service.
3299// the "output" return value is not valid until after Send returns without error.
3300//
3301// See GetBucketNotification for more information on using the GetBucketNotification
3302// API call, and error handling.
3303//
3304// This method is useful when you want to inject custom logic or configuration
3305// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3306//
3307//
3308//    // Example sending a request using the GetBucketNotificationRequest method.
3309//    req, resp := client.GetBucketNotificationRequest(params)
3310//
3311//    err := req.Send()
3312//    if err == nil { // resp is now filled
3313//        fmt.Println(resp)
3314//    }
3315//
3316// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3317//
3318// Deprecated: GetBucketNotification has been deprecated
3319func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
3320	if c.Client.Config.Logger != nil {
3321		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
3322	}
3323	op := &request.Operation{
3324		Name:       opGetBucketNotification,
3325		HTTPMethod: "GET",
3326		HTTPPath:   "/{Bucket}?notification",
3327	}
3328
3329	if input == nil {
3330		input = &GetBucketNotificationConfigurationRequest{}
3331	}
3332
3333	output = &NotificationConfigurationDeprecated{}
3334	req = c.newRequest(op, input, output)
3335	return
3336}
3337
3338// GetBucketNotification API operation for Amazon Simple Storage Service.
3339//
3340// No longer used, see GetBucketNotificationConfiguration.
3341//
3342// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3343// with awserr.Error's Code and Message methods to get detailed information about
3344// the error.
3345//
3346// See the AWS API reference guide for Amazon Simple Storage Service's
3347// API operation GetBucketNotification for usage and error information.
3348// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3349//
3350// Deprecated: GetBucketNotification has been deprecated
3351func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
3352	req, out := c.GetBucketNotificationRequest(input)
3353	return out, req.Send()
3354}
3355
3356// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
3357// the ability to pass a context and additional request options.
3358//
3359// See GetBucketNotification for details on how to use this API operation.
3360//
3361// The context must be non-nil and will be used for request cancellation. If
3362// the context is nil a panic will occur. In the future the SDK may create
3363// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3364// for more information on using Contexts.
3365//
3366// Deprecated: GetBucketNotificationWithContext has been deprecated
3367func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
3368	req, out := c.GetBucketNotificationRequest(input)
3369	req.SetContext(ctx)
3370	req.ApplyOptions(opts...)
3371	return out, req.Send()
3372}
3373
3374const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
3375
3376// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
3377// client's request for the GetBucketNotificationConfiguration operation. The "output" return
3378// value will be populated with the request's response once the request completes
3379// successfully.
3380//
3381// Use "Send" method on the returned Request to send the API call to the service.
3382// the "output" return value is not valid until after Send returns without error.
3383//
3384// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
3385// API call, and error handling.
3386//
3387// This method is useful when you want to inject custom logic or configuration
3388// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3389//
3390//
3391//    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
3392//    req, resp := client.GetBucketNotificationConfigurationRequest(params)
3393//
3394//    err := req.Send()
3395//    if err == nil { // resp is now filled
3396//        fmt.Println(resp)
3397//    }
3398//
3399// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3400func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
3401	op := &request.Operation{
3402		Name:       opGetBucketNotificationConfiguration,
3403		HTTPMethod: "GET",
3404		HTTPPath:   "/{Bucket}?notification",
3405	}
3406
3407	if input == nil {
3408		input = &GetBucketNotificationConfigurationRequest{}
3409	}
3410
3411	output = &NotificationConfiguration{}
3412	req = c.newRequest(op, input, output)
3413	return
3414}
3415
3416// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
3417//
3418// Returns the notification configuration of a bucket.
3419//
3420// If notifications are not enabled on the bucket, the operation returns an
3421// empty NotificationConfiguration element.
3422//
3423// By default, you must be the bucket owner to read the notification configuration
3424// of a bucket. However, the bucket owner can use a bucket policy to grant permission
3425// to other users to read this configuration with the s3:GetBucketNotification
3426// permission.
3427//
3428// For more information about setting and reading the notification configuration
3429// on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
3430// For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3431//
3432// The following operation is related to GetBucketNotification:
3433//
3434//    * PutBucketNotification
3435//
3436// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3437// with awserr.Error's Code and Message methods to get detailed information about
3438// the error.
3439//
3440// See the AWS API reference guide for Amazon Simple Storage Service's
3441// API operation GetBucketNotificationConfiguration for usage and error information.
3442// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3443func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
3444	req, out := c.GetBucketNotificationConfigurationRequest(input)
3445	return out, req.Send()
3446}
3447
3448// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
3449// the ability to pass a context and additional request options.
3450//
3451// See GetBucketNotificationConfiguration for details on how to use this API operation.
3452//
3453// The context must be non-nil and will be used for request cancellation. If
3454// the context is nil a panic will occur. In the future the SDK may create
3455// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3456// for more information on using Contexts.
3457func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
3458	req, out := c.GetBucketNotificationConfigurationRequest(input)
3459	req.SetContext(ctx)
3460	req.ApplyOptions(opts...)
3461	return out, req.Send()
3462}
3463
3464const opGetBucketPolicy = "GetBucketPolicy"
3465
3466// GetBucketPolicyRequest generates a "aws/request.Request" representing the
3467// client's request for the GetBucketPolicy operation. The "output" return
3468// value will be populated with the request's response once the request completes
3469// successfully.
3470//
3471// Use "Send" method on the returned Request to send the API call to the service.
3472// the "output" return value is not valid until after Send returns without error.
3473//
3474// See GetBucketPolicy for more information on using the GetBucketPolicy
3475// API call, and error handling.
3476//
3477// This method is useful when you want to inject custom logic or configuration
3478// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3479//
3480//
3481//    // Example sending a request using the GetBucketPolicyRequest method.
3482//    req, resp := client.GetBucketPolicyRequest(params)
3483//
3484//    err := req.Send()
3485//    if err == nil { // resp is now filled
3486//        fmt.Println(resp)
3487//    }
3488//
3489// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3490func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
3491	op := &request.Operation{
3492		Name:       opGetBucketPolicy,
3493		HTTPMethod: "GET",
3494		HTTPPath:   "/{Bucket}?policy",
3495	}
3496
3497	if input == nil {
3498		input = &GetBucketPolicyInput{}
3499	}
3500
3501	output = &GetBucketPolicyOutput{}
3502	req = c.newRequest(op, input, output)
3503	return
3504}
3505
3506// GetBucketPolicy API operation for Amazon Simple Storage Service.
3507//
3508// Returns the policy of a specified bucket. If you are using an identity other
3509// than the root user of the AWS account that owns the bucket, the calling identity
3510// must have the GetBucketPolicy permissions on the specified bucket and belong
3511// to the bucket owner's account in order to use this operation.
3512//
3513// If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access
3514// Denied error. If you have the correct permissions, but you're not using an
3515// identity that belongs to the bucket owner's account, Amazon S3 returns a
3516// 405 Method Not Allowed error.
3517//
3518// As a security precaution, the root user of the AWS account that owns a bucket
3519// can always use this operation, even if the policy explicitly denies the root
3520// user the ability to perform this action.
3521//
3522// For more information about bucket policies, see Using Bucket Policies and
3523// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3524//
3525// The following operation is related to GetBucketPolicy:
3526//
3527//    * GetObject
3528//
3529// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3530// with awserr.Error's Code and Message methods to get detailed information about
3531// the error.
3532//
3533// See the AWS API reference guide for Amazon Simple Storage Service's
3534// API operation GetBucketPolicy for usage and error information.
3535// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3536func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
3537	req, out := c.GetBucketPolicyRequest(input)
3538	return out, req.Send()
3539}
3540
3541// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
3542// the ability to pass a context and additional request options.
3543//
3544// See GetBucketPolicy for details on how to use this API operation.
3545//
3546// The context must be non-nil and will be used for request cancellation. If
3547// the context is nil a panic will occur. In the future the SDK may create
3548// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3549// for more information on using Contexts.
3550func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
3551	req, out := c.GetBucketPolicyRequest(input)
3552	req.SetContext(ctx)
3553	req.ApplyOptions(opts...)
3554	return out, req.Send()
3555}
3556
3557const opGetBucketPolicyStatus = "GetBucketPolicyStatus"
3558
3559// GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the
3560// client's request for the GetBucketPolicyStatus operation. The "output" return
3561// value will be populated with the request's response once the request completes
3562// successfully.
3563//
3564// Use "Send" method on the returned Request to send the API call to the service.
3565// the "output" return value is not valid until after Send returns without error.
3566//
3567// See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus
3568// API call, and error handling.
3569//
3570// This method is useful when you want to inject custom logic or configuration
3571// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3572//
3573//
3574//    // Example sending a request using the GetBucketPolicyStatusRequest method.
3575//    req, resp := client.GetBucketPolicyStatusRequest(params)
3576//
3577//    err := req.Send()
3578//    if err == nil { // resp is now filled
3579//        fmt.Println(resp)
3580//    }
3581//
3582// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
3583func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) {
3584	op := &request.Operation{
3585		Name:       opGetBucketPolicyStatus,
3586		HTTPMethod: "GET",
3587		HTTPPath:   "/{Bucket}?policyStatus",
3588	}
3589
3590	if input == nil {
3591		input = &GetBucketPolicyStatusInput{}
3592	}
3593
3594	output = &GetBucketPolicyStatusOutput{}
3595	req = c.newRequest(op, input, output)
3596	return
3597}
3598
3599// GetBucketPolicyStatus API operation for Amazon Simple Storage Service.
3600//
3601// Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3602// bucket is public. In order to use this operation, you must have the s3:GetBucketPolicyStatus
3603// permission. For more information about Amazon S3 permissions, see Specifying
3604// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
3605//
3606// For more information about when Amazon S3 considers a bucket public, see
3607// 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).
3608//
3609// The following operations are related to GetBucketPolicyStatus:
3610//
3611//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
3612//
3613//    * GetPublicAccessBlock
3614//
3615//    * PutPublicAccessBlock
3616//
3617//    * DeletePublicAccessBlock
3618//
3619// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3620// with awserr.Error's Code and Message methods to get detailed information about
3621// the error.
3622//
3623// See the AWS API reference guide for Amazon Simple Storage Service's
3624// API operation GetBucketPolicyStatus for usage and error information.
3625// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
3626func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) {
3627	req, out := c.GetBucketPolicyStatusRequest(input)
3628	return out, req.Send()
3629}
3630
3631// GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of
3632// the ability to pass a context and additional request options.
3633//
3634// See GetBucketPolicyStatus for details on how to use this API operation.
3635//
3636// The context must be non-nil and will be used for request cancellation. If
3637// the context is nil a panic will occur. In the future the SDK may create
3638// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3639// for more information on using Contexts.
3640func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) {
3641	req, out := c.GetBucketPolicyStatusRequest(input)
3642	req.SetContext(ctx)
3643	req.ApplyOptions(opts...)
3644	return out, req.Send()
3645}
3646
3647const opGetBucketReplication = "GetBucketReplication"
3648
3649// GetBucketReplicationRequest generates a "aws/request.Request" representing the
3650// client's request for the GetBucketReplication operation. The "output" return
3651// value will be populated with the request's response once the request completes
3652// successfully.
3653//
3654// Use "Send" method on the returned Request to send the API call to the service.
3655// the "output" return value is not valid until after Send returns without error.
3656//
3657// See GetBucketReplication for more information on using the GetBucketReplication
3658// API call, and error handling.
3659//
3660// This method is useful when you want to inject custom logic or configuration
3661// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3662//
3663//
3664//    // Example sending a request using the GetBucketReplicationRequest method.
3665//    req, resp := client.GetBucketReplicationRequest(params)
3666//
3667//    err := req.Send()
3668//    if err == nil { // resp is now filled
3669//        fmt.Println(resp)
3670//    }
3671//
3672// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
3673func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
3674	op := &request.Operation{
3675		Name:       opGetBucketReplication,
3676		HTTPMethod: "GET",
3677		HTTPPath:   "/{Bucket}?replication",
3678	}
3679
3680	if input == nil {
3681		input = &GetBucketReplicationInput{}
3682	}
3683
3684	output = &GetBucketReplicationOutput{}
3685	req = c.newRequest(op, input, output)
3686	return
3687}
3688
3689// GetBucketReplication API operation for Amazon Simple Storage Service.
3690//
3691// Returns the replication configuration of a bucket.
3692//
3693// It can take a while to propagate the put or delete a replication configuration
3694// to all Amazon S3 systems. Therefore, a get request soon after put or delete
3695// can return a wrong result.
3696//
3697// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
3698// in the Amazon Simple Storage Service Developer Guide.
3699//
3700// This operation requires permissions for the s3:GetReplicationConfiguration
3701// action. For more information about permissions, see Using Bucket Policies
3702// and User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3703//
3704// If you include the Filter element in a replication configuration, you must
3705// also include the DeleteMarkerReplication and Priority elements. The response
3706// also returns those elements.
3707//
3708// For information about GetBucketReplication errors, see ReplicationErrorCodeList
3709//
3710// The following operations are related to GetBucketReplication:
3711//
3712//    * PutBucketReplication
3713//
3714//    * DeleteBucketReplication
3715//
3716// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3717// with awserr.Error's Code and Message methods to get detailed information about
3718// the error.
3719//
3720// See the AWS API reference guide for Amazon Simple Storage Service's
3721// API operation GetBucketReplication for usage and error information.
3722// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
3723func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
3724	req, out := c.GetBucketReplicationRequest(input)
3725	return out, req.Send()
3726}
3727
3728// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
3729// the ability to pass a context and additional request options.
3730//
3731// See GetBucketReplication for details on how to use this API operation.
3732//
3733// The context must be non-nil and will be used for request cancellation. If
3734// the context is nil a panic will occur. In the future the SDK may create
3735// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3736// for more information on using Contexts.
3737func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
3738	req, out := c.GetBucketReplicationRequest(input)
3739	req.SetContext(ctx)
3740	req.ApplyOptions(opts...)
3741	return out, req.Send()
3742}
3743
3744const opGetBucketRequestPayment = "GetBucketRequestPayment"
3745
3746// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
3747// client's request for the GetBucketRequestPayment operation. The "output" return
3748// value will be populated with the request's response once the request completes
3749// successfully.
3750//
3751// Use "Send" method on the returned Request to send the API call to the service.
3752// the "output" return value is not valid until after Send returns without error.
3753//
3754// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
3755// API call, and error handling.
3756//
3757// This method is useful when you want to inject custom logic or configuration
3758// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3759//
3760//
3761//    // Example sending a request using the GetBucketRequestPaymentRequest method.
3762//    req, resp := client.GetBucketRequestPaymentRequest(params)
3763//
3764//    err := req.Send()
3765//    if err == nil { // resp is now filled
3766//        fmt.Println(resp)
3767//    }
3768//
3769// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
3770func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
3771	op := &request.Operation{
3772		Name:       opGetBucketRequestPayment,
3773		HTTPMethod: "GET",
3774		HTTPPath:   "/{Bucket}?requestPayment",
3775	}
3776
3777	if input == nil {
3778		input = &GetBucketRequestPaymentInput{}
3779	}
3780
3781	output = &GetBucketRequestPaymentOutput{}
3782	req = c.newRequest(op, input, output)
3783	return
3784}
3785
3786// GetBucketRequestPayment API operation for Amazon Simple Storage Service.
3787//
3788// Returns the request payment configuration of a bucket. To use this version
3789// of the operation, you must be the bucket owner. For more information, see
3790// Requester Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
3791//
3792// The following operations are related to GetBucketRequestPayment:
3793//
3794//    * ListObjects
3795//
3796// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3797// with awserr.Error's Code and Message methods to get detailed information about
3798// the error.
3799//
3800// See the AWS API reference guide for Amazon Simple Storage Service's
3801// API operation GetBucketRequestPayment for usage and error information.
3802// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
3803func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
3804	req, out := c.GetBucketRequestPaymentRequest(input)
3805	return out, req.Send()
3806}
3807
3808// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
3809// the ability to pass a context and additional request options.
3810//
3811// See GetBucketRequestPayment for details on how to use this API operation.
3812//
3813// The context must be non-nil and will be used for request cancellation. If
3814// the context is nil a panic will occur. In the future the SDK may create
3815// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3816// for more information on using Contexts.
3817func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
3818	req, out := c.GetBucketRequestPaymentRequest(input)
3819	req.SetContext(ctx)
3820	req.ApplyOptions(opts...)
3821	return out, req.Send()
3822}
3823
3824const opGetBucketTagging = "GetBucketTagging"
3825
3826// GetBucketTaggingRequest generates a "aws/request.Request" representing the
3827// client's request for the GetBucketTagging operation. The "output" return
3828// value will be populated with the request's response once the request completes
3829// successfully.
3830//
3831// Use "Send" method on the returned Request to send the API call to the service.
3832// the "output" return value is not valid until after Send returns without error.
3833//
3834// See GetBucketTagging for more information on using the GetBucketTagging
3835// API call, and error handling.
3836//
3837// This method is useful when you want to inject custom logic or configuration
3838// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3839//
3840//
3841//    // Example sending a request using the GetBucketTaggingRequest method.
3842//    req, resp := client.GetBucketTaggingRequest(params)
3843//
3844//    err := req.Send()
3845//    if err == nil { // resp is now filled
3846//        fmt.Println(resp)
3847//    }
3848//
3849// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
3850func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
3851	op := &request.Operation{
3852		Name:       opGetBucketTagging,
3853		HTTPMethod: "GET",
3854		HTTPPath:   "/{Bucket}?tagging",
3855	}
3856
3857	if input == nil {
3858		input = &GetBucketTaggingInput{}
3859	}
3860
3861	output = &GetBucketTaggingOutput{}
3862	req = c.newRequest(op, input, output)
3863	return
3864}
3865
3866// GetBucketTagging API operation for Amazon Simple Storage Service.
3867//
3868// Returns the tag set associated with the bucket.
3869//
3870// To use this operation, you must have permission to perform the s3:GetBucketTagging
3871// action. By default, the bucket owner has this permission and can grant this
3872// permission to others.
3873//
3874// GetBucketTagging has the following special error:
3875//
3876//    * Error code: NoSuchTagSetError Description: There is no tag set associated
3877//    with the bucket.
3878//
3879// The following operations are related to GetBucketTagging:
3880//
3881//    * PutBucketTagging
3882//
3883//    * DeleteBucketTagging
3884//
3885// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3886// with awserr.Error's Code and Message methods to get detailed information about
3887// the error.
3888//
3889// See the AWS API reference guide for Amazon Simple Storage Service's
3890// API operation GetBucketTagging for usage and error information.
3891// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
3892func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
3893	req, out := c.GetBucketTaggingRequest(input)
3894	return out, req.Send()
3895}
3896
3897// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
3898// the ability to pass a context and additional request options.
3899//
3900// See GetBucketTagging for details on how to use this API operation.
3901//
3902// The context must be non-nil and will be used for request cancellation. If
3903// the context is nil a panic will occur. In the future the SDK may create
3904// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3905// for more information on using Contexts.
3906func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
3907	req, out := c.GetBucketTaggingRequest(input)
3908	req.SetContext(ctx)
3909	req.ApplyOptions(opts...)
3910	return out, req.Send()
3911}
3912
3913const opGetBucketVersioning = "GetBucketVersioning"
3914
3915// GetBucketVersioningRequest generates a "aws/request.Request" representing the
3916// client's request for the GetBucketVersioning operation. The "output" return
3917// value will be populated with the request's response once the request completes
3918// successfully.
3919//
3920// Use "Send" method on the returned Request to send the API call to the service.
3921// the "output" return value is not valid until after Send returns without error.
3922//
3923// See GetBucketVersioning for more information on using the GetBucketVersioning
3924// API call, and error handling.
3925//
3926// This method is useful when you want to inject custom logic or configuration
3927// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3928//
3929//
3930//    // Example sending a request using the GetBucketVersioningRequest method.
3931//    req, resp := client.GetBucketVersioningRequest(params)
3932//
3933//    err := req.Send()
3934//    if err == nil { // resp is now filled
3935//        fmt.Println(resp)
3936//    }
3937//
3938// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
3939func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
3940	op := &request.Operation{
3941		Name:       opGetBucketVersioning,
3942		HTTPMethod: "GET",
3943		HTTPPath:   "/{Bucket}?versioning",
3944	}
3945
3946	if input == nil {
3947		input = &GetBucketVersioningInput{}
3948	}
3949
3950	output = &GetBucketVersioningOutput{}
3951	req = c.newRequest(op, input, output)
3952	return
3953}
3954
3955// GetBucketVersioning API operation for Amazon Simple Storage Service.
3956//
3957// Returns the versioning state of a bucket.
3958//
3959// To retrieve the versioning state of a bucket, you must be the bucket owner.
3960//
3961// This implementation also returns the MFA Delete status of the versioning
3962// state. If the MFA Delete status is enabled, the bucket owner must use an
3963// authentication device to change the versioning state of the bucket.
3964//
3965// The following operations are related to GetBucketVersioning:
3966//
3967//    * GetObject
3968//
3969//    * PutObject
3970//
3971//    * DeleteObject
3972//
3973// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3974// with awserr.Error's Code and Message methods to get detailed information about
3975// the error.
3976//
3977// See the AWS API reference guide for Amazon Simple Storage Service's
3978// API operation GetBucketVersioning for usage and error information.
3979// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
3980func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
3981	req, out := c.GetBucketVersioningRequest(input)
3982	return out, req.Send()
3983}
3984
3985// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
3986// the ability to pass a context and additional request options.
3987//
3988// See GetBucketVersioning for details on how to use this API operation.
3989//
3990// The context must be non-nil and will be used for request cancellation. If
3991// the context is nil a panic will occur. In the future the SDK may create
3992// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3993// for more information on using Contexts.
3994func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
3995	req, out := c.GetBucketVersioningRequest(input)
3996	req.SetContext(ctx)
3997	req.ApplyOptions(opts...)
3998	return out, req.Send()
3999}
4000
4001const opGetBucketWebsite = "GetBucketWebsite"
4002
4003// GetBucketWebsiteRequest generates a "aws/request.Request" representing the
4004// client's request for the GetBucketWebsite operation. The "output" return
4005// value will be populated with the request's response once the request completes
4006// successfully.
4007//
4008// Use "Send" method on the returned Request to send the API call to the service.
4009// the "output" return value is not valid until after Send returns without error.
4010//
4011// See GetBucketWebsite for more information on using the GetBucketWebsite
4012// API call, and error handling.
4013//
4014// This method is useful when you want to inject custom logic or configuration
4015// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4016//
4017//
4018//    // Example sending a request using the GetBucketWebsiteRequest method.
4019//    req, resp := client.GetBucketWebsiteRequest(params)
4020//
4021//    err := req.Send()
4022//    if err == nil { // resp is now filled
4023//        fmt.Println(resp)
4024//    }
4025//
4026// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4027func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
4028	op := &request.Operation{
4029		Name:       opGetBucketWebsite,
4030		HTTPMethod: "GET",
4031		HTTPPath:   "/{Bucket}?website",
4032	}
4033
4034	if input == nil {
4035		input = &GetBucketWebsiteInput{}
4036	}
4037
4038	output = &GetBucketWebsiteOutput{}
4039	req = c.newRequest(op, input, output)
4040	return
4041}
4042
4043// GetBucketWebsite API operation for Amazon Simple Storage Service.
4044//
4045// Returns the website configuration for a bucket. To host website on Amazon
4046// S3, you can configure a bucket as website by adding a website configuration.
4047// For more information about hosting websites, see Hosting Websites on Amazon
4048// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
4049//
4050// This GET operation requires the S3:GetBucketWebsite permission. By default,
4051// only the bucket owner can read the bucket website configuration. However,
4052// bucket owners can allow other users to read the website configuration by
4053// writing a bucket policy granting them the S3:GetBucketWebsite permission.
4054//
4055// The following operations are related to DeleteBucketWebsite:
4056//
4057//    * DeleteBucketWebsite
4058//
4059//    * PutBucketWebsite
4060//
4061// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4062// with awserr.Error's Code and Message methods to get detailed information about
4063// the error.
4064//
4065// See the AWS API reference guide for Amazon Simple Storage Service's
4066// API operation GetBucketWebsite for usage and error information.
4067// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4068func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
4069	req, out := c.GetBucketWebsiteRequest(input)
4070	return out, req.Send()
4071}
4072
4073// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
4074// the ability to pass a context and additional request options.
4075//
4076// See GetBucketWebsite for details on how to use this API operation.
4077//
4078// The context must be non-nil and will be used for request cancellation. If
4079// the context is nil a panic will occur. In the future the SDK may create
4080// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4081// for more information on using Contexts.
4082func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
4083	req, out := c.GetBucketWebsiteRequest(input)
4084	req.SetContext(ctx)
4085	req.ApplyOptions(opts...)
4086	return out, req.Send()
4087}
4088
4089const opGetObject = "GetObject"
4090
4091// GetObjectRequest generates a "aws/request.Request" representing the
4092// client's request for the GetObject operation. The "output" return
4093// value will be populated with the request's response once the request completes
4094// successfully.
4095//
4096// Use "Send" method on the returned Request to send the API call to the service.
4097// the "output" return value is not valid until after Send returns without error.
4098//
4099// See GetObject for more information on using the GetObject
4100// API call, and error handling.
4101//
4102// This method is useful when you want to inject custom logic or configuration
4103// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4104//
4105//
4106//    // Example sending a request using the GetObjectRequest method.
4107//    req, resp := client.GetObjectRequest(params)
4108//
4109//    err := req.Send()
4110//    if err == nil { // resp is now filled
4111//        fmt.Println(resp)
4112//    }
4113//
4114// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4115func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
4116	op := &request.Operation{
4117		Name:       opGetObject,
4118		HTTPMethod: "GET",
4119		HTTPPath:   "/{Bucket}/{Key+}",
4120	}
4121
4122	if input == nil {
4123		input = &GetObjectInput{}
4124	}
4125
4126	output = &GetObjectOutput{}
4127	req = c.newRequest(op, input, output)
4128	return
4129}
4130
4131// GetObject API operation for Amazon Simple Storage Service.
4132//
4133// Retrieves objects from Amazon S3. To use GET, you must have READ access to
4134// the object. If you grant READ access to the anonymous user, you can return
4135// the object without using an authorization header.
4136//
4137// An Amazon S3 bucket has no directory hierarchy such as you would find in
4138// a typical computer file system. You can, however, create a logical hierarchy
4139// by using object key names that imply a folder structure. For example, instead
4140// of naming an object sample.jpg, you can name it photos/2006/February/sample.jpg.
4141//
4142// To get an object from such a logical hierarchy, specify the full key name
4143// for the object in the GET operation. For a virtual hosted-style request example,
4144// if you have the object photos/2006/February/sample.jpg, specify the resource
4145// as /photos/2006/February/sample.jpg. For a path-style request example, if
4146// you have the object photos/2006/February/sample.jpg in the bucket named examplebucket,
4147// specify the resource as /examplebucket/photos/2006/February/sample.jpg. For
4148// more information about request types, see HTTP Host Header Bucket Specification
4149// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket).
4150//
4151// To distribute large files to many people, you can save bandwidth costs by
4152// using BitTorrent. For more information, see Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
4153// For more information about returning the ACL of an object, see GetObjectAcl.
4154//
4155// If the object you are retrieving is stored in the GLACIER or DEEP_ARCHIVE
4156// storage classes, before you can retrieve the object you must first restore
4157// a copy using . Otherwise, this operation returns an InvalidObjectStateError
4158// error. For information about restoring archived objects, see Restoring Archived
4159// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
4160//
4161// Encryption request headers, like x-amz-server-side-encryption, should not
4162// be sent for GET requests if your object uses server-side encryption with
4163// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed
4164// encryption keys (SSE-S3). If your object does use these types of keys, you’ll
4165// get an HTTP 400 BadRequest error.
4166//
4167// If you encrypt an object by using server-side encryption with customer-provided
4168// encryption keys (SSE-C) when you store the object in Amazon S3, then when
4169// you GET the object, you must use the following headers:
4170//
4171//    * x-amz-server-side​-encryption​-customer-algorithm
4172//
4173//    * x-amz-server-side​-encryption​-customer-key
4174//
4175//    * x-amz-server-side​-encryption​-customer-key-MD5
4176//
4177// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
4178// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
4179//
4180// Assuming you have permission to read object tags (permission for the s3:GetObjectVersionTagging
4181// action), the response also returns the x-amz-tagging-count header that provides
4182// the count of number of tags associated with the object. You can use GetObjectTagging
4183// to retrieve the tag set associated with an object.
4184//
4185// Permissions
4186//
4187// You need the s3:GetObject permission for this operation. For more information,
4188// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
4189// If the object you request does not exist, the error Amazon S3 returns depends
4190// on whether you also have the s3:ListBucket permission.
4191//
4192//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 will
4193//    return an HTTP status code 404 ("no such key") error.
4194//
4195//    * If you don’t have the s3:ListBucket permission, Amazon S3 will return
4196//    an HTTP status code 403 ("access denied") error.
4197//
4198// Versioning
4199//
4200// By default, the GET operation returns the current version of an object. To
4201// return a different version, use the versionId subresource.
4202//
4203// If the current version of the object is a delete marker, Amazon S3 behaves
4204// as if the object was deleted and includes x-amz-delete-marker: true in the
4205// response.
4206//
4207// For more information about versioning, see PutBucketVersioning.
4208//
4209// Overriding Response Header Values
4210//
4211// There are times when you want to override certain response header values
4212// in a GET response. For example, you might override the Content-Disposition
4213// response header value in your GET request.
4214//
4215// You can override values for a set of response headers using the following
4216// query parameters. These response header values are sent only on a successful
4217// request, that is, when status code 200 OK is returned. The set of headers
4218// you can override using these parameters is a subset of the headers that Amazon
4219// S3 accepts when you create an object. The response headers that you can override
4220// for the GET response are Content-Type, Content-Language, Expires, Cache-Control,
4221// Content-Disposition, and Content-Encoding. To override these header values
4222// in the GET response, you use the following request parameters.
4223//
4224// You must sign the request, either using an Authorization header or a presigned
4225// URL, when using these parameters. They cannot be used with an unsigned (anonymous)
4226// request.
4227//
4228//    * response-content-type
4229//
4230//    * response-content-language
4231//
4232//    * response-expires
4233//
4234//    * response-cache-control
4235//
4236//    * response-content-disposition
4237//
4238//    * response-content-encoding
4239//
4240// Additional Considerations about Request Headers
4241//
4242// If both of the If-Match and If-Unmodified-Since headers are present in the
4243// request as follows: If-Match condition evaluates to true, and; If-Unmodified-Since
4244// condition evaluates to false; then, S3 returns 200 OK and the data requested.
4245//
4246// If both of the If-None-Match and If-Modified-Since headers are present in
4247// the request as follows:If-None-Match condition evaluates to false, and; If-Modified-Since
4248// condition evaluates to true; then, S3 returns 304 Not Modified response code.
4249//
4250// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
4251//
4252// The following operations are related to GetObject:
4253//
4254//    * ListBuckets
4255//
4256//    * GetObjectAcl
4257//
4258// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4259// with awserr.Error's Code and Message methods to get detailed information about
4260// the error.
4261//
4262// See the AWS API reference guide for Amazon Simple Storage Service's
4263// API operation GetObject for usage and error information.
4264//
4265// Returned Error Codes:
4266//   * ErrCodeNoSuchKey "NoSuchKey"
4267//   The specified key does not exist.
4268//
4269// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4270func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
4271	req, out := c.GetObjectRequest(input)
4272	return out, req.Send()
4273}
4274
4275// GetObjectWithContext is the same as GetObject with the addition of
4276// the ability to pass a context and additional request options.
4277//
4278// See GetObject for details on how to use this API operation.
4279//
4280// The context must be non-nil and will be used for request cancellation. If
4281// the context is nil a panic will occur. In the future the SDK may create
4282// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4283// for more information on using Contexts.
4284func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
4285	req, out := c.GetObjectRequest(input)
4286	req.SetContext(ctx)
4287	req.ApplyOptions(opts...)
4288	return out, req.Send()
4289}
4290
4291const opGetObjectAcl = "GetObjectAcl"
4292
4293// GetObjectAclRequest generates a "aws/request.Request" representing the
4294// client's request for the GetObjectAcl operation. The "output" return
4295// value will be populated with the request's response once the request completes
4296// successfully.
4297//
4298// Use "Send" method on the returned Request to send the API call to the service.
4299// the "output" return value is not valid until after Send returns without error.
4300//
4301// See GetObjectAcl for more information on using the GetObjectAcl
4302// API call, and error handling.
4303//
4304// This method is useful when you want to inject custom logic or configuration
4305// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4306//
4307//
4308//    // Example sending a request using the GetObjectAclRequest method.
4309//    req, resp := client.GetObjectAclRequest(params)
4310//
4311//    err := req.Send()
4312//    if err == nil { // resp is now filled
4313//        fmt.Println(resp)
4314//    }
4315//
4316// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4317func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
4318	op := &request.Operation{
4319		Name:       opGetObjectAcl,
4320		HTTPMethod: "GET",
4321		HTTPPath:   "/{Bucket}/{Key+}?acl",
4322	}
4323
4324	if input == nil {
4325		input = &GetObjectAclInput{}
4326	}
4327
4328	output = &GetObjectAclOutput{}
4329	req = c.newRequest(op, input, output)
4330	return
4331}
4332
4333// GetObjectAcl API operation for Amazon Simple Storage Service.
4334//
4335// Returns the access control list (ACL) of an object. To use this operation,
4336// you must have READ_ACP access to the object.
4337//
4338// Versioning
4339//
4340// By default, GET returns ACL information about the current version of an object.
4341// To return ACL information about a different version, use the versionId subresource.
4342//
4343// The following operations are related to GetObjectAcl:
4344//
4345//    * GetObject
4346//
4347//    * DeleteObject
4348//
4349//    * PutObject
4350//
4351// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4352// with awserr.Error's Code and Message methods to get detailed information about
4353// the error.
4354//
4355// See the AWS API reference guide for Amazon Simple Storage Service's
4356// API operation GetObjectAcl for usage and error information.
4357//
4358// Returned Error Codes:
4359//   * ErrCodeNoSuchKey "NoSuchKey"
4360//   The specified key does not exist.
4361//
4362// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4363func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
4364	req, out := c.GetObjectAclRequest(input)
4365	return out, req.Send()
4366}
4367
4368// GetObjectAclWithContext is the same as GetObjectAcl with the addition of
4369// the ability to pass a context and additional request options.
4370//
4371// See GetObjectAcl for details on how to use this API operation.
4372//
4373// The context must be non-nil and will be used for request cancellation. If
4374// the context is nil a panic will occur. In the future the SDK may create
4375// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4376// for more information on using Contexts.
4377func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
4378	req, out := c.GetObjectAclRequest(input)
4379	req.SetContext(ctx)
4380	req.ApplyOptions(opts...)
4381	return out, req.Send()
4382}
4383
4384const opGetObjectLegalHold = "GetObjectLegalHold"
4385
4386// GetObjectLegalHoldRequest generates a "aws/request.Request" representing the
4387// client's request for the GetObjectLegalHold operation. The "output" return
4388// value will be populated with the request's response once the request completes
4389// successfully.
4390//
4391// Use "Send" method on the returned Request to send the API call to the service.
4392// the "output" return value is not valid until after Send returns without error.
4393//
4394// See GetObjectLegalHold for more information on using the GetObjectLegalHold
4395// API call, and error handling.
4396//
4397// This method is useful when you want to inject custom logic or configuration
4398// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4399//
4400//
4401//    // Example sending a request using the GetObjectLegalHoldRequest method.
4402//    req, resp := client.GetObjectLegalHoldRequest(params)
4403//
4404//    err := req.Send()
4405//    if err == nil { // resp is now filled
4406//        fmt.Println(resp)
4407//    }
4408//
4409// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4410func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) {
4411	op := &request.Operation{
4412		Name:       opGetObjectLegalHold,
4413		HTTPMethod: "GET",
4414		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
4415	}
4416
4417	if input == nil {
4418		input = &GetObjectLegalHoldInput{}
4419	}
4420
4421	output = &GetObjectLegalHoldOutput{}
4422	req = c.newRequest(op, input, output)
4423	return
4424}
4425
4426// GetObjectLegalHold API operation for Amazon Simple Storage Service.
4427//
4428// Gets an object's current Legal Hold status. For more information, see Locking
4429// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4430//
4431// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4432// with awserr.Error's Code and Message methods to get detailed information about
4433// the error.
4434//
4435// See the AWS API reference guide for Amazon Simple Storage Service's
4436// API operation GetObjectLegalHold for usage and error information.
4437// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4438func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) {
4439	req, out := c.GetObjectLegalHoldRequest(input)
4440	return out, req.Send()
4441}
4442
4443// GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of
4444// the ability to pass a context and additional request options.
4445//
4446// See GetObjectLegalHold for details on how to use this API operation.
4447//
4448// The context must be non-nil and will be used for request cancellation. If
4449// the context is nil a panic will occur. In the future the SDK may create
4450// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4451// for more information on using Contexts.
4452func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) {
4453	req, out := c.GetObjectLegalHoldRequest(input)
4454	req.SetContext(ctx)
4455	req.ApplyOptions(opts...)
4456	return out, req.Send()
4457}
4458
4459const opGetObjectLockConfiguration = "GetObjectLockConfiguration"
4460
4461// GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the
4462// client's request for the GetObjectLockConfiguration operation. The "output" return
4463// value will be populated with the request's response once the request completes
4464// successfully.
4465//
4466// Use "Send" method on the returned Request to send the API call to the service.
4467// the "output" return value is not valid until after Send returns without error.
4468//
4469// See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration
4470// API call, and error handling.
4471//
4472// This method is useful when you want to inject custom logic or configuration
4473// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4474//
4475//
4476//    // Example sending a request using the GetObjectLockConfigurationRequest method.
4477//    req, resp := client.GetObjectLockConfigurationRequest(params)
4478//
4479//    err := req.Send()
4480//    if err == nil { // resp is now filled
4481//        fmt.Println(resp)
4482//    }
4483//
4484// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4485func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) {
4486	op := &request.Operation{
4487		Name:       opGetObjectLockConfiguration,
4488		HTTPMethod: "GET",
4489		HTTPPath:   "/{Bucket}?object-lock",
4490	}
4491
4492	if input == nil {
4493		input = &GetObjectLockConfigurationInput{}
4494	}
4495
4496	output = &GetObjectLockConfigurationOutput{}
4497	req = c.newRequest(op, input, output)
4498	return
4499}
4500
4501// GetObjectLockConfiguration API operation for Amazon Simple Storage Service.
4502//
4503// Gets the Object Lock configuration for a bucket. The rule specified in the
4504// Object Lock configuration will be applied by default to every new object
4505// placed in the specified bucket. For more information, see Locking Objects
4506// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4507//
4508// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4509// with awserr.Error's Code and Message methods to get detailed information about
4510// the error.
4511//
4512// See the AWS API reference guide for Amazon Simple Storage Service's
4513// API operation GetObjectLockConfiguration for usage and error information.
4514// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4515func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) {
4516	req, out := c.GetObjectLockConfigurationRequest(input)
4517	return out, req.Send()
4518}
4519
4520// GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of
4521// the ability to pass a context and additional request options.
4522//
4523// See GetObjectLockConfiguration for details on how to use this API operation.
4524//
4525// The context must be non-nil and will be used for request cancellation. If
4526// the context is nil a panic will occur. In the future the SDK may create
4527// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4528// for more information on using Contexts.
4529func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) {
4530	req, out := c.GetObjectLockConfigurationRequest(input)
4531	req.SetContext(ctx)
4532	req.ApplyOptions(opts...)
4533	return out, req.Send()
4534}
4535
4536const opGetObjectRetention = "GetObjectRetention"
4537
4538// GetObjectRetentionRequest generates a "aws/request.Request" representing the
4539// client's request for the GetObjectRetention operation. The "output" return
4540// value will be populated with the request's response once the request completes
4541// successfully.
4542//
4543// Use "Send" method on the returned Request to send the API call to the service.
4544// the "output" return value is not valid until after Send returns without error.
4545//
4546// See GetObjectRetention for more information on using the GetObjectRetention
4547// API call, and error handling.
4548//
4549// This method is useful when you want to inject custom logic or configuration
4550// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4551//
4552//
4553//    // Example sending a request using the GetObjectRetentionRequest method.
4554//    req, resp := client.GetObjectRetentionRequest(params)
4555//
4556//    err := req.Send()
4557//    if err == nil { // resp is now filled
4558//        fmt.Println(resp)
4559//    }
4560//
4561// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4562func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) {
4563	op := &request.Operation{
4564		Name:       opGetObjectRetention,
4565		HTTPMethod: "GET",
4566		HTTPPath:   "/{Bucket}/{Key+}?retention",
4567	}
4568
4569	if input == nil {
4570		input = &GetObjectRetentionInput{}
4571	}
4572
4573	output = &GetObjectRetentionOutput{}
4574	req = c.newRequest(op, input, output)
4575	return
4576}
4577
4578// GetObjectRetention API operation for Amazon Simple Storage Service.
4579//
4580// Retrieves an object's retention settings. For more information, see Locking
4581// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4582//
4583// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4584// with awserr.Error's Code and Message methods to get detailed information about
4585// the error.
4586//
4587// See the AWS API reference guide for Amazon Simple Storage Service's
4588// API operation GetObjectRetention for usage and error information.
4589// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4590func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) {
4591	req, out := c.GetObjectRetentionRequest(input)
4592	return out, req.Send()
4593}
4594
4595// GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of
4596// the ability to pass a context and additional request options.
4597//
4598// See GetObjectRetention for details on how to use this API operation.
4599//
4600// The context must be non-nil and will be used for request cancellation. If
4601// the context is nil a panic will occur. In the future the SDK may create
4602// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4603// for more information on using Contexts.
4604func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) {
4605	req, out := c.GetObjectRetentionRequest(input)
4606	req.SetContext(ctx)
4607	req.ApplyOptions(opts...)
4608	return out, req.Send()
4609}
4610
4611const opGetObjectTagging = "GetObjectTagging"
4612
4613// GetObjectTaggingRequest generates a "aws/request.Request" representing the
4614// client's request for the GetObjectTagging operation. The "output" return
4615// value will be populated with the request's response once the request completes
4616// successfully.
4617//
4618// Use "Send" method on the returned Request to send the API call to the service.
4619// the "output" return value is not valid until after Send returns without error.
4620//
4621// See GetObjectTagging for more information on using the GetObjectTagging
4622// API call, and error handling.
4623//
4624// This method is useful when you want to inject custom logic or configuration
4625// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4626//
4627//
4628//    // Example sending a request using the GetObjectTaggingRequest method.
4629//    req, resp := client.GetObjectTaggingRequest(params)
4630//
4631//    err := req.Send()
4632//    if err == nil { // resp is now filled
4633//        fmt.Println(resp)
4634//    }
4635//
4636// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
4637func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
4638	op := &request.Operation{
4639		Name:       opGetObjectTagging,
4640		HTTPMethod: "GET",
4641		HTTPPath:   "/{Bucket}/{Key+}?tagging",
4642	}
4643
4644	if input == nil {
4645		input = &GetObjectTaggingInput{}
4646	}
4647
4648	output = &GetObjectTaggingOutput{}
4649	req = c.newRequest(op, input, output)
4650	return
4651}
4652
4653// GetObjectTagging API operation for Amazon Simple Storage Service.
4654//
4655// Returns the tag-set of an object. You send the GET request against the tagging
4656// subresource associated with the object.
4657//
4658// To use this operation, you must have permission to perform the s3:GetObjectTagging
4659// action. By default, the GET operation returns information about current version
4660// of an object. For a versioned bucket, you can have multiple versions of an
4661// object in your bucket. To retrieve tags of any other version, use the versionId
4662// query parameter. You also need permission for the s3:GetObjectVersionTagging
4663// action.
4664//
4665// By default, the bucket owner has this permission and can grant this permission
4666// to others.
4667//
4668// For information about the Amazon S3 object tagging feature, see Object Tagging
4669// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
4670//
4671// The following operation is related to GetObjectTagging:
4672//
4673//    * PutObjectTagging
4674//
4675// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4676// with awserr.Error's Code and Message methods to get detailed information about
4677// the error.
4678//
4679// See the AWS API reference guide for Amazon Simple Storage Service's
4680// API operation GetObjectTagging for usage and error information.
4681// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
4682func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
4683	req, out := c.GetObjectTaggingRequest(input)
4684	return out, req.Send()
4685}
4686
4687// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
4688// the ability to pass a context and additional request options.
4689//
4690// See GetObjectTagging for details on how to use this API operation.
4691//
4692// The context must be non-nil and will be used for request cancellation. If
4693// the context is nil a panic will occur. In the future the SDK may create
4694// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4695// for more information on using Contexts.
4696func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
4697	req, out := c.GetObjectTaggingRequest(input)
4698	req.SetContext(ctx)
4699	req.ApplyOptions(opts...)
4700	return out, req.Send()
4701}
4702
4703const opGetObjectTorrent = "GetObjectTorrent"
4704
4705// GetObjectTorrentRequest generates a "aws/request.Request" representing the
4706// client's request for the GetObjectTorrent operation. The "output" return
4707// value will be populated with the request's response once the request completes
4708// successfully.
4709//
4710// Use "Send" method on the returned Request to send the API call to the service.
4711// the "output" return value is not valid until after Send returns without error.
4712//
4713// See GetObjectTorrent for more information on using the GetObjectTorrent
4714// API call, and error handling.
4715//
4716// This method is useful when you want to inject custom logic or configuration
4717// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4718//
4719//
4720//    // Example sending a request using the GetObjectTorrentRequest method.
4721//    req, resp := client.GetObjectTorrentRequest(params)
4722//
4723//    err := req.Send()
4724//    if err == nil { // resp is now filled
4725//        fmt.Println(resp)
4726//    }
4727//
4728// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
4729func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
4730	op := &request.Operation{
4731		Name:       opGetObjectTorrent,
4732		HTTPMethod: "GET",
4733		HTTPPath:   "/{Bucket}/{Key+}?torrent",
4734	}
4735
4736	if input == nil {
4737		input = &GetObjectTorrentInput{}
4738	}
4739
4740	output = &GetObjectTorrentOutput{}
4741	req = c.newRequest(op, input, output)
4742	return
4743}
4744
4745// GetObjectTorrent API operation for Amazon Simple Storage Service.
4746//
4747// Return torrent files from a bucket. BitTorrent can save you bandwidth when
4748// you're distributing large files. For more information about BitTorrent, see
4749// Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
4750//
4751// You can get torrent only for objects that are less than 5 GB in size and
4752// that are not encrypted using server-side encryption with customer-provided
4753// encryption key.
4754//
4755// To use GET, you must have READ access to the object.
4756//
4757// The following operation is related to GetObjectTorrent:
4758//
4759//    * GetObject
4760//
4761// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4762// with awserr.Error's Code and Message methods to get detailed information about
4763// the error.
4764//
4765// See the AWS API reference guide for Amazon Simple Storage Service's
4766// API operation GetObjectTorrent for usage and error information.
4767// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
4768func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
4769	req, out := c.GetObjectTorrentRequest(input)
4770	return out, req.Send()
4771}
4772
4773// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
4774// the ability to pass a context and additional request options.
4775//
4776// See GetObjectTorrent for details on how to use this API operation.
4777//
4778// The context must be non-nil and will be used for request cancellation. If
4779// the context is nil a panic will occur. In the future the SDK may create
4780// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4781// for more information on using Contexts.
4782func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
4783	req, out := c.GetObjectTorrentRequest(input)
4784	req.SetContext(ctx)
4785	req.ApplyOptions(opts...)
4786	return out, req.Send()
4787}
4788
4789const opGetPublicAccessBlock = "GetPublicAccessBlock"
4790
4791// GetPublicAccessBlockRequest generates a "aws/request.Request" representing the
4792// client's request for the GetPublicAccessBlock operation. The "output" return
4793// value will be populated with the request's response once the request completes
4794// successfully.
4795//
4796// Use "Send" method on the returned Request to send the API call to the service.
4797// the "output" return value is not valid until after Send returns without error.
4798//
4799// See GetPublicAccessBlock for more information on using the GetPublicAccessBlock
4800// API call, and error handling.
4801//
4802// This method is useful when you want to inject custom logic or configuration
4803// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4804//
4805//
4806//    // Example sending a request using the GetPublicAccessBlockRequest method.
4807//    req, resp := client.GetPublicAccessBlockRequest(params)
4808//
4809//    err := req.Send()
4810//    if err == nil { // resp is now filled
4811//        fmt.Println(resp)
4812//    }
4813//
4814// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
4815func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) {
4816	op := &request.Operation{
4817		Name:       opGetPublicAccessBlock,
4818		HTTPMethod: "GET",
4819		HTTPPath:   "/{Bucket}?publicAccessBlock",
4820	}
4821
4822	if input == nil {
4823		input = &GetPublicAccessBlockInput{}
4824	}
4825
4826	output = &GetPublicAccessBlockOutput{}
4827	req = c.newRequest(op, input, output)
4828	return
4829}
4830
4831// GetPublicAccessBlock API operation for Amazon Simple Storage Service.
4832//
4833// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. To
4834// use this operation, you must have the s3:GetBucketPublicAccessBlock permission.
4835// For more information about Amazon S3 permissions, see Specifying Permissions
4836// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
4837//
4838// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
4839// or an object, it checks the PublicAccessBlock configuration for both the
4840// bucket (or the bucket that contains the object) and the bucket owner's account.
4841// If the PublicAccessBlock settings are different between the bucket and the
4842// account, Amazon S3 uses the most restrictive combination of the bucket-level
4843// and account-level settings.
4844//
4845// For more information about when Amazon S3 considers a bucket or an object
4846// 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).
4847//
4848// The following operations are related to GetPublicAccessBlock:
4849//
4850//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
4851//
4852//    * PutPublicAccessBlock
4853//
4854//    * GetPublicAccessBlock
4855//
4856//    * DeletePublicAccessBlock
4857//
4858// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4859// with awserr.Error's Code and Message methods to get detailed information about
4860// the error.
4861//
4862// See the AWS API reference guide for Amazon Simple Storage Service's
4863// API operation GetPublicAccessBlock for usage and error information.
4864// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
4865func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) {
4866	req, out := c.GetPublicAccessBlockRequest(input)
4867	return out, req.Send()
4868}
4869
4870// GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of
4871// the ability to pass a context and additional request options.
4872//
4873// See GetPublicAccessBlock for details on how to use this API operation.
4874//
4875// The context must be non-nil and will be used for request cancellation. If
4876// the context is nil a panic will occur. In the future the SDK may create
4877// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4878// for more information on using Contexts.
4879func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) {
4880	req, out := c.GetPublicAccessBlockRequest(input)
4881	req.SetContext(ctx)
4882	req.ApplyOptions(opts...)
4883	return out, req.Send()
4884}
4885
4886const opHeadBucket = "HeadBucket"
4887
4888// HeadBucketRequest generates a "aws/request.Request" representing the
4889// client's request for the HeadBucket operation. The "output" return
4890// value will be populated with the request's response once the request completes
4891// successfully.
4892//
4893// Use "Send" method on the returned Request to send the API call to the service.
4894// the "output" return value is not valid until after Send returns without error.
4895//
4896// See HeadBucket for more information on using the HeadBucket
4897// API call, and error handling.
4898//
4899// This method is useful when you want to inject custom logic or configuration
4900// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4901//
4902//
4903//    // Example sending a request using the HeadBucketRequest method.
4904//    req, resp := client.HeadBucketRequest(params)
4905//
4906//    err := req.Send()
4907//    if err == nil { // resp is now filled
4908//        fmt.Println(resp)
4909//    }
4910//
4911// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
4912func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
4913	op := &request.Operation{
4914		Name:       opHeadBucket,
4915		HTTPMethod: "HEAD",
4916		HTTPPath:   "/{Bucket}",
4917	}
4918
4919	if input == nil {
4920		input = &HeadBucketInput{}
4921	}
4922
4923	output = &HeadBucketOutput{}
4924	req = c.newRequest(op, input, output)
4925	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
4926	return
4927}
4928
4929// HeadBucket API operation for Amazon Simple Storage Service.
4930//
4931// This operation is useful to determine if a bucket exists and you have permission
4932// to access it. The operation returns a 200 OK if the bucket exists and you
4933// have permission to access it. Otherwise, the operation might return responses
4934// such as 404 Not Found and 403 Forbidden.
4935//
4936// To use this operation, you must have permissions to perform the s3:ListBucket
4937// action. The bucket owner has this permission by default and can grant this
4938// permission to others. For more information about permissions, see Permissions
4939// 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)
4940// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
4941//
4942// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4943// with awserr.Error's Code and Message methods to get detailed information about
4944// the error.
4945//
4946// See the AWS API reference guide for Amazon Simple Storage Service's
4947// API operation HeadBucket for usage and error information.
4948//
4949// Returned Error Codes:
4950//   * ErrCodeNoSuchBucket "NoSuchBucket"
4951//   The specified bucket does not exist.
4952//
4953// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
4954func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
4955	req, out := c.HeadBucketRequest(input)
4956	return out, req.Send()
4957}
4958
4959// HeadBucketWithContext is the same as HeadBucket with the addition of
4960// the ability to pass a context and additional request options.
4961//
4962// See HeadBucket for details on how to use this API operation.
4963//
4964// The context must be non-nil and will be used for request cancellation. If
4965// the context is nil a panic will occur. In the future the SDK may create
4966// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4967// for more information on using Contexts.
4968func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
4969	req, out := c.HeadBucketRequest(input)
4970	req.SetContext(ctx)
4971	req.ApplyOptions(opts...)
4972	return out, req.Send()
4973}
4974
4975const opHeadObject = "HeadObject"
4976
4977// HeadObjectRequest generates a "aws/request.Request" representing the
4978// client's request for the HeadObject operation. The "output" return
4979// value will be populated with the request's response once the request completes
4980// successfully.
4981//
4982// Use "Send" method on the returned Request to send the API call to the service.
4983// the "output" return value is not valid until after Send returns without error.
4984//
4985// See HeadObject for more information on using the HeadObject
4986// API call, and error handling.
4987//
4988// This method is useful when you want to inject custom logic or configuration
4989// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4990//
4991//
4992//    // Example sending a request using the HeadObjectRequest method.
4993//    req, resp := client.HeadObjectRequest(params)
4994//
4995//    err := req.Send()
4996//    if err == nil { // resp is now filled
4997//        fmt.Println(resp)
4998//    }
4999//
5000// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5001func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
5002	op := &request.Operation{
5003		Name:       opHeadObject,
5004		HTTPMethod: "HEAD",
5005		HTTPPath:   "/{Bucket}/{Key+}",
5006	}
5007
5008	if input == nil {
5009		input = &HeadObjectInput{}
5010	}
5011
5012	output = &HeadObjectOutput{}
5013	req = c.newRequest(op, input, output)
5014	return
5015}
5016
5017// HeadObject API operation for Amazon Simple Storage Service.
5018//
5019// The HEAD operation retrieves metadata from an object without returning the
5020// object itself. This operation is useful if you're only interested in an object's
5021// metadata. To use HEAD, you must have READ access to the object.
5022//
5023// A HEAD request has the same options as a GET operation on an object. The
5024// response is identical to the GET response except that there is no response
5025// body.
5026//
5027// If you encrypt an object by using server-side encryption with customer-provided
5028// encryption keys (SSE-C) when you store the object in Amazon S3, then when
5029// you retrieve the metadata from the object, you must use the following headers:
5030//
5031//    * x-amz-server-side​-encryption​-customer-algorithm
5032//
5033//    * x-amz-server-side​-encryption​-customer-key
5034//
5035//    * x-amz-server-side​-encryption​-customer-key-MD5
5036//
5037// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
5038// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
5039//
5040// Encryption request headers, like x-amz-server-side-encryption, should not
5041// be sent for GET requests if your object uses server-side encryption with
5042// CMKs stored in AWS KMS (SSE-KMS) or server-side encryption with Amazon S3–managed
5043// encryption keys (SSE-S3). If your object does use these types of keys, you’ll
5044// get an HTTP 400 BadRequest error.
5045//
5046// Request headers are limited to 8 KB in size. For more information, see Common
5047// Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html).
5048//
5049// Consider the following when using request headers:
5050//
5051//    * Consideration 1 – If both of the If-Match and If-Unmodified-Since
5052//    headers are present in the request as follows: If-Match condition evaluates
5053//    to true, and; If-Unmodified-Since condition evaluates to false; Then Amazon
5054//    S3 returns 200 OK and the data requested.
5055//
5056//    * Consideration 2 – If both of the If-None-Match and If-Modified-Since
5057//    headers are present in the request as follows: If-None-Match condition
5058//    evaluates to false, and; If-Modified-Since condition evaluates to true;
5059//    Then Amazon S3 returns the 304 Not Modified response code.
5060//
5061// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
5062//
5063// Permissions
5064//
5065// You need the s3:GetObject permission for this operation. For more information,
5066// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
5067// If the object you request does not exist, the error Amazon S3 returns depends
5068// on whether you also have the s3:ListBucket permission.
5069//
5070//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 returns
5071//    an HTTP status code 404 ("no such key") error.
5072//
5073//    * If you don’t have the s3:ListBucket permission, Amazon S3 returns
5074//    an HTTP status code 403 ("access denied") error.
5075//
5076// The following operation is related to HeadObject:
5077//
5078//    * GetObject
5079//
5080// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
5081// for more information on returned errors.
5082//
5083// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5084// with awserr.Error's Code and Message methods to get detailed information about
5085// the error.
5086//
5087// See the AWS API reference guide for Amazon Simple Storage Service's
5088// API operation HeadObject for usage and error information.
5089// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5090func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
5091	req, out := c.HeadObjectRequest(input)
5092	return out, req.Send()
5093}
5094
5095// HeadObjectWithContext is the same as HeadObject with the addition of
5096// the ability to pass a context and additional request options.
5097//
5098// See HeadObject for details on how to use this API operation.
5099//
5100// The context must be non-nil and will be used for request cancellation. If
5101// the context is nil a panic will occur. In the future the SDK may create
5102// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5103// for more information on using Contexts.
5104func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
5105	req, out := c.HeadObjectRequest(input)
5106	req.SetContext(ctx)
5107	req.ApplyOptions(opts...)
5108	return out, req.Send()
5109}
5110
5111const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
5112
5113// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
5114// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
5115// value will be populated with the request's response once the request completes
5116// successfully.
5117//
5118// Use "Send" method on the returned Request to send the API call to the service.
5119// the "output" return value is not valid until after Send returns without error.
5120//
5121// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
5122// API call, and error handling.
5123//
5124// This method is useful when you want to inject custom logic or configuration
5125// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5126//
5127//
5128//    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
5129//    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
5130//
5131//    err := req.Send()
5132//    if err == nil { // resp is now filled
5133//        fmt.Println(resp)
5134//    }
5135//
5136// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5137func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
5138	op := &request.Operation{
5139		Name:       opListBucketAnalyticsConfigurations,
5140		HTTPMethod: "GET",
5141		HTTPPath:   "/{Bucket}?analytics",
5142	}
5143
5144	if input == nil {
5145		input = &ListBucketAnalyticsConfigurationsInput{}
5146	}
5147
5148	output = &ListBucketAnalyticsConfigurationsOutput{}
5149	req = c.newRequest(op, input, output)
5150	return
5151}
5152
5153// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
5154//
5155// Lists the analytics configurations for the bucket. You can have up to 1,000
5156// analytics configurations per bucket.
5157//
5158// This operation supports list pagination and does not return more than 100
5159// configurations at a time. You should always check the IsTruncated element
5160// in the response. If there are no more configurations to list, IsTruncated
5161// is set to false. If there are more configurations to list, IsTruncated is
5162// set to true, and there will be a value in NextContinuationToken. You use
5163// the NextContinuationToken value to continue the pagination of the list by
5164// passing the value in continuation-token in the request to GET the next page.
5165//
5166// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
5167// action. The bucket owner has this permission by default. The bucket owner
5168// can grant this permission to others. For more information about permissions,
5169// 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)
5170// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
5171//
5172// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
5173// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
5174//
5175// The following operations are related to ListBucketAnalyticsConfigurations:
5176//
5177//    * GetBucketAnalyticsConfiguration
5178//
5179//    * DeleteBucketAnalyticsConfiguration
5180//
5181//    * PutBucketAnalyticsConfiguration
5182//
5183// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5184// with awserr.Error's Code and Message methods to get detailed information about
5185// the error.
5186//
5187// See the AWS API reference guide for Amazon Simple Storage Service's
5188// API operation ListBucketAnalyticsConfigurations for usage and error information.
5189// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5190func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
5191	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5192	return out, req.Send()
5193}
5194
5195// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
5196// the ability to pass a context and additional request options.
5197//
5198// See ListBucketAnalyticsConfigurations for details on how to use this API operation.
5199//
5200// The context must be non-nil and will be used for request cancellation. If
5201// the context is nil a panic will occur. In the future the SDK may create
5202// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5203// for more information on using Contexts.
5204func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
5205	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5206	req.SetContext(ctx)
5207	req.ApplyOptions(opts...)
5208	return out, req.Send()
5209}
5210
5211const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
5212
5213// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
5214// client's request for the ListBucketInventoryConfigurations operation. The "output" return
5215// value will be populated with the request's response once the request completes
5216// successfully.
5217//
5218// Use "Send" method on the returned Request to send the API call to the service.
5219// the "output" return value is not valid until after Send returns without error.
5220//
5221// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
5222// API call, and error handling.
5223//
5224// This method is useful when you want to inject custom logic or configuration
5225// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5226//
5227//
5228//    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
5229//    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
5230//
5231//    err := req.Send()
5232//    if err == nil { // resp is now filled
5233//        fmt.Println(resp)
5234//    }
5235//
5236// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5237func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
5238	op := &request.Operation{
5239		Name:       opListBucketInventoryConfigurations,
5240		HTTPMethod: "GET",
5241		HTTPPath:   "/{Bucket}?inventory",
5242	}
5243
5244	if input == nil {
5245		input = &ListBucketInventoryConfigurationsInput{}
5246	}
5247
5248	output = &ListBucketInventoryConfigurationsOutput{}
5249	req = c.newRequest(op, input, output)
5250	return
5251}
5252
5253// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
5254//
5255// Returns a list of inventory configurations for the bucket. You can have up
5256// to 1,000 analytics configurations per bucket.
5257//
5258// This operation supports list pagination and does not return more than 100
5259// configurations at a time. Always check the IsTruncated element in the response.
5260// If there are no more configurations to list, IsTruncated is set to false.
5261// If there are more configurations to list, IsTruncated is set to true, and
5262// there is a value in NextContinuationToken. You use the NextContinuationToken
5263// value to continue the pagination of the list by passing the value in continuation-token
5264// in the request to GET the next page.
5265//
5266// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
5267// action. The bucket owner has this permission by default. The bucket owner
5268// can grant this permission to others. For more information about permissions,
5269// 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)
5270// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
5271//
5272// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
5273// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
5274//
5275// The following operations are related to ListBucketInventoryConfigurations:
5276//
5277//    * GetBucketInventoryConfiguration
5278//
5279//    * DeleteBucketInventoryConfiguration
5280//
5281//    * PutBucketInventoryConfiguration
5282//
5283// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5284// with awserr.Error's Code and Message methods to get detailed information about
5285// the error.
5286//
5287// See the AWS API reference guide for Amazon Simple Storage Service's
5288// API operation ListBucketInventoryConfigurations for usage and error information.
5289// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5290func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
5291	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5292	return out, req.Send()
5293}
5294
5295// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
5296// the ability to pass a context and additional request options.
5297//
5298// See ListBucketInventoryConfigurations for details on how to use this API operation.
5299//
5300// The context must be non-nil and will be used for request cancellation. If
5301// the context is nil a panic will occur. In the future the SDK may create
5302// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5303// for more information on using Contexts.
5304func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
5305	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5306	req.SetContext(ctx)
5307	req.ApplyOptions(opts...)
5308	return out, req.Send()
5309}
5310
5311const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
5312
5313// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
5314// client's request for the ListBucketMetricsConfigurations operation. The "output" return
5315// value will be populated with the request's response once the request completes
5316// successfully.
5317//
5318// Use "Send" method on the returned Request to send the API call to the service.
5319// the "output" return value is not valid until after Send returns without error.
5320//
5321// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
5322// API call, and error handling.
5323//
5324// This method is useful when you want to inject custom logic or configuration
5325// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5326//
5327//
5328//    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
5329//    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
5330//
5331//    err := req.Send()
5332//    if err == nil { // resp is now filled
5333//        fmt.Println(resp)
5334//    }
5335//
5336// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5337func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
5338	op := &request.Operation{
5339		Name:       opListBucketMetricsConfigurations,
5340		HTTPMethod: "GET",
5341		HTTPPath:   "/{Bucket}?metrics",
5342	}
5343
5344	if input == nil {
5345		input = &ListBucketMetricsConfigurationsInput{}
5346	}
5347
5348	output = &ListBucketMetricsConfigurationsOutput{}
5349	req = c.newRequest(op, input, output)
5350	return
5351}
5352
5353// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
5354//
5355// Lists the metrics configurations for the bucket. The metrics configurations
5356// are only for the request metrics of the bucket and do not provide information
5357// on daily storage metrics. You can have up to 1,000 configurations per bucket.
5358//
5359// This operation supports list pagination and does not return more than 100
5360// configurations at a time. Always check the IsTruncated element in the response.
5361// If there are no more configurations to list, IsTruncated is set to false.
5362// If there are more configurations to list, IsTruncated is set to true, and
5363// there is a value in NextContinuationToken. You use the NextContinuationToken
5364// value to continue the pagination of the list by passing the value in continuation-token
5365// in the request to GET the next page.
5366//
5367// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
5368// action. The bucket owner has this permission by default. The bucket owner
5369// can grant this permission to others. For more information about permissions,
5370// 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)
5371// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
5372//
5373// For more information about metrics configurations and CloudWatch request
5374// metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
5375//
5376// The following operations are related to ListBucketMetricsConfigurations:
5377//
5378//    * PutBucketMetricsConfiguration
5379//
5380//    * GetBucketMetricsConfiguration
5381//
5382//    * DeleteBucketMetricsConfiguration
5383//
5384// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5385// with awserr.Error's Code and Message methods to get detailed information about
5386// the error.
5387//
5388// See the AWS API reference guide for Amazon Simple Storage Service's
5389// API operation ListBucketMetricsConfigurations for usage and error information.
5390// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5391func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
5392	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5393	return out, req.Send()
5394}
5395
5396// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
5397// the ability to pass a context and additional request options.
5398//
5399// See ListBucketMetricsConfigurations for details on how to use this API operation.
5400//
5401// The context must be non-nil and will be used for request cancellation. If
5402// the context is nil a panic will occur. In the future the SDK may create
5403// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5404// for more information on using Contexts.
5405func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
5406	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5407	req.SetContext(ctx)
5408	req.ApplyOptions(opts...)
5409	return out, req.Send()
5410}
5411
5412const opListBuckets = "ListBuckets"
5413
5414// ListBucketsRequest generates a "aws/request.Request" representing the
5415// client's request for the ListBuckets operation. The "output" return
5416// value will be populated with the request's response once the request completes
5417// successfully.
5418//
5419// Use "Send" method on the returned Request to send the API call to the service.
5420// the "output" return value is not valid until after Send returns without error.
5421//
5422// See ListBuckets for more information on using the ListBuckets
5423// API call, and error handling.
5424//
5425// This method is useful when you want to inject custom logic or configuration
5426// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5427//
5428//
5429//    // Example sending a request using the ListBucketsRequest method.
5430//    req, resp := client.ListBucketsRequest(params)
5431//
5432//    err := req.Send()
5433//    if err == nil { // resp is now filled
5434//        fmt.Println(resp)
5435//    }
5436//
5437// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5438func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
5439	op := &request.Operation{
5440		Name:       opListBuckets,
5441		HTTPMethod: "GET",
5442		HTTPPath:   "/",
5443	}
5444
5445	if input == nil {
5446		input = &ListBucketsInput{}
5447	}
5448
5449	output = &ListBucketsOutput{}
5450	req = c.newRequest(op, input, output)
5451	return
5452}
5453
5454// ListBuckets API operation for Amazon Simple Storage Service.
5455//
5456// Returns a list of all buckets owned by the authenticated sender of the request.
5457//
5458// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5459// with awserr.Error's Code and Message methods to get detailed information about
5460// the error.
5461//
5462// See the AWS API reference guide for Amazon Simple Storage Service's
5463// API operation ListBuckets for usage and error information.
5464// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5465func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
5466	req, out := c.ListBucketsRequest(input)
5467	return out, req.Send()
5468}
5469
5470// ListBucketsWithContext is the same as ListBuckets with the addition of
5471// the ability to pass a context and additional request options.
5472//
5473// See ListBuckets for details on how to use this API operation.
5474//
5475// The context must be non-nil and will be used for request cancellation. If
5476// the context is nil a panic will occur. In the future the SDK may create
5477// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5478// for more information on using Contexts.
5479func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
5480	req, out := c.ListBucketsRequest(input)
5481	req.SetContext(ctx)
5482	req.ApplyOptions(opts...)
5483	return out, req.Send()
5484}
5485
5486const opListMultipartUploads = "ListMultipartUploads"
5487
5488// ListMultipartUploadsRequest generates a "aws/request.Request" representing the
5489// client's request for the ListMultipartUploads operation. The "output" return
5490// value will be populated with the request's response once the request completes
5491// successfully.
5492//
5493// Use "Send" method on the returned Request to send the API call to the service.
5494// the "output" return value is not valid until after Send returns without error.
5495//
5496// See ListMultipartUploads for more information on using the ListMultipartUploads
5497// API call, and error handling.
5498//
5499// This method is useful when you want to inject custom logic or configuration
5500// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5501//
5502//
5503//    // Example sending a request using the ListMultipartUploadsRequest method.
5504//    req, resp := client.ListMultipartUploadsRequest(params)
5505//
5506//    err := req.Send()
5507//    if err == nil { // resp is now filled
5508//        fmt.Println(resp)
5509//    }
5510//
5511// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
5512func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
5513	op := &request.Operation{
5514		Name:       opListMultipartUploads,
5515		HTTPMethod: "GET",
5516		HTTPPath:   "/{Bucket}?uploads",
5517		Paginator: &request.Paginator{
5518			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
5519			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
5520			LimitToken:      "MaxUploads",
5521			TruncationToken: "IsTruncated",
5522		},
5523	}
5524
5525	if input == nil {
5526		input = &ListMultipartUploadsInput{}
5527	}
5528
5529	output = &ListMultipartUploadsOutput{}
5530	req = c.newRequest(op, input, output)
5531	return
5532}
5533
5534// ListMultipartUploads API operation for Amazon Simple Storage Service.
5535//
5536// This operation lists in-progress multipart uploads. An in-progress multipart
5537// upload is a multipart upload that has been initiated using the Initiate Multipart
5538// Upload request, but has not yet been completed or aborted.
5539//
5540// This operation returns at most 1,000 multipart uploads in the response. 1,000
5541// multipart uploads is the maximum number of uploads a response can include,
5542// which is also the default value. You can further limit the number of uploads
5543// in a response by specifying the max-uploads parameter in the response. If
5544// additional multipart uploads satisfy the list criteria, the response will
5545// contain an IsTruncated element with the value true. To list the additional
5546// multipart uploads, use the key-marker and upload-id-marker request parameters.
5547//
5548// In the response, the uploads are sorted by key. If your application has initiated
5549// more than one multipart upload using the same object key, then uploads in
5550// the response are first sorted by key. Additionally, uploads are sorted in
5551// ascending order within each key by the upload initiation time.
5552//
5553// For more information on multipart uploads, see Uploading Objects Using Multipart
5554// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
5555//
5556// For information on permissions required to use the multipart upload API,
5557// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
5558//
5559// The following operations are related to ListMultipartUploads:
5560//
5561//    * CreateMultipartUpload
5562//
5563//    * UploadPart
5564//
5565//    * CompleteMultipartUpload
5566//
5567//    * ListParts
5568//
5569//    * AbortMultipartUpload
5570//
5571// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5572// with awserr.Error's Code and Message methods to get detailed information about
5573// the error.
5574//
5575// See the AWS API reference guide for Amazon Simple Storage Service's
5576// API operation ListMultipartUploads for usage and error information.
5577// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
5578func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
5579	req, out := c.ListMultipartUploadsRequest(input)
5580	return out, req.Send()
5581}
5582
5583// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
5584// the ability to pass a context and additional request options.
5585//
5586// See ListMultipartUploads for details on how to use this API operation.
5587//
5588// The context must be non-nil and will be used for request cancellation. If
5589// the context is nil a panic will occur. In the future the SDK may create
5590// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5591// for more information on using Contexts.
5592func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
5593	req, out := c.ListMultipartUploadsRequest(input)
5594	req.SetContext(ctx)
5595	req.ApplyOptions(opts...)
5596	return out, req.Send()
5597}
5598
5599// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
5600// calling the "fn" function with the response data for each page. To stop
5601// iterating, return false from the fn function.
5602//
5603// See ListMultipartUploads method for more information on how to use this operation.
5604//
5605// Note: This operation can generate multiple requests to a service.
5606//
5607//    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
5608//    pageNum := 0
5609//    err := client.ListMultipartUploadsPages(params,
5610//        func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
5611//            pageNum++
5612//            fmt.Println(page)
5613//            return pageNum <= 3
5614//        })
5615//
5616func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
5617	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
5618}
5619
5620// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
5621// it takes a Context and allows setting request options on the pages.
5622//
5623// The context must be non-nil and will be used for request cancellation. If
5624// the context is nil a panic will occur. In the future the SDK may create
5625// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5626// for more information on using Contexts.
5627func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
5628	p := request.Pagination{
5629		NewRequest: func() (*request.Request, error) {
5630			var inCpy *ListMultipartUploadsInput
5631			if input != nil {
5632				tmp := *input
5633				inCpy = &tmp
5634			}
5635			req, _ := c.ListMultipartUploadsRequest(inCpy)
5636			req.SetContext(ctx)
5637			req.ApplyOptions(opts...)
5638			return req, nil
5639		},
5640	}
5641
5642	for p.Next() {
5643		if !fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage()) {
5644			break
5645		}
5646	}
5647
5648	return p.Err()
5649}
5650
5651const opListObjectVersions = "ListObjectVersions"
5652
5653// ListObjectVersionsRequest generates a "aws/request.Request" representing the
5654// client's request for the ListObjectVersions operation. The "output" return
5655// value will be populated with the request's response once the request completes
5656// successfully.
5657//
5658// Use "Send" method on the returned Request to send the API call to the service.
5659// the "output" return value is not valid until after Send returns without error.
5660//
5661// See ListObjectVersions for more information on using the ListObjectVersions
5662// API call, and error handling.
5663//
5664// This method is useful when you want to inject custom logic or configuration
5665// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5666//
5667//
5668//    // Example sending a request using the ListObjectVersionsRequest method.
5669//    req, resp := client.ListObjectVersionsRequest(params)
5670//
5671//    err := req.Send()
5672//    if err == nil { // resp is now filled
5673//        fmt.Println(resp)
5674//    }
5675//
5676// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
5677func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
5678	op := &request.Operation{
5679		Name:       opListObjectVersions,
5680		HTTPMethod: "GET",
5681		HTTPPath:   "/{Bucket}?versions",
5682		Paginator: &request.Paginator{
5683			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
5684			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
5685			LimitToken:      "MaxKeys",
5686			TruncationToken: "IsTruncated",
5687		},
5688	}
5689
5690	if input == nil {
5691		input = &ListObjectVersionsInput{}
5692	}
5693
5694	output = &ListObjectVersionsOutput{}
5695	req = c.newRequest(op, input, output)
5696	return
5697}
5698
5699// ListObjectVersions API operation for Amazon Simple Storage Service.
5700//
5701// Returns metadata about all of the versions of objects in a bucket. You can
5702// also use request parameters as selection criteria to return metadata about
5703// a subset of all the object versions.
5704//
5705// A 200 OK response can contain valid or invalid XML. Make sure to design your
5706// application to parse the contents of the response and handle it appropriately.
5707//
5708// To use this operation, you must have READ access to the bucket.
5709//
5710// The following operations are related to ListObjectVersions:
5711//
5712//    * ListObjectsV2
5713//
5714//    * GetObject
5715//
5716//    * PutObject
5717//
5718//    * DeleteObject
5719//
5720// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5721// with awserr.Error's Code and Message methods to get detailed information about
5722// the error.
5723//
5724// See the AWS API reference guide for Amazon Simple Storage Service's
5725// API operation ListObjectVersions for usage and error information.
5726// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
5727func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
5728	req, out := c.ListObjectVersionsRequest(input)
5729	return out, req.Send()
5730}
5731
5732// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
5733// the ability to pass a context and additional request options.
5734//
5735// See ListObjectVersions for details on how to use this API operation.
5736//
5737// The context must be non-nil and will be used for request cancellation. If
5738// the context is nil a panic will occur. In the future the SDK may create
5739// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5740// for more information on using Contexts.
5741func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
5742	req, out := c.ListObjectVersionsRequest(input)
5743	req.SetContext(ctx)
5744	req.ApplyOptions(opts...)
5745	return out, req.Send()
5746}
5747
5748// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
5749// calling the "fn" function with the response data for each page. To stop
5750// iterating, return false from the fn function.
5751//
5752// See ListObjectVersions method for more information on how to use this operation.
5753//
5754// Note: This operation can generate multiple requests to a service.
5755//
5756//    // Example iterating over at most 3 pages of a ListObjectVersions operation.
5757//    pageNum := 0
5758//    err := client.ListObjectVersionsPages(params,
5759//        func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
5760//            pageNum++
5761//            fmt.Println(page)
5762//            return pageNum <= 3
5763//        })
5764//
5765func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
5766	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
5767}
5768
5769// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
5770// it takes a Context and allows setting request options on the pages.
5771//
5772// The context must be non-nil and will be used for request cancellation. If
5773// the context is nil a panic will occur. In the future the SDK may create
5774// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5775// for more information on using Contexts.
5776func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
5777	p := request.Pagination{
5778		NewRequest: func() (*request.Request, error) {
5779			var inCpy *ListObjectVersionsInput
5780			if input != nil {
5781				tmp := *input
5782				inCpy = &tmp
5783			}
5784			req, _ := c.ListObjectVersionsRequest(inCpy)
5785			req.SetContext(ctx)
5786			req.ApplyOptions(opts...)
5787			return req, nil
5788		},
5789	}
5790
5791	for p.Next() {
5792		if !fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage()) {
5793			break
5794		}
5795	}
5796
5797	return p.Err()
5798}
5799
5800const opListObjects = "ListObjects"
5801
5802// ListObjectsRequest generates a "aws/request.Request" representing the
5803// client's request for the ListObjects operation. The "output" return
5804// value will be populated with the request's response once the request completes
5805// successfully.
5806//
5807// Use "Send" method on the returned Request to send the API call to the service.
5808// the "output" return value is not valid until after Send returns without error.
5809//
5810// See ListObjects for more information on using the ListObjects
5811// API call, and error handling.
5812//
5813// This method is useful when you want to inject custom logic or configuration
5814// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5815//
5816//
5817//    // Example sending a request using the ListObjectsRequest method.
5818//    req, resp := client.ListObjectsRequest(params)
5819//
5820//    err := req.Send()
5821//    if err == nil { // resp is now filled
5822//        fmt.Println(resp)
5823//    }
5824//
5825// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
5826func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
5827	op := &request.Operation{
5828		Name:       opListObjects,
5829		HTTPMethod: "GET",
5830		HTTPPath:   "/{Bucket}",
5831		Paginator: &request.Paginator{
5832			InputTokens:     []string{"Marker"},
5833			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
5834			LimitToken:      "MaxKeys",
5835			TruncationToken: "IsTruncated",
5836		},
5837	}
5838
5839	if input == nil {
5840		input = &ListObjectsInput{}
5841	}
5842
5843	output = &ListObjectsOutput{}
5844	req = c.newRequest(op, input, output)
5845	return
5846}
5847
5848// ListObjects API operation for Amazon Simple Storage Service.
5849//
5850// Returns some or all (up to 1,000) of the objects in a bucket. You can use
5851// the request parameters as selection criteria to return a subset of the objects
5852// in a bucket. A 200 OK response can contain valid or invalid XML. Be sure
5853// to design your application to parse the contents of the response and handle
5854// it appropriately.
5855//
5856// This API has been revised. We recommend that you use the newer version, ListObjectsV2,
5857// when developing applications. For backward compatibility, Amazon S3 continues
5858// to support ListObjects.
5859//
5860// The following operations are related to ListObjects:
5861//
5862//    * ListObjectsV2
5863//
5864//    * GetObject
5865//
5866//    * PutObject
5867//
5868//    * CreateBucket
5869//
5870//    * ListBuckets
5871//
5872// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5873// with awserr.Error's Code and Message methods to get detailed information about
5874// the error.
5875//
5876// See the AWS API reference guide for Amazon Simple Storage Service's
5877// API operation ListObjects for usage and error information.
5878//
5879// Returned Error Codes:
5880//   * ErrCodeNoSuchBucket "NoSuchBucket"
5881//   The specified bucket does not exist.
5882//
5883// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
5884func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
5885	req, out := c.ListObjectsRequest(input)
5886	return out, req.Send()
5887}
5888
5889// ListObjectsWithContext is the same as ListObjects with the addition of
5890// the ability to pass a context and additional request options.
5891//
5892// See ListObjects for details on how to use this API operation.
5893//
5894// The context must be non-nil and will be used for request cancellation. If
5895// the context is nil a panic will occur. In the future the SDK may create
5896// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5897// for more information on using Contexts.
5898func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
5899	req, out := c.ListObjectsRequest(input)
5900	req.SetContext(ctx)
5901	req.ApplyOptions(opts...)
5902	return out, req.Send()
5903}
5904
5905// ListObjectsPages iterates over the pages of a ListObjects operation,
5906// calling the "fn" function with the response data for each page. To stop
5907// iterating, return false from the fn function.
5908//
5909// See ListObjects method for more information on how to use this operation.
5910//
5911// Note: This operation can generate multiple requests to a service.
5912//
5913//    // Example iterating over at most 3 pages of a ListObjects operation.
5914//    pageNum := 0
5915//    err := client.ListObjectsPages(params,
5916//        func(page *s3.ListObjectsOutput, lastPage bool) bool {
5917//            pageNum++
5918//            fmt.Println(page)
5919//            return pageNum <= 3
5920//        })
5921//
5922func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
5923	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
5924}
5925
5926// ListObjectsPagesWithContext same as ListObjectsPages except
5927// it takes a Context and allows setting request options on the pages.
5928//
5929// The context must be non-nil and will be used for request cancellation. If
5930// the context is nil a panic will occur. In the future the SDK may create
5931// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5932// for more information on using Contexts.
5933func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
5934	p := request.Pagination{
5935		NewRequest: func() (*request.Request, error) {
5936			var inCpy *ListObjectsInput
5937			if input != nil {
5938				tmp := *input
5939				inCpy = &tmp
5940			}
5941			req, _ := c.ListObjectsRequest(inCpy)
5942			req.SetContext(ctx)
5943			req.ApplyOptions(opts...)
5944			return req, nil
5945		},
5946	}
5947
5948	for p.Next() {
5949		if !fn(p.Page().(*ListObjectsOutput), !p.HasNextPage()) {
5950			break
5951		}
5952	}
5953
5954	return p.Err()
5955}
5956
5957const opListObjectsV2 = "ListObjectsV2"
5958
5959// ListObjectsV2Request generates a "aws/request.Request" representing the
5960// client's request for the ListObjectsV2 operation. The "output" return
5961// value will be populated with the request's response once the request completes
5962// successfully.
5963//
5964// Use "Send" method on the returned Request to send the API call to the service.
5965// the "output" return value is not valid until after Send returns without error.
5966//
5967// See ListObjectsV2 for more information on using the ListObjectsV2
5968// API call, and error handling.
5969//
5970// This method is useful when you want to inject custom logic or configuration
5971// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5972//
5973//
5974//    // Example sending a request using the ListObjectsV2Request method.
5975//    req, resp := client.ListObjectsV2Request(params)
5976//
5977//    err := req.Send()
5978//    if err == nil { // resp is now filled
5979//        fmt.Println(resp)
5980//    }
5981//
5982// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
5983func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
5984	op := &request.Operation{
5985		Name:       opListObjectsV2,
5986		HTTPMethod: "GET",
5987		HTTPPath:   "/{Bucket}?list-type=2",
5988		Paginator: &request.Paginator{
5989			InputTokens:     []string{"ContinuationToken"},
5990			OutputTokens:    []string{"NextContinuationToken"},
5991			LimitToken:      "MaxKeys",
5992			TruncationToken: "",
5993		},
5994	}
5995
5996	if input == nil {
5997		input = &ListObjectsV2Input{}
5998	}
5999
6000	output = &ListObjectsV2Output{}
6001	req = c.newRequest(op, input, output)
6002	return
6003}
6004
6005// ListObjectsV2 API operation for Amazon Simple Storage Service.
6006//
6007// Returns some or all (up to 1,000) of the objects in a bucket. You can use
6008// the request parameters as selection criteria to return a subset of the objects
6009// in a bucket. A 200 OK response can contain valid or invalid XML. Make sure
6010// to design your application to parse the contents of the response and handle
6011// it appropriately.
6012//
6013// To use this operation, you must have READ access to the bucket.
6014//
6015// To use this operation in an AWS Identity and Access Management (IAM) policy,
6016// you must have permissions to perform the s3:ListBucket action. The bucket
6017// owner has this permission by default and can grant this permission to others.
6018// For more information about permissions, see Permissions Related to Bucket
6019// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6020// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
6021//
6022// This section describes the latest revision of the API. We recommend that
6023// you use this revised API for application development. For backward compatibility,
6024// Amazon S3 continues to support the prior version of this API, ListObjects.
6025//
6026// To get a list of your buckets, see ListBuckets.
6027//
6028// The following operations are related to ListObjectsV2:
6029//
6030//    * GetObject
6031//
6032//    * PutObject
6033//
6034//    * CreateBucket
6035//
6036// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6037// with awserr.Error's Code and Message methods to get detailed information about
6038// the error.
6039//
6040// See the AWS API reference guide for Amazon Simple Storage Service's
6041// API operation ListObjectsV2 for usage and error information.
6042//
6043// Returned Error Codes:
6044//   * ErrCodeNoSuchBucket "NoSuchBucket"
6045//   The specified bucket does not exist.
6046//
6047// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
6048func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
6049	req, out := c.ListObjectsV2Request(input)
6050	return out, req.Send()
6051}
6052
6053// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
6054// the ability to pass a context and additional request options.
6055//
6056// See ListObjectsV2 for details on how to use this API operation.
6057//
6058// The context must be non-nil and will be used for request cancellation. If
6059// the context is nil a panic will occur. In the future the SDK may create
6060// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6061// for more information on using Contexts.
6062func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
6063	req, out := c.ListObjectsV2Request(input)
6064	req.SetContext(ctx)
6065	req.ApplyOptions(opts...)
6066	return out, req.Send()
6067}
6068
6069// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
6070// calling the "fn" function with the response data for each page. To stop
6071// iterating, return false from the fn function.
6072//
6073// See ListObjectsV2 method for more information on how to use this operation.
6074//
6075// Note: This operation can generate multiple requests to a service.
6076//
6077//    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
6078//    pageNum := 0
6079//    err := client.ListObjectsV2Pages(params,
6080//        func(page *s3.ListObjectsV2Output, lastPage bool) bool {
6081//            pageNum++
6082//            fmt.Println(page)
6083//            return pageNum <= 3
6084//        })
6085//
6086func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
6087	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
6088}
6089
6090// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
6091// it takes a Context and allows setting request options on the pages.
6092//
6093// The context must be non-nil and will be used for request cancellation. If
6094// the context is nil a panic will occur. In the future the SDK may create
6095// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6096// for more information on using Contexts.
6097func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
6098	p := request.Pagination{
6099		NewRequest: func() (*request.Request, error) {
6100			var inCpy *ListObjectsV2Input
6101			if input != nil {
6102				tmp := *input
6103				inCpy = &tmp
6104			}
6105			req, _ := c.ListObjectsV2Request(inCpy)
6106			req.SetContext(ctx)
6107			req.ApplyOptions(opts...)
6108			return req, nil
6109		},
6110	}
6111
6112	for p.Next() {
6113		if !fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage()) {
6114			break
6115		}
6116	}
6117
6118	return p.Err()
6119}
6120
6121const opListParts = "ListParts"
6122
6123// ListPartsRequest generates a "aws/request.Request" representing the
6124// client's request for the ListParts operation. The "output" return
6125// value will be populated with the request's response once the request completes
6126// successfully.
6127//
6128// Use "Send" method on the returned Request to send the API call to the service.
6129// the "output" return value is not valid until after Send returns without error.
6130//
6131// See ListParts for more information on using the ListParts
6132// API call, and error handling.
6133//
6134// This method is useful when you want to inject custom logic or configuration
6135// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6136//
6137//
6138//    // Example sending a request using the ListPartsRequest method.
6139//    req, resp := client.ListPartsRequest(params)
6140//
6141//    err := req.Send()
6142//    if err == nil { // resp is now filled
6143//        fmt.Println(resp)
6144//    }
6145//
6146// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6147func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
6148	op := &request.Operation{
6149		Name:       opListParts,
6150		HTTPMethod: "GET",
6151		HTTPPath:   "/{Bucket}/{Key+}",
6152		Paginator: &request.Paginator{
6153			InputTokens:     []string{"PartNumberMarker"},
6154			OutputTokens:    []string{"NextPartNumberMarker"},
6155			LimitToken:      "MaxParts",
6156			TruncationToken: "IsTruncated",
6157		},
6158	}
6159
6160	if input == nil {
6161		input = &ListPartsInput{}
6162	}
6163
6164	output = &ListPartsOutput{}
6165	req = c.newRequest(op, input, output)
6166	return
6167}
6168
6169// ListParts API operation for Amazon Simple Storage Service.
6170//
6171// Lists the parts that have been uploaded for a specific multipart upload.
6172// This operation must include the upload ID, which you obtain by sending the
6173// initiate multipart upload request (see CreateMultipartUpload). This request
6174// returns a maximum of 1,000 uploaded parts. The default number of parts returned
6175// is 1,000 parts. You can restrict the number of parts returned by specifying
6176// the max-parts request parameter. If your multipart upload consists of more
6177// than 1,000 parts, the response returns an IsTruncated field with the value
6178// of true, and a NextPartNumberMarker element. In subsequent ListParts requests
6179// you can include the part-number-marker query string parameter and set its
6180// value to the NextPartNumberMarker field value from the previous response.
6181//
6182// For more information on multipart uploads, see Uploading Objects Using Multipart
6183// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
6184//
6185// For information on permissions required to use the multipart upload API,
6186// see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
6187//
6188// The following operations are related to ListParts:
6189//
6190//    * CreateMultipartUpload
6191//
6192//    * UploadPart
6193//
6194//    * CompleteMultipartUpload
6195//
6196//    * AbortMultipartUpload
6197//
6198//    * ListMultipartUploads
6199//
6200// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6201// with awserr.Error's Code and Message methods to get detailed information about
6202// the error.
6203//
6204// See the AWS API reference guide for Amazon Simple Storage Service's
6205// API operation ListParts for usage and error information.
6206// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6207func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
6208	req, out := c.ListPartsRequest(input)
6209	return out, req.Send()
6210}
6211
6212// ListPartsWithContext is the same as ListParts with the addition of
6213// the ability to pass a context and additional request options.
6214//
6215// See ListParts for details on how to use this API operation.
6216//
6217// The context must be non-nil and will be used for request cancellation. If
6218// the context is nil a panic will occur. In the future the SDK may create
6219// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6220// for more information on using Contexts.
6221func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
6222	req, out := c.ListPartsRequest(input)
6223	req.SetContext(ctx)
6224	req.ApplyOptions(opts...)
6225	return out, req.Send()
6226}
6227
6228// ListPartsPages iterates over the pages of a ListParts operation,
6229// calling the "fn" function with the response data for each page. To stop
6230// iterating, return false from the fn function.
6231//
6232// See ListParts method for more information on how to use this operation.
6233//
6234// Note: This operation can generate multiple requests to a service.
6235//
6236//    // Example iterating over at most 3 pages of a ListParts operation.
6237//    pageNum := 0
6238//    err := client.ListPartsPages(params,
6239//        func(page *s3.ListPartsOutput, lastPage bool) bool {
6240//            pageNum++
6241//            fmt.Println(page)
6242//            return pageNum <= 3
6243//        })
6244//
6245func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
6246	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
6247}
6248
6249// ListPartsPagesWithContext same as ListPartsPages except
6250// it takes a Context and allows setting request options on the pages.
6251//
6252// The context must be non-nil and will be used for request cancellation. If
6253// the context is nil a panic will occur. In the future the SDK may create
6254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6255// for more information on using Contexts.
6256func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
6257	p := request.Pagination{
6258		NewRequest: func() (*request.Request, error) {
6259			var inCpy *ListPartsInput
6260			if input != nil {
6261				tmp := *input
6262				inCpy = &tmp
6263			}
6264			req, _ := c.ListPartsRequest(inCpy)
6265			req.SetContext(ctx)
6266			req.ApplyOptions(opts...)
6267			return req, nil
6268		},
6269	}
6270
6271	for p.Next() {
6272		if !fn(p.Page().(*ListPartsOutput), !p.HasNextPage()) {
6273			break
6274		}
6275	}
6276
6277	return p.Err()
6278}
6279
6280const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
6281
6282// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
6283// client's request for the PutBucketAccelerateConfiguration operation. The "output" return
6284// value will be populated with the request's response once the request completes
6285// successfully.
6286//
6287// Use "Send" method on the returned Request to send the API call to the service.
6288// the "output" return value is not valid until after Send returns without error.
6289//
6290// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
6291// API call, and error handling.
6292//
6293// This method is useful when you want to inject custom logic or configuration
6294// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6295//
6296//
6297//    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
6298//    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
6299//
6300//    err := req.Send()
6301//    if err == nil { // resp is now filled
6302//        fmt.Println(resp)
6303//    }
6304//
6305// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6306func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
6307	op := &request.Operation{
6308		Name:       opPutBucketAccelerateConfiguration,
6309		HTTPMethod: "PUT",
6310		HTTPPath:   "/{Bucket}?accelerate",
6311	}
6312
6313	if input == nil {
6314		input = &PutBucketAccelerateConfigurationInput{}
6315	}
6316
6317	output = &PutBucketAccelerateConfigurationOutput{}
6318	req = c.newRequest(op, input, output)
6319	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6320	return
6321}
6322
6323// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
6324//
6325// Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
6326// Acceleration is a bucket-level feature that enables you to perform faster
6327// data transfers to Amazon S3.
6328//
6329// To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration
6330// action. The bucket owner has this permission by default. The bucket owner
6331// can grant this permission to others. For more information about permissions,
6332// 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)
6333// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
6334//
6335// The Transfer Acceleration state of a bucket can be set to one of the following
6336// two values:
6337//
6338//    * Enabled – Enables accelerated data transfers to the bucket.
6339//
6340//    * Suspended – Disables accelerated data transfers to the bucket.
6341//
6342// The GetBucketAccelerateConfiguration operation returns the transfer acceleration
6343// state of a bucket.
6344//
6345// After setting the Transfer Acceleration state of a bucket to Enabled, it
6346// might take up to thirty minutes before the data transfer rates to the bucket
6347// increase.
6348//
6349// The name of the bucket used for Transfer Acceleration must be DNS-compliant
6350// and must not contain periods (".").
6351//
6352// For more information about transfer acceleration, see Transfer Acceleration
6353// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
6354//
6355// The following operations are related to PutBucketAccelerateConfiguration:
6356//
6357//    * GetBucketAccelerateConfiguration
6358//
6359//    * CreateBucket
6360//
6361// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6362// with awserr.Error's Code and Message methods to get detailed information about
6363// the error.
6364//
6365// See the AWS API reference guide for Amazon Simple Storage Service's
6366// API operation PutBucketAccelerateConfiguration for usage and error information.
6367// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6368func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
6369	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6370	return out, req.Send()
6371}
6372
6373// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
6374// the ability to pass a context and additional request options.
6375//
6376// See PutBucketAccelerateConfiguration for details on how to use this API operation.
6377//
6378// The context must be non-nil and will be used for request cancellation. If
6379// the context is nil a panic will occur. In the future the SDK may create
6380// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6381// for more information on using Contexts.
6382func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
6383	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6384	req.SetContext(ctx)
6385	req.ApplyOptions(opts...)
6386	return out, req.Send()
6387}
6388
6389const opPutBucketAcl = "PutBucketAcl"
6390
6391// PutBucketAclRequest generates a "aws/request.Request" representing the
6392// client's request for the PutBucketAcl operation. The "output" return
6393// value will be populated with the request's response once the request completes
6394// successfully.
6395//
6396// Use "Send" method on the returned Request to send the API call to the service.
6397// the "output" return value is not valid until after Send returns without error.
6398//
6399// See PutBucketAcl for more information on using the PutBucketAcl
6400// API call, and error handling.
6401//
6402// This method is useful when you want to inject custom logic or configuration
6403// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6404//
6405//
6406//    // Example sending a request using the PutBucketAclRequest method.
6407//    req, resp := client.PutBucketAclRequest(params)
6408//
6409//    err := req.Send()
6410//    if err == nil { // resp is now filled
6411//        fmt.Println(resp)
6412//    }
6413//
6414// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
6415func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
6416	op := &request.Operation{
6417		Name:       opPutBucketAcl,
6418		HTTPMethod: "PUT",
6419		HTTPPath:   "/{Bucket}?acl",
6420	}
6421
6422	if input == nil {
6423		input = &PutBucketAclInput{}
6424	}
6425
6426	output = &PutBucketAclOutput{}
6427	req = c.newRequest(op, input, output)
6428	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6429	return
6430}
6431
6432// PutBucketAcl API operation for Amazon Simple Storage Service.
6433//
6434// Sets the permissions on an existing bucket using access control lists (ACL).
6435// For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
6436// To set the ACL of a bucket, you must have WRITE_ACP permission.
6437//
6438// You can use one of the following two ways to set a bucket's permissions:
6439//
6440//    * Specify the ACL in the request body
6441//
6442//    * Specify permissions using request headers
6443//
6444// You cannot specify access permission using both the body and the request
6445// headers.
6446//
6447// Depending on your application needs, you may choose to set the ACL on a bucket
6448// using either the request body or the headers. For example, if you have an
6449// existing application that updates a bucket ACL using the request body, then
6450// you can continue to use that approach.
6451//
6452// Access Permissions
6453//
6454// You can set access permissions using one of the following methods:
6455//
6456//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
6457//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
6458//    predefined set of grantees and permissions. Specify the canned ACL name
6459//    as the value of x-amz-acl. If you use this header, you cannot use other
6460//    access control-specific headers in your request. For more information,
6461//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
6462//
6463//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
6464//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
6465//    these headers, you specify explicit access permissions and grantees (AWS
6466//    accounts or Amazon S3 groups) who will receive the permission. If you
6467//    use these ACL-specific headers, you cannot use the x-amz-acl header to
6468//    set a canned ACL. These parameters map to the set of permissions that
6469//    Amazon S3 supports in an ACL. For more information, see Access Control
6470//    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
6471//    You specify each grantee as a type=value pair, where the type is one of
6472//    the following: emailAddress – if the value specified is the email address
6473//    of an AWS account id – if the value specified is the canonical user
6474//    ID of an AWS account uri – if you are granting permissions to a predefined
6475//    group For example, the following x-amz-grant-write header grants create,
6476//    overwrite, and delete objects permission to LogDelivery group predefined
6477//    by Amazon S3 and two AWS accounts identified by their email addresses.
6478//    x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery",
6479//    emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
6480//
6481// You can use either a canned ACL or specify access permissions explicitly.
6482// You cannot do both.
6483//
6484// Grantee Values
6485//
6486// You can specify the person (grantee) to whom you're assigning access rights
6487// (using request elements) in the following ways:
6488//
6489//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6490//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
6491//    The grantee is resolved to the CanonicalUser and, in a response to a GET
6492//    Object acl request, appears as the CanonicalUser.
6493//
6494//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6495//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
6496//    </Grantee> DisplayName is optional and ignored in the request
6497//
6498//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
6499//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
6500//
6501// Related Resources
6502//
6503//    * CreateBucket
6504//
6505//    * DeleteBucket
6506//
6507//    * GetObjectAcl
6508//
6509// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6510// with awserr.Error's Code and Message methods to get detailed information about
6511// the error.
6512//
6513// See the AWS API reference guide for Amazon Simple Storage Service's
6514// API operation PutBucketAcl for usage and error information.
6515// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
6516func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
6517	req, out := c.PutBucketAclRequest(input)
6518	return out, req.Send()
6519}
6520
6521// PutBucketAclWithContext is the same as PutBucketAcl with the addition of
6522// the ability to pass a context and additional request options.
6523//
6524// See PutBucketAcl for details on how to use this API operation.
6525//
6526// The context must be non-nil and will be used for request cancellation. If
6527// the context is nil a panic will occur. In the future the SDK may create
6528// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6529// for more information on using Contexts.
6530func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
6531	req, out := c.PutBucketAclRequest(input)
6532	req.SetContext(ctx)
6533	req.ApplyOptions(opts...)
6534	return out, req.Send()
6535}
6536
6537const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
6538
6539// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
6540// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
6541// value will be populated with the request's response once the request completes
6542// successfully.
6543//
6544// Use "Send" method on the returned Request to send the API call to the service.
6545// the "output" return value is not valid until after Send returns without error.
6546//
6547// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
6548// API call, and error handling.
6549//
6550// This method is useful when you want to inject custom logic or configuration
6551// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6552//
6553//
6554//    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
6555//    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
6556//
6557//    err := req.Send()
6558//    if err == nil { // resp is now filled
6559//        fmt.Println(resp)
6560//    }
6561//
6562// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
6563func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
6564	op := &request.Operation{
6565		Name:       opPutBucketAnalyticsConfiguration,
6566		HTTPMethod: "PUT",
6567		HTTPPath:   "/{Bucket}?analytics",
6568	}
6569
6570	if input == nil {
6571		input = &PutBucketAnalyticsConfigurationInput{}
6572	}
6573
6574	output = &PutBucketAnalyticsConfigurationOutput{}
6575	req = c.newRequest(op, input, output)
6576	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6577	return
6578}
6579
6580// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
6581//
6582// Sets an analytics configuration for the bucket (specified by the analytics
6583// configuration ID). You can have up to 1,000 analytics configurations per
6584// bucket.
6585//
6586// You can choose to have storage class analysis export analysis reports sent
6587// to a comma-separated values (CSV) flat file. See the DataExport request element.
6588// Reports are updated daily and are based on the object filters that you configure.
6589// When selecting data export, you specify a destination bucket and an optional
6590// destination prefix where the file is written. You can export the data to
6591// a destination bucket in a different account. However, the destination bucket
6592// must be in the same Region as the bucket that you are making the PUT analytics
6593// configuration to. For more information, see Amazon S3 Analytics – Storage
6594// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
6595//
6596// You must create a bucket policy on the destination bucket where the exported
6597// file is written to grant permissions to Amazon S3 to write objects to the
6598// bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory
6599// and Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
6600//
6601// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
6602// action. The bucket owner has this permission by default. The bucket owner
6603// can grant this permission to others. For more information about permissions,
6604// 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)
6605// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
6606//
6607// Special Errors
6608//
6609//    * HTTP Error: HTTP 400 Bad Request Code: InvalidArgument Cause: Invalid
6610//    argument.
6611//
6612//    * HTTP Error: HTTP 400 Bad Request Code: TooManyConfigurations Cause:
6613//    You are attempting to create a new configuration but have already reached
6614//    the 1,000-configuration limit.
6615//
6616//    * HTTP Error: HTTP 403 Forbidden Code: AccessDenied Cause: You are not
6617//    the owner of the specified bucket, or you do not have the s3:PutAnalyticsConfiguration
6618//    bucket permission to set the configuration on the bucket.
6619//
6620// Related Resources
6621//
6622//    *
6623//
6624//    *
6625//
6626//    *
6627//
6628// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6629// with awserr.Error's Code and Message methods to get detailed information about
6630// the error.
6631//
6632// See the AWS API reference guide for Amazon Simple Storage Service's
6633// API operation PutBucketAnalyticsConfiguration for usage and error information.
6634// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
6635func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
6636	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
6637	return out, req.Send()
6638}
6639
6640// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
6641// the ability to pass a context and additional request options.
6642//
6643// See PutBucketAnalyticsConfiguration for details on how to use this API operation.
6644//
6645// The context must be non-nil and will be used for request cancellation. If
6646// the context is nil a panic will occur. In the future the SDK may create
6647// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6648// for more information on using Contexts.
6649func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
6650	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
6651	req.SetContext(ctx)
6652	req.ApplyOptions(opts...)
6653	return out, req.Send()
6654}
6655
6656const opPutBucketCors = "PutBucketCors"
6657
6658// PutBucketCorsRequest generates a "aws/request.Request" representing the
6659// client's request for the PutBucketCors operation. The "output" return
6660// value will be populated with the request's response once the request completes
6661// successfully.
6662//
6663// Use "Send" method on the returned Request to send the API call to the service.
6664// the "output" return value is not valid until after Send returns without error.
6665//
6666// See PutBucketCors for more information on using the PutBucketCors
6667// API call, and error handling.
6668//
6669// This method is useful when you want to inject custom logic or configuration
6670// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6671//
6672//
6673//    // Example sending a request using the PutBucketCorsRequest method.
6674//    req, resp := client.PutBucketCorsRequest(params)
6675//
6676//    err := req.Send()
6677//    if err == nil { // resp is now filled
6678//        fmt.Println(resp)
6679//    }
6680//
6681// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
6682func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
6683	op := &request.Operation{
6684		Name:       opPutBucketCors,
6685		HTTPMethod: "PUT",
6686		HTTPPath:   "/{Bucket}?cors",
6687	}
6688
6689	if input == nil {
6690		input = &PutBucketCorsInput{}
6691	}
6692
6693	output = &PutBucketCorsOutput{}
6694	req = c.newRequest(op, input, output)
6695	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6696	return
6697}
6698
6699// PutBucketCors API operation for Amazon Simple Storage Service.
6700//
6701// Sets the cors configuration for your bucket. If the configuration exists,
6702// Amazon S3 replaces it.
6703//
6704// To use this operation, you must be allowed to perform the s3:PutBucketCORS
6705// action. By default, the bucket owner has this permission and can grant it
6706// to others.
6707//
6708// You set this configuration on a bucket so that the bucket can service cross-origin
6709// requests. For example, you might want to enable a request whose origin is
6710// http://www.example.com to access your Amazon S3 bucket at my.example.bucket.com
6711// by using the browser's XMLHttpRequest capability.
6712//
6713// To enable cross-origin resource sharing (CORS) on a bucket, you add the cors
6714// subresource to the bucket. The cors subresource is an XML document in which
6715// you configure rules that identify origins and the HTTP methods that can be
6716// executed on your bucket. The document is limited to 64 KB in size.
6717//
6718// When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request)
6719// against a bucket, it evaluates the cors configuration on the bucket and uses
6720// the first CORSRule rule that matches the incoming browser request to enable
6721// a cross-origin request. For a rule to match, the following conditions must
6722// be met:
6723//
6724//    * The request's Origin header must match AllowedOrigin elements.
6725//
6726//    * The request method (for example, GET, PUT, HEAD, and so on) or the Access-Control-Request-Method
6727//    header in case of a pre-flight OPTIONS request must be one of the AllowedMethod
6728//    elements.
6729//
6730//    * Every header specified in the Access-Control-Request-Headers request
6731//    header of a pre-flight request must match an AllowedHeader element.
6732//
6733// For more information about CORS, go to Enabling Cross-Origin Resource Sharing
6734// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
6735// Simple Storage Service Developer Guide.
6736//
6737// Related Resources
6738//
6739//    * GetBucketCors
6740//
6741//    * DeleteBucketCors
6742//
6743//    * RESTOPTIONSobject
6744//
6745// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6746// with awserr.Error's Code and Message methods to get detailed information about
6747// the error.
6748//
6749// See the AWS API reference guide for Amazon Simple Storage Service's
6750// API operation PutBucketCors for usage and error information.
6751// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
6752func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
6753	req, out := c.PutBucketCorsRequest(input)
6754	return out, req.Send()
6755}
6756
6757// PutBucketCorsWithContext is the same as PutBucketCors with the addition of
6758// the ability to pass a context and additional request options.
6759//
6760// See PutBucketCors for details on how to use this API operation.
6761//
6762// The context must be non-nil and will be used for request cancellation. If
6763// the context is nil a panic will occur. In the future the SDK may create
6764// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6765// for more information on using Contexts.
6766func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
6767	req, out := c.PutBucketCorsRequest(input)
6768	req.SetContext(ctx)
6769	req.ApplyOptions(opts...)
6770	return out, req.Send()
6771}
6772
6773const opPutBucketEncryption = "PutBucketEncryption"
6774
6775// PutBucketEncryptionRequest generates a "aws/request.Request" representing the
6776// client's request for the PutBucketEncryption operation. The "output" return
6777// value will be populated with the request's response once the request completes
6778// successfully.
6779//
6780// Use "Send" method on the returned Request to send the API call to the service.
6781// the "output" return value is not valid until after Send returns without error.
6782//
6783// See PutBucketEncryption for more information on using the PutBucketEncryption
6784// API call, and error handling.
6785//
6786// This method is useful when you want to inject custom logic or configuration
6787// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6788//
6789//
6790//    // Example sending a request using the PutBucketEncryptionRequest method.
6791//    req, resp := client.PutBucketEncryptionRequest(params)
6792//
6793//    err := req.Send()
6794//    if err == nil { // resp is now filled
6795//        fmt.Println(resp)
6796//    }
6797//
6798// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
6799func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
6800	op := &request.Operation{
6801		Name:       opPutBucketEncryption,
6802		HTTPMethod: "PUT",
6803		HTTPPath:   "/{Bucket}?encryption",
6804	}
6805
6806	if input == nil {
6807		input = &PutBucketEncryptionInput{}
6808	}
6809
6810	output = &PutBucketEncryptionOutput{}
6811	req = c.newRequest(op, input, output)
6812	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6813	return
6814}
6815
6816// PutBucketEncryption API operation for Amazon Simple Storage Service.
6817//
6818// This implementation of the PUT operation uses the encryption subresource
6819// to set the default encryption state of an existing bucket.
6820//
6821// This implementation of the PUT operation sets default encryption for a buckets
6822// using server-side encryption with Amazon S3-managed keys SSE-S3 or AWS KMS
6823// customer master keys (CMKs) (SSE-KMS) bucket.
6824//
6825// This operation requires AWS Signature Version 4. For more information, see
6826// Authenticating Requests (AWS Signature Version 4) (sig-v4-authenticating-requests.html).
6827//
6828// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
6829// action. The bucket owner has this permission by default. The bucket owner
6830// can grant this permission to others. For more information about permissions,
6831// 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)
6832// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
6833// in the Amazon Simple Storage Service Developer Guide.
6834//
6835// Related Resources
6836//
6837//    * GetBucketEncryption
6838//
6839//    * DeleteBucketEncryption
6840//
6841// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6842// with awserr.Error's Code and Message methods to get detailed information about
6843// the error.
6844//
6845// See the AWS API reference guide for Amazon Simple Storage Service's
6846// API operation PutBucketEncryption for usage and error information.
6847// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
6848func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
6849	req, out := c.PutBucketEncryptionRequest(input)
6850	return out, req.Send()
6851}
6852
6853// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
6854// the ability to pass a context and additional request options.
6855//
6856// See PutBucketEncryption for details on how to use this API operation.
6857//
6858// The context must be non-nil and will be used for request cancellation. If
6859// the context is nil a panic will occur. In the future the SDK may create
6860// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6861// for more information on using Contexts.
6862func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
6863	req, out := c.PutBucketEncryptionRequest(input)
6864	req.SetContext(ctx)
6865	req.ApplyOptions(opts...)
6866	return out, req.Send()
6867}
6868
6869const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
6870
6871// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
6872// client's request for the PutBucketInventoryConfiguration operation. The "output" return
6873// value will be populated with the request's response once the request completes
6874// successfully.
6875//
6876// Use "Send" method on the returned Request to send the API call to the service.
6877// the "output" return value is not valid until after Send returns without error.
6878//
6879// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
6880// API call, and error handling.
6881//
6882// This method is useful when you want to inject custom logic or configuration
6883// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6884//
6885//
6886//    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
6887//    req, resp := client.PutBucketInventoryConfigurationRequest(params)
6888//
6889//    err := req.Send()
6890//    if err == nil { // resp is now filled
6891//        fmt.Println(resp)
6892//    }
6893//
6894// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
6895func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
6896	op := &request.Operation{
6897		Name:       opPutBucketInventoryConfiguration,
6898		HTTPMethod: "PUT",
6899		HTTPPath:   "/{Bucket}?inventory",
6900	}
6901
6902	if input == nil {
6903		input = &PutBucketInventoryConfigurationInput{}
6904	}
6905
6906	output = &PutBucketInventoryConfigurationOutput{}
6907	req = c.newRequest(op, input, output)
6908	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6909	return
6910}
6911
6912// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
6913//
6914// This implementation of the PUT operation adds an inventory configuration
6915// (identified by the inventory ID) to the bucket. You can have up to 1,000
6916// inventory configurations per bucket.
6917//
6918// Amazon S3 inventory generates inventories of the objects in the bucket on
6919// a daily or weekly basis, and the results are published to a flat file. The
6920// bucket that is inventoried is called the source bucket, and the bucket where
6921// the inventory flat file is stored is called the destination bucket. The destination
6922// bucket must be in the same AWS Region as the source bucket.
6923//
6924// When you configure an inventory for a source bucket, you specify the destination
6925// bucket where you want the inventory to be stored, and whether to generate
6926// the inventory daily or weekly. You can also configure what object metadata
6927// to include and whether to inventory all object versions or only current versions.
6928// For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev//storage-inventory.html)
6929// in the Amazon Simple Storage Service Developer Guide.
6930//
6931// You must create a bucket policy on the destination bucket to grant permissions
6932// to Amazon S3 to write objects to the bucket in the defined location. For
6933// an example policy, see Granting Permissions for Amazon S3 Inventory and Storage
6934// Class Analysis. (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9)
6935//
6936// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
6937// action. The bucket owner has this permission by default and can grant this
6938// permission to others. For more information about permissions, see Permissions
6939// 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)
6940// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html)
6941// in the Amazon Simple Storage Service Developer Guide.
6942//
6943// Special Errors
6944//
6945//    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
6946//
6947//    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
6948//    attempting to create a new configuration but have already reached the
6949//    1,000-configuration limit.
6950//
6951//    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
6952//    of the specified bucket, or you do not have the s3:PutInventoryConfiguration
6953//    bucket permission to set the configuration on the bucket
6954//
6955// Related Resources
6956//
6957//    * GetBucketInventoryConfiguration
6958//
6959//    * DeleteBucketInventoryConfiguration
6960//
6961//    * ListBucketInventoryConfigurations
6962//
6963// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6964// with awserr.Error's Code and Message methods to get detailed information about
6965// the error.
6966//
6967// See the AWS API reference guide for Amazon Simple Storage Service's
6968// API operation PutBucketInventoryConfiguration for usage and error information.
6969// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
6970func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
6971	req, out := c.PutBucketInventoryConfigurationRequest(input)
6972	return out, req.Send()
6973}
6974
6975// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
6976// the ability to pass a context and additional request options.
6977//
6978// See PutBucketInventoryConfiguration for details on how to use this API operation.
6979//
6980// The context must be non-nil and will be used for request cancellation. If
6981// the context is nil a panic will occur. In the future the SDK may create
6982// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6983// for more information on using Contexts.
6984func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
6985	req, out := c.PutBucketInventoryConfigurationRequest(input)
6986	req.SetContext(ctx)
6987	req.ApplyOptions(opts...)
6988	return out, req.Send()
6989}
6990
6991const opPutBucketLifecycle = "PutBucketLifecycle"
6992
6993// PutBucketLifecycleRequest generates a "aws/request.Request" representing the
6994// client's request for the PutBucketLifecycle operation. The "output" return
6995// value will be populated with the request's response once the request completes
6996// successfully.
6997//
6998// Use "Send" method on the returned Request to send the API call to the service.
6999// the "output" return value is not valid until after Send returns without error.
7000//
7001// See PutBucketLifecycle for more information on using the PutBucketLifecycle
7002// API call, and error handling.
7003//
7004// This method is useful when you want to inject custom logic or configuration
7005// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7006//
7007//
7008//    // Example sending a request using the PutBucketLifecycleRequest method.
7009//    req, resp := client.PutBucketLifecycleRequest(params)
7010//
7011//    err := req.Send()
7012//    if err == nil { // resp is now filled
7013//        fmt.Println(resp)
7014//    }
7015//
7016// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7017//
7018// Deprecated: PutBucketLifecycle has been deprecated
7019func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
7020	if c.Client.Config.Logger != nil {
7021		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
7022	}
7023	op := &request.Operation{
7024		Name:       opPutBucketLifecycle,
7025		HTTPMethod: "PUT",
7026		HTTPPath:   "/{Bucket}?lifecycle",
7027	}
7028
7029	if input == nil {
7030		input = &PutBucketLifecycleInput{}
7031	}
7032
7033	output = &PutBucketLifecycleOutput{}
7034	req = c.newRequest(op, input, output)
7035	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7036	return
7037}
7038
7039// PutBucketLifecycle API operation for Amazon Simple Storage Service.
7040//
7041//
7042// For an updated version of this API, see PutBucketLifecycleConfiguration.
7043// This version has been deprecated. Existing lifecycle configurations will
7044// work. For new lifecycle configurations, use the updated API.
7045//
7046// Creates a new lifecycle configuration for the bucket or replaces an existing
7047// lifecycle configuration. For information about lifecycle configuration, see
7048// Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev//object-lifecycle-mgmt.html)
7049// in the Amazon Simple Storage Service Developer Guide.
7050//
7051// By default, all Amazon S3 resources, including buckets, objects, and related
7052// subresources (for example, lifecycle configuration and website configuration)
7053// are private. Only the resource owner, the AWS account that created the resource,
7054// can access it. The resource owner can optionally grant access permissions
7055// to others by writing an access policy. For this operation, users must get
7056// the s3:PutLifecycleConfiguration permission.
7057//
7058// You can also explicitly deny permissions. Explicit denial also supersedes
7059// any other permissions. If you want to prevent users or accounts from removing
7060// or deleting objects from your bucket, you must deny them permissions for
7061// the following actions:
7062//
7063//    * s3:DeleteObject
7064//
7065//    * s3:DeleteObjectVersion
7066//
7067//    * s3:PutLifecycleConfiguration
7068//
7069// For more information about permissions, see Managing Access Permissions to
7070// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html)
7071// in the Amazon Simple Storage Service Developer Guide.
7072//
7073// For more examples of transitioning objects to storage classes such as STANDARD_IA
7074// or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev//intro-lifecycle-rules.html#lifecycle-configuration-examples).
7075//
7076// Related Resources
7077//
7078//    * GetBucketLifecycle(Deprecated)
7079//
7080//    * GetBucketLifecycleConfiguration
7081//
7082//    *
7083//
7084//    * By default, a resource owner—in this case, a bucket owner, which is
7085//    the AWS account that created the bucket—can perform any of the operations.
7086//    A resource owner can also grant others permission to perform the operation.
7087//    For more information, see the following topics in the Amazon Simple Storage
7088//    Service Developer Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev//using-with-s3-actions.html)
7089//    Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev//s3-access-control.html)
7090//
7091// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7092// with awserr.Error's Code and Message methods to get detailed information about
7093// the error.
7094//
7095// See the AWS API reference guide for Amazon Simple Storage Service's
7096// API operation PutBucketLifecycle for usage and error information.
7097// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7098//
7099// Deprecated: PutBucketLifecycle has been deprecated
7100func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
7101	req, out := c.PutBucketLifecycleRequest(input)
7102	return out, req.Send()
7103}
7104
7105// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
7106// the ability to pass a context and additional request options.
7107//
7108// See PutBucketLifecycle for details on how to use this API operation.
7109//
7110// The context must be non-nil and will be used for request cancellation. If
7111// the context is nil a panic will occur. In the future the SDK may create
7112// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7113// for more information on using Contexts.
7114//
7115// Deprecated: PutBucketLifecycleWithContext has been deprecated
7116func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
7117	req, out := c.PutBucketLifecycleRequest(input)
7118	req.SetContext(ctx)
7119	req.ApplyOptions(opts...)
7120	return out, req.Send()
7121}
7122
7123const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
7124
7125// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
7126// client's request for the PutBucketLifecycleConfiguration operation. The "output" return
7127// value will be populated with the request's response once the request completes
7128// successfully.
7129//
7130// Use "Send" method on the returned Request to send the API call to the service.
7131// the "output" return value is not valid until after Send returns without error.
7132//
7133// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
7134// API call, and error handling.
7135//
7136// This method is useful when you want to inject custom logic or configuration
7137// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7138//
7139//
7140//    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
7141//    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
7142//
7143//    err := req.Send()
7144//    if err == nil { // resp is now filled
7145//        fmt.Println(resp)
7146//    }
7147//
7148// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7149func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
7150	op := &request.Operation{
7151		Name:       opPutBucketLifecycleConfiguration,
7152		HTTPMethod: "PUT",
7153		HTTPPath:   "/{Bucket}?lifecycle",
7154	}
7155
7156	if input == nil {
7157		input = &PutBucketLifecycleConfigurationInput{}
7158	}
7159
7160	output = &PutBucketLifecycleConfigurationOutput{}
7161	req = c.newRequest(op, input, output)
7162	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7163	return
7164}
7165
7166// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
7167//
7168// Creates a new lifecycle configuration for the bucket or replaces an existing
7169// lifecycle configuration. For information about lifecycle configuration, see
7170// Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7171//
7172// Bucket lifecycle configuration now supports specifying a lifecycle rule using
7173// an object key name prefix, one or more object tags, or a combination of both.
7174// Accordingly, this section describes the latest API. The previous version
7175// of the API supported filtering based only on an object key name prefix, which
7176// is supported for backward compatibility. For the related API description,
7177// see PutBucketLifecycle.
7178//
7179// Rules
7180//
7181// You specify the lifecycle configuration in your request body. The lifecycle
7182// configuration is specified as XML consisting of one or more rules. Each rule
7183// consists of the following:
7184//
7185//    * Filter identifying a subset of objects to which the rule applies. The
7186//    filter can be based on a key name prefix, object tags, or a combination
7187//    of both.
7188//
7189//    * Status whether the rule is in effect.
7190//
7191//    * One or more lifecycle transition and expiration actions that you want
7192//    Amazon S3 to perform on the objects identified by the filter. If the state
7193//    of your bucket is versioning-enabled or versioning-suspended, you can
7194//    have many versions of the same object (one current version and zero or
7195//    more noncurrent versions). Amazon S3 provides predefined actions that
7196//    you can specify for current and noncurrent object versions.
7197//
7198// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7199// and Lifecycle Configuration Elements (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html).
7200//
7201// Permissions
7202//
7203// By default, all Amazon S3 resources are private, including buckets, objects,
7204// and related subresources (for example, lifecycle configuration and website
7205// configuration). Only the resource owner (that is, the AWS account that created
7206// it) can access the resource. The resource owner can optionally grant access
7207// permissions to others by writing an access policy. For this operation, a
7208// user must get the s3:PutLifecycleConfiguration permission.
7209//
7210// You can also explicitly deny permissions. Explicit deny also supersedes any
7211// other permissions. If you want to block users or accounts from removing or
7212// deleting objects from your bucket, you must deny them permissions for the
7213// following actions:
7214//
7215//    * s3:DeleteObject
7216//
7217//    * s3:DeleteObjectVersion
7218//
7219//    * s3:PutLifecycleConfiguration
7220//
7221// For more information about permissions, see Managing Access Permissions to
7222// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7223//
7224// The following are related to PutBucketLifecycleConfiguration:
7225//
7226//    * Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html)
7227//
7228//    * GetBucketLifecycleConfiguration
7229//
7230//    * DeleteBucketLifecycle
7231//
7232// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7233// with awserr.Error's Code and Message methods to get detailed information about
7234// the error.
7235//
7236// See the AWS API reference guide for Amazon Simple Storage Service's
7237// API operation PutBucketLifecycleConfiguration for usage and error information.
7238// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7239func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
7240	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7241	return out, req.Send()
7242}
7243
7244// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
7245// the ability to pass a context and additional request options.
7246//
7247// See PutBucketLifecycleConfiguration for details on how to use this API operation.
7248//
7249// The context must be non-nil and will be used for request cancellation. If
7250// the context is nil a panic will occur. In the future the SDK may create
7251// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7252// for more information on using Contexts.
7253func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
7254	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7255	req.SetContext(ctx)
7256	req.ApplyOptions(opts...)
7257	return out, req.Send()
7258}
7259
7260const opPutBucketLogging = "PutBucketLogging"
7261
7262// PutBucketLoggingRequest generates a "aws/request.Request" representing the
7263// client's request for the PutBucketLogging operation. The "output" return
7264// value will be populated with the request's response once the request completes
7265// successfully.
7266//
7267// Use "Send" method on the returned Request to send the API call to the service.
7268// the "output" return value is not valid until after Send returns without error.
7269//
7270// See PutBucketLogging for more information on using the PutBucketLogging
7271// API call, and error handling.
7272//
7273// This method is useful when you want to inject custom logic or configuration
7274// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7275//
7276//
7277//    // Example sending a request using the PutBucketLoggingRequest method.
7278//    req, resp := client.PutBucketLoggingRequest(params)
7279//
7280//    err := req.Send()
7281//    if err == nil { // resp is now filled
7282//        fmt.Println(resp)
7283//    }
7284//
7285// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
7286func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
7287	op := &request.Operation{
7288		Name:       opPutBucketLogging,
7289		HTTPMethod: "PUT",
7290		HTTPPath:   "/{Bucket}?logging",
7291	}
7292
7293	if input == nil {
7294		input = &PutBucketLoggingInput{}
7295	}
7296
7297	output = &PutBucketLoggingOutput{}
7298	req = c.newRequest(op, input, output)
7299	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7300	return
7301}
7302
7303// PutBucketLogging API operation for Amazon Simple Storage Service.
7304//
7305// Set the logging parameters for a bucket and to specify permissions for who
7306// can view and modify the logging parameters. All logs are saved to buckets
7307// in the same AWS Region as the source bucket. To set the logging status of
7308// a bucket, you must be the bucket owner.
7309//
7310// The bucket owner is automatically granted FULL_CONTROL to all logs. You use
7311// the Grantee request element to grant access to other people. The Permissions
7312// request element specifies the kind of access the grantee has to the logs.
7313//
7314// Grantee Values
7315//
7316// You can specify the person (grantee) to whom you're assigning access rights
7317// (using request elements) in the following ways:
7318//
7319//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7320//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
7321//    </Grantee> DisplayName is optional and ignored in the request.
7322//
7323//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7324//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress></Grantee>
7325//    The grantee is resolved to the CanonicalUser and, in a response to a GET
7326//    Object acl request, appears as the CanonicalUser.
7327//
7328//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7329//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
7330//
7331// To enable logging, you use LoggingEnabled and its children request elements.
7332// To disable logging, you use an empty BucketLoggingStatus request element:
7333//
7334// <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01" />
7335//
7336// For more information about server access logging, see Server Access Logging
7337// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html).
7338//
7339// For more information about creating a bucket, see CreateBucket. For more
7340// information about returning the logging status of a bucket, see GetBucketLogging.
7341//
7342// The following operations are related to PutBucketLogging:
7343//
7344//    * PutObject
7345//
7346//    * DeleteBucket
7347//
7348//    * CreateBucket
7349//
7350//    * GetBucketLogging
7351//
7352// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7353// with awserr.Error's Code and Message methods to get detailed information about
7354// the error.
7355//
7356// See the AWS API reference guide for Amazon Simple Storage Service's
7357// API operation PutBucketLogging for usage and error information.
7358// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
7359func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
7360	req, out := c.PutBucketLoggingRequest(input)
7361	return out, req.Send()
7362}
7363
7364// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
7365// the ability to pass a context and additional request options.
7366//
7367// See PutBucketLogging for details on how to use this API operation.
7368//
7369// The context must be non-nil and will be used for request cancellation. If
7370// the context is nil a panic will occur. In the future the SDK may create
7371// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7372// for more information on using Contexts.
7373func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
7374	req, out := c.PutBucketLoggingRequest(input)
7375	req.SetContext(ctx)
7376	req.ApplyOptions(opts...)
7377	return out, req.Send()
7378}
7379
7380const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
7381
7382// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
7383// client's request for the PutBucketMetricsConfiguration operation. The "output" return
7384// value will be populated with the request's response once the request completes
7385// successfully.
7386//
7387// Use "Send" method on the returned Request to send the API call to the service.
7388// the "output" return value is not valid until after Send returns without error.
7389//
7390// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
7391// API call, and error handling.
7392//
7393// This method is useful when you want to inject custom logic or configuration
7394// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7395//
7396//
7397//    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
7398//    req, resp := client.PutBucketMetricsConfigurationRequest(params)
7399//
7400//    err := req.Send()
7401//    if err == nil { // resp is now filled
7402//        fmt.Println(resp)
7403//    }
7404//
7405// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
7406func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
7407	op := &request.Operation{
7408		Name:       opPutBucketMetricsConfiguration,
7409		HTTPMethod: "PUT",
7410		HTTPPath:   "/{Bucket}?metrics",
7411	}
7412
7413	if input == nil {
7414		input = &PutBucketMetricsConfigurationInput{}
7415	}
7416
7417	output = &PutBucketMetricsConfigurationOutput{}
7418	req = c.newRequest(op, input, output)
7419	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7420	return
7421}
7422
7423// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
7424//
7425// Sets a metrics configuration (specified by the metrics configuration ID)
7426// for the bucket. You can have up to 1,000 metrics configurations per bucket.
7427// If you're updating an existing metrics configuration, note that this is a
7428// full replacement of the existing metrics configuration. If you don't include
7429// the elements you want to keep, they are erased.
7430//
7431// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
7432// action. The bucket owner has this permission by default. The bucket owner
7433// can grant this permission to others. For more information about permissions,
7434// 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)
7435// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7436//
7437// For information about CloudWatch request metrics for Amazon S3, see Monitoring
7438// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
7439//
7440// The following operations are related to PutBucketMetricsConfiguration:
7441//
7442//    * DeleteBucketMetricsConfiguration
7443//
7444//    * PutBucketMetricsConfiguration
7445//
7446//    * ListBucketMetricsConfigurations
7447//
7448// GetBucketLifecycle has the following special error:
7449//
7450//    * Error code: TooManyConfigurations Description: You are attempting to
7451//    create a new configuration but have already reached the 1,000-configuration
7452//    limit. HTTP Status Code: HTTP 400 Bad Request
7453//
7454// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7455// with awserr.Error's Code and Message methods to get detailed information about
7456// the error.
7457//
7458// See the AWS API reference guide for Amazon Simple Storage Service's
7459// API operation PutBucketMetricsConfiguration for usage and error information.
7460// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
7461func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
7462	req, out := c.PutBucketMetricsConfigurationRequest(input)
7463	return out, req.Send()
7464}
7465
7466// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
7467// the ability to pass a context and additional request options.
7468//
7469// See PutBucketMetricsConfiguration for details on how to use this API operation.
7470//
7471// The context must be non-nil and will be used for request cancellation. If
7472// the context is nil a panic will occur. In the future the SDK may create
7473// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7474// for more information on using Contexts.
7475func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
7476	req, out := c.PutBucketMetricsConfigurationRequest(input)
7477	req.SetContext(ctx)
7478	req.ApplyOptions(opts...)
7479	return out, req.Send()
7480}
7481
7482const opPutBucketNotification = "PutBucketNotification"
7483
7484// PutBucketNotificationRequest generates a "aws/request.Request" representing the
7485// client's request for the PutBucketNotification operation. The "output" return
7486// value will be populated with the request's response once the request completes
7487// successfully.
7488//
7489// Use "Send" method on the returned Request to send the API call to the service.
7490// the "output" return value is not valid until after Send returns without error.
7491//
7492// See PutBucketNotification for more information on using the PutBucketNotification
7493// API call, and error handling.
7494//
7495// This method is useful when you want to inject custom logic or configuration
7496// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7497//
7498//
7499//    // Example sending a request using the PutBucketNotificationRequest method.
7500//    req, resp := client.PutBucketNotificationRequest(params)
7501//
7502//    err := req.Send()
7503//    if err == nil { // resp is now filled
7504//        fmt.Println(resp)
7505//    }
7506//
7507// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
7508//
7509// Deprecated: PutBucketNotification has been deprecated
7510func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
7511	if c.Client.Config.Logger != nil {
7512		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
7513	}
7514	op := &request.Operation{
7515		Name:       opPutBucketNotification,
7516		HTTPMethod: "PUT",
7517		HTTPPath:   "/{Bucket}?notification",
7518	}
7519
7520	if input == nil {
7521		input = &PutBucketNotificationInput{}
7522	}
7523
7524	output = &PutBucketNotificationOutput{}
7525	req = c.newRequest(op, input, output)
7526	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7527	return
7528}
7529
7530// PutBucketNotification API operation for Amazon Simple Storage Service.
7531//
7532// No longer used, see the PutBucketNotificationConfiguration operation.
7533//
7534// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7535// with awserr.Error's Code and Message methods to get detailed information about
7536// the error.
7537//
7538// See the AWS API reference guide for Amazon Simple Storage Service's
7539// API operation PutBucketNotification for usage and error information.
7540// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
7541//
7542// Deprecated: PutBucketNotification has been deprecated
7543func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
7544	req, out := c.PutBucketNotificationRequest(input)
7545	return out, req.Send()
7546}
7547
7548// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
7549// the ability to pass a context and additional request options.
7550//
7551// See PutBucketNotification for details on how to use this API operation.
7552//
7553// The context must be non-nil and will be used for request cancellation. If
7554// the context is nil a panic will occur. In the future the SDK may create
7555// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7556// for more information on using Contexts.
7557//
7558// Deprecated: PutBucketNotificationWithContext has been deprecated
7559func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
7560	req, out := c.PutBucketNotificationRequest(input)
7561	req.SetContext(ctx)
7562	req.ApplyOptions(opts...)
7563	return out, req.Send()
7564}
7565
7566const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
7567
7568// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
7569// client's request for the PutBucketNotificationConfiguration operation. The "output" return
7570// value will be populated with the request's response once the request completes
7571// successfully.
7572//
7573// Use "Send" method on the returned Request to send the API call to the service.
7574// the "output" return value is not valid until after Send returns without error.
7575//
7576// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
7577// API call, and error handling.
7578//
7579// This method is useful when you want to inject custom logic or configuration
7580// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7581//
7582//
7583//    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
7584//    req, resp := client.PutBucketNotificationConfigurationRequest(params)
7585//
7586//    err := req.Send()
7587//    if err == nil { // resp is now filled
7588//        fmt.Println(resp)
7589//    }
7590//
7591// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
7592func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
7593	op := &request.Operation{
7594		Name:       opPutBucketNotificationConfiguration,
7595		HTTPMethod: "PUT",
7596		HTTPPath:   "/{Bucket}?notification",
7597	}
7598
7599	if input == nil {
7600		input = &PutBucketNotificationConfigurationInput{}
7601	}
7602
7603	output = &PutBucketNotificationConfigurationOutput{}
7604	req = c.newRequest(op, input, output)
7605	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7606	return
7607}
7608
7609// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
7610//
7611// Enables notifications of specified events for a bucket. For more information
7612// about event notifications, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
7613//
7614// Using this API, you can replace an existing notification configuration. The
7615// configuration is an XML file that defines the event types that you want Amazon
7616// S3 to publish and the destination where you want Amazon S3 to publish an
7617// event notification when it detects an event of the specified type.
7618//
7619// By default, your bucket has no event notifications configured. That is, the
7620// notification configuration will be an empty NotificationConfiguration.
7621//
7622// <NotificationConfiguration>
7623//
7624// </NotificationConfiguration>
7625//
7626// This operation replaces the existing notification configuration with the
7627// configuration you include in the request body.
7628//
7629// After Amazon S3 receives this request, it first verifies that any Amazon
7630// Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon
7631// SQS) destination exists, and that the bucket owner has permission to publish
7632// to it by sending a test notification. In the case of AWS Lambda destinations,
7633// Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission
7634// to invoke the function from the Amazon S3 bucket. For more information, see
7635// Configuring Notifications for Amazon S3 Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
7636//
7637// You can disable notifications by adding the empty NotificationConfiguration
7638// element.
7639//
7640// By default, only the bucket owner can configure notifications on a bucket.
7641// However, bucket owners can use a bucket policy to grant permission to other
7642// users to set this configuration with s3:PutBucketNotification permission.
7643//
7644// The PUT notification is an atomic operation. For example, suppose your notification
7645// configuration includes SNS topic, SQS queue, and Lambda function configurations.
7646// When you send a PUT request with this configuration, Amazon S3 sends test
7647// messages to your SNS topic. If the message fails, the entire PUT operation
7648// will fail, and Amazon S3 will not add the configuration to your bucket.
7649//
7650// Responses
7651//
7652// If the configuration in the request body includes only one TopicConfiguration
7653// specifying only the s3:ReducedRedundancyLostObject event type, the response
7654// will also include the x-amz-sns-test-message-id header containing the message
7655// ID of the test notification sent to the topic.
7656//
7657// The following operation is related to PutBucketNotificationConfiguration:
7658//
7659//    * GetBucketNotificationConfiguration
7660//
7661// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7662// with awserr.Error's Code and Message methods to get detailed information about
7663// the error.
7664//
7665// See the AWS API reference guide for Amazon Simple Storage Service's
7666// API operation PutBucketNotificationConfiguration for usage and error information.
7667// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
7668func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
7669	req, out := c.PutBucketNotificationConfigurationRequest(input)
7670	return out, req.Send()
7671}
7672
7673// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
7674// the ability to pass a context and additional request options.
7675//
7676// See PutBucketNotificationConfiguration for details on how to use this API operation.
7677//
7678// The context must be non-nil and will be used for request cancellation. If
7679// the context is nil a panic will occur. In the future the SDK may create
7680// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7681// for more information on using Contexts.
7682func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
7683	req, out := c.PutBucketNotificationConfigurationRequest(input)
7684	req.SetContext(ctx)
7685	req.ApplyOptions(opts...)
7686	return out, req.Send()
7687}
7688
7689const opPutBucketPolicy = "PutBucketPolicy"
7690
7691// PutBucketPolicyRequest generates a "aws/request.Request" representing the
7692// client's request for the PutBucketPolicy operation. The "output" return
7693// value will be populated with the request's response once the request completes
7694// successfully.
7695//
7696// Use "Send" method on the returned Request to send the API call to the service.
7697// the "output" return value is not valid until after Send returns without error.
7698//
7699// See PutBucketPolicy for more information on using the PutBucketPolicy
7700// API call, and error handling.
7701//
7702// This method is useful when you want to inject custom logic or configuration
7703// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7704//
7705//
7706//    // Example sending a request using the PutBucketPolicyRequest method.
7707//    req, resp := client.PutBucketPolicyRequest(params)
7708//
7709//    err := req.Send()
7710//    if err == nil { // resp is now filled
7711//        fmt.Println(resp)
7712//    }
7713//
7714// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
7715func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
7716	op := &request.Operation{
7717		Name:       opPutBucketPolicy,
7718		HTTPMethod: "PUT",
7719		HTTPPath:   "/{Bucket}?policy",
7720	}
7721
7722	if input == nil {
7723		input = &PutBucketPolicyInput{}
7724	}
7725
7726	output = &PutBucketPolicyOutput{}
7727	req = c.newRequest(op, input, output)
7728	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7729	return
7730}
7731
7732// PutBucketPolicy API operation for Amazon Simple Storage Service.
7733//
7734// Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
7735// an identity other than the root user of the AWS account that owns the bucket,
7736// the calling identity must have the PutBucketPolicy permissions on the specified
7737// bucket and belong to the bucket owner's account in order to use this operation.
7738//
7739// If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access
7740// Denied error. If you have the correct permissions, but you're not using an
7741// identity that belongs to the bucket owner's account, Amazon S3 returns a
7742// 405 Method Not Allowed error.
7743//
7744// As a security precaution, the root user of the AWS account that owns a bucket
7745// can always use this operation, even if the policy explicitly denies the root
7746// user the ability to perform this action.
7747//
7748// For more information about bucket policies, see Using Bucket Policies and
7749// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
7750//
7751// The following operations are related to PutBucketPolicy:
7752//
7753//    * CreateBucket
7754//
7755//    * DeleteBucket
7756//
7757// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7758// with awserr.Error's Code and Message methods to get detailed information about
7759// the error.
7760//
7761// See the AWS API reference guide for Amazon Simple Storage Service's
7762// API operation PutBucketPolicy for usage and error information.
7763// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
7764func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
7765	req, out := c.PutBucketPolicyRequest(input)
7766	return out, req.Send()
7767}
7768
7769// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
7770// the ability to pass a context and additional request options.
7771//
7772// See PutBucketPolicy for details on how to use this API operation.
7773//
7774// The context must be non-nil and will be used for request cancellation. If
7775// the context is nil a panic will occur. In the future the SDK may create
7776// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7777// for more information on using Contexts.
7778func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
7779	req, out := c.PutBucketPolicyRequest(input)
7780	req.SetContext(ctx)
7781	req.ApplyOptions(opts...)
7782	return out, req.Send()
7783}
7784
7785const opPutBucketReplication = "PutBucketReplication"
7786
7787// PutBucketReplicationRequest generates a "aws/request.Request" representing the
7788// client's request for the PutBucketReplication operation. The "output" return
7789// value will be populated with the request's response once the request completes
7790// successfully.
7791//
7792// Use "Send" method on the returned Request to send the API call to the service.
7793// the "output" return value is not valid until after Send returns without error.
7794//
7795// See PutBucketReplication for more information on using the PutBucketReplication
7796// API call, and error handling.
7797//
7798// This method is useful when you want to inject custom logic or configuration
7799// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7800//
7801//
7802//    // Example sending a request using the PutBucketReplicationRequest method.
7803//    req, resp := client.PutBucketReplicationRequest(params)
7804//
7805//    err := req.Send()
7806//    if err == nil { // resp is now filled
7807//        fmt.Println(resp)
7808//    }
7809//
7810// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
7811func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
7812	op := &request.Operation{
7813		Name:       opPutBucketReplication,
7814		HTTPMethod: "PUT",
7815		HTTPPath:   "/{Bucket}?replication",
7816	}
7817
7818	if input == nil {
7819		input = &PutBucketReplicationInput{}
7820	}
7821
7822	output = &PutBucketReplicationOutput{}
7823	req = c.newRequest(op, input, output)
7824	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7825	return
7826}
7827
7828// PutBucketReplication API operation for Amazon Simple Storage Service.
7829//
7830// Creates a replication configuration or replaces an existing one. For more
7831// information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
7832// in the Amazon S3 Developer Guide.
7833//
7834// To perform this operation, the user or role performing the operation must
7835// have the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
7836// permission.
7837//
7838// Specify the replication configuration in the request body. In the replication
7839// configuration, you provide the name of the destination bucket where you want
7840// Amazon S3 to replicate objects, the IAM role that Amazon S3 can assume to
7841// replicate objects on your behalf, and other relevant information.
7842//
7843// A replication configuration must include at least one rule, and can contain
7844// a maximum of 1,000. Each rule identifies a subset of objects to replicate
7845// by filtering the objects in the source bucket. To choose additional subsets
7846// of objects to replicate, add a rule for each subset. All rules must specify
7847// the same destination bucket.
7848//
7849// To specify a subset of the objects in the source bucket to apply a replication
7850// rule to, add the Filter element as a child of the Rule element. You can filter
7851// objects based on an object key prefix, one or more object tags, or both.
7852// When you add the Filter element in the configuration, you must also add the
7853// following elements: DeleteMarkerReplication, Status, and Priority.
7854//
7855// For information about enabling versioning on a bucket, see Using Versioning
7856// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).
7857//
7858// By default, a resource owner, in this case the AWS account that created the
7859// bucket, can perform this operation. The resource owner can also grant others
7860// permissions to perform the operation. For more information about permissions,
7861// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
7862// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
7863//
7864// Handling Replication of Encrypted Objects
7865//
7866// By default, Amazon S3 doesn't replicate objects that are stored at rest using
7867// server-side encryption with CMKs stored in AWS KMS. To replicate AWS KMS-encrypted
7868// objects, add the following: SourceSelectionCriteria, SseKmsEncryptedObjects,
7869// Status, EncryptionConfiguration, and ReplicaKmsKeyID. For information about
7870// replication configuration, see Replicating Objects Created with SSE Using
7871// CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html).
7872//
7873// For information on PutBucketReplication errors, see ReplicationErrorCodeList
7874//
7875// The following operations are related to PutBucketReplication:
7876//
7877//    * GetBucketReplication
7878//
7879//    * DeleteBucketReplication
7880//
7881// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7882// with awserr.Error's Code and Message methods to get detailed information about
7883// the error.
7884//
7885// See the AWS API reference guide for Amazon Simple Storage Service's
7886// API operation PutBucketReplication for usage and error information.
7887// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
7888func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
7889	req, out := c.PutBucketReplicationRequest(input)
7890	return out, req.Send()
7891}
7892
7893// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
7894// the ability to pass a context and additional request options.
7895//
7896// See PutBucketReplication for details on how to use this API operation.
7897//
7898// The context must be non-nil and will be used for request cancellation. If
7899// the context is nil a panic will occur. In the future the SDK may create
7900// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7901// for more information on using Contexts.
7902func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
7903	req, out := c.PutBucketReplicationRequest(input)
7904	req.SetContext(ctx)
7905	req.ApplyOptions(opts...)
7906	return out, req.Send()
7907}
7908
7909const opPutBucketRequestPayment = "PutBucketRequestPayment"
7910
7911// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
7912// client's request for the PutBucketRequestPayment operation. The "output" return
7913// value will be populated with the request's response once the request completes
7914// successfully.
7915//
7916// Use "Send" method on the returned Request to send the API call to the service.
7917// the "output" return value is not valid until after Send returns without error.
7918//
7919// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
7920// API call, and error handling.
7921//
7922// This method is useful when you want to inject custom logic or configuration
7923// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7924//
7925//
7926//    // Example sending a request using the PutBucketRequestPaymentRequest method.
7927//    req, resp := client.PutBucketRequestPaymentRequest(params)
7928//
7929//    err := req.Send()
7930//    if err == nil { // resp is now filled
7931//        fmt.Println(resp)
7932//    }
7933//
7934// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
7935func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
7936	op := &request.Operation{
7937		Name:       opPutBucketRequestPayment,
7938		HTTPMethod: "PUT",
7939		HTTPPath:   "/{Bucket}?requestPayment",
7940	}
7941
7942	if input == nil {
7943		input = &PutBucketRequestPaymentInput{}
7944	}
7945
7946	output = &PutBucketRequestPaymentOutput{}
7947	req = c.newRequest(op, input, output)
7948	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7949	return
7950}
7951
7952// PutBucketRequestPayment API operation for Amazon Simple Storage Service.
7953//
7954// Sets the request payment configuration for a bucket. By default, the bucket
7955// owner pays for downloads from the bucket. This configuration parameter enables
7956// the bucket owner (only) to specify that the person requesting the download
7957// will be charged for the download. For more information, see Requester Pays
7958// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
7959//
7960// The following operations are related to PutBucketRequestPayment:
7961//
7962//    * CreateBucket
7963//
7964//    * GetBucketRequestPayment
7965//
7966// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7967// with awserr.Error's Code and Message methods to get detailed information about
7968// the error.
7969//
7970// See the AWS API reference guide for Amazon Simple Storage Service's
7971// API operation PutBucketRequestPayment for usage and error information.
7972// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
7973func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
7974	req, out := c.PutBucketRequestPaymentRequest(input)
7975	return out, req.Send()
7976}
7977
7978// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
7979// the ability to pass a context and additional request options.
7980//
7981// See PutBucketRequestPayment for details on how to use this API operation.
7982//
7983// The context must be non-nil and will be used for request cancellation. If
7984// the context is nil a panic will occur. In the future the SDK may create
7985// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7986// for more information on using Contexts.
7987func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
7988	req, out := c.PutBucketRequestPaymentRequest(input)
7989	req.SetContext(ctx)
7990	req.ApplyOptions(opts...)
7991	return out, req.Send()
7992}
7993
7994const opPutBucketTagging = "PutBucketTagging"
7995
7996// PutBucketTaggingRequest generates a "aws/request.Request" representing the
7997// client's request for the PutBucketTagging operation. The "output" return
7998// value will be populated with the request's response once the request completes
7999// successfully.
8000//
8001// Use "Send" method on the returned Request to send the API call to the service.
8002// the "output" return value is not valid until after Send returns without error.
8003//
8004// See PutBucketTagging for more information on using the PutBucketTagging
8005// API call, and error handling.
8006//
8007// This method is useful when you want to inject custom logic or configuration
8008// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8009//
8010//
8011//    // Example sending a request using the PutBucketTaggingRequest method.
8012//    req, resp := client.PutBucketTaggingRequest(params)
8013//
8014//    err := req.Send()
8015//    if err == nil { // resp is now filled
8016//        fmt.Println(resp)
8017//    }
8018//
8019// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8020func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
8021	op := &request.Operation{
8022		Name:       opPutBucketTagging,
8023		HTTPMethod: "PUT",
8024		HTTPPath:   "/{Bucket}?tagging",
8025	}
8026
8027	if input == nil {
8028		input = &PutBucketTaggingInput{}
8029	}
8030
8031	output = &PutBucketTaggingOutput{}
8032	req = c.newRequest(op, input, output)
8033	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8034	return
8035}
8036
8037// PutBucketTagging API operation for Amazon Simple Storage Service.
8038//
8039// Sets the tags for a bucket.
8040//
8041// Use tags to organize your AWS bill to reflect your own cost structure. To
8042// do this, sign up to get your AWS account bill with tag key values included.
8043// Then, to see the cost of combined resources, organize your billing information
8044// according to resources with the same tag key values. For example, you can
8045// tag several resources with a specific application name, and then organize
8046// your billing information to see the total cost of that application across
8047// several services. For more information, see Cost Allocation and Tagging (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html).
8048//
8049// Within a bucket, if you add a tag that has the same key as an existing tag,
8050// the new value overwrites the old value. For more information, see Using Cost
8051// Allocation in Amazon S3 Bucket Tags (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html).
8052//
8053// To use this operation, you must have permissions to perform the s3:PutBucketTagging
8054// action. The bucket owner has this permission by default and can grant this
8055// permission to others. For more information about permissions, see Permissions
8056// 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)
8057// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html).
8058//
8059// PutBucketTagging has the following special errors:
8060//
8061//    * Error code: InvalidTagError Description: The tag provided was not a
8062//    valid tag. This error can occur if the tag did not pass input validation.
8063//    For information about tag restrictions, see User-Defined Tag Restrictions
8064//    (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//allocation-tag-restrictions.html)
8065//    and AWS-Generated Cost Allocation Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2//aws-tag-restrictions.html).
8066//
8067//    * Error code: MalformedXMLError Description: The XML provided does not
8068//    match the schema.
8069//
8070//    * Error code: OperationAbortedError Description: A conflicting conditional
8071//    operation is currently in progress against this resource. Please try again.
8072//
8073//    * Error code: InternalError Description: The service was unable to apply
8074//    the provided tag to the bucket.
8075//
8076// The following operations are related to PutBucketTagging:
8077//
8078//    * GetBucketTagging
8079//
8080//    * DeleteBucketTagging
8081//
8082// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8083// with awserr.Error's Code and Message methods to get detailed information about
8084// the error.
8085//
8086// See the AWS API reference guide for Amazon Simple Storage Service's
8087// API operation PutBucketTagging for usage and error information.
8088// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8089func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
8090	req, out := c.PutBucketTaggingRequest(input)
8091	return out, req.Send()
8092}
8093
8094// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
8095// the ability to pass a context and additional request options.
8096//
8097// See PutBucketTagging for details on how to use this API operation.
8098//
8099// The context must be non-nil and will be used for request cancellation. If
8100// the context is nil a panic will occur. In the future the SDK may create
8101// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8102// for more information on using Contexts.
8103func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
8104	req, out := c.PutBucketTaggingRequest(input)
8105	req.SetContext(ctx)
8106	req.ApplyOptions(opts...)
8107	return out, req.Send()
8108}
8109
8110const opPutBucketVersioning = "PutBucketVersioning"
8111
8112// PutBucketVersioningRequest generates a "aws/request.Request" representing the
8113// client's request for the PutBucketVersioning operation. The "output" return
8114// value will be populated with the request's response once the request completes
8115// successfully.
8116//
8117// Use "Send" method on the returned Request to send the API call to the service.
8118// the "output" return value is not valid until after Send returns without error.
8119//
8120// See PutBucketVersioning for more information on using the PutBucketVersioning
8121// API call, and error handling.
8122//
8123// This method is useful when you want to inject custom logic or configuration
8124// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8125//
8126//
8127//    // Example sending a request using the PutBucketVersioningRequest method.
8128//    req, resp := client.PutBucketVersioningRequest(params)
8129//
8130//    err := req.Send()
8131//    if err == nil { // resp is now filled
8132//        fmt.Println(resp)
8133//    }
8134//
8135// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
8136func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
8137	op := &request.Operation{
8138		Name:       opPutBucketVersioning,
8139		HTTPMethod: "PUT",
8140		HTTPPath:   "/{Bucket}?versioning",
8141	}
8142
8143	if input == nil {
8144		input = &PutBucketVersioningInput{}
8145	}
8146
8147	output = &PutBucketVersioningOutput{}
8148	req = c.newRequest(op, input, output)
8149	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8150	return
8151}
8152
8153// PutBucketVersioning API operation for Amazon Simple Storage Service.
8154//
8155// Sets the versioning state of an existing bucket. To set the versioning state,
8156// you must be the bucket owner.
8157//
8158// You can set the versioning state with one of the following values:
8159//
8160// Enabled—Enables versioning for the objects in the bucket. All objects added
8161// to the bucket receive a unique version ID.
8162//
8163// Suspended—Disables versioning for the objects in the bucket. All objects
8164// added to the bucket receive the version ID null.
8165//
8166// If the versioning state has never been set on a bucket, it has no versioning
8167// state; a GetBucketVersioning request does not return a versioning state value.
8168//
8169// If the bucket owner enables MFA Delete in the bucket versioning configuration,
8170// the bucket owner must include the x-amz-mfa request header and the Status
8171// and the MfaDelete request elements in a request to set the versioning state
8172// of the bucket.
8173//
8174// If you have an object expiration lifecycle policy in your non-versioned bucket
8175// and you want to maintain the same permanent delete behavior when you enable
8176// versioning, you must add a noncurrent expiration policy. The noncurrent expiration
8177// lifecycle policy will manage the deletes of the noncurrent object versions
8178// in the version-enabled bucket. (A version-enabled bucket maintains one current
8179// and zero or more noncurrent object versions.) For more information, see Lifecycle
8180// and Versioning (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config).
8181//
8182// Related Resources
8183//
8184//    * CreateBucket
8185//
8186//    * DeleteBucket
8187//
8188//    * GetBucketVersioning
8189//
8190// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8191// with awserr.Error's Code and Message methods to get detailed information about
8192// the error.
8193//
8194// See the AWS API reference guide for Amazon Simple Storage Service's
8195// API operation PutBucketVersioning for usage and error information.
8196// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
8197func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
8198	req, out := c.PutBucketVersioningRequest(input)
8199	return out, req.Send()
8200}
8201
8202// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
8203// the ability to pass a context and additional request options.
8204//
8205// See PutBucketVersioning for details on how to use this API operation.
8206//
8207// The context must be non-nil and will be used for request cancellation. If
8208// the context is nil a panic will occur. In the future the SDK may create
8209// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8210// for more information on using Contexts.
8211func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
8212	req, out := c.PutBucketVersioningRequest(input)
8213	req.SetContext(ctx)
8214	req.ApplyOptions(opts...)
8215	return out, req.Send()
8216}
8217
8218const opPutBucketWebsite = "PutBucketWebsite"
8219
8220// PutBucketWebsiteRequest generates a "aws/request.Request" representing the
8221// client's request for the PutBucketWebsite operation. The "output" return
8222// value will be populated with the request's response once the request completes
8223// successfully.
8224//
8225// Use "Send" method on the returned Request to send the API call to the service.
8226// the "output" return value is not valid until after Send returns without error.
8227//
8228// See PutBucketWebsite for more information on using the PutBucketWebsite
8229// API call, and error handling.
8230//
8231// This method is useful when you want to inject custom logic or configuration
8232// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8233//
8234//
8235//    // Example sending a request using the PutBucketWebsiteRequest method.
8236//    req, resp := client.PutBucketWebsiteRequest(params)
8237//
8238//    err := req.Send()
8239//    if err == nil { // resp is now filled
8240//        fmt.Println(resp)
8241//    }
8242//
8243// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
8244func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
8245	op := &request.Operation{
8246		Name:       opPutBucketWebsite,
8247		HTTPMethod: "PUT",
8248		HTTPPath:   "/{Bucket}?website",
8249	}
8250
8251	if input == nil {
8252		input = &PutBucketWebsiteInput{}
8253	}
8254
8255	output = &PutBucketWebsiteOutput{}
8256	req = c.newRequest(op, input, output)
8257	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8258	return
8259}
8260
8261// PutBucketWebsite API operation for Amazon Simple Storage Service.
8262//
8263// Sets the configuration of the website that is specified in the website subresource.
8264// To configure a bucket as a website, you can add this subresource on the bucket
8265// with website configuration information such as the file name of the index
8266// document and any redirect rules. For more information, see Hosting Websites
8267// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
8268//
8269// This PUT operation requires the S3:PutBucketWebsite permission. By default,
8270// only the bucket owner can configure the website attached to a bucket; however,
8271// bucket owners can allow other users to set the website configuration by writing
8272// a bucket policy that grants them the S3:PutBucketWebsite permission.
8273//
8274// To redirect all website requests sent to the bucket's website endpoint, you
8275// add a website configuration with the following elements. Because all requests
8276// are sent to another website, you don't need to provide index document name
8277// for the bucket.
8278//
8279//    * WebsiteConfiguration
8280//
8281//    * RedirectAllRequestsTo
8282//
8283//    * HostName
8284//
8285//    * Protocol
8286//
8287// If you want granular control over redirects, you can use the following elements
8288// to add routing rules that describe conditions for redirecting requests and
8289// information about the redirect destination. In this case, the website configuration
8290// must provide an index document for the bucket, because some requests might
8291// not be redirected.
8292//
8293//    * WebsiteConfiguration
8294//
8295//    * IndexDocument
8296//
8297//    * Suffix
8298//
8299//    * ErrorDocument
8300//
8301//    * Key
8302//
8303//    * RoutingRules
8304//
8305//    * RoutingRule
8306//
8307//    * Condition
8308//
8309//    * HttpErrorCodeReturnedEquals
8310//
8311//    * KeyPrefixEquals
8312//
8313//    * Redirect
8314//
8315//    * Protocol
8316//
8317//    * HostName
8318//
8319//    * ReplaceKeyPrefixWith
8320//
8321//    * ReplaceKeyWith
8322//
8323//    * HttpRedirectCode
8324//
8325// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8326// with awserr.Error's Code and Message methods to get detailed information about
8327// the error.
8328//
8329// See the AWS API reference guide for Amazon Simple Storage Service's
8330// API operation PutBucketWebsite for usage and error information.
8331// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
8332func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
8333	req, out := c.PutBucketWebsiteRequest(input)
8334	return out, req.Send()
8335}
8336
8337// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
8338// the ability to pass a context and additional request options.
8339//
8340// See PutBucketWebsite for details on how to use this API operation.
8341//
8342// The context must be non-nil and will be used for request cancellation. If
8343// the context is nil a panic will occur. In the future the SDK may create
8344// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8345// for more information on using Contexts.
8346func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
8347	req, out := c.PutBucketWebsiteRequest(input)
8348	req.SetContext(ctx)
8349	req.ApplyOptions(opts...)
8350	return out, req.Send()
8351}
8352
8353const opPutObject = "PutObject"
8354
8355// PutObjectRequest generates a "aws/request.Request" representing the
8356// client's request for the PutObject operation. The "output" return
8357// value will be populated with the request's response once the request completes
8358// successfully.
8359//
8360// Use "Send" method on the returned Request to send the API call to the service.
8361// the "output" return value is not valid until after Send returns without error.
8362//
8363// See PutObject for more information on using the PutObject
8364// API call, and error handling.
8365//
8366// This method is useful when you want to inject custom logic or configuration
8367// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8368//
8369//
8370//    // Example sending a request using the PutObjectRequest method.
8371//    req, resp := client.PutObjectRequest(params)
8372//
8373//    err := req.Send()
8374//    if err == nil { // resp is now filled
8375//        fmt.Println(resp)
8376//    }
8377//
8378// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
8379func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
8380	op := &request.Operation{
8381		Name:       opPutObject,
8382		HTTPMethod: "PUT",
8383		HTTPPath:   "/{Bucket}/{Key+}",
8384	}
8385
8386	if input == nil {
8387		input = &PutObjectInput{}
8388	}
8389
8390	output = &PutObjectOutput{}
8391	req = c.newRequest(op, input, output)
8392	return
8393}
8394
8395// PutObject API operation for Amazon Simple Storage Service.
8396//
8397// Adds an object to a bucket. You must have WRITE permissions on a bucket to
8398// add an object to it.
8399//
8400// Amazon S3 never adds partial objects; if you receive a success response,
8401// Amazon S3 added the entire object to the bucket.
8402//
8403// Amazon S3 is a distributed system. If it receives multiple write requests
8404// for the same object simultaneously, it overwrites all but the last object
8405// written. Amazon S3 does not provide object locking; if you need this, make
8406// sure to build it into your application layer or use versioning instead.
8407//
8408// To ensure that data is not corrupted traversing the network, use the Content-MD5
8409// header. When you use this header, Amazon S3 checks the object against the
8410// provided MD5 value and, if they do not match, returns an error. Additionally,
8411// you can calculate the MD5 while putting an object to Amazon S3 and compare
8412// the returned ETag to the calculated MD5 value.
8413//
8414// To configure your application to send the request headers before sending
8415// the request body, use the 100-continue HTTP status code. For PUT operations,
8416// this helps you avoid sending the message body if the message is rejected
8417// based on the headers (for example, because authentication fails or a redirect
8418// occurs). For more information on the 100-continue HTTP status code, see Section
8419// 8.2.3 of http://www.ietf.org/rfc/rfc2616.txt (http://www.ietf.org/rfc/rfc2616.txt).
8420//
8421// You can optionally request server-side encryption. With server-side encryption,
8422// Amazon S3 encrypts your data as it writes it to disks in its data centers
8423// and decrypts the data when you access it. You have the option to provide
8424// your own encryption key or use AWS managed encryption keys. For more information,
8425// see Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
8426//
8427// Access Permissions
8428//
8429// You can optionally specify the accounts or groups that should be granted
8430// specific permissions on the new object. There are two ways to grant the permissions
8431// using the request headers:
8432//
8433//    * Specify a canned ACL with the x-amz-acl request header. For more information,
8434//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
8435//
8436//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
8437//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
8438//    map to the set of permissions that Amazon S3 supports in an ACL. For more
8439//    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
8440//
8441// You can use either a canned ACL or specify access permissions explicitly.
8442// You cannot do both.
8443//
8444// Server-Side- Encryption-Specific Request Headers
8445//
8446// You can optionally tell Amazon S3 to encrypt data at rest using server-side
8447// encryption. Server-side encryption is for data encryption at rest. Amazon
8448// S3 encrypts your data as it writes it to disks in its data centers and decrypts
8449// it when you access it. The option you use depends on whether you want to
8450// use AWS managed encryption keys or provide your own encryption key.
8451//
8452//    * Use encryption keys managed by Amazon S3 or customer master keys (CMKs)
8453//    stored in AWS Key Management Service (AWS KMS) – If you want AWS to
8454//    manage the keys used to encrypt data, specify the following headers in
8455//    the request. x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id
8456//    x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms,
8457//    but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon
8458//    S3 uses the AWS managed CMK in AWS KMS to protect the data. All GET and
8459//    PUT requests for an object protected by AWS KMS fail if you don't make
8460//    them with SSL or by using SigV4. For more information about server-side
8461//    encryption with CMKs stored in AWS KMS (SSE-KMS), see Protecting Data
8462//    Using Server-Side Encryption with CMKs stored in AWS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
8463//
8464//    * Use customer-provided encryption keys – If you want to manage your
8465//    own encryption keys, provide all the following headers in the request.
8466//    x-amz-server-side​-encryption​-customer-algorithm x-amz-server-side​-encryption​-customer-key
8467//    x-amz-server-side​-encryption​-customer-key-MD5 For more information
8468//    about server-side encryption with CMKs stored in KMS (SSE-KMS), see Protecting
8469//    Data Using Server-Side Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
8470//
8471// Access-Control-List (ACL)-Specific Request Headers
8472//
8473// You also can use the following access control–related headers with this
8474// operation. By default, all objects are private. Only the owner has full access
8475// control. When adding a new object, you can grant permissions to individual
8476// AWS accounts or to predefined groups defined by Amazon S3. These permissions
8477// are then added to the Access Control List (ACL) on the object. For more information,
8478// see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
8479// With this operation, you can grant access permissions using one of the following
8480// two methods:
8481//
8482//    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
8483//    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
8484//    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
8485//
8486//    * Specify access permissions explicitly — To explicitly grant access
8487//    permissions to specific AWS accounts or groups, use the following headers.
8488//    Each header maps to specific permissions that Amazon S3 supports in an
8489//    ACL. For more information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
8490//    In the header, you specify a list of grantees who get the specific permission.
8491//    To grant permissions explicitly use: x-amz-grant-read x-amz-grant-write
8492//    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
8493//    specify each grantee as a type=value pair, where the type is one of the
8494//    following: emailAddress – if the value specified is the email address
8495//    of an AWS account Using email addresses to specify a grantee is only supported
8496//    in the following AWS Regions: US East (N. Virginia) US West (N. California)
8497//    US West (Oregon) Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific
8498//    (Tokyo) EU (Ireland) South America (São Paulo) For a list of all the
8499//    Amazon S3 supported Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
8500//    in the AWS General Reference id – if the value specified is the canonical
8501//    user ID of an AWS account uri – if you are granting permissions to a
8502//    predefined group For example, the following x-amz-grant-read header grants
8503//    the AWS accounts identified by email addresses permissions to read object
8504//    data and its metadata: x-amz-grant-read: emailAddress="xyz@amazon.com",
8505//    emailAddress="abc@amazon.com"
8506//
8507// Server-Side- Encryption-Specific Request Headers
8508//
8509// You can optionally tell Amazon S3 to encrypt data at rest using server-side
8510// encryption. Server-side encryption is for data encryption at rest. Amazon
8511// S3 encrypts your data as it writes it to disks in its data centers and decrypts
8512// it when you access it. The option you use depends on whether you want to
8513// use AWS-managed encryption keys or provide your own encryption key.
8514//
8515//    * Use encryption keys managed by Amazon S3 or customer master keys (CMKs)
8516//    stored in AWS Key Management Service (AWS KMS) – If you want AWS to
8517//    manage the keys used to encrypt data, specify the following headers in
8518//    the request. x-amz-server-side​-encryption x-amz-server-side-encryption-aws-kms-key-id
8519//    x-amz-server-side-encryption-context If you specify x-amz-server-side-encryption:aws:kms,
8520//    but don't provide x-amz-server-side- encryption-aws-kms-key-id, Amazon
8521//    S3 uses the default AWS KMS CMK to protect the data. All GET and PUT requests
8522//    for an object protected by AWS KMS fail if you don't make them with SSL
8523//    or by using SigV4. For more information about server-side encryption with
8524//    CMKs stored in AWS KMS (SSE-KMS), see Protecting Data Using Server-Side
8525//    Encryption with CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
8526//
8527//    * Use customer-provided encryption keys – If you want to manage your
8528//    own encryption keys, provide all the following headers in the request.
8529//    If you use this feature, the ETag value that Amazon S3 returns in the
8530//    response is not the MD5 of the object. x-amz-server-side​-encryption​-customer-algorithm
8531//    x-amz-server-side​-encryption​-customer-key x-amz-server-side​-encryption​-customer-key-MD5
8532//    For more information about server-side encryption with CMKs stored in
8533//    AWS KMS (SSE-KMS), see Protecting Data Using Server-Side Encryption with
8534//    CMKs stored in AWS KMS (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
8535//
8536// Storage Class Options
8537//
8538// By default, Amazon S3 uses the Standard storage class to store newly created
8539// objects. The Standard storage class provides high durability and high availability.
8540// You can specify other storage classes depending on the performance needs.
8541// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
8542// in the Amazon Simple Storage Service Developer Guide.
8543//
8544// Versioning
8545//
8546// If you enable versioning for a bucket, Amazon S3 automatically generates
8547// a unique version ID for the object being stored. Amazon S3 returns this ID
8548// in the response using the x-amz-version-id response header. If versioning
8549// is suspended, Amazon S3 always uses null as the version ID for the object
8550// stored. For more information about returning the versioning state of a bucket,
8551// see GetBucketVersioning. If you enable versioning for a bucket, when Amazon
8552// S3 receives multiple write requests for the same object simultaneously, it
8553// stores all of the objects.
8554//
8555// Related Resources
8556//
8557//    * CopyObject
8558//
8559//    * DeleteObject
8560//
8561// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8562// with awserr.Error's Code and Message methods to get detailed information about
8563// the error.
8564//
8565// See the AWS API reference guide for Amazon Simple Storage Service's
8566// API operation PutObject for usage and error information.
8567// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
8568func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
8569	req, out := c.PutObjectRequest(input)
8570	return out, req.Send()
8571}
8572
8573// PutObjectWithContext is the same as PutObject with the addition of
8574// the ability to pass a context and additional request options.
8575//
8576// See PutObject for details on how to use this API operation.
8577//
8578// The context must be non-nil and will be used for request cancellation. If
8579// the context is nil a panic will occur. In the future the SDK may create
8580// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8581// for more information on using Contexts.
8582func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
8583	req, out := c.PutObjectRequest(input)
8584	req.SetContext(ctx)
8585	req.ApplyOptions(opts...)
8586	return out, req.Send()
8587}
8588
8589const opPutObjectAcl = "PutObjectAcl"
8590
8591// PutObjectAclRequest generates a "aws/request.Request" representing the
8592// client's request for the PutObjectAcl operation. The "output" return
8593// value will be populated with the request's response once the request completes
8594// successfully.
8595//
8596// Use "Send" method on the returned Request to send the API call to the service.
8597// the "output" return value is not valid until after Send returns without error.
8598//
8599// See PutObjectAcl for more information on using the PutObjectAcl
8600// API call, and error handling.
8601//
8602// This method is useful when you want to inject custom logic or configuration
8603// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8604//
8605//
8606//    // Example sending a request using the PutObjectAclRequest method.
8607//    req, resp := client.PutObjectAclRequest(params)
8608//
8609//    err := req.Send()
8610//    if err == nil { // resp is now filled
8611//        fmt.Println(resp)
8612//    }
8613//
8614// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
8615func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
8616	op := &request.Operation{
8617		Name:       opPutObjectAcl,
8618		HTTPMethod: "PUT",
8619		HTTPPath:   "/{Bucket}/{Key+}?acl",
8620	}
8621
8622	if input == nil {
8623		input = &PutObjectAclInput{}
8624	}
8625
8626	output = &PutObjectAclOutput{}
8627	req = c.newRequest(op, input, output)
8628	return
8629}
8630
8631// PutObjectAcl API operation for Amazon Simple Storage Service.
8632//
8633// Uses the acl subresource to set the access control list (ACL) permissions
8634// for an object that already exists in a bucket. You must have WRITE_ACP permission
8635// to set the ACL of an object.
8636//
8637// Depending on your application needs, you can choose to set the ACL on an
8638// object using either the request body or the headers. For example, if you
8639// have an existing application that updates a bucket ACL using the request
8640// body, you can continue to use that approach.
8641//
8642// Access Permissions
8643//
8644// You can set access permissions using one of the following methods:
8645//
8646//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
8647//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
8648//    predefined set of grantees and permissions. Specify the canned ACL name
8649//    as the value of x-amz-acl. If you use this header, you cannot use other
8650//    access control-specific headers in your request. For more information,
8651//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
8652//
8653//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
8654//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
8655//    these headers, you specify explicit access permissions and grantees (AWS
8656//    accounts or Amazon S3 groups) who will receive the permission. If you
8657//    use these ACL-specific headers, you cannot use x-amz-acl header to set
8658//    a canned ACL. These parameters map to the set of permissions that Amazon
8659//    S3 supports in an ACL. For more information, see Access Control List (ACL)
8660//    Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
8661//    You specify each grantee as a type=value pair, where the type is one of
8662//    the following: emailAddress – if the value specified is the email address
8663//    of an AWS account id – if the value specified is the canonical user
8664//    ID of an AWS account uri – if you are granting permissions to a predefined
8665//    group For example, the following x-amz-grant-read header grants list objects
8666//    permission to the two AWS accounts identified by their email addresses.
8667//    x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
8668//
8669// You can use either a canned ACL or specify access permissions explicitly.
8670// You cannot do both.
8671//
8672// Grantee Values
8673//
8674// You can specify the person (grantee) to whom you're assigning access rights
8675// (using request elements) in the following ways:
8676//
8677//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8678//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
8679//    The grantee is resolved to the CanonicalUser and, in a response to a GET
8680//    Object acl request, appears as the CanonicalUser.
8681//
8682//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8683//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
8684//    </Grantee> DisplayName is optional and ignored in the request.
8685//
8686//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8687//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
8688//
8689// Versioning
8690//
8691// The ACL of an object is set at the object version level. By default, PUT
8692// sets the ACL of the current version of an object. To set the ACL of a different
8693// version, use the versionId subresource.
8694//
8695// Related Resources
8696//
8697//    * CopyObject
8698//
8699//    * GetObject
8700//
8701// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8702// with awserr.Error's Code and Message methods to get detailed information about
8703// the error.
8704//
8705// See the AWS API reference guide for Amazon Simple Storage Service's
8706// API operation PutObjectAcl for usage and error information.
8707//
8708// Returned Error Codes:
8709//   * ErrCodeNoSuchKey "NoSuchKey"
8710//   The specified key does not exist.
8711//
8712// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
8713func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
8714	req, out := c.PutObjectAclRequest(input)
8715	return out, req.Send()
8716}
8717
8718// PutObjectAclWithContext is the same as PutObjectAcl with the addition of
8719// the ability to pass a context and additional request options.
8720//
8721// See PutObjectAcl for details on how to use this API operation.
8722//
8723// The context must be non-nil and will be used for request cancellation. If
8724// the context is nil a panic will occur. In the future the SDK may create
8725// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8726// for more information on using Contexts.
8727func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
8728	req, out := c.PutObjectAclRequest(input)
8729	req.SetContext(ctx)
8730	req.ApplyOptions(opts...)
8731	return out, req.Send()
8732}
8733
8734const opPutObjectLegalHold = "PutObjectLegalHold"
8735
8736// PutObjectLegalHoldRequest generates a "aws/request.Request" representing the
8737// client's request for the PutObjectLegalHold operation. The "output" return
8738// value will be populated with the request's response once the request completes
8739// successfully.
8740//
8741// Use "Send" method on the returned Request to send the API call to the service.
8742// the "output" return value is not valid until after Send returns without error.
8743//
8744// See PutObjectLegalHold for more information on using the PutObjectLegalHold
8745// API call, and error handling.
8746//
8747// This method is useful when you want to inject custom logic or configuration
8748// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8749//
8750//
8751//    // Example sending a request using the PutObjectLegalHoldRequest method.
8752//    req, resp := client.PutObjectLegalHoldRequest(params)
8753//
8754//    err := req.Send()
8755//    if err == nil { // resp is now filled
8756//        fmt.Println(resp)
8757//    }
8758//
8759// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
8760func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) {
8761	op := &request.Operation{
8762		Name:       opPutObjectLegalHold,
8763		HTTPMethod: "PUT",
8764		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
8765	}
8766
8767	if input == nil {
8768		input = &PutObjectLegalHoldInput{}
8769	}
8770
8771	output = &PutObjectLegalHoldOutput{}
8772	req = c.newRequest(op, input, output)
8773	return
8774}
8775
8776// PutObjectLegalHold API operation for Amazon Simple Storage Service.
8777//
8778// Applies a Legal Hold configuration to the specified object.
8779//
8780// Related Resources
8781//
8782//    * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)
8783//
8784// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8785// with awserr.Error's Code and Message methods to get detailed information about
8786// the error.
8787//
8788// See the AWS API reference guide for Amazon Simple Storage Service's
8789// API operation PutObjectLegalHold for usage and error information.
8790// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
8791func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) {
8792	req, out := c.PutObjectLegalHoldRequest(input)
8793	return out, req.Send()
8794}
8795
8796// PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of
8797// the ability to pass a context and additional request options.
8798//
8799// See PutObjectLegalHold for details on how to use this API operation.
8800//
8801// The context must be non-nil and will be used for request cancellation. If
8802// the context is nil a panic will occur. In the future the SDK may create
8803// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8804// for more information on using Contexts.
8805func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) {
8806	req, out := c.PutObjectLegalHoldRequest(input)
8807	req.SetContext(ctx)
8808	req.ApplyOptions(opts...)
8809	return out, req.Send()
8810}
8811
8812const opPutObjectLockConfiguration = "PutObjectLockConfiguration"
8813
8814// PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the
8815// client's request for the PutObjectLockConfiguration operation. The "output" return
8816// value will be populated with the request's response once the request completes
8817// successfully.
8818//
8819// Use "Send" method on the returned Request to send the API call to the service.
8820// the "output" return value is not valid until after Send returns without error.
8821//
8822// See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration
8823// API call, and error handling.
8824//
8825// This method is useful when you want to inject custom logic or configuration
8826// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8827//
8828//
8829//    // Example sending a request using the PutObjectLockConfigurationRequest method.
8830//    req, resp := client.PutObjectLockConfigurationRequest(params)
8831//
8832//    err := req.Send()
8833//    if err == nil { // resp is now filled
8834//        fmt.Println(resp)
8835//    }
8836//
8837// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
8838func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) {
8839	op := &request.Operation{
8840		Name:       opPutObjectLockConfiguration,
8841		HTTPMethod: "PUT",
8842		HTTPPath:   "/{Bucket}?object-lock",
8843	}
8844
8845	if input == nil {
8846		input = &PutObjectLockConfigurationInput{}
8847	}
8848
8849	output = &PutObjectLockConfigurationOutput{}
8850	req = c.newRequest(op, input, output)
8851	return
8852}
8853
8854// PutObjectLockConfiguration API operation for Amazon Simple Storage Service.
8855//
8856// Places an Object Lock configuration on the specified bucket. The rule specified
8857// in the Object Lock configuration will be applied by default to every new
8858// object placed in the specified bucket.
8859//
8860// DefaultRetention requires either Days or Years. You can't specify both at
8861// the same time.
8862//
8863// Related Resources
8864//
8865//    * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)
8866//
8867// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8868// with awserr.Error's Code and Message methods to get detailed information about
8869// the error.
8870//
8871// See the AWS API reference guide for Amazon Simple Storage Service's
8872// API operation PutObjectLockConfiguration for usage and error information.
8873// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
8874func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) {
8875	req, out := c.PutObjectLockConfigurationRequest(input)
8876	return out, req.Send()
8877}
8878
8879// PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of
8880// the ability to pass a context and additional request options.
8881//
8882// See PutObjectLockConfiguration for details on how to use this API operation.
8883//
8884// The context must be non-nil and will be used for request cancellation. If
8885// the context is nil a panic will occur. In the future the SDK may create
8886// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8887// for more information on using Contexts.
8888func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) {
8889	req, out := c.PutObjectLockConfigurationRequest(input)
8890	req.SetContext(ctx)
8891	req.ApplyOptions(opts...)
8892	return out, req.Send()
8893}
8894
8895const opPutObjectRetention = "PutObjectRetention"
8896
8897// PutObjectRetentionRequest generates a "aws/request.Request" representing the
8898// client's request for the PutObjectRetention operation. The "output" return
8899// value will be populated with the request's response once the request completes
8900// successfully.
8901//
8902// Use "Send" method on the returned Request to send the API call to the service.
8903// the "output" return value is not valid until after Send returns without error.
8904//
8905// See PutObjectRetention for more information on using the PutObjectRetention
8906// API call, and error handling.
8907//
8908// This method is useful when you want to inject custom logic or configuration
8909// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8910//
8911//
8912//    // Example sending a request using the PutObjectRetentionRequest method.
8913//    req, resp := client.PutObjectRetentionRequest(params)
8914//
8915//    err := req.Send()
8916//    if err == nil { // resp is now filled
8917//        fmt.Println(resp)
8918//    }
8919//
8920// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
8921func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) {
8922	op := &request.Operation{
8923		Name:       opPutObjectRetention,
8924		HTTPMethod: "PUT",
8925		HTTPPath:   "/{Bucket}/{Key+}?retention",
8926	}
8927
8928	if input == nil {
8929		input = &PutObjectRetentionInput{}
8930	}
8931
8932	output = &PutObjectRetentionOutput{}
8933	req = c.newRequest(op, input, output)
8934	return
8935}
8936
8937// PutObjectRetention API operation for Amazon Simple Storage Service.
8938//
8939// Places an Object Retention configuration on an object.
8940//
8941// Related Resources
8942//
8943//    * Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html)
8944//
8945// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8946// with awserr.Error's Code and Message methods to get detailed information about
8947// the error.
8948//
8949// See the AWS API reference guide for Amazon Simple Storage Service's
8950// API operation PutObjectRetention for usage and error information.
8951// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
8952func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) {
8953	req, out := c.PutObjectRetentionRequest(input)
8954	return out, req.Send()
8955}
8956
8957// PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of
8958// the ability to pass a context and additional request options.
8959//
8960// See PutObjectRetention for details on how to use this API operation.
8961//
8962// The context must be non-nil and will be used for request cancellation. If
8963// the context is nil a panic will occur. In the future the SDK may create
8964// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8965// for more information on using Contexts.
8966func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) {
8967	req, out := c.PutObjectRetentionRequest(input)
8968	req.SetContext(ctx)
8969	req.ApplyOptions(opts...)
8970	return out, req.Send()
8971}
8972
8973const opPutObjectTagging = "PutObjectTagging"
8974
8975// PutObjectTaggingRequest generates a "aws/request.Request" representing the
8976// client's request for the PutObjectTagging operation. The "output" return
8977// value will be populated with the request's response once the request completes
8978// successfully.
8979//
8980// Use "Send" method on the returned Request to send the API call to the service.
8981// the "output" return value is not valid until after Send returns without error.
8982//
8983// See PutObjectTagging for more information on using the PutObjectTagging
8984// API call, and error handling.
8985//
8986// This method is useful when you want to inject custom logic or configuration
8987// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8988//
8989//
8990//    // Example sending a request using the PutObjectTaggingRequest method.
8991//    req, resp := client.PutObjectTaggingRequest(params)
8992//
8993//    err := req.Send()
8994//    if err == nil { // resp is now filled
8995//        fmt.Println(resp)
8996//    }
8997//
8998// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
8999func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
9000	op := &request.Operation{
9001		Name:       opPutObjectTagging,
9002		HTTPMethod: "PUT",
9003		HTTPPath:   "/{Bucket}/{Key+}?tagging",
9004	}
9005
9006	if input == nil {
9007		input = &PutObjectTaggingInput{}
9008	}
9009
9010	output = &PutObjectTaggingOutput{}
9011	req = c.newRequest(op, input, output)
9012	return
9013}
9014
9015// PutObjectTagging API operation for Amazon Simple Storage Service.
9016//
9017// Sets the supplied tag-set to an object that already exists in a bucket
9018//
9019// A tag is a key-value pair. You can associate tags with an object by sending
9020// a PUT request against the tagging subresource that is associated with the
9021// object. You can retrieve tags by sending a GET request. For more information,
9022// see GetObjectTagging.
9023//
9024// For tagging-related restrictions related to characters and encodings, see
9025// Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html).
9026// Note that Amazon S3 limits the maximum number of tags to 10 tags per object.
9027//
9028// To use this operation, you must have permission to perform the s3:PutObjectTagging
9029// action. By default, the bucket owner has this permission and can grant this
9030// permission to others.
9031//
9032// To put tags of any other version, use the versionId query parameter. You
9033// also need permission for the s3:PutObjectVersionTagging action.
9034//
9035// For information about the Amazon S3 object tagging feature, see Object Tagging
9036// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9037//
9038// Special Errors
9039//
9040//    * Code: InvalidTagError Cause: The tag provided was not a valid tag. This
9041//    error can occur if the tag did not pass input validation. For more information,
9042//    see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9043//
9044//    * Code: MalformedXMLError Cause: The XML provided does not match the schema.
9045//
9046//    * Code: OperationAbortedError Cause: A conflicting conditional operation
9047//    is currently in progress against this resource. Please try again.
9048//
9049//    * Code: InternalError Cause: The service was unable to apply the provided
9050//    tag to the object.
9051//
9052// Related Resources
9053//
9054//    * GetObjectTagging
9055//
9056// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9057// with awserr.Error's Code and Message methods to get detailed information about
9058// the error.
9059//
9060// See the AWS API reference guide for Amazon Simple Storage Service's
9061// API operation PutObjectTagging for usage and error information.
9062// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
9063func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
9064	req, out := c.PutObjectTaggingRequest(input)
9065	return out, req.Send()
9066}
9067
9068// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
9069// the ability to pass a context and additional request options.
9070//
9071// See PutObjectTagging for details on how to use this API operation.
9072//
9073// The context must be non-nil and will be used for request cancellation. If
9074// the context is nil a panic will occur. In the future the SDK may create
9075// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9076// for more information on using Contexts.
9077func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
9078	req, out := c.PutObjectTaggingRequest(input)
9079	req.SetContext(ctx)
9080	req.ApplyOptions(opts...)
9081	return out, req.Send()
9082}
9083
9084const opPutPublicAccessBlock = "PutPublicAccessBlock"
9085
9086// PutPublicAccessBlockRequest generates a "aws/request.Request" representing the
9087// client's request for the PutPublicAccessBlock operation. The "output" return
9088// value will be populated with the request's response once the request completes
9089// successfully.
9090//
9091// Use "Send" method on the returned Request to send the API call to the service.
9092// the "output" return value is not valid until after Send returns without error.
9093//
9094// See PutPublicAccessBlock for more information on using the PutPublicAccessBlock
9095// API call, and error handling.
9096//
9097// This method is useful when you want to inject custom logic or configuration
9098// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9099//
9100//
9101//    // Example sending a request using the PutPublicAccessBlockRequest method.
9102//    req, resp := client.PutPublicAccessBlockRequest(params)
9103//
9104//    err := req.Send()
9105//    if err == nil { // resp is now filled
9106//        fmt.Println(resp)
9107//    }
9108//
9109// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9110func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) {
9111	op := &request.Operation{
9112		Name:       opPutPublicAccessBlock,
9113		HTTPMethod: "PUT",
9114		HTTPPath:   "/{Bucket}?publicAccessBlock",
9115	}
9116
9117	if input == nil {
9118		input = &PutPublicAccessBlockInput{}
9119	}
9120
9121	output = &PutPublicAccessBlockOutput{}
9122	req = c.newRequest(op, input, output)
9123	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
9124	return
9125}
9126
9127// PutPublicAccessBlock API operation for Amazon Simple Storage Service.
9128//
9129// Creates or modifies the PublicAccessBlock configuration for an Amazon S3
9130// bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock
9131// permission. For more information about Amazon S3 permissions, see Specifying
9132// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
9133//
9134// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
9135// or an object, it checks the PublicAccessBlock configuration for both the
9136// bucket (or the bucket that contains the object) and the bucket owner's account.
9137// If the PublicAccessBlock configurations are different between the bucket
9138// and the account, Amazon S3 uses the most restrictive combination of the bucket-level
9139// and account-level settings.
9140//
9141// For more information about when Amazon S3 considers a bucket or an object
9142// 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).
9143//
9144// Related Resources
9145//
9146//    * GetPublicAccessBlock
9147//
9148//    * DeletePublicAccessBlock
9149//
9150//    * GetBucketPolicyStatus
9151//
9152//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
9153//
9154// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9155// with awserr.Error's Code and Message methods to get detailed information about
9156// the error.
9157//
9158// See the AWS API reference guide for Amazon Simple Storage Service's
9159// API operation PutPublicAccessBlock for usage and error information.
9160// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9161func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) {
9162	req, out := c.PutPublicAccessBlockRequest(input)
9163	return out, req.Send()
9164}
9165
9166// PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of
9167// the ability to pass a context and additional request options.
9168//
9169// See PutPublicAccessBlock for details on how to use this API operation.
9170//
9171// The context must be non-nil and will be used for request cancellation. If
9172// the context is nil a panic will occur. In the future the SDK may create
9173// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9174// for more information on using Contexts.
9175func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) {
9176	req, out := c.PutPublicAccessBlockRequest(input)
9177	req.SetContext(ctx)
9178	req.ApplyOptions(opts...)
9179	return out, req.Send()
9180}
9181
9182const opRestoreObject = "RestoreObject"
9183
9184// RestoreObjectRequest generates a "aws/request.Request" representing the
9185// client's request for the RestoreObject operation. The "output" return
9186// value will be populated with the request's response once the request completes
9187// successfully.
9188//
9189// Use "Send" method on the returned Request to send the API call to the service.
9190// the "output" return value is not valid until after Send returns without error.
9191//
9192// See RestoreObject for more information on using the RestoreObject
9193// API call, and error handling.
9194//
9195// This method is useful when you want to inject custom logic or configuration
9196// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9197//
9198//
9199//    // Example sending a request using the RestoreObjectRequest method.
9200//    req, resp := client.RestoreObjectRequest(params)
9201//
9202//    err := req.Send()
9203//    if err == nil { // resp is now filled
9204//        fmt.Println(resp)
9205//    }
9206//
9207// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
9208func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
9209	op := &request.Operation{
9210		Name:       opRestoreObject,
9211		HTTPMethod: "POST",
9212		HTTPPath:   "/{Bucket}/{Key+}?restore",
9213	}
9214
9215	if input == nil {
9216		input = &RestoreObjectInput{}
9217	}
9218
9219	output = &RestoreObjectOutput{}
9220	req = c.newRequest(op, input, output)
9221	return
9222}
9223
9224// RestoreObject API operation for Amazon Simple Storage Service.
9225//
9226// Restores an archived copy of an object back into Amazon S3
9227//
9228// This operation performs the following types of requests:
9229//
9230//    * select - Perform a select query on an archived object
9231//
9232//    * restore an archive - Restore an archived object
9233//
9234// To use this operation, you must have permissions to perform the s3:RestoreObject
9235// and s3:GetObject actions. The bucket owner has this permission by default
9236// and can grant this permission to others. For more information about permissions,
9237// 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)
9238// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-access-control.html)
9239// in the Amazon Simple Storage Service Developer Guide.
9240//
9241// Querying Archives with Select Requests
9242//
9243// You use a select type of request to perform SQL queries on archived objects.
9244// The archived objects that are being queried by the select request must be
9245// formatted as uncompressed comma-separated values (CSV) files. You can run
9246// queries and custom analytics on your archived data without having to restore
9247// your data to a hotter Amazon S3 tier. For an overview about select requests,
9248// see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
9249// in the Amazon Simple Storage Service Developer Guide.
9250//
9251// When making a select request, do the following:
9252//
9253//    * Define an output location for the select query's output. This must be
9254//    an Amazon S3 bucket in the same AWS Region as the bucket that contains
9255//    the archive object that is being queried. The AWS account that initiates
9256//    the job must have permissions to write to the S3 bucket. You can specify
9257//    the storage class and encryption for the output objects stored in the
9258//    bucket. For more information about output, see Querying Archived Objects
9259//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
9260//    in the Amazon Simple Storage Service Developer Guide. For more information
9261//    about the S3 structure in the request body, see the following: PutObject
9262//    Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html)
9263//    in the Amazon Simple Storage Service Developer Guide Protecting Data Using
9264//    Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
9265//    in the Amazon Simple Storage Service Developer Guide
9266//
9267//    * Define the SQL expression for the SELECT type of restoration for your
9268//    query in the request body's SelectParameters structure. You can use expressions
9269//    like the following examples. The following expression returns all records
9270//    from the specified object. SELECT * FROM Object Assuming that you are
9271//    not using any headers for data stored in the object, you can specify columns
9272//    with positional headers. SELECT s._1, s._2 FROM Object s WHERE s._3 >
9273//    100 If you have headers and you set the fileHeaderInfo in the CSV structure
9274//    in the request body to USE, you can specify headers in the query. (If
9275//    you set the fileHeaderInfo field to IGNORE, the first row is skipped for
9276//    the query.) You cannot mix ordinal positions with header column names.
9277//    SELECT s.Id, s.FirstName, s.SSN FROM S3Object s
9278//
9279// For more information about using SQL with Glacier Select restore, see SQL
9280// Reference for Amazon S3 Select and Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
9281// in the Amazon Simple Storage Service Developer Guide.
9282//
9283// When making a select request, you can also do the following:
9284//
9285//    * To expedite your queries, specify the Expedited tier. For more information
9286//    about tiers, see "Restoring Archives," later in this topic.
9287//
9288//    * Specify details about the data serialization format of both the input
9289//    object that is being queried and the serialization of the CSV-encoded
9290//    query results.
9291//
9292// The following are additional important facts about the select feature:
9293//
9294//    * The output results are new Amazon S3 objects. Unlike archive retrievals,
9295//    they are stored until explicitly deleted-manually or through a lifecycle
9296//    policy.
9297//
9298//    * You can issue more than one select request on the same Amazon S3 object.
9299//    Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate requests.
9300//
9301//    * Amazon S3 accepts a select request even if the object has already been
9302//    restored. A select request doesn’t return error response 409.
9303//
9304// Restoring Archives
9305//
9306// Objects in the GLACIER and DEEP_ARCHIVE storage classes are archived. To
9307// access an archived object, you must first initiate a restore request. This
9308// restores a temporary copy of the archived object. In a restore request, you
9309// specify the number of days that you want the restored copy to exist. After
9310// the specified period, Amazon S3 deletes the temporary copy but the object
9311// remains archived in the GLACIER or DEEP_ARCHIVE storage class that object
9312// was restored from.
9313//
9314// To restore a specific object version, you can provide a version ID. If you
9315// don't provide a version ID, Amazon S3 restores the current version.
9316//
9317// The time it takes restore jobs to finish depends on which storage class the
9318// object is being restored from and which data access tier you specify.
9319//
9320// When restoring an archived object (or using a select request), you can specify
9321// one of the following data access tier options in the Tier element of the
9322// request body:
9323//
9324//    * Expedited - Expedited retrievals allow you to quickly access your data
9325//    stored in the GLACIER storage class when occasional urgent requests for
9326//    a subset of archives are required. For all but the largest archived objects
9327//    (250 MB+), data accessed using Expedited retrievals are typically made
9328//    available within 1–5 minutes. Provisioned capacity ensures that retrieval
9329//    capacity for Expedited retrievals is available when you need it. Expedited
9330//    retrievals and provisioned capacity are not available for the DEEP_ARCHIVE
9331//    storage class.
9332//
9333//    * Standard - Standard retrievals allow you to access any of your archived
9334//    objects within several hours. This is the default option for the GLACIER
9335//    and DEEP_ARCHIVE retrieval requests that do not specify the retrieval
9336//    option. Standard retrievals typically complete within 3-5 hours from the
9337//    GLACIER storage class and typically complete within 12 hours from the
9338//    DEEP_ARCHIVE storage class.
9339//
9340//    * Bulk - Bulk retrievals are Amazon S3 Glacier’s lowest-cost retrieval
9341//    option, enabling you to retrieve large amounts, even petabytes, of data
9342//    inexpensively in a day. Bulk retrievals typically complete within 5-12
9343//    hours from the GLACIER storage class and typically complete within 48
9344//    hours from the DEEP_ARCHIVE storage class.
9345//
9346// For more information about archive retrieval options and provisioned capacity
9347// for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)
9348// in the Amazon Simple Storage Service Developer Guide.
9349//
9350// You can use Amazon S3 restore speed upgrade to change the restore speed to
9351// a faster speed while it is in progress. You upgrade the speed of an in-progress
9352// restoration by issuing another restore request to the same object, setting
9353// a new Tier request element. When issuing a request to upgrade the restore
9354// tier, you must choose a tier that is faster than the tier that the in-progress
9355// restore is using. You must not change any other parameters, such as the Days
9356// request element. For more information, see Upgrading the Speed of an In-Progress
9357// Restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
9358// in the Amazon Simple Storage Service Developer Guide.
9359//
9360// To get the status of object restoration, you can send a HEAD request. Operations
9361// return the x-amz-restore header, which provides information about the restoration
9362// status, in the response. You can use Amazon S3 event notifications to notify
9363// you when a restore is initiated or completed. For more information, see Configuring
9364// Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
9365// in the Amazon Simple Storage Service Developer Guide.
9366//
9367// After restoring an archived object, you can update the restoration period
9368// by reissuing the request with a new period. Amazon S3 updates the restoration
9369// period relative to the current time and charges only for the request-there
9370// are no data transfer charges. You cannot update the restoration period when
9371// Amazon S3 is actively processing your current restore request for the object.
9372//
9373// If your bucket has a lifecycle configuration with a rule that includes an
9374// expiration action, the object expiration overrides the life span that you
9375// specify in a restore request. For example, if you restore an object copy
9376// for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 deletes
9377// the object in 3 days. For more information about lifecycle configuration,
9378// see PutBucketLifecycleConfiguration and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
9379// in Amazon Simple Storage Service Developer Guide.
9380//
9381// Responses
9382//
9383// A successful operation returns either the 200 OK or 202 Accepted status code.
9384//
9385//    * If the object copy is not previously restored, then Amazon S3 returns
9386//    202 Accepted in the response.
9387//
9388//    * If the object copy is previously restored, Amazon S3 returns 200 OK
9389//    in the response.
9390//
9391// Special Errors
9392//
9393//    * Code: RestoreAlreadyInProgress Cause: Object restore is already in progress.
9394//    (This error does not apply to SELECT type requests.) HTTP Status Code:
9395//    409 Conflict SOAP Fault Code Prefix: Client
9396//
9397//    * Code: GlacierExpeditedRetrievalNotAvailable Cause: Glacier expedited
9398//    retrievals are currently not available. Try again later. (Returned if
9399//    there is insufficient capacity to process the Expedited request. This
9400//    error applies only to Expedited retrievals and not to Standard or Bulk
9401//    retrievals.) HTTP Status Code: 503 SOAP Fault Code Prefix: N/A
9402//
9403// Related Resources
9404//
9405//    * PutBucketLifecycleConfiguration
9406//
9407//    * GetBucketNotificationConfiguration
9408//
9409//    * SQL Reference for Amazon S3 Select and Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
9410//    in the Amazon Simple Storage Service Developer Guide
9411//
9412// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9413// with awserr.Error's Code and Message methods to get detailed information about
9414// the error.
9415//
9416// See the AWS API reference guide for Amazon Simple Storage Service's
9417// API operation RestoreObject for usage and error information.
9418//
9419// Returned Error Codes:
9420//   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
9421//   This operation is not allowed against this storage tier.
9422//
9423// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
9424func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
9425	req, out := c.RestoreObjectRequest(input)
9426	return out, req.Send()
9427}
9428
9429// RestoreObjectWithContext is the same as RestoreObject with the addition of
9430// the ability to pass a context and additional request options.
9431//
9432// See RestoreObject for details on how to use this API operation.
9433//
9434// The context must be non-nil and will be used for request cancellation. If
9435// the context is nil a panic will occur. In the future the SDK may create
9436// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9437// for more information on using Contexts.
9438func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
9439	req, out := c.RestoreObjectRequest(input)
9440	req.SetContext(ctx)
9441	req.ApplyOptions(opts...)
9442	return out, req.Send()
9443}
9444
9445const opSelectObjectContent = "SelectObjectContent"
9446
9447// SelectObjectContentRequest generates a "aws/request.Request" representing the
9448// client's request for the SelectObjectContent operation. The "output" return
9449// value will be populated with the request's response once the request completes
9450// successfully.
9451//
9452// Use "Send" method on the returned Request to send the API call to the service.
9453// the "output" return value is not valid until after Send returns without error.
9454//
9455// See SelectObjectContent for more information on using the SelectObjectContent
9456// API call, and error handling.
9457//
9458// This method is useful when you want to inject custom logic or configuration
9459// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9460//
9461//
9462//    // Example sending a request using the SelectObjectContentRequest method.
9463//    req, resp := client.SelectObjectContentRequest(params)
9464//
9465//    err := req.Send()
9466//    if err == nil { // resp is now filled
9467//        fmt.Println(resp)
9468//    }
9469//
9470// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
9471func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
9472	op := &request.Operation{
9473		Name:       opSelectObjectContent,
9474		HTTPMethod: "POST",
9475		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
9476	}
9477
9478	if input == nil {
9479		input = &SelectObjectContentInput{}
9480	}
9481
9482	output = &SelectObjectContentOutput{}
9483	req = c.newRequest(op, input, output)
9484	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
9485	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
9486	req.Handlers.Unmarshal.PushBack(output.runEventStreamLoop)
9487	return
9488}
9489
9490// SelectObjectContent API operation for Amazon Simple Storage Service.
9491//
9492// This operation filters the contents of an Amazon S3 object based on a simple
9493// structured query language (SQL) statement. In the request, along with the
9494// SQL expression, you must also specify a data serialization format (JSON,
9495// CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse
9496// object data into records, and returns only records that match the specified
9497// SQL expression. You must also specify the data serialization format for the
9498// response.
9499//
9500// For more information about Amazon S3 Select, see Selecting Content from Objects
9501// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
9502// in the Amazon Simple Storage Service Developer Guide.
9503//
9504// For more information about using SQL with Amazon S3 Select, see SQL Reference
9505// for Amazon S3 Select and Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
9506// in the Amazon Simple Storage Service Developer Guide.
9507//
9508// Permissions
9509//
9510// You must have s3:GetObject permission for this operation. Amazon S3 Select
9511// does not support anonymous access. For more information about permissions,
9512// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
9513// in the Amazon Simple Storage Service Developer Guide.
9514//
9515// Object Data Formats
9516//
9517// You can use Amazon S3 Select to query objects that have the following format
9518// properties:
9519//
9520//    * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet format.
9521//
9522//    * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports.
9523//
9524//    * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or BZIP2.
9525//    GZIP and BZIP2 are the only compression formats that Amazon S3 Select
9526//    supports for CSV and JSON files. Amazon S3 Select supports columnar compression
9527//    for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object
9528//    compression for Parquet objects.
9529//
9530//    * Server-side encryption - Amazon S3 Select supports querying objects
9531//    that are protected with server-side encryption. For objects that are encrypted
9532//    with customer-provided encryption keys (SSE-C), you must use HTTPS, and
9533//    you must use the headers that are documented in the GetObject. For more
9534//    information about SSE-C, see Server-Side Encryption (Using Customer-Provided
9535//    Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
9536//    in the Amazon Simple Storage Service Developer Guide. For objects that
9537//    are encrypted with Amazon S3 managed encryption keys (SSE-S3) and customer
9538//    master keys (CMKs) stored in AWS Key Management Service (SSE-KMS), server-side
9539//    encryption is handled transparently, so you don't need to specify anything.
9540//    For more information about server-side encryption, including SSE-S3 and
9541//    SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
9542//    in the Amazon Simple Storage Service Developer Guide.
9543//
9544// Working with the Response Body
9545//
9546// Given the response size is unknown, Amazon S3 Select streams the response
9547// as a series of messages and includes a Transfer-Encoding header with chunked
9548// as its value in the response. For more information, see RESTSelectObjectAppendix .
9549//
9550// GetObject Support
9551//
9552// The SelectObjectContent operation does not support the following GetObject
9553// functionality. For more information, see GetObject.
9554//
9555//    * Range: While you can specify a scan range for a Amazon S3 Select request,
9556//    see SelectObjectContentRequest$ScanRange in the request parameters below,
9557//    you cannot specify the range of bytes of an object to return.
9558//
9559//    * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
9560//    specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes.
9561//    For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro)
9562//    in the Amazon Simple Storage Service Developer Guide.
9563//
9564// Special Errors
9565//
9566// For a list of special errors for this operation and for general information
9567// about Amazon S3 errors and a list of error codes, see ErrorResponses
9568//
9569// Related Resources
9570//
9571//    * GetObject
9572//
9573//    * GetBucketLifecycleConfiguration
9574//
9575//    * PutBucketLifecycleConfiguration
9576//
9577// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9578// with awserr.Error's Code and Message methods to get detailed information about
9579// the error.
9580//
9581// See the AWS API reference guide for Amazon Simple Storage Service's
9582// API operation SelectObjectContent for usage and error information.
9583// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
9584func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
9585	req, out := c.SelectObjectContentRequest(input)
9586	return out, req.Send()
9587}
9588
9589// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
9590// the ability to pass a context and additional request options.
9591//
9592// See SelectObjectContent for details on how to use this API operation.
9593//
9594// The context must be non-nil and will be used for request cancellation. If
9595// the context is nil a panic will occur. In the future the SDK may create
9596// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9597// for more information on using Contexts.
9598func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
9599	req, out := c.SelectObjectContentRequest(input)
9600	req.SetContext(ctx)
9601	req.ApplyOptions(opts...)
9602	return out, req.Send()
9603}
9604
9605const opUploadPart = "UploadPart"
9606
9607// UploadPartRequest generates a "aws/request.Request" representing the
9608// client's request for the UploadPart operation. The "output" return
9609// value will be populated with the request's response once the request completes
9610// successfully.
9611//
9612// Use "Send" method on the returned Request to send the API call to the service.
9613// the "output" return value is not valid until after Send returns without error.
9614//
9615// See UploadPart for more information on using the UploadPart
9616// API call, and error handling.
9617//
9618// This method is useful when you want to inject custom logic or configuration
9619// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9620//
9621//
9622//    // Example sending a request using the UploadPartRequest method.
9623//    req, resp := client.UploadPartRequest(params)
9624//
9625//    err := req.Send()
9626//    if err == nil { // resp is now filled
9627//        fmt.Println(resp)
9628//    }
9629//
9630// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
9631func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
9632	op := &request.Operation{
9633		Name:       opUploadPart,
9634		HTTPMethod: "PUT",
9635		HTTPPath:   "/{Bucket}/{Key+}",
9636	}
9637
9638	if input == nil {
9639		input = &UploadPartInput{}
9640	}
9641
9642	output = &UploadPartOutput{}
9643	req = c.newRequest(op, input, output)
9644	return
9645}
9646
9647// UploadPart API operation for Amazon Simple Storage Service.
9648//
9649// Uploads a part in a multipart upload.
9650//
9651// In this operation, you provide part data in your request. However, you have
9652// an option to specify your existing Amazon S3 object as a data source for
9653// the part you are uploading. To upload a part from an existing object, you
9654// use the UploadPartCopy operation.
9655//
9656// You must initiate a multipart upload (see CreateMultipartUpload) before you
9657// can upload any part. In response to your initiate request, Amazon S3 returns
9658// an upload ID, a unique identifier, that you must include in your upload part
9659// request.
9660//
9661// Part numbers can be any number from 1 to 10,000, inclusive. A part number
9662// uniquely identifies a part and also defines its position within the object
9663// being created. If you upload a new part using the same part number that was
9664// used with a previous part, the previously uploaded part is overwritten. Each
9665// part must be at least 5 MB in size, except the last part. There is no size
9666// limit on the last part of your multipart upload.
9667//
9668// To ensure that data is not corrupted when traversing the network, specify
9669// the Content-MD5 header in the upload part request. Amazon S3 checks the part
9670// data against the provided MD5 value. If they do not match, Amazon S3 returns
9671// an error.
9672//
9673// Note: After you initiate multipart upload and upload one or more parts, you
9674// must either complete or abort multipart upload in order to stop getting charged
9675// for storage of the uploaded parts. Only after you either complete or abort
9676// multipart upload, Amazon S3 frees up the parts storage and stops charging
9677// you for the parts storage.
9678//
9679// For more information on multipart uploads, go to Multipart Upload Overview
9680// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the
9681// Amazon Simple Storage Service Developer Guide .
9682//
9683// For information on the permissions required to use the multipart upload API,
9684// go to Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
9685// in the Amazon Simple Storage Service Developer Guide.
9686//
9687// You can optionally request server-side encryption where Amazon S3 encrypts
9688// your data as it writes it to disks in its data centers and decrypts it for
9689// you when you access it. You have the option of providing your own encryption
9690// key, or you can use the AWS managed encryption keys. If you choose to provide
9691// your own encryption key, the request headers you provide in the request must
9692// match the headers you used in the request to initiate the upload by using
9693// CreateMultipartUpload. For more information, go to Using Server-Side Encryption
9694// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
9695// in the Amazon Simple Storage Service Developer Guide.
9696//
9697// Server-side encryption is supported by the S3 Multipart Upload actions. Unless
9698// you are using a customer-provided encryption key, you don't need to specify
9699// the encryption parameters in each UploadPart request. Instead, you only need
9700// to specify the server-side encryption parameters in the initial Initiate
9701// Multipart request. For more information, see CreateMultipartUpload.
9702//
9703// If you requested server-side encryption using a customer-provided encryption
9704// key in your initiate multipart upload request, you must provide identical
9705// encryption information in each part upload using the following headers.
9706//
9707//    * x-amz-server-side​-encryption​-customer-algorithm
9708//
9709//    * x-amz-server-side​-encryption​-customer-key
9710//
9711//    * x-amz-server-side​-encryption​-customer-key-MD5
9712//
9713// Special Errors
9714//
9715//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
9716//    The upload ID might be invalid, or the multipart upload might have been
9717//    aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault Code
9718//    Prefix: Client
9719//
9720// Related Resources
9721//
9722//    * CreateMultipartUpload
9723//
9724//    * CompleteMultipartUpload
9725//
9726//    * AbortMultipartUpload
9727//
9728//    * ListParts
9729//
9730//    * ListMultipartUploads
9731//
9732// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9733// with awserr.Error's Code and Message methods to get detailed information about
9734// the error.
9735//
9736// See the AWS API reference guide for Amazon Simple Storage Service's
9737// API operation UploadPart for usage and error information.
9738// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
9739func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
9740	req, out := c.UploadPartRequest(input)
9741	return out, req.Send()
9742}
9743
9744// UploadPartWithContext is the same as UploadPart with the addition of
9745// the ability to pass a context and additional request options.
9746//
9747// See UploadPart for details on how to use this API operation.
9748//
9749// The context must be non-nil and will be used for request cancellation. If
9750// the context is nil a panic will occur. In the future the SDK may create
9751// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9752// for more information on using Contexts.
9753func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
9754	req, out := c.UploadPartRequest(input)
9755	req.SetContext(ctx)
9756	req.ApplyOptions(opts...)
9757	return out, req.Send()
9758}
9759
9760const opUploadPartCopy = "UploadPartCopy"
9761
9762// UploadPartCopyRequest generates a "aws/request.Request" representing the
9763// client's request for the UploadPartCopy operation. The "output" return
9764// value will be populated with the request's response once the request completes
9765// successfully.
9766//
9767// Use "Send" method on the returned Request to send the API call to the service.
9768// the "output" return value is not valid until after Send returns without error.
9769//
9770// See UploadPartCopy for more information on using the UploadPartCopy
9771// API call, and error handling.
9772//
9773// This method is useful when you want to inject custom logic or configuration
9774// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9775//
9776//
9777//    // Example sending a request using the UploadPartCopyRequest method.
9778//    req, resp := client.UploadPartCopyRequest(params)
9779//
9780//    err := req.Send()
9781//    if err == nil { // resp is now filled
9782//        fmt.Println(resp)
9783//    }
9784//
9785// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
9786func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
9787	op := &request.Operation{
9788		Name:       opUploadPartCopy,
9789		HTTPMethod: "PUT",
9790		HTTPPath:   "/{Bucket}/{Key+}",
9791	}
9792
9793	if input == nil {
9794		input = &UploadPartCopyInput{}
9795	}
9796
9797	output = &UploadPartCopyOutput{}
9798	req = c.newRequest(op, input, output)
9799	return
9800}
9801
9802// UploadPartCopy API operation for Amazon Simple Storage Service.
9803//
9804// Uploads a part by copying data from an existing object as data source. You
9805// specify the data source by adding the request header x-amz-copy-source in
9806// your request and a byte range by adding the request header x-amz-copy-source-range
9807// in your request.
9808//
9809// The minimum allowable part size for a multipart upload is 5 MB. For more
9810// information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html)
9811// in the Amazon Simple Storage Service Developer Guide.
9812//
9813// Instead of using an existing object as part data, you might use the UploadPart
9814// operation and provide data in your request.
9815//
9816// You must initiate a multipart upload before you can upload any part. In response
9817// to your initiate request. Amazon S3 returns a unique identifier, the upload
9818// ID, that you must include in your upload part request.
9819//
9820// For more information about using the UploadPartCopy operation, see the following:
9821//
9822//    * For conceptual information about multipart uploads, see Uploading Objects
9823//    Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)
9824//    in the Amazon Simple Storage Service Developer Guide.
9825//
9826//    * For information about permissions required to use the multipart upload
9827//    API, see Multipart Upload API and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
9828//    in the Amazon Simple Storage Service Developer Guide.
9829//
9830//    * For information about copying objects using a single atomic operation
9831//    vs. the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html)
9832//    in the Amazon Simple Storage Service Developer Guide.
9833//
9834//    * For information about using server-side encryption with customer-provided
9835//    encryption keys with the UploadPartCopy operation, see CopyObject and
9836//    UploadPart.
9837//
9838// Note the following additional considerations about the request headers x-amz-copy-source-if-match,
9839// x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, and
9840// x-amz-copy-source-if-modified-since:
9841//
9842//    * Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
9843//    headers are present in the request as follows: x-amz-copy-source-if-match
9844//    condition evaluates to true, and; x-amz-copy-source-if-unmodified-since
9845//    condition evaluates to false; Amazon S3 returns 200 OK and copies the
9846//    data.
9847//
9848//    * Consideration 2 - If both of the x-amz-copy-source-if-none-match and
9849//    x-amz-copy-source-if-modified-since headers are present in the request
9850//    as follows: x-amz-copy-source-if-none-match condition evaluates to false,
9851//    and; x-amz-copy-source-if-modified-since condition evaluates to true;
9852//    Amazon S3 returns 412 Precondition Failed response code.
9853//
9854// Versioning
9855//
9856// If your bucket has versioning enabled, you could have multiple versions of
9857// the same object. By default, x-amz-copy-source identifies the current version
9858// of the object to copy. If the current version is a delete marker and you
9859// don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404
9860// error, because the object does not exist. If you specify versionId in the
9861// x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns
9862// an HTTP 400 error, because you are not allowed to specify a delete marker
9863// as a version for the x-amz-copy-source.
9864//
9865// You can optionally specify a specific version of the source object to copy
9866// by adding the versionId subresource as shown in the following example:
9867//
9868// x-amz-copy-source: /bucket/object?versionId=version id
9869//
9870// Special Errors
9871//
9872//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
9873//    The upload ID might be invalid, or the multipart upload might have been
9874//    aborted or completed. HTTP Status Code: 404 Not Found
9875//
9876//    * Code: InvalidRequest Cause: The specified copy source is not supported
9877//    as a byte-range copy source. HTTP Status Code: 400 Bad Request
9878//
9879// Related Resources
9880//
9881//    * CreateMultipartUpload
9882//
9883//    * UploadPart
9884//
9885//    * CompleteMultipartUpload
9886//
9887//    * AbortMultipartUpload
9888//
9889//    * ListParts
9890//
9891//    * ListMultipartUploads
9892//
9893// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9894// with awserr.Error's Code and Message methods to get detailed information about
9895// the error.
9896//
9897// See the AWS API reference guide for Amazon Simple Storage Service's
9898// API operation UploadPartCopy for usage and error information.
9899// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
9900func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
9901	req, out := c.UploadPartCopyRequest(input)
9902	return out, req.Send()
9903}
9904
9905// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
9906// the ability to pass a context and additional request options.
9907//
9908// See UploadPartCopy for details on how to use this API operation.
9909//
9910// The context must be non-nil and will be used for request cancellation. If
9911// the context is nil a panic will occur. In the future the SDK may create
9912// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9913// for more information on using Contexts.
9914func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
9915	req, out := c.UploadPartCopyRequest(input)
9916	req.SetContext(ctx)
9917	req.ApplyOptions(opts...)
9918	return out, req.Send()
9919}
9920
9921// Specifies the days since the initiation of an incomplete multipart upload
9922// that Amazon S3 will wait before permanently removing all parts of the upload.
9923// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
9924// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
9925// in the Amazon Simple Storage Service Developer Guide.
9926type AbortIncompleteMultipartUpload struct {
9927	_ struct{} `type:"structure"`
9928
9929	// Specifies the number of days after which Amazon S3 aborts an incomplete multipart
9930	// upload.
9931	DaysAfterInitiation *int64 `type:"integer"`
9932}
9933
9934// String returns the string representation
9935func (s AbortIncompleteMultipartUpload) String() string {
9936	return awsutil.Prettify(s)
9937}
9938
9939// GoString returns the string representation
9940func (s AbortIncompleteMultipartUpload) GoString() string {
9941	return s.String()
9942}
9943
9944// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
9945func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
9946	s.DaysAfterInitiation = &v
9947	return s
9948}
9949
9950type AbortMultipartUploadInput struct {
9951	_ struct{} `locationName:"AbortMultipartUploadRequest" type:"structure"`
9952
9953	// The bucket name to which the upload was taking place.
9954	//
9955	// When using this API with an access point, you must direct requests to the
9956	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
9957	// When using this operation using an access point through the AWS SDKs, you
9958	// provide the access point ARN in place of the bucket name. For more information
9959	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
9960	// in the Amazon Simple Storage Service Developer Guide.
9961	//
9962	// Bucket is a required field
9963	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
9964
9965	// Key of the object for which the multipart upload was initiated.
9966	//
9967	// Key is a required field
9968	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
9969
9970	// Confirms that the requester knows that she or he will be charged for the
9971	// request. Bucket owners need not specify this parameter in their requests.
9972	// For information about downloading objects from Requester Pays buckets, see
9973	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
9974	// in the Amazon S3 Developer Guide.
9975	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
9976
9977	// Upload ID that identifies the multipart upload.
9978	//
9979	// UploadId is a required field
9980	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
9981}
9982
9983// String returns the string representation
9984func (s AbortMultipartUploadInput) String() string {
9985	return awsutil.Prettify(s)
9986}
9987
9988// GoString returns the string representation
9989func (s AbortMultipartUploadInput) GoString() string {
9990	return s.String()
9991}
9992
9993// Validate inspects the fields of the type to determine if they are valid.
9994func (s *AbortMultipartUploadInput) Validate() error {
9995	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
9996	if s.Bucket == nil {
9997		invalidParams.Add(request.NewErrParamRequired("Bucket"))
9998	}
9999	if s.Bucket != nil && len(*s.Bucket) < 1 {
10000		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
10001	}
10002	if s.Key == nil {
10003		invalidParams.Add(request.NewErrParamRequired("Key"))
10004	}
10005	if s.Key != nil && len(*s.Key) < 1 {
10006		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
10007	}
10008	if s.UploadId == nil {
10009		invalidParams.Add(request.NewErrParamRequired("UploadId"))
10010	}
10011
10012	if invalidParams.Len() > 0 {
10013		return invalidParams
10014	}
10015	return nil
10016}
10017
10018// SetBucket sets the Bucket field's value.
10019func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
10020	s.Bucket = &v
10021	return s
10022}
10023
10024func (s *AbortMultipartUploadInput) getBucket() (v string) {
10025	if s.Bucket == nil {
10026		return v
10027	}
10028	return *s.Bucket
10029}
10030
10031// SetKey sets the Key field's value.
10032func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
10033	s.Key = &v
10034	return s
10035}
10036
10037// SetRequestPayer sets the RequestPayer field's value.
10038func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
10039	s.RequestPayer = &v
10040	return s
10041}
10042
10043// SetUploadId sets the UploadId field's value.
10044func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
10045	s.UploadId = &v
10046	return s
10047}
10048
10049func (s *AbortMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
10050	if s.Bucket == nil {
10051		return nil, fmt.Errorf("member Bucket is nil")
10052	}
10053	return parseEndpointARN(*s.Bucket)
10054}
10055
10056func (s *AbortMultipartUploadInput) hasEndpointARN() bool {
10057	if s.Bucket == nil {
10058		return false
10059	}
10060	return arn.IsARN(*s.Bucket)
10061}
10062
10063type AbortMultipartUploadOutput struct {
10064	_ struct{} `type:"structure"`
10065
10066	// If present, indicates that the requester was successfully charged for the
10067	// request.
10068	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
10069}
10070
10071// String returns the string representation
10072func (s AbortMultipartUploadOutput) String() string {
10073	return awsutil.Prettify(s)
10074}
10075
10076// GoString returns the string representation
10077func (s AbortMultipartUploadOutput) GoString() string {
10078	return s.String()
10079}
10080
10081// SetRequestCharged sets the RequestCharged field's value.
10082func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
10083	s.RequestCharged = &v
10084	return s
10085}
10086
10087// Configures the transfer acceleration state for an Amazon S3 bucket. For more
10088// information, see Amazon S3 Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
10089// in the Amazon Simple Storage Service Developer Guide.
10090type AccelerateConfiguration struct {
10091	_ struct{} `type:"structure"`
10092
10093	// Specifies the transfer acceleration status of the bucket.
10094	Status *string `type:"string" enum:"BucketAccelerateStatus"`
10095}
10096
10097// String returns the string representation
10098func (s AccelerateConfiguration) String() string {
10099	return awsutil.Prettify(s)
10100}
10101
10102// GoString returns the string representation
10103func (s AccelerateConfiguration) GoString() string {
10104	return s.String()
10105}
10106
10107// SetStatus sets the Status field's value.
10108func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
10109	s.Status = &v
10110	return s
10111}
10112
10113// Contains the elements that set the ACL permissions for an object per grantee.
10114type AccessControlPolicy struct {
10115	_ struct{} `type:"structure"`
10116
10117	// A list of grants.
10118	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
10119
10120	// Container for the bucket owner's display name and ID.
10121	Owner *Owner `type:"structure"`
10122}
10123
10124// String returns the string representation
10125func (s AccessControlPolicy) String() string {
10126	return awsutil.Prettify(s)
10127}
10128
10129// GoString returns the string representation
10130func (s AccessControlPolicy) GoString() string {
10131	return s.String()
10132}
10133
10134// Validate inspects the fields of the type to determine if they are valid.
10135func (s *AccessControlPolicy) Validate() error {
10136	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
10137	if s.Grants != nil {
10138		for i, v := range s.Grants {
10139			if v == nil {
10140				continue
10141			}
10142			if err := v.Validate(); err != nil {
10143				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
10144			}
10145		}
10146	}
10147
10148	if invalidParams.Len() > 0 {
10149		return invalidParams
10150	}
10151	return nil
10152}
10153
10154// SetGrants sets the Grants field's value.
10155func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
10156	s.Grants = v
10157	return s
10158}
10159
10160// SetOwner sets the Owner field's value.
10161func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
10162	s.Owner = v
10163	return s
10164}
10165
10166// A container for information about access control for replicas.
10167type AccessControlTranslation struct {
10168	_ struct{} `type:"structure"`
10169
10170	// Specifies the replica ownership. For default and valid values, see PUT bucket
10171	// replication (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
10172	// in the Amazon Simple Storage Service API Reference.
10173	//
10174	// Owner is a required field
10175	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
10176}
10177
10178// String returns the string representation
10179func (s AccessControlTranslation) String() string {
10180	return awsutil.Prettify(s)
10181}
10182
10183// GoString returns the string representation
10184func (s AccessControlTranslation) GoString() string {
10185	return s.String()
10186}
10187
10188// Validate inspects the fields of the type to determine if they are valid.
10189func (s *AccessControlTranslation) Validate() error {
10190	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
10191	if s.Owner == nil {
10192		invalidParams.Add(request.NewErrParamRequired("Owner"))
10193	}
10194
10195	if invalidParams.Len() > 0 {
10196		return invalidParams
10197	}
10198	return nil
10199}
10200
10201// SetOwner sets the Owner field's value.
10202func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
10203	s.Owner = &v
10204	return s
10205}
10206
10207// A conjunction (logical AND) of predicates, which is used in evaluating a
10208// metrics filter. The operator must have at least two predicates in any combination,
10209// and an object must match all of the predicates for the filter to apply.
10210type AnalyticsAndOperator struct {
10211	_ struct{} `type:"structure"`
10212
10213	// The prefix to use when evaluating an AND predicate: The prefix that an object
10214	// must have to be included in the metrics results.
10215	Prefix *string `type:"string"`
10216
10217	// The list of tags to use when evaluating an AND predicate.
10218	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
10219}
10220
10221// String returns the string representation
10222func (s AnalyticsAndOperator) String() string {
10223	return awsutil.Prettify(s)
10224}
10225
10226// GoString returns the string representation
10227func (s AnalyticsAndOperator) GoString() string {
10228	return s.String()
10229}
10230
10231// Validate inspects the fields of the type to determine if they are valid.
10232func (s *AnalyticsAndOperator) Validate() error {
10233	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
10234	if s.Tags != nil {
10235		for i, v := range s.Tags {
10236			if v == nil {
10237				continue
10238			}
10239			if err := v.Validate(); err != nil {
10240				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
10241			}
10242		}
10243	}
10244
10245	if invalidParams.Len() > 0 {
10246		return invalidParams
10247	}
10248	return nil
10249}
10250
10251// SetPrefix sets the Prefix field's value.
10252func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
10253	s.Prefix = &v
10254	return s
10255}
10256
10257// SetTags sets the Tags field's value.
10258func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
10259	s.Tags = v
10260	return s
10261}
10262
10263// Specifies the configuration and any analyses for the analytics filter of
10264// an Amazon S3 bucket.
10265type AnalyticsConfiguration struct {
10266	_ struct{} `type:"structure"`
10267
10268	// The filter used to describe a set of objects for analyses. A filter must
10269	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
10270	// If no filter is provided, all objects will be considered in any analysis.
10271	Filter *AnalyticsFilter `type:"structure"`
10272
10273	// The ID that identifies the analytics configuration.
10274	//
10275	// Id is a required field
10276	Id *string `type:"string" required:"true"`
10277
10278	// Contains data related to access patterns to be collected and made available
10279	// to analyze the tradeoffs between different storage classes.
10280	//
10281	// StorageClassAnalysis is a required field
10282	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
10283}
10284
10285// String returns the string representation
10286func (s AnalyticsConfiguration) String() string {
10287	return awsutil.Prettify(s)
10288}
10289
10290// GoString returns the string representation
10291func (s AnalyticsConfiguration) GoString() string {
10292	return s.String()
10293}
10294
10295// Validate inspects the fields of the type to determine if they are valid.
10296func (s *AnalyticsConfiguration) Validate() error {
10297	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
10298	if s.Id == nil {
10299		invalidParams.Add(request.NewErrParamRequired("Id"))
10300	}
10301	if s.StorageClassAnalysis == nil {
10302		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
10303	}
10304	if s.Filter != nil {
10305		if err := s.Filter.Validate(); err != nil {
10306			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
10307		}
10308	}
10309	if s.StorageClassAnalysis != nil {
10310		if err := s.StorageClassAnalysis.Validate(); err != nil {
10311			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
10312		}
10313	}
10314
10315	if invalidParams.Len() > 0 {
10316		return invalidParams
10317	}
10318	return nil
10319}
10320
10321// SetFilter sets the Filter field's value.
10322func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
10323	s.Filter = v
10324	return s
10325}
10326
10327// SetId sets the Id field's value.
10328func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
10329	s.Id = &v
10330	return s
10331}
10332
10333// SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
10334func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
10335	s.StorageClassAnalysis = v
10336	return s
10337}
10338
10339// Where to publish the analytics results.
10340type AnalyticsExportDestination struct {
10341	_ struct{} `type:"structure"`
10342
10343	// A destination signifying output to an S3 bucket.
10344	//
10345	// S3BucketDestination is a required field
10346	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
10347}
10348
10349// String returns the string representation
10350func (s AnalyticsExportDestination) String() string {
10351	return awsutil.Prettify(s)
10352}
10353
10354// GoString returns the string representation
10355func (s AnalyticsExportDestination) GoString() string {
10356	return s.String()
10357}
10358
10359// Validate inspects the fields of the type to determine if they are valid.
10360func (s *AnalyticsExportDestination) Validate() error {
10361	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
10362	if s.S3BucketDestination == nil {
10363		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
10364	}
10365	if s.S3BucketDestination != nil {
10366		if err := s.S3BucketDestination.Validate(); err != nil {
10367			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
10368		}
10369	}
10370
10371	if invalidParams.Len() > 0 {
10372		return invalidParams
10373	}
10374	return nil
10375}
10376
10377// SetS3BucketDestination sets the S3BucketDestination field's value.
10378func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
10379	s.S3BucketDestination = v
10380	return s
10381}
10382
10383// The filter used to describe a set of objects for analyses. A filter must
10384// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
10385// If no filter is provided, all objects will be considered in any analysis.
10386type AnalyticsFilter struct {
10387	_ struct{} `type:"structure"`
10388
10389	// A conjunction (logical AND) of predicates, which is used in evaluating an
10390	// analytics filter. The operator must have at least two predicates.
10391	And *AnalyticsAndOperator `type:"structure"`
10392
10393	// The prefix to use when evaluating an analytics filter.
10394	Prefix *string `type:"string"`
10395
10396	// The tag to use when evaluating an analytics filter.
10397	Tag *Tag `type:"structure"`
10398}
10399
10400// String returns the string representation
10401func (s AnalyticsFilter) String() string {
10402	return awsutil.Prettify(s)
10403}
10404
10405// GoString returns the string representation
10406func (s AnalyticsFilter) GoString() string {
10407	return s.String()
10408}
10409
10410// Validate inspects the fields of the type to determine if they are valid.
10411func (s *AnalyticsFilter) Validate() error {
10412	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
10413	if s.And != nil {
10414		if err := s.And.Validate(); err != nil {
10415			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
10416		}
10417	}
10418	if s.Tag != nil {
10419		if err := s.Tag.Validate(); err != nil {
10420			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
10421		}
10422	}
10423
10424	if invalidParams.Len() > 0 {
10425		return invalidParams
10426	}
10427	return nil
10428}
10429
10430// SetAnd sets the And field's value.
10431func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
10432	s.And = v
10433	return s
10434}
10435
10436// SetPrefix sets the Prefix field's value.
10437func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
10438	s.Prefix = &v
10439	return s
10440}
10441
10442// SetTag sets the Tag field's value.
10443func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
10444	s.Tag = v
10445	return s
10446}
10447
10448// Contains information about where to publish the analytics results.
10449type AnalyticsS3BucketDestination struct {
10450	_ struct{} `type:"structure"`
10451
10452	// The Amazon Resource Name (ARN) of the bucket to which data is exported.
10453	//
10454	// Bucket is a required field
10455	Bucket *string `type:"string" required:"true"`
10456
10457	// The account ID that owns the destination bucket. If no account ID is provided,
10458	// the owner will not be validated prior to exporting data.
10459	BucketAccountId *string `type:"string"`
10460
10461	// Specifies the file format used when exporting data to Amazon S3.
10462	//
10463	// Format is a required field
10464	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
10465
10466	// The prefix to use when exporting data. The prefix is prepended to all results.
10467	Prefix *string `type:"string"`
10468}
10469
10470// String returns the string representation
10471func (s AnalyticsS3BucketDestination) String() string {
10472	return awsutil.Prettify(s)
10473}
10474
10475// GoString returns the string representation
10476func (s AnalyticsS3BucketDestination) GoString() string {
10477	return s.String()
10478}
10479
10480// Validate inspects the fields of the type to determine if they are valid.
10481func (s *AnalyticsS3BucketDestination) Validate() error {
10482	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
10483	if s.Bucket == nil {
10484		invalidParams.Add(request.NewErrParamRequired("Bucket"))
10485	}
10486	if s.Format == nil {
10487		invalidParams.Add(request.NewErrParamRequired("Format"))
10488	}
10489
10490	if invalidParams.Len() > 0 {
10491		return invalidParams
10492	}
10493	return nil
10494}
10495
10496// SetBucket sets the Bucket field's value.
10497func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
10498	s.Bucket = &v
10499	return s
10500}
10501
10502func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
10503	if s.Bucket == nil {
10504		return v
10505	}
10506	return *s.Bucket
10507}
10508
10509// SetBucketAccountId sets the BucketAccountId field's value.
10510func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
10511	s.BucketAccountId = &v
10512	return s
10513}
10514
10515// SetFormat sets the Format field's value.
10516func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
10517	s.Format = &v
10518	return s
10519}
10520
10521// SetPrefix sets the Prefix field's value.
10522func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
10523	s.Prefix = &v
10524	return s
10525}
10526
10527// In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name
10528// is globally unique, and the namespace is shared by all AWS accounts.
10529type Bucket struct {
10530	_ struct{} `type:"structure"`
10531
10532	// Date the bucket was created.
10533	CreationDate *time.Time `type:"timestamp"`
10534
10535	// The name of the bucket.
10536	Name *string `type:"string"`
10537}
10538
10539// String returns the string representation
10540func (s Bucket) String() string {
10541	return awsutil.Prettify(s)
10542}
10543
10544// GoString returns the string representation
10545func (s Bucket) GoString() string {
10546	return s.String()
10547}
10548
10549// SetCreationDate sets the CreationDate field's value.
10550func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
10551	s.CreationDate = &v
10552	return s
10553}
10554
10555// SetName sets the Name field's value.
10556func (s *Bucket) SetName(v string) *Bucket {
10557	s.Name = &v
10558	return s
10559}
10560
10561// Specifies the lifecycle configuration for objects in an Amazon S3 bucket.
10562// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
10563// in the Amazon Simple Storage Service Developer Guide.
10564type BucketLifecycleConfiguration struct {
10565	_ struct{} `type:"structure"`
10566
10567	// A lifecycle rule for individual objects in an Amazon S3 bucket.
10568	//
10569	// Rules is a required field
10570	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
10571}
10572
10573// String returns the string representation
10574func (s BucketLifecycleConfiguration) String() string {
10575	return awsutil.Prettify(s)
10576}
10577
10578// GoString returns the string representation
10579func (s BucketLifecycleConfiguration) GoString() string {
10580	return s.String()
10581}
10582
10583// Validate inspects the fields of the type to determine if they are valid.
10584func (s *BucketLifecycleConfiguration) Validate() error {
10585	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
10586	if s.Rules == nil {
10587		invalidParams.Add(request.NewErrParamRequired("Rules"))
10588	}
10589	if s.Rules != nil {
10590		for i, v := range s.Rules {
10591			if v == nil {
10592				continue
10593			}
10594			if err := v.Validate(); err != nil {
10595				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
10596			}
10597		}
10598	}
10599
10600	if invalidParams.Len() > 0 {
10601		return invalidParams
10602	}
10603	return nil
10604}
10605
10606// SetRules sets the Rules field's value.
10607func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
10608	s.Rules = v
10609	return s
10610}
10611
10612// Container for logging status information.
10613type BucketLoggingStatus struct {
10614	_ struct{} `type:"structure"`
10615
10616	// Describes where logs are stored and the prefix that Amazon S3 assigns to
10617	// all log object keys for a bucket. For more information, see PUT Bucket logging
10618	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
10619	// in the Amazon Simple Storage Service API Reference.
10620	LoggingEnabled *LoggingEnabled `type:"structure"`
10621}
10622
10623// String returns the string representation
10624func (s BucketLoggingStatus) String() string {
10625	return awsutil.Prettify(s)
10626}
10627
10628// GoString returns the string representation
10629func (s BucketLoggingStatus) GoString() string {
10630	return s.String()
10631}
10632
10633// Validate inspects the fields of the type to determine if they are valid.
10634func (s *BucketLoggingStatus) Validate() error {
10635	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
10636	if s.LoggingEnabled != nil {
10637		if err := s.LoggingEnabled.Validate(); err != nil {
10638			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
10639		}
10640	}
10641
10642	if invalidParams.Len() > 0 {
10643		return invalidParams
10644	}
10645	return nil
10646}
10647
10648// SetLoggingEnabled sets the LoggingEnabled field's value.
10649func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
10650	s.LoggingEnabled = v
10651	return s
10652}
10653
10654// Describes the cross-origin access configuration for objects in an Amazon
10655// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
10656// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
10657// Simple Storage Service Developer Guide.
10658type CORSConfiguration struct {
10659	_ struct{} `type:"structure"`
10660
10661	// A set of origins and methods (cross-origin access that you want to allow).
10662	// You can add up to 100 rules to the configuration.
10663	//
10664	// CORSRules is a required field
10665	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
10666}
10667
10668// String returns the string representation
10669func (s CORSConfiguration) String() string {
10670	return awsutil.Prettify(s)
10671}
10672
10673// GoString returns the string representation
10674func (s CORSConfiguration) GoString() string {
10675	return s.String()
10676}
10677
10678// Validate inspects the fields of the type to determine if they are valid.
10679func (s *CORSConfiguration) Validate() error {
10680	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
10681	if s.CORSRules == nil {
10682		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
10683	}
10684	if s.CORSRules != nil {
10685		for i, v := range s.CORSRules {
10686			if v == nil {
10687				continue
10688			}
10689			if err := v.Validate(); err != nil {
10690				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
10691			}
10692		}
10693	}
10694
10695	if invalidParams.Len() > 0 {
10696		return invalidParams
10697	}
10698	return nil
10699}
10700
10701// SetCORSRules sets the CORSRules field's value.
10702func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
10703	s.CORSRules = v
10704	return s
10705}
10706
10707// Specifies a cross-origin access rule for an Amazon S3 bucket.
10708type CORSRule struct {
10709	_ struct{} `type:"structure"`
10710
10711	// Headers that are specified in the Access-Control-Request-Headers header.
10712	// These headers are allowed in a preflight OPTIONS request. In response to
10713	// any preflight OPTIONS request, Amazon S3 returns any requested headers that
10714	// are allowed.
10715	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
10716
10717	// An HTTP method that you allow the origin to execute. Valid values are GET,
10718	// PUT, HEAD, POST, and DELETE.
10719	//
10720	// AllowedMethods is a required field
10721	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
10722
10723	// One or more origins you want customers to be able to access the bucket from.
10724	//
10725	// AllowedOrigins is a required field
10726	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
10727
10728	// One or more headers in the response that you want customers to be able to
10729	// access from their applications (for example, from a JavaScript XMLHttpRequest
10730	// object).
10731	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
10732
10733	// The time in seconds that your browser is to cache the preflight response
10734	// for the specified resource.
10735	MaxAgeSeconds *int64 `type:"integer"`
10736}
10737
10738// String returns the string representation
10739func (s CORSRule) String() string {
10740	return awsutil.Prettify(s)
10741}
10742
10743// GoString returns the string representation
10744func (s CORSRule) GoString() string {
10745	return s.String()
10746}
10747
10748// Validate inspects the fields of the type to determine if they are valid.
10749func (s *CORSRule) Validate() error {
10750	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
10751	if s.AllowedMethods == nil {
10752		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
10753	}
10754	if s.AllowedOrigins == nil {
10755		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
10756	}
10757
10758	if invalidParams.Len() > 0 {
10759		return invalidParams
10760	}
10761	return nil
10762}
10763
10764// SetAllowedHeaders sets the AllowedHeaders field's value.
10765func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
10766	s.AllowedHeaders = v
10767	return s
10768}
10769
10770// SetAllowedMethods sets the AllowedMethods field's value.
10771func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
10772	s.AllowedMethods = v
10773	return s
10774}
10775
10776// SetAllowedOrigins sets the AllowedOrigins field's value.
10777func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
10778	s.AllowedOrigins = v
10779	return s
10780}
10781
10782// SetExposeHeaders sets the ExposeHeaders field's value.
10783func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
10784	s.ExposeHeaders = v
10785	return s
10786}
10787
10788// SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
10789func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
10790	s.MaxAgeSeconds = &v
10791	return s
10792}
10793
10794// Describes how an uncompressed comma-separated values (CSV)-formatted input
10795// object is formatted.
10796type CSVInput struct {
10797	_ struct{} `type:"structure"`
10798
10799	// Specifies that CSV field values may contain quoted record delimiters and
10800	// such records should be allowed. Default value is FALSE. Setting this value
10801	// to TRUE may lower performance.
10802	AllowQuotedRecordDelimiter *bool `type:"boolean"`
10803
10804	// A single character used to indicate that a row should be ignored when the
10805	// character is present at the start of that row. You can specify any character
10806	// to indicate a comment line.
10807	Comments *string `type:"string"`
10808
10809	// A single character used to separate individual fields in a record. You can
10810	// specify an arbitrary delimiter.
10811	FieldDelimiter *string `type:"string"`
10812
10813	// Describes the first line of input. Valid values are:
10814	//
10815	//    * NONE: First line is not a header.
10816	//
10817	//    * IGNORE: First line is a header, but you can't use the header values
10818	//    to indicate the column in an expression. You can use column position (such
10819	//    as _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s).
10820	//
10821	//    * Use: First line is a header, and you can use the header value to identify
10822	//    a column in an expression (SELECT "name" FROM OBJECT).
10823	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
10824
10825	// A single character used for escaping when the field delimiter is part of
10826	// the value. For example, if the value is a, b, Amazon S3 wraps this field
10827	// value in quotation marks, as follows: " a , b ".
10828	//
10829	// Type: String
10830	//
10831	// Default: "
10832	//
10833	// Ancestors: CSV
10834	QuoteCharacter *string `type:"string"`
10835
10836	// A single character used for escaping the quotation mark character inside
10837	// an already escaped value. For example, the value """ a , b """ is parsed
10838	// as " a , b ".
10839	QuoteEscapeCharacter *string `type:"string"`
10840
10841	// A single character used to separate individual records in the input. Instead
10842	// of the default value, you can specify an arbitrary delimiter.
10843	RecordDelimiter *string `type:"string"`
10844}
10845
10846// String returns the string representation
10847func (s CSVInput) String() string {
10848	return awsutil.Prettify(s)
10849}
10850
10851// GoString returns the string representation
10852func (s CSVInput) GoString() string {
10853	return s.String()
10854}
10855
10856// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
10857func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
10858	s.AllowQuotedRecordDelimiter = &v
10859	return s
10860}
10861
10862// SetComments sets the Comments field's value.
10863func (s *CSVInput) SetComments(v string) *CSVInput {
10864	s.Comments = &v
10865	return s
10866}
10867
10868// SetFieldDelimiter sets the FieldDelimiter field's value.
10869func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
10870	s.FieldDelimiter = &v
10871	return s
10872}
10873
10874// SetFileHeaderInfo sets the FileHeaderInfo field's value.
10875func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
10876	s.FileHeaderInfo = &v
10877	return s
10878}
10879
10880// SetQuoteCharacter sets the QuoteCharacter field's value.
10881func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
10882	s.QuoteCharacter = &v
10883	return s
10884}
10885
10886// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
10887func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
10888	s.QuoteEscapeCharacter = &v
10889	return s
10890}
10891
10892// SetRecordDelimiter sets the RecordDelimiter field's value.
10893func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
10894	s.RecordDelimiter = &v
10895	return s
10896}
10897
10898// Describes how uncompressed comma-separated values (CSV)-formatted results
10899// are formatted.
10900type CSVOutput struct {
10901	_ struct{} `type:"structure"`
10902
10903	// The value used to separate individual fields in a record. You can specify
10904	// an arbitrary delimiter.
10905	FieldDelimiter *string `type:"string"`
10906
10907	// A single character used for escaping when the field delimiter is part of
10908	// the value. For example, if the value is a, b, Amazon S3 wraps this field
10909	// value in quotation marks, as follows: " a , b ".
10910	QuoteCharacter *string `type:"string"`
10911
10912	// The single character used for escaping the quote character inside an already
10913	// escaped value.
10914	QuoteEscapeCharacter *string `type:"string"`
10915
10916	// Indicates whether to use quotation marks around output fields.
10917	//
10918	//    * ALWAYS: Always use quotation marks for output fields.
10919	//
10920	//    * ASNEEDED: Use quotation marks for output fields when needed.
10921	QuoteFields *string `type:"string" enum:"QuoteFields"`
10922
10923	// A single character used to separate individual records in the output. Instead
10924	// of the default value, you can specify an arbitrary delimiter.
10925	RecordDelimiter *string `type:"string"`
10926}
10927
10928// String returns the string representation
10929func (s CSVOutput) String() string {
10930	return awsutil.Prettify(s)
10931}
10932
10933// GoString returns the string representation
10934func (s CSVOutput) GoString() string {
10935	return s.String()
10936}
10937
10938// SetFieldDelimiter sets the FieldDelimiter field's value.
10939func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
10940	s.FieldDelimiter = &v
10941	return s
10942}
10943
10944// SetQuoteCharacter sets the QuoteCharacter field's value.
10945func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
10946	s.QuoteCharacter = &v
10947	return s
10948}
10949
10950// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
10951func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
10952	s.QuoteEscapeCharacter = &v
10953	return s
10954}
10955
10956// SetQuoteFields sets the QuoteFields field's value.
10957func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
10958	s.QuoteFields = &v
10959	return s
10960}
10961
10962// SetRecordDelimiter sets the RecordDelimiter field's value.
10963func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
10964	s.RecordDelimiter = &v
10965	return s
10966}
10967
10968// Container for specifying the AWS Lambda notification configuration.
10969type CloudFunctionConfiguration struct {
10970	_ struct{} `type:"structure"`
10971
10972	// Lambda cloud function ARN that Amazon S3 can invoke when it detects events
10973	// of the specified type.
10974	CloudFunction *string `type:"string"`
10975
10976	// The bucket event for which to send notifications.
10977	//
10978	// Deprecated: Event has been deprecated
10979	Event *string `deprecated:"true" type:"string" enum:"Event"`
10980
10981	// Bucket events for which to send notifications.
10982	Events []*string `locationName:"Event" type:"list" flattened:"true"`
10983
10984	// An optional unique identifier for configurations in a notification configuration.
10985	// If you don't provide one, Amazon S3 will assign an ID.
10986	Id *string `type:"string"`
10987
10988	// The role supporting the invocation of the Lambda function
10989	InvocationRole *string `type:"string"`
10990}
10991
10992// String returns the string representation
10993func (s CloudFunctionConfiguration) String() string {
10994	return awsutil.Prettify(s)
10995}
10996
10997// GoString returns the string representation
10998func (s CloudFunctionConfiguration) GoString() string {
10999	return s.String()
11000}
11001
11002// SetCloudFunction sets the CloudFunction field's value.
11003func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
11004	s.CloudFunction = &v
11005	return s
11006}
11007
11008// SetEvent sets the Event field's value.
11009func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
11010	s.Event = &v
11011	return s
11012}
11013
11014// SetEvents sets the Events field's value.
11015func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
11016	s.Events = v
11017	return s
11018}
11019
11020// SetId sets the Id field's value.
11021func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
11022	s.Id = &v
11023	return s
11024}
11025
11026// SetInvocationRole sets the InvocationRole field's value.
11027func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
11028	s.InvocationRole = &v
11029	return s
11030}
11031
11032// Container for all (if there are any) keys between Prefix and the next occurrence
11033// of the string specified by a delimiter. CommonPrefixes lists keys that act
11034// like subdirectories in the directory specified by Prefix. For example, if
11035// the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july,
11036// the common prefix is notes/summer/.
11037type CommonPrefix struct {
11038	_ struct{} `type:"structure"`
11039
11040	// Container for the specified common prefix.
11041	Prefix *string `type:"string"`
11042}
11043
11044// String returns the string representation
11045func (s CommonPrefix) String() string {
11046	return awsutil.Prettify(s)
11047}
11048
11049// GoString returns the string representation
11050func (s CommonPrefix) GoString() string {
11051	return s.String()
11052}
11053
11054// SetPrefix sets the Prefix field's value.
11055func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
11056	s.Prefix = &v
11057	return s
11058}
11059
11060type CompleteMultipartUploadInput struct {
11061	_ struct{} `locationName:"CompleteMultipartUploadRequest" type:"structure" payload:"MultipartUpload"`
11062
11063	// Name of the bucket to which the multipart upload was initiated.
11064	//
11065	// Bucket is a required field
11066	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11067
11068	// Object key for which the multipart upload was initiated.
11069	//
11070	// Key is a required field
11071	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11072
11073	// The container for the multipart upload request information.
11074	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
11075
11076	// Confirms that the requester knows that she or he will be charged for the
11077	// request. Bucket owners need not specify this parameter in their requests.
11078	// For information about downloading objects from Requester Pays buckets, see
11079	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
11080	// in the Amazon S3 Developer Guide.
11081	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11082
11083	// ID for the initiated multipart upload.
11084	//
11085	// UploadId is a required field
11086	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
11087}
11088
11089// String returns the string representation
11090func (s CompleteMultipartUploadInput) String() string {
11091	return awsutil.Prettify(s)
11092}
11093
11094// GoString returns the string representation
11095func (s CompleteMultipartUploadInput) GoString() string {
11096	return s.String()
11097}
11098
11099// Validate inspects the fields of the type to determine if they are valid.
11100func (s *CompleteMultipartUploadInput) Validate() error {
11101	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
11102	if s.Bucket == nil {
11103		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11104	}
11105	if s.Bucket != nil && len(*s.Bucket) < 1 {
11106		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11107	}
11108	if s.Key == nil {
11109		invalidParams.Add(request.NewErrParamRequired("Key"))
11110	}
11111	if s.Key != nil && len(*s.Key) < 1 {
11112		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11113	}
11114	if s.UploadId == nil {
11115		invalidParams.Add(request.NewErrParamRequired("UploadId"))
11116	}
11117
11118	if invalidParams.Len() > 0 {
11119		return invalidParams
11120	}
11121	return nil
11122}
11123
11124// SetBucket sets the Bucket field's value.
11125func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
11126	s.Bucket = &v
11127	return s
11128}
11129
11130func (s *CompleteMultipartUploadInput) getBucket() (v string) {
11131	if s.Bucket == nil {
11132		return v
11133	}
11134	return *s.Bucket
11135}
11136
11137// SetKey sets the Key field's value.
11138func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
11139	s.Key = &v
11140	return s
11141}
11142
11143// SetMultipartUpload sets the MultipartUpload field's value.
11144func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
11145	s.MultipartUpload = v
11146	return s
11147}
11148
11149// SetRequestPayer sets the RequestPayer field's value.
11150func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
11151	s.RequestPayer = &v
11152	return s
11153}
11154
11155// SetUploadId sets the UploadId field's value.
11156func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
11157	s.UploadId = &v
11158	return s
11159}
11160
11161func (s *CompleteMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
11162	if s.Bucket == nil {
11163		return nil, fmt.Errorf("member Bucket is nil")
11164	}
11165	return parseEndpointARN(*s.Bucket)
11166}
11167
11168func (s *CompleteMultipartUploadInput) hasEndpointARN() bool {
11169	if s.Bucket == nil {
11170		return false
11171	}
11172	return arn.IsARN(*s.Bucket)
11173}
11174
11175type CompleteMultipartUploadOutput struct {
11176	_ struct{} `type:"structure"`
11177
11178	// The name of the bucket that contains the newly created object.
11179	Bucket *string `type:"string"`
11180
11181	// Entity tag that identifies the newly created object's data. Objects with
11182	// different object data will have different entity tags. The entity tag is
11183	// an opaque string. The entity tag may or may not be an MD5 digest of the object
11184	// data. If the entity tag is not an MD5 digest of the object data, it will
11185	// contain one or more nonhexadecimal characters and/or will consist of less
11186	// than 32 or more than 32 hexadecimal digits.
11187	ETag *string `type:"string"`
11188
11189	// If the object expiration is configured, this will contain the expiration
11190	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
11191	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
11192
11193	// The object key of the newly created object.
11194	Key *string `min:"1" type:"string"`
11195
11196	// The URI that identifies the newly created object.
11197	Location *string `type:"string"`
11198
11199	// If present, indicates that the requester was successfully charged for the
11200	// request.
11201	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11202
11203	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
11204	// customer master key (CMK) that was used for the object.
11205	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
11206
11207	// If you specified server-side encryption either with an Amazon S3-managed
11208	// encryption key or an AWS KMS customer master key (CMK) in your initiate multipart
11209	// upload request, the response includes this header. It confirms the encryption
11210	// algorithm that Amazon S3 used to encrypt the object.
11211	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
11212
11213	// Version ID of the newly created object, in case the bucket has versioning
11214	// turned on.
11215	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
11216}
11217
11218// String returns the string representation
11219func (s CompleteMultipartUploadOutput) String() string {
11220	return awsutil.Prettify(s)
11221}
11222
11223// GoString returns the string representation
11224func (s CompleteMultipartUploadOutput) GoString() string {
11225	return s.String()
11226}
11227
11228// SetBucket sets the Bucket field's value.
11229func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
11230	s.Bucket = &v
11231	return s
11232}
11233
11234func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
11235	if s.Bucket == nil {
11236		return v
11237	}
11238	return *s.Bucket
11239}
11240
11241// SetETag sets the ETag field's value.
11242func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
11243	s.ETag = &v
11244	return s
11245}
11246
11247// SetExpiration sets the Expiration field's value.
11248func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
11249	s.Expiration = &v
11250	return s
11251}
11252
11253// SetKey sets the Key field's value.
11254func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
11255	s.Key = &v
11256	return s
11257}
11258
11259// SetLocation sets the Location field's value.
11260func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
11261	s.Location = &v
11262	return s
11263}
11264
11265// SetRequestCharged sets the RequestCharged field's value.
11266func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
11267	s.RequestCharged = &v
11268	return s
11269}
11270
11271// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
11272func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
11273	s.SSEKMSKeyId = &v
11274	return s
11275}
11276
11277// SetServerSideEncryption sets the ServerSideEncryption field's value.
11278func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
11279	s.ServerSideEncryption = &v
11280	return s
11281}
11282
11283// SetVersionId sets the VersionId field's value.
11284func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
11285	s.VersionId = &v
11286	return s
11287}
11288
11289// The container for the completed multipart upload details.
11290type CompletedMultipartUpload struct {
11291	_ struct{} `type:"structure"`
11292
11293	// Array of CompletedPart data types.
11294	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
11295}
11296
11297// String returns the string representation
11298func (s CompletedMultipartUpload) String() string {
11299	return awsutil.Prettify(s)
11300}
11301
11302// GoString returns the string representation
11303func (s CompletedMultipartUpload) GoString() string {
11304	return s.String()
11305}
11306
11307// SetParts sets the Parts field's value.
11308func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
11309	s.Parts = v
11310	return s
11311}
11312
11313// Details of the parts that were uploaded.
11314type CompletedPart struct {
11315	_ struct{} `type:"structure"`
11316
11317	// Entity tag returned when the part was uploaded.
11318	ETag *string `type:"string"`
11319
11320	// Part number that identifies the part. This is a positive integer between
11321	// 1 and 10,000.
11322	PartNumber *int64 `type:"integer"`
11323}
11324
11325// String returns the string representation
11326func (s CompletedPart) String() string {
11327	return awsutil.Prettify(s)
11328}
11329
11330// GoString returns the string representation
11331func (s CompletedPart) GoString() string {
11332	return s.String()
11333}
11334
11335// SetETag sets the ETag field's value.
11336func (s *CompletedPart) SetETag(v string) *CompletedPart {
11337	s.ETag = &v
11338	return s
11339}
11340
11341// SetPartNumber sets the PartNumber field's value.
11342func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
11343	s.PartNumber = &v
11344	return s
11345}
11346
11347// A container for describing a condition that must be met for the specified
11348// redirect to apply. For example, 1. If request is for pages in the /docs folder,
11349// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
11350// redirect request to another host where you might process the error.
11351type Condition struct {
11352	_ struct{} `type:"structure"`
11353
11354	// The HTTP error code when the redirect is applied. In the event of an error,
11355	// if the error code equals this value, then the specified redirect is applied.
11356	// Required when parent element Condition is specified and sibling KeyPrefixEquals
11357	// is not specified. If both are specified, then both must be true for the redirect
11358	// to be applied.
11359	HttpErrorCodeReturnedEquals *string `type:"string"`
11360
11361	// The object key name prefix when the redirect is applied. For example, to
11362	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
11363	// To redirect request for all pages with the prefix docs/, the key prefix will
11364	// be /docs, which identifies all objects in the docs/ folder. Required when
11365	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
11366	// is not specified. If both conditions are specified, both must be true for
11367	// the redirect to be applied.
11368	KeyPrefixEquals *string `type:"string"`
11369}
11370
11371// String returns the string representation
11372func (s Condition) String() string {
11373	return awsutil.Prettify(s)
11374}
11375
11376// GoString returns the string representation
11377func (s Condition) GoString() string {
11378	return s.String()
11379}
11380
11381// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
11382func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
11383	s.HttpErrorCodeReturnedEquals = &v
11384	return s
11385}
11386
11387// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
11388func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
11389	s.KeyPrefixEquals = &v
11390	return s
11391}
11392
11393type ContinuationEvent struct {
11394	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
11395}
11396
11397// String returns the string representation
11398func (s ContinuationEvent) String() string {
11399	return awsutil.Prettify(s)
11400}
11401
11402// GoString returns the string representation
11403func (s ContinuationEvent) GoString() string {
11404	return s.String()
11405}
11406
11407// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
11408func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
11409
11410// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
11411// This method is only used internally within the SDK's EventStream handling.
11412func (s *ContinuationEvent) UnmarshalEvent(
11413	payloadUnmarshaler protocol.PayloadUnmarshaler,
11414	msg eventstream.Message,
11415) error {
11416	return nil
11417}
11418
11419type CopyObjectInput struct {
11420	_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
11421
11422	// The canned ACL to apply to the object.
11423	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
11424
11425	// The name of the destination bucket.
11426	//
11427	// Bucket is a required field
11428	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11429
11430	// Specifies caching behavior along the request/reply chain.
11431	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
11432
11433	// Specifies presentational information for the object.
11434	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
11435
11436	// Specifies what content encodings have been applied to the object and thus
11437	// what decoding mechanisms must be applied to obtain the media-type referenced
11438	// by the Content-Type header field.
11439	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
11440
11441	// The language the content is in.
11442	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
11443
11444	// A standard MIME type describing the format of the object data.
11445	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
11446
11447	// The name of the source bucket and key name of the source object, separated
11448	// by a slash (/). Must be URL-encoded.
11449	//
11450	// CopySource is a required field
11451	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
11452
11453	// Copies the object if its entity tag (ETag) matches the specified tag.
11454	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
11455
11456	// Copies the object if it has been modified since the specified time.
11457	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
11458
11459	// Copies the object if its entity tag (ETag) is different than the specified
11460	// ETag.
11461	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
11462
11463	// Copies the object if it hasn't been modified since the specified time.
11464	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
11465
11466	// Specifies the algorithm to use when decrypting the source object (for example,
11467	// AES256).
11468	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
11469
11470	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
11471	// the source object. The encryption key provided in this header must be one
11472	// that was used when the source object was created.
11473	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
11474
11475	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
11476	// Amazon S3 uses this header for a message integrity check to ensure that the
11477	// encryption key was transmitted without error.
11478	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
11479
11480	// The date and time at which the object is no longer cacheable.
11481	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
11482
11483	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
11484	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
11485
11486	// Allows grantee to read the object data and its metadata.
11487	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
11488
11489	// Allows grantee to read the object ACL.
11490	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
11491
11492	// Allows grantee to write the ACL for the applicable object.
11493	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
11494
11495	// The key of the destination object.
11496	//
11497	// Key is a required field
11498	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11499
11500	// A map of metadata to store with the object in S3.
11501	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
11502
11503	// Specifies whether the metadata is copied from the source object or replaced
11504	// with metadata provided in the request.
11505	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
11506
11507	// Specifies whether you want to apply a Legal Hold to the copied object.
11508	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
11509
11510	// The Object Lock mode that you want to apply to the copied object.
11511	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
11512
11513	// The date and time when you want the copied object's Object Lock to expire.
11514	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
11515
11516	// Confirms that the requester knows that she or he will be charged for the
11517	// request. Bucket owners need not specify this parameter in their requests.
11518	// For information about downloading objects from Requester Pays buckets, see
11519	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
11520	// in the Amazon S3 Developer Guide.
11521	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11522
11523	// Specifies the algorithm to use to when encrypting the object (for example,
11524	// AES256).
11525	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
11526
11527	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
11528	// data. This value is used to store the object and then it is discarded; Amazon
11529	// S3 does not store the encryption key. The key must be appropriate for use
11530	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
11531	// header.
11532	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
11533
11534	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
11535	// Amazon S3 uses this header for a message integrity check to ensure that the
11536	// encryption key was transmitted without error.
11537	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
11538
11539	// Specifies the AWS KMS Encryption Context to use for object encryption. The
11540	// value of this header is a base64-encoded UTF-8 string holding JSON with the
11541	// encryption context key-value pairs.
11542	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
11543
11544	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
11545	// requests for an object protected by AWS KMS will fail if not made via SSL
11546	// or using SigV4. For information about configuring using any of the officially
11547	// supported AWS SDKs and AWS CLI, see Specifying the Signature Version in Request
11548	// Authentication (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
11549	// in the Amazon S3 Developer Guide.
11550	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
11551
11552	// The server-side encryption algorithm used when storing this object in Amazon
11553	// S3 (for example, AES256, aws:kms).
11554	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
11555
11556	// The type of storage to use for the object. Defaults to 'STANDARD'.
11557	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
11558
11559	// The tag-set for the object destination object this value must be used in
11560	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
11561	// Query parameters.
11562	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
11563
11564	// Specifies whether the object tag-set are copied from the source object or
11565	// replaced with tag-set provided in the request.
11566	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
11567
11568	// If the bucket is configured as a website, redirects requests for this object
11569	// to another object in the same bucket or to an external URL. Amazon S3 stores
11570	// the value of this header in the object metadata.
11571	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
11572}
11573
11574// String returns the string representation
11575func (s CopyObjectInput) String() string {
11576	return awsutil.Prettify(s)
11577}
11578
11579// GoString returns the string representation
11580func (s CopyObjectInput) GoString() string {
11581	return s.String()
11582}
11583
11584// Validate inspects the fields of the type to determine if they are valid.
11585func (s *CopyObjectInput) Validate() error {
11586	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
11587	if s.Bucket == nil {
11588		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11589	}
11590	if s.Bucket != nil && len(*s.Bucket) < 1 {
11591		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11592	}
11593	if s.CopySource == nil {
11594		invalidParams.Add(request.NewErrParamRequired("CopySource"))
11595	}
11596	if s.Key == nil {
11597		invalidParams.Add(request.NewErrParamRequired("Key"))
11598	}
11599	if s.Key != nil && len(*s.Key) < 1 {
11600		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11601	}
11602
11603	if invalidParams.Len() > 0 {
11604		return invalidParams
11605	}
11606	return nil
11607}
11608
11609// SetACL sets the ACL field's value.
11610func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
11611	s.ACL = &v
11612	return s
11613}
11614
11615// SetBucket sets the Bucket field's value.
11616func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
11617	s.Bucket = &v
11618	return s
11619}
11620
11621func (s *CopyObjectInput) getBucket() (v string) {
11622	if s.Bucket == nil {
11623		return v
11624	}
11625	return *s.Bucket
11626}
11627
11628// SetCacheControl sets the CacheControl field's value.
11629func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
11630	s.CacheControl = &v
11631	return s
11632}
11633
11634// SetContentDisposition sets the ContentDisposition field's value.
11635func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
11636	s.ContentDisposition = &v
11637	return s
11638}
11639
11640// SetContentEncoding sets the ContentEncoding field's value.
11641func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
11642	s.ContentEncoding = &v
11643	return s
11644}
11645
11646// SetContentLanguage sets the ContentLanguage field's value.
11647func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
11648	s.ContentLanguage = &v
11649	return s
11650}
11651
11652// SetContentType sets the ContentType field's value.
11653func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
11654	s.ContentType = &v
11655	return s
11656}
11657
11658// SetCopySource sets the CopySource field's value.
11659func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
11660	s.CopySource = &v
11661	return s
11662}
11663
11664// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
11665func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
11666	s.CopySourceIfMatch = &v
11667	return s
11668}
11669
11670// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
11671func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
11672	s.CopySourceIfModifiedSince = &v
11673	return s
11674}
11675
11676// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
11677func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
11678	s.CopySourceIfNoneMatch = &v
11679	return s
11680}
11681
11682// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
11683func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
11684	s.CopySourceIfUnmodifiedSince = &v
11685	return s
11686}
11687
11688// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
11689func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
11690	s.CopySourceSSECustomerAlgorithm = &v
11691	return s
11692}
11693
11694// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
11695func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
11696	s.CopySourceSSECustomerKey = &v
11697	return s
11698}
11699
11700func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
11701	if s.CopySourceSSECustomerKey == nil {
11702		return v
11703	}
11704	return *s.CopySourceSSECustomerKey
11705}
11706
11707// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
11708func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
11709	s.CopySourceSSECustomerKeyMD5 = &v
11710	return s
11711}
11712
11713// SetExpires sets the Expires field's value.
11714func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
11715	s.Expires = &v
11716	return s
11717}
11718
11719// SetGrantFullControl sets the GrantFullControl field's value.
11720func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
11721	s.GrantFullControl = &v
11722	return s
11723}
11724
11725// SetGrantRead sets the GrantRead field's value.
11726func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
11727	s.GrantRead = &v
11728	return s
11729}
11730
11731// SetGrantReadACP sets the GrantReadACP field's value.
11732func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
11733	s.GrantReadACP = &v
11734	return s
11735}
11736
11737// SetGrantWriteACP sets the GrantWriteACP field's value.
11738func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
11739	s.GrantWriteACP = &v
11740	return s
11741}
11742
11743// SetKey sets the Key field's value.
11744func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
11745	s.Key = &v
11746	return s
11747}
11748
11749// SetMetadata sets the Metadata field's value.
11750func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
11751	s.Metadata = v
11752	return s
11753}
11754
11755// SetMetadataDirective sets the MetadataDirective field's value.
11756func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
11757	s.MetadataDirective = &v
11758	return s
11759}
11760
11761// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
11762func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput {
11763	s.ObjectLockLegalHoldStatus = &v
11764	return s
11765}
11766
11767// SetObjectLockMode sets the ObjectLockMode field's value.
11768func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput {
11769	s.ObjectLockMode = &v
11770	return s
11771}
11772
11773// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
11774func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput {
11775	s.ObjectLockRetainUntilDate = &v
11776	return s
11777}
11778
11779// SetRequestPayer sets the RequestPayer field's value.
11780func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
11781	s.RequestPayer = &v
11782	return s
11783}
11784
11785// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
11786func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
11787	s.SSECustomerAlgorithm = &v
11788	return s
11789}
11790
11791// SetSSECustomerKey sets the SSECustomerKey field's value.
11792func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
11793	s.SSECustomerKey = &v
11794	return s
11795}
11796
11797func (s *CopyObjectInput) getSSECustomerKey() (v string) {
11798	if s.SSECustomerKey == nil {
11799		return v
11800	}
11801	return *s.SSECustomerKey
11802}
11803
11804// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
11805func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
11806	s.SSECustomerKeyMD5 = &v
11807	return s
11808}
11809
11810// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
11811func (s *CopyObjectInput) SetSSEKMSEncryptionContext(v string) *CopyObjectInput {
11812	s.SSEKMSEncryptionContext = &v
11813	return s
11814}
11815
11816// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
11817func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
11818	s.SSEKMSKeyId = &v
11819	return s
11820}
11821
11822// SetServerSideEncryption sets the ServerSideEncryption field's value.
11823func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
11824	s.ServerSideEncryption = &v
11825	return s
11826}
11827
11828// SetStorageClass sets the StorageClass field's value.
11829func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
11830	s.StorageClass = &v
11831	return s
11832}
11833
11834// SetTagging sets the Tagging field's value.
11835func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
11836	s.Tagging = &v
11837	return s
11838}
11839
11840// SetTaggingDirective sets the TaggingDirective field's value.
11841func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
11842	s.TaggingDirective = &v
11843	return s
11844}
11845
11846// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
11847func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
11848	s.WebsiteRedirectLocation = &v
11849	return s
11850}
11851
11852func (s *CopyObjectInput) getEndpointARN() (arn.Resource, error) {
11853	if s.Bucket == nil {
11854		return nil, fmt.Errorf("member Bucket is nil")
11855	}
11856	return parseEndpointARN(*s.Bucket)
11857}
11858
11859func (s *CopyObjectInput) hasEndpointARN() bool {
11860	if s.Bucket == nil {
11861		return false
11862	}
11863	return arn.IsARN(*s.Bucket)
11864}
11865
11866type CopyObjectOutput struct {
11867	_ struct{} `type:"structure" payload:"CopyObjectResult"`
11868
11869	// Container for all response elements.
11870	CopyObjectResult *CopyObjectResult `type:"structure"`
11871
11872	// Version of the copied object in the destination bucket.
11873	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
11874
11875	// If the object expiration is configured, the response includes this header.
11876	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
11877
11878	// If present, indicates that the requester was successfully charged for the
11879	// request.
11880	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11881
11882	// If server-side encryption with a customer-provided encryption key was requested,
11883	// the response will include this header confirming the encryption algorithm
11884	// used.
11885	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
11886
11887	// If server-side encryption with a customer-provided encryption key was requested,
11888	// the response will include this header to provide round-trip message integrity
11889	// verification of the customer-provided encryption key.
11890	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
11891
11892	// If present, specifies the AWS KMS Encryption Context to use for object encryption.
11893	// The value of this header is a base64-encoded UTF-8 string holding JSON with
11894	// the encryption context key-value pairs.
11895	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
11896
11897	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
11898	// customer master key (CMK) that was used for the object.
11899	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
11900
11901	// The server-side encryption algorithm used when storing this object in Amazon
11902	// S3 (for example, AES256, aws:kms).
11903	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
11904
11905	// Version ID of the newly created copy.
11906	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
11907}
11908
11909// String returns the string representation
11910func (s CopyObjectOutput) String() string {
11911	return awsutil.Prettify(s)
11912}
11913
11914// GoString returns the string representation
11915func (s CopyObjectOutput) GoString() string {
11916	return s.String()
11917}
11918
11919// SetCopyObjectResult sets the CopyObjectResult field's value.
11920func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
11921	s.CopyObjectResult = v
11922	return s
11923}
11924
11925// SetCopySourceVersionId sets the CopySourceVersionId field's value.
11926func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
11927	s.CopySourceVersionId = &v
11928	return s
11929}
11930
11931// SetExpiration sets the Expiration field's value.
11932func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
11933	s.Expiration = &v
11934	return s
11935}
11936
11937// SetRequestCharged sets the RequestCharged field's value.
11938func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
11939	s.RequestCharged = &v
11940	return s
11941}
11942
11943// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
11944func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
11945	s.SSECustomerAlgorithm = &v
11946	return s
11947}
11948
11949// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
11950func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
11951	s.SSECustomerKeyMD5 = &v
11952	return s
11953}
11954
11955// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
11956func (s *CopyObjectOutput) SetSSEKMSEncryptionContext(v string) *CopyObjectOutput {
11957	s.SSEKMSEncryptionContext = &v
11958	return s
11959}
11960
11961// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
11962func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
11963	s.SSEKMSKeyId = &v
11964	return s
11965}
11966
11967// SetServerSideEncryption sets the ServerSideEncryption field's value.
11968func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
11969	s.ServerSideEncryption = &v
11970	return s
11971}
11972
11973// SetVersionId sets the VersionId field's value.
11974func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
11975	s.VersionId = &v
11976	return s
11977}
11978
11979// Container for all response elements.
11980type CopyObjectResult struct {
11981	_ struct{} `type:"structure"`
11982
11983	// Returns the ETag of the new object. The ETag reflects only changes to the
11984	// contents of an object, not its metadata. The source and destination ETag
11985	// is identical for a successfully copied object.
11986	ETag *string `type:"string"`
11987
11988	// Returns the date that the object was last modified.
11989	LastModified *time.Time `type:"timestamp"`
11990}
11991
11992// String returns the string representation
11993func (s CopyObjectResult) String() string {
11994	return awsutil.Prettify(s)
11995}
11996
11997// GoString returns the string representation
11998func (s CopyObjectResult) GoString() string {
11999	return s.String()
12000}
12001
12002// SetETag sets the ETag field's value.
12003func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
12004	s.ETag = &v
12005	return s
12006}
12007
12008// SetLastModified sets the LastModified field's value.
12009func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
12010	s.LastModified = &v
12011	return s
12012}
12013
12014// Container for all response elements.
12015type CopyPartResult struct {
12016	_ struct{} `type:"structure"`
12017
12018	// Entity tag of the object.
12019	ETag *string `type:"string"`
12020
12021	// Date and time at which the object was uploaded.
12022	LastModified *time.Time `type:"timestamp"`
12023}
12024
12025// String returns the string representation
12026func (s CopyPartResult) String() string {
12027	return awsutil.Prettify(s)
12028}
12029
12030// GoString returns the string representation
12031func (s CopyPartResult) GoString() string {
12032	return s.String()
12033}
12034
12035// SetETag sets the ETag field's value.
12036func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
12037	s.ETag = &v
12038	return s
12039}
12040
12041// SetLastModified sets the LastModified field's value.
12042func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
12043	s.LastModified = &v
12044	return s
12045}
12046
12047// The configuration information for the bucket.
12048type CreateBucketConfiguration struct {
12049	_ struct{} `type:"structure"`
12050
12051	// Specifies the Region where the bucket will be created. If you don't specify
12052	// a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1).
12053	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
12054}
12055
12056// String returns the string representation
12057func (s CreateBucketConfiguration) String() string {
12058	return awsutil.Prettify(s)
12059}
12060
12061// GoString returns the string representation
12062func (s CreateBucketConfiguration) GoString() string {
12063	return s.String()
12064}
12065
12066// SetLocationConstraint sets the LocationConstraint field's value.
12067func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
12068	s.LocationConstraint = &v
12069	return s
12070}
12071
12072type CreateBucketInput struct {
12073	_ struct{} `locationName:"CreateBucketRequest" type:"structure" payload:"CreateBucketConfiguration"`
12074
12075	// The canned ACL to apply to the bucket.
12076	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
12077
12078	// The name of the bucket to create.
12079	//
12080	// Bucket is a required field
12081	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12082
12083	// The configuration information for the bucket.
12084	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
12085
12086	// Allows grantee the read, write, read ACP, and write ACP permissions on the
12087	// bucket.
12088	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
12089
12090	// Allows grantee to list the objects in the bucket.
12091	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
12092
12093	// Allows grantee to read the bucket ACL.
12094	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
12095
12096	// Allows grantee to create, overwrite, and delete any object in the bucket.
12097	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
12098
12099	// Allows grantee to write the ACL for the applicable bucket.
12100	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
12101
12102	// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
12103	ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"`
12104}
12105
12106// String returns the string representation
12107func (s CreateBucketInput) String() string {
12108	return awsutil.Prettify(s)
12109}
12110
12111// GoString returns the string representation
12112func (s CreateBucketInput) GoString() string {
12113	return s.String()
12114}
12115
12116// Validate inspects the fields of the type to determine if they are valid.
12117func (s *CreateBucketInput) Validate() error {
12118	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
12119	if s.Bucket == nil {
12120		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12121	}
12122	if s.Bucket != nil && len(*s.Bucket) < 1 {
12123		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12124	}
12125
12126	if invalidParams.Len() > 0 {
12127		return invalidParams
12128	}
12129	return nil
12130}
12131
12132// SetACL sets the ACL field's value.
12133func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
12134	s.ACL = &v
12135	return s
12136}
12137
12138// SetBucket sets the Bucket field's value.
12139func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
12140	s.Bucket = &v
12141	return s
12142}
12143
12144func (s *CreateBucketInput) getBucket() (v string) {
12145	if s.Bucket == nil {
12146		return v
12147	}
12148	return *s.Bucket
12149}
12150
12151// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
12152func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
12153	s.CreateBucketConfiguration = v
12154	return s
12155}
12156
12157// SetGrantFullControl sets the GrantFullControl field's value.
12158func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
12159	s.GrantFullControl = &v
12160	return s
12161}
12162
12163// SetGrantRead sets the GrantRead field's value.
12164func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
12165	s.GrantRead = &v
12166	return s
12167}
12168
12169// SetGrantReadACP sets the GrantReadACP field's value.
12170func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
12171	s.GrantReadACP = &v
12172	return s
12173}
12174
12175// SetGrantWrite sets the GrantWrite field's value.
12176func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
12177	s.GrantWrite = &v
12178	return s
12179}
12180
12181// SetGrantWriteACP sets the GrantWriteACP field's value.
12182func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
12183	s.GrantWriteACP = &v
12184	return s
12185}
12186
12187// SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value.
12188func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput {
12189	s.ObjectLockEnabledForBucket = &v
12190	return s
12191}
12192
12193type CreateBucketOutput struct {
12194	_ struct{} `type:"structure"`
12195
12196	// Specifies the Region where the bucket will be created. If you are creating
12197	// a bucket on the US East (N. Virginia) Region (us-east-1), you do not need
12198	// to specify the location.
12199	Location *string `location:"header" locationName:"Location" type:"string"`
12200}
12201
12202// String returns the string representation
12203func (s CreateBucketOutput) String() string {
12204	return awsutil.Prettify(s)
12205}
12206
12207// GoString returns the string representation
12208func (s CreateBucketOutput) GoString() string {
12209	return s.String()
12210}
12211
12212// SetLocation sets the Location field's value.
12213func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
12214	s.Location = &v
12215	return s
12216}
12217
12218type CreateMultipartUploadInput struct {
12219	_ struct{} `locationName:"CreateMultipartUploadRequest" type:"structure"`
12220
12221	// The canned ACL to apply to the object.
12222	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
12223
12224	// The name of the bucket to which to initiate the upload
12225	//
12226	// Bucket is a required field
12227	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12228
12229	// Specifies caching behavior along the request/reply chain.
12230	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
12231
12232	// Specifies presentational information for the object.
12233	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
12234
12235	// Specifies what content encodings have been applied to the object and thus
12236	// what decoding mechanisms must be applied to obtain the media-type referenced
12237	// by the Content-Type header field.
12238	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
12239
12240	// The language the content is in.
12241	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
12242
12243	// A standard MIME type describing the format of the object data.
12244	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
12245
12246	// The date and time at which the object is no longer cacheable.
12247	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
12248
12249	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
12250	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
12251
12252	// Allows grantee to read the object data and its metadata.
12253	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
12254
12255	// Allows grantee to read the object ACL.
12256	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
12257
12258	// Allows grantee to write the ACL for the applicable object.
12259	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
12260
12261	// Object key for which the multipart upload is to be initiated.
12262	//
12263	// Key is a required field
12264	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12265
12266	// A map of metadata to store with the object in S3.
12267	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
12268
12269	// Specifies whether you want to apply a Legal Hold to the uploaded object.
12270	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
12271
12272	// Specifies the Object Lock mode that you want to apply to the uploaded object.
12273	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
12274
12275	// Specifies the date and time when you want the Object Lock to expire.
12276	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
12277
12278	// Confirms that the requester knows that she or he will be charged for the
12279	// request. Bucket owners need not specify this parameter in their requests.
12280	// For information about downloading objects from Requester Pays buckets, see
12281	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
12282	// in the Amazon S3 Developer Guide.
12283	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12284
12285	// Specifies the algorithm to use to when encrypting the object (for example,
12286	// AES256).
12287	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12288
12289	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
12290	// data. This value is used to store the object and then it is discarded; Amazon
12291	// S3 does not store the encryption key. The key must be appropriate for use
12292	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
12293	// header.
12294	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
12295
12296	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
12297	// Amazon S3 uses this header for a message integrity check to ensure that the
12298	// encryption key was transmitted without error.
12299	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12300
12301	// Specifies the AWS KMS Encryption Context to use for object encryption. The
12302	// value of this header is a base64-encoded UTF-8 string holding JSON with the
12303	// encryption context key-value pairs.
12304	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
12305
12306	// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
12307	// requests for an object protected by AWS KMS will fail if not made via SSL
12308	// or using SigV4. For information about configuring using any of the officially
12309	// supported AWS SDKs and AWS CLI, see Specifying the Signature Version in Request
12310	// Authentication (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
12311	// in the Amazon S3 Developer Guide.
12312	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12313
12314	// The server-side encryption algorithm used when storing this object in Amazon
12315	// S3 (for example, AES256, aws:kms).
12316	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12317
12318	// The type of storage to use for the object. Defaults to 'STANDARD'.
12319	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
12320
12321	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
12322	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
12323
12324	// If the bucket is configured as a website, redirects requests for this object
12325	// to another object in the same bucket or to an external URL. Amazon S3 stores
12326	// the value of this header in the object metadata.
12327	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
12328}
12329
12330// String returns the string representation
12331func (s CreateMultipartUploadInput) String() string {
12332	return awsutil.Prettify(s)
12333}
12334
12335// GoString returns the string representation
12336func (s CreateMultipartUploadInput) GoString() string {
12337	return s.String()
12338}
12339
12340// Validate inspects the fields of the type to determine if they are valid.
12341func (s *CreateMultipartUploadInput) Validate() error {
12342	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
12343	if s.Bucket == nil {
12344		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12345	}
12346	if s.Bucket != nil && len(*s.Bucket) < 1 {
12347		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12348	}
12349	if s.Key == nil {
12350		invalidParams.Add(request.NewErrParamRequired("Key"))
12351	}
12352	if s.Key != nil && len(*s.Key) < 1 {
12353		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12354	}
12355
12356	if invalidParams.Len() > 0 {
12357		return invalidParams
12358	}
12359	return nil
12360}
12361
12362// SetACL sets the ACL field's value.
12363func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
12364	s.ACL = &v
12365	return s
12366}
12367
12368// SetBucket sets the Bucket field's value.
12369func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
12370	s.Bucket = &v
12371	return s
12372}
12373
12374func (s *CreateMultipartUploadInput) getBucket() (v string) {
12375	if s.Bucket == nil {
12376		return v
12377	}
12378	return *s.Bucket
12379}
12380
12381// SetCacheControl sets the CacheControl field's value.
12382func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
12383	s.CacheControl = &v
12384	return s
12385}
12386
12387// SetContentDisposition sets the ContentDisposition field's value.
12388func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
12389	s.ContentDisposition = &v
12390	return s
12391}
12392
12393// SetContentEncoding sets the ContentEncoding field's value.
12394func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
12395	s.ContentEncoding = &v
12396	return s
12397}
12398
12399// SetContentLanguage sets the ContentLanguage field's value.
12400func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
12401	s.ContentLanguage = &v
12402	return s
12403}
12404
12405// SetContentType sets the ContentType field's value.
12406func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
12407	s.ContentType = &v
12408	return s
12409}
12410
12411// SetExpires sets the Expires field's value.
12412func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
12413	s.Expires = &v
12414	return s
12415}
12416
12417// SetGrantFullControl sets the GrantFullControl field's value.
12418func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
12419	s.GrantFullControl = &v
12420	return s
12421}
12422
12423// SetGrantRead sets the GrantRead field's value.
12424func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
12425	s.GrantRead = &v
12426	return s
12427}
12428
12429// SetGrantReadACP sets the GrantReadACP field's value.
12430func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
12431	s.GrantReadACP = &v
12432	return s
12433}
12434
12435// SetGrantWriteACP sets the GrantWriteACP field's value.
12436func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
12437	s.GrantWriteACP = &v
12438	return s
12439}
12440
12441// SetKey sets the Key field's value.
12442func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
12443	s.Key = &v
12444	return s
12445}
12446
12447// SetMetadata sets the Metadata field's value.
12448func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
12449	s.Metadata = v
12450	return s
12451}
12452
12453// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
12454func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput {
12455	s.ObjectLockLegalHoldStatus = &v
12456	return s
12457}
12458
12459// SetObjectLockMode sets the ObjectLockMode field's value.
12460func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput {
12461	s.ObjectLockMode = &v
12462	return s
12463}
12464
12465// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
12466func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput {
12467	s.ObjectLockRetainUntilDate = &v
12468	return s
12469}
12470
12471// SetRequestPayer sets the RequestPayer field's value.
12472func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
12473	s.RequestPayer = &v
12474	return s
12475}
12476
12477// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12478func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
12479	s.SSECustomerAlgorithm = &v
12480	return s
12481}
12482
12483// SetSSECustomerKey sets the SSECustomerKey field's value.
12484func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
12485	s.SSECustomerKey = &v
12486	return s
12487}
12488
12489func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
12490	if s.SSECustomerKey == nil {
12491		return v
12492	}
12493	return *s.SSECustomerKey
12494}
12495
12496// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12497func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
12498	s.SSECustomerKeyMD5 = &v
12499	return s
12500}
12501
12502// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
12503func (s *CreateMultipartUploadInput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadInput {
12504	s.SSEKMSEncryptionContext = &v
12505	return s
12506}
12507
12508// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12509func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
12510	s.SSEKMSKeyId = &v
12511	return s
12512}
12513
12514// SetServerSideEncryption sets the ServerSideEncryption field's value.
12515func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
12516	s.ServerSideEncryption = &v
12517	return s
12518}
12519
12520// SetStorageClass sets the StorageClass field's value.
12521func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
12522	s.StorageClass = &v
12523	return s
12524}
12525
12526// SetTagging sets the Tagging field's value.
12527func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
12528	s.Tagging = &v
12529	return s
12530}
12531
12532// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
12533func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
12534	s.WebsiteRedirectLocation = &v
12535	return s
12536}
12537
12538func (s *CreateMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
12539	if s.Bucket == nil {
12540		return nil, fmt.Errorf("member Bucket is nil")
12541	}
12542	return parseEndpointARN(*s.Bucket)
12543}
12544
12545func (s *CreateMultipartUploadInput) hasEndpointARN() bool {
12546	if s.Bucket == nil {
12547		return false
12548	}
12549	return arn.IsARN(*s.Bucket)
12550}
12551
12552type CreateMultipartUploadOutput struct {
12553	_ struct{} `type:"structure"`
12554
12555	// If the bucket has a lifecycle rule configured with an action to abort incomplete
12556	// multipart uploads and the prefix in the lifecycle rule matches the object
12557	// name in the request, the response includes this header. The header indicates
12558	// when the initiated multipart upload becomes eligible for an abort operation.
12559	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
12560	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
12561	//
12562	// The response also includes the x-amz-abort-rule-id header that provides the
12563	// ID of the lifecycle configuration rule that defines this action.
12564	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
12565
12566	// This header is returned along with the x-amz-abort-date header. It identifies
12567	// the applicable lifecycle configuration rule that defines the action to abort
12568	// incomplete multipart uploads.
12569	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
12570
12571	// Name of the bucket to which the multipart upload was initiated.
12572	//
12573	// When using this API with an access point, you must direct requests to the
12574	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12575	// When using this operation using an access point through the AWS SDKs, you
12576	// provide the access point ARN in place of the bucket name. For more information
12577	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
12578	// in the Amazon Simple Storage Service Developer Guide.
12579	Bucket *string `locationName:"Bucket" type:"string"`
12580
12581	// Object key for which the multipart upload was initiated.
12582	Key *string `min:"1" type:"string"`
12583
12584	// If present, indicates that the requester was successfully charged for the
12585	// request.
12586	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12587
12588	// If server-side encryption with a customer-provided encryption key was requested,
12589	// the response will include this header confirming the encryption algorithm
12590	// used.
12591	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
12592
12593	// If server-side encryption with a customer-provided encryption key was requested,
12594	// the response will include this header to provide round-trip message integrity
12595	// verification of the customer-provided encryption key.
12596	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
12597
12598	// If present, specifies the AWS KMS Encryption Context to use for object encryption.
12599	// The value of this header is a base64-encoded UTF-8 string holding JSON with
12600	// the encryption context key-value pairs.
12601	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
12602
12603	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
12604	// customer master key (CMK) that was used for the object.
12605	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12606
12607	// The server-side encryption algorithm used when storing this object in Amazon
12608	// S3 (for example, AES256, aws:kms).
12609	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12610
12611	// ID for the initiated multipart upload.
12612	UploadId *string `type:"string"`
12613}
12614
12615// String returns the string representation
12616func (s CreateMultipartUploadOutput) String() string {
12617	return awsutil.Prettify(s)
12618}
12619
12620// GoString returns the string representation
12621func (s CreateMultipartUploadOutput) GoString() string {
12622	return s.String()
12623}
12624
12625// SetAbortDate sets the AbortDate field's value.
12626func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
12627	s.AbortDate = &v
12628	return s
12629}
12630
12631// SetAbortRuleId sets the AbortRuleId field's value.
12632func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
12633	s.AbortRuleId = &v
12634	return s
12635}
12636
12637// SetBucket sets the Bucket field's value.
12638func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
12639	s.Bucket = &v
12640	return s
12641}
12642
12643func (s *CreateMultipartUploadOutput) getBucket() (v string) {
12644	if s.Bucket == nil {
12645		return v
12646	}
12647	return *s.Bucket
12648}
12649
12650// SetKey sets the Key field's value.
12651func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
12652	s.Key = &v
12653	return s
12654}
12655
12656// SetRequestCharged sets the RequestCharged field's value.
12657func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
12658	s.RequestCharged = &v
12659	return s
12660}
12661
12662// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
12663func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
12664	s.SSECustomerAlgorithm = &v
12665	return s
12666}
12667
12668// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
12669func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
12670	s.SSECustomerKeyMD5 = &v
12671	return s
12672}
12673
12674// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
12675func (s *CreateMultipartUploadOutput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadOutput {
12676	s.SSEKMSEncryptionContext = &v
12677	return s
12678}
12679
12680// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12681func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
12682	s.SSEKMSKeyId = &v
12683	return s
12684}
12685
12686// SetServerSideEncryption sets the ServerSideEncryption field's value.
12687func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
12688	s.ServerSideEncryption = &v
12689	return s
12690}
12691
12692// SetUploadId sets the UploadId field's value.
12693func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
12694	s.UploadId = &v
12695	return s
12696}
12697
12698// The container element for specifying the default Object Lock retention settings
12699// for new objects placed in the specified bucket.
12700type DefaultRetention struct {
12701	_ struct{} `type:"structure"`
12702
12703	// The number of days that you want to specify for the default retention period.
12704	Days *int64 `type:"integer"`
12705
12706	// The default Object Lock retention mode you want to apply to new objects placed
12707	// in the specified bucket.
12708	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
12709
12710	// The number of years that you want to specify for the default retention period.
12711	Years *int64 `type:"integer"`
12712}
12713
12714// String returns the string representation
12715func (s DefaultRetention) String() string {
12716	return awsutil.Prettify(s)
12717}
12718
12719// GoString returns the string representation
12720func (s DefaultRetention) GoString() string {
12721	return s.String()
12722}
12723
12724// SetDays sets the Days field's value.
12725func (s *DefaultRetention) SetDays(v int64) *DefaultRetention {
12726	s.Days = &v
12727	return s
12728}
12729
12730// SetMode sets the Mode field's value.
12731func (s *DefaultRetention) SetMode(v string) *DefaultRetention {
12732	s.Mode = &v
12733	return s
12734}
12735
12736// SetYears sets the Years field's value.
12737func (s *DefaultRetention) SetYears(v int64) *DefaultRetention {
12738	s.Years = &v
12739	return s
12740}
12741
12742// Container for the objects to delete.
12743type Delete struct {
12744	_ struct{} `type:"structure"`
12745
12746	// The objects to delete.
12747	//
12748	// Objects is a required field
12749	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
12750
12751	// Element to enable quiet mode for the request. When you add this element,
12752	// you must set its value to true.
12753	Quiet *bool `type:"boolean"`
12754}
12755
12756// String returns the string representation
12757func (s Delete) String() string {
12758	return awsutil.Prettify(s)
12759}
12760
12761// GoString returns the string representation
12762func (s Delete) GoString() string {
12763	return s.String()
12764}
12765
12766// Validate inspects the fields of the type to determine if they are valid.
12767func (s *Delete) Validate() error {
12768	invalidParams := request.ErrInvalidParams{Context: "Delete"}
12769	if s.Objects == nil {
12770		invalidParams.Add(request.NewErrParamRequired("Objects"))
12771	}
12772	if s.Objects != nil {
12773		for i, v := range s.Objects {
12774			if v == nil {
12775				continue
12776			}
12777			if err := v.Validate(); err != nil {
12778				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
12779			}
12780		}
12781	}
12782
12783	if invalidParams.Len() > 0 {
12784		return invalidParams
12785	}
12786	return nil
12787}
12788
12789// SetObjects sets the Objects field's value.
12790func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
12791	s.Objects = v
12792	return s
12793}
12794
12795// SetQuiet sets the Quiet field's value.
12796func (s *Delete) SetQuiet(v bool) *Delete {
12797	s.Quiet = &v
12798	return s
12799}
12800
12801type DeleteBucketAnalyticsConfigurationInput struct {
12802	_ struct{} `locationName:"DeleteBucketAnalyticsConfigurationRequest" type:"structure"`
12803
12804	// The name of the bucket from which an analytics configuration is deleted.
12805	//
12806	// Bucket is a required field
12807	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12808
12809	// The ID that identifies the analytics configuration.
12810	//
12811	// Id is a required field
12812	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
12813}
12814
12815// String returns the string representation
12816func (s DeleteBucketAnalyticsConfigurationInput) String() string {
12817	return awsutil.Prettify(s)
12818}
12819
12820// GoString returns the string representation
12821func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
12822	return s.String()
12823}
12824
12825// Validate inspects the fields of the type to determine if they are valid.
12826func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
12827	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
12828	if s.Bucket == nil {
12829		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12830	}
12831	if s.Bucket != nil && len(*s.Bucket) < 1 {
12832		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12833	}
12834	if s.Id == nil {
12835		invalidParams.Add(request.NewErrParamRequired("Id"))
12836	}
12837
12838	if invalidParams.Len() > 0 {
12839		return invalidParams
12840	}
12841	return nil
12842}
12843
12844// SetBucket sets the Bucket field's value.
12845func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
12846	s.Bucket = &v
12847	return s
12848}
12849
12850func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
12851	if s.Bucket == nil {
12852		return v
12853	}
12854	return *s.Bucket
12855}
12856
12857// SetId sets the Id field's value.
12858func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
12859	s.Id = &v
12860	return s
12861}
12862
12863func (s *DeleteBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
12864	if s.Bucket == nil {
12865		return nil, fmt.Errorf("member Bucket is nil")
12866	}
12867	return parseEndpointARN(*s.Bucket)
12868}
12869
12870func (s *DeleteBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
12871	if s.Bucket == nil {
12872		return false
12873	}
12874	return arn.IsARN(*s.Bucket)
12875}
12876
12877type DeleteBucketAnalyticsConfigurationOutput struct {
12878	_ struct{} `type:"structure"`
12879}
12880
12881// String returns the string representation
12882func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
12883	return awsutil.Prettify(s)
12884}
12885
12886// GoString returns the string representation
12887func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
12888	return s.String()
12889}
12890
12891type DeleteBucketCorsInput struct {
12892	_ struct{} `locationName:"DeleteBucketCorsRequest" type:"structure"`
12893
12894	// Specifies the bucket whose cors configuration is being deleted.
12895	//
12896	// Bucket is a required field
12897	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12898}
12899
12900// String returns the string representation
12901func (s DeleteBucketCorsInput) String() string {
12902	return awsutil.Prettify(s)
12903}
12904
12905// GoString returns the string representation
12906func (s DeleteBucketCorsInput) GoString() string {
12907	return s.String()
12908}
12909
12910// Validate inspects the fields of the type to determine if they are valid.
12911func (s *DeleteBucketCorsInput) Validate() error {
12912	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
12913	if s.Bucket == nil {
12914		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12915	}
12916	if s.Bucket != nil && len(*s.Bucket) < 1 {
12917		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12918	}
12919
12920	if invalidParams.Len() > 0 {
12921		return invalidParams
12922	}
12923	return nil
12924}
12925
12926// SetBucket sets the Bucket field's value.
12927func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
12928	s.Bucket = &v
12929	return s
12930}
12931
12932func (s *DeleteBucketCorsInput) getBucket() (v string) {
12933	if s.Bucket == nil {
12934		return v
12935	}
12936	return *s.Bucket
12937}
12938
12939func (s *DeleteBucketCorsInput) getEndpointARN() (arn.Resource, error) {
12940	if s.Bucket == nil {
12941		return nil, fmt.Errorf("member Bucket is nil")
12942	}
12943	return parseEndpointARN(*s.Bucket)
12944}
12945
12946func (s *DeleteBucketCorsInput) hasEndpointARN() bool {
12947	if s.Bucket == nil {
12948		return false
12949	}
12950	return arn.IsARN(*s.Bucket)
12951}
12952
12953type DeleteBucketCorsOutput struct {
12954	_ struct{} `type:"structure"`
12955}
12956
12957// String returns the string representation
12958func (s DeleteBucketCorsOutput) String() string {
12959	return awsutil.Prettify(s)
12960}
12961
12962// GoString returns the string representation
12963func (s DeleteBucketCorsOutput) GoString() string {
12964	return s.String()
12965}
12966
12967type DeleteBucketEncryptionInput struct {
12968	_ struct{} `locationName:"DeleteBucketEncryptionRequest" type:"structure"`
12969
12970	// The name of the bucket containing the server-side encryption configuration
12971	// to delete.
12972	//
12973	// Bucket is a required field
12974	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12975}
12976
12977// String returns the string representation
12978func (s DeleteBucketEncryptionInput) String() string {
12979	return awsutil.Prettify(s)
12980}
12981
12982// GoString returns the string representation
12983func (s DeleteBucketEncryptionInput) GoString() string {
12984	return s.String()
12985}
12986
12987// Validate inspects the fields of the type to determine if they are valid.
12988func (s *DeleteBucketEncryptionInput) Validate() error {
12989	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
12990	if s.Bucket == nil {
12991		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12992	}
12993	if s.Bucket != nil && len(*s.Bucket) < 1 {
12994		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12995	}
12996
12997	if invalidParams.Len() > 0 {
12998		return invalidParams
12999	}
13000	return nil
13001}
13002
13003// SetBucket sets the Bucket field's value.
13004func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
13005	s.Bucket = &v
13006	return s
13007}
13008
13009func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
13010	if s.Bucket == nil {
13011		return v
13012	}
13013	return *s.Bucket
13014}
13015
13016func (s *DeleteBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
13017	if s.Bucket == nil {
13018		return nil, fmt.Errorf("member Bucket is nil")
13019	}
13020	return parseEndpointARN(*s.Bucket)
13021}
13022
13023func (s *DeleteBucketEncryptionInput) hasEndpointARN() bool {
13024	if s.Bucket == nil {
13025		return false
13026	}
13027	return arn.IsARN(*s.Bucket)
13028}
13029
13030type DeleteBucketEncryptionOutput struct {
13031	_ struct{} `type:"structure"`
13032}
13033
13034// String returns the string representation
13035func (s DeleteBucketEncryptionOutput) String() string {
13036	return awsutil.Prettify(s)
13037}
13038
13039// GoString returns the string representation
13040func (s DeleteBucketEncryptionOutput) GoString() string {
13041	return s.String()
13042}
13043
13044type DeleteBucketInput struct {
13045	_ struct{} `locationName:"DeleteBucketRequest" type:"structure"`
13046
13047	// Specifies the bucket being deleted.
13048	//
13049	// Bucket is a required field
13050	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13051}
13052
13053// String returns the string representation
13054func (s DeleteBucketInput) String() string {
13055	return awsutil.Prettify(s)
13056}
13057
13058// GoString returns the string representation
13059func (s DeleteBucketInput) GoString() string {
13060	return s.String()
13061}
13062
13063// Validate inspects the fields of the type to determine if they are valid.
13064func (s *DeleteBucketInput) Validate() error {
13065	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
13066	if s.Bucket == nil {
13067		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13068	}
13069	if s.Bucket != nil && len(*s.Bucket) < 1 {
13070		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13071	}
13072
13073	if invalidParams.Len() > 0 {
13074		return invalidParams
13075	}
13076	return nil
13077}
13078
13079// SetBucket sets the Bucket field's value.
13080func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
13081	s.Bucket = &v
13082	return s
13083}
13084
13085func (s *DeleteBucketInput) getBucket() (v string) {
13086	if s.Bucket == nil {
13087		return v
13088	}
13089	return *s.Bucket
13090}
13091
13092func (s *DeleteBucketInput) getEndpointARN() (arn.Resource, error) {
13093	if s.Bucket == nil {
13094		return nil, fmt.Errorf("member Bucket is nil")
13095	}
13096	return parseEndpointARN(*s.Bucket)
13097}
13098
13099func (s *DeleteBucketInput) hasEndpointARN() bool {
13100	if s.Bucket == nil {
13101		return false
13102	}
13103	return arn.IsARN(*s.Bucket)
13104}
13105
13106type DeleteBucketInventoryConfigurationInput struct {
13107	_ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"`
13108
13109	// The name of the bucket containing the inventory configuration to delete.
13110	//
13111	// Bucket is a required field
13112	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13113
13114	// The ID used to identify the inventory configuration.
13115	//
13116	// Id is a required field
13117	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
13118}
13119
13120// String returns the string representation
13121func (s DeleteBucketInventoryConfigurationInput) String() string {
13122	return awsutil.Prettify(s)
13123}
13124
13125// GoString returns the string representation
13126func (s DeleteBucketInventoryConfigurationInput) GoString() string {
13127	return s.String()
13128}
13129
13130// Validate inspects the fields of the type to determine if they are valid.
13131func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
13132	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
13133	if s.Bucket == nil {
13134		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13135	}
13136	if s.Bucket != nil && len(*s.Bucket) < 1 {
13137		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13138	}
13139	if s.Id == nil {
13140		invalidParams.Add(request.NewErrParamRequired("Id"))
13141	}
13142
13143	if invalidParams.Len() > 0 {
13144		return invalidParams
13145	}
13146	return nil
13147}
13148
13149// SetBucket sets the Bucket field's value.
13150func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
13151	s.Bucket = &v
13152	return s
13153}
13154
13155func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
13156	if s.Bucket == nil {
13157		return v
13158	}
13159	return *s.Bucket
13160}
13161
13162// SetId sets the Id field's value.
13163func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
13164	s.Id = &v
13165	return s
13166}
13167
13168func (s *DeleteBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
13169	if s.Bucket == nil {
13170		return nil, fmt.Errorf("member Bucket is nil")
13171	}
13172	return parseEndpointARN(*s.Bucket)
13173}
13174
13175func (s *DeleteBucketInventoryConfigurationInput) hasEndpointARN() bool {
13176	if s.Bucket == nil {
13177		return false
13178	}
13179	return arn.IsARN(*s.Bucket)
13180}
13181
13182type DeleteBucketInventoryConfigurationOutput struct {
13183	_ struct{} `type:"structure"`
13184}
13185
13186// String returns the string representation
13187func (s DeleteBucketInventoryConfigurationOutput) String() string {
13188	return awsutil.Prettify(s)
13189}
13190
13191// GoString returns the string representation
13192func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
13193	return s.String()
13194}
13195
13196type DeleteBucketLifecycleInput struct {
13197	_ struct{} `locationName:"DeleteBucketLifecycleRequest" type:"structure"`
13198
13199	// The bucket name of the lifecycle to delete.
13200	//
13201	// Bucket is a required field
13202	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13203}
13204
13205// String returns the string representation
13206func (s DeleteBucketLifecycleInput) String() string {
13207	return awsutil.Prettify(s)
13208}
13209
13210// GoString returns the string representation
13211func (s DeleteBucketLifecycleInput) GoString() string {
13212	return s.String()
13213}
13214
13215// Validate inspects the fields of the type to determine if they are valid.
13216func (s *DeleteBucketLifecycleInput) Validate() error {
13217	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
13218	if s.Bucket == nil {
13219		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13220	}
13221	if s.Bucket != nil && len(*s.Bucket) < 1 {
13222		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13223	}
13224
13225	if invalidParams.Len() > 0 {
13226		return invalidParams
13227	}
13228	return nil
13229}
13230
13231// SetBucket sets the Bucket field's value.
13232func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
13233	s.Bucket = &v
13234	return s
13235}
13236
13237func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
13238	if s.Bucket == nil {
13239		return v
13240	}
13241	return *s.Bucket
13242}
13243
13244func (s *DeleteBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
13245	if s.Bucket == nil {
13246		return nil, fmt.Errorf("member Bucket is nil")
13247	}
13248	return parseEndpointARN(*s.Bucket)
13249}
13250
13251func (s *DeleteBucketLifecycleInput) hasEndpointARN() bool {
13252	if s.Bucket == nil {
13253		return false
13254	}
13255	return arn.IsARN(*s.Bucket)
13256}
13257
13258type DeleteBucketLifecycleOutput struct {
13259	_ struct{} `type:"structure"`
13260}
13261
13262// String returns the string representation
13263func (s DeleteBucketLifecycleOutput) String() string {
13264	return awsutil.Prettify(s)
13265}
13266
13267// GoString returns the string representation
13268func (s DeleteBucketLifecycleOutput) GoString() string {
13269	return s.String()
13270}
13271
13272type DeleteBucketMetricsConfigurationInput struct {
13273	_ struct{} `locationName:"DeleteBucketMetricsConfigurationRequest" type:"structure"`
13274
13275	// The name of the bucket containing the metrics configuration to delete.
13276	//
13277	// Bucket is a required field
13278	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13279
13280	// The ID used to identify the metrics configuration.
13281	//
13282	// Id is a required field
13283	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
13284}
13285
13286// String returns the string representation
13287func (s DeleteBucketMetricsConfigurationInput) String() string {
13288	return awsutil.Prettify(s)
13289}
13290
13291// GoString returns the string representation
13292func (s DeleteBucketMetricsConfigurationInput) GoString() string {
13293	return s.String()
13294}
13295
13296// Validate inspects the fields of the type to determine if they are valid.
13297func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
13298	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
13299	if s.Bucket == nil {
13300		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13301	}
13302	if s.Bucket != nil && len(*s.Bucket) < 1 {
13303		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13304	}
13305	if s.Id == nil {
13306		invalidParams.Add(request.NewErrParamRequired("Id"))
13307	}
13308
13309	if invalidParams.Len() > 0 {
13310		return invalidParams
13311	}
13312	return nil
13313}
13314
13315// SetBucket sets the Bucket field's value.
13316func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
13317	s.Bucket = &v
13318	return s
13319}
13320
13321func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
13322	if s.Bucket == nil {
13323		return v
13324	}
13325	return *s.Bucket
13326}
13327
13328// SetId sets the Id field's value.
13329func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
13330	s.Id = &v
13331	return s
13332}
13333
13334func (s *DeleteBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
13335	if s.Bucket == nil {
13336		return nil, fmt.Errorf("member Bucket is nil")
13337	}
13338	return parseEndpointARN(*s.Bucket)
13339}
13340
13341func (s *DeleteBucketMetricsConfigurationInput) hasEndpointARN() bool {
13342	if s.Bucket == nil {
13343		return false
13344	}
13345	return arn.IsARN(*s.Bucket)
13346}
13347
13348type DeleteBucketMetricsConfigurationOutput struct {
13349	_ struct{} `type:"structure"`
13350}
13351
13352// String returns the string representation
13353func (s DeleteBucketMetricsConfigurationOutput) String() string {
13354	return awsutil.Prettify(s)
13355}
13356
13357// GoString returns the string representation
13358func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
13359	return s.String()
13360}
13361
13362type DeleteBucketOutput struct {
13363	_ struct{} `type:"structure"`
13364}
13365
13366// String returns the string representation
13367func (s DeleteBucketOutput) String() string {
13368	return awsutil.Prettify(s)
13369}
13370
13371// GoString returns the string representation
13372func (s DeleteBucketOutput) GoString() string {
13373	return s.String()
13374}
13375
13376type DeleteBucketPolicyInput struct {
13377	_ struct{} `locationName:"DeleteBucketPolicyRequest" type:"structure"`
13378
13379	// The bucket name.
13380	//
13381	// Bucket is a required field
13382	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13383}
13384
13385// String returns the string representation
13386func (s DeleteBucketPolicyInput) String() string {
13387	return awsutil.Prettify(s)
13388}
13389
13390// GoString returns the string representation
13391func (s DeleteBucketPolicyInput) GoString() string {
13392	return s.String()
13393}
13394
13395// Validate inspects the fields of the type to determine if they are valid.
13396func (s *DeleteBucketPolicyInput) Validate() error {
13397	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
13398	if s.Bucket == nil {
13399		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13400	}
13401	if s.Bucket != nil && len(*s.Bucket) < 1 {
13402		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13403	}
13404
13405	if invalidParams.Len() > 0 {
13406		return invalidParams
13407	}
13408	return nil
13409}
13410
13411// SetBucket sets the Bucket field's value.
13412func (s *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
13413	s.Bucket = &v
13414	return s
13415}
13416
13417func (s *DeleteBucketPolicyInput) getBucket() (v string) {
13418	if s.Bucket == nil {
13419		return v
13420	}
13421	return *s.Bucket
13422}
13423
13424func (s *DeleteBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
13425	if s.Bucket == nil {
13426		return nil, fmt.Errorf("member Bucket is nil")
13427	}
13428	return parseEndpointARN(*s.Bucket)
13429}
13430
13431func (s *DeleteBucketPolicyInput) hasEndpointARN() bool {
13432	if s.Bucket == nil {
13433		return false
13434	}
13435	return arn.IsARN(*s.Bucket)
13436}
13437
13438type DeleteBucketPolicyOutput struct {
13439	_ struct{} `type:"structure"`
13440}
13441
13442// String returns the string representation
13443func (s DeleteBucketPolicyOutput) String() string {
13444	return awsutil.Prettify(s)
13445}
13446
13447// GoString returns the string representation
13448func (s DeleteBucketPolicyOutput) GoString() string {
13449	return s.String()
13450}
13451
13452type DeleteBucketReplicationInput struct {
13453	_ struct{} `locationName:"DeleteBucketReplicationRequest" type:"structure"`
13454
13455	// The bucket name.
13456	//
13457	// Bucket is a required field
13458	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13459}
13460
13461// String returns the string representation
13462func (s DeleteBucketReplicationInput) String() string {
13463	return awsutil.Prettify(s)
13464}
13465
13466// GoString returns the string representation
13467func (s DeleteBucketReplicationInput) GoString() string {
13468	return s.String()
13469}
13470
13471// Validate inspects the fields of the type to determine if they are valid.
13472func (s *DeleteBucketReplicationInput) Validate() error {
13473	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
13474	if s.Bucket == nil {
13475		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13476	}
13477	if s.Bucket != nil && len(*s.Bucket) < 1 {
13478		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13479	}
13480
13481	if invalidParams.Len() > 0 {
13482		return invalidParams
13483	}
13484	return nil
13485}
13486
13487// SetBucket sets the Bucket field's value.
13488func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
13489	s.Bucket = &v
13490	return s
13491}
13492
13493func (s *DeleteBucketReplicationInput) getBucket() (v string) {
13494	if s.Bucket == nil {
13495		return v
13496	}
13497	return *s.Bucket
13498}
13499
13500func (s *DeleteBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
13501	if s.Bucket == nil {
13502		return nil, fmt.Errorf("member Bucket is nil")
13503	}
13504	return parseEndpointARN(*s.Bucket)
13505}
13506
13507func (s *DeleteBucketReplicationInput) hasEndpointARN() bool {
13508	if s.Bucket == nil {
13509		return false
13510	}
13511	return arn.IsARN(*s.Bucket)
13512}
13513
13514type DeleteBucketReplicationOutput struct {
13515	_ struct{} `type:"structure"`
13516}
13517
13518// String returns the string representation
13519func (s DeleteBucketReplicationOutput) String() string {
13520	return awsutil.Prettify(s)
13521}
13522
13523// GoString returns the string representation
13524func (s DeleteBucketReplicationOutput) GoString() string {
13525	return s.String()
13526}
13527
13528type DeleteBucketTaggingInput struct {
13529	_ struct{} `locationName:"DeleteBucketTaggingRequest" type:"structure"`
13530
13531	// The bucket that has the tag set to be removed.
13532	//
13533	// Bucket is a required field
13534	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13535}
13536
13537// String returns the string representation
13538func (s DeleteBucketTaggingInput) String() string {
13539	return awsutil.Prettify(s)
13540}
13541
13542// GoString returns the string representation
13543func (s DeleteBucketTaggingInput) GoString() string {
13544	return s.String()
13545}
13546
13547// Validate inspects the fields of the type to determine if they are valid.
13548func (s *DeleteBucketTaggingInput) Validate() error {
13549	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
13550	if s.Bucket == nil {
13551		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13552	}
13553	if s.Bucket != nil && len(*s.Bucket) < 1 {
13554		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13555	}
13556
13557	if invalidParams.Len() > 0 {
13558		return invalidParams
13559	}
13560	return nil
13561}
13562
13563// SetBucket sets the Bucket field's value.
13564func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
13565	s.Bucket = &v
13566	return s
13567}
13568
13569func (s *DeleteBucketTaggingInput) getBucket() (v string) {
13570	if s.Bucket == nil {
13571		return v
13572	}
13573	return *s.Bucket
13574}
13575
13576func (s *DeleteBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
13577	if s.Bucket == nil {
13578		return nil, fmt.Errorf("member Bucket is nil")
13579	}
13580	return parseEndpointARN(*s.Bucket)
13581}
13582
13583func (s *DeleteBucketTaggingInput) hasEndpointARN() bool {
13584	if s.Bucket == nil {
13585		return false
13586	}
13587	return arn.IsARN(*s.Bucket)
13588}
13589
13590type DeleteBucketTaggingOutput struct {
13591	_ struct{} `type:"structure"`
13592}
13593
13594// String returns the string representation
13595func (s DeleteBucketTaggingOutput) String() string {
13596	return awsutil.Prettify(s)
13597}
13598
13599// GoString returns the string representation
13600func (s DeleteBucketTaggingOutput) GoString() string {
13601	return s.String()
13602}
13603
13604type DeleteBucketWebsiteInput struct {
13605	_ struct{} `locationName:"DeleteBucketWebsiteRequest" type:"structure"`
13606
13607	// The bucket name for which you want to remove the website configuration.
13608	//
13609	// Bucket is a required field
13610	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13611}
13612
13613// String returns the string representation
13614func (s DeleteBucketWebsiteInput) String() string {
13615	return awsutil.Prettify(s)
13616}
13617
13618// GoString returns the string representation
13619func (s DeleteBucketWebsiteInput) GoString() string {
13620	return s.String()
13621}
13622
13623// Validate inspects the fields of the type to determine if they are valid.
13624func (s *DeleteBucketWebsiteInput) Validate() error {
13625	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
13626	if s.Bucket == nil {
13627		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13628	}
13629	if s.Bucket != nil && len(*s.Bucket) < 1 {
13630		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13631	}
13632
13633	if invalidParams.Len() > 0 {
13634		return invalidParams
13635	}
13636	return nil
13637}
13638
13639// SetBucket sets the Bucket field's value.
13640func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
13641	s.Bucket = &v
13642	return s
13643}
13644
13645func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
13646	if s.Bucket == nil {
13647		return v
13648	}
13649	return *s.Bucket
13650}
13651
13652func (s *DeleteBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
13653	if s.Bucket == nil {
13654		return nil, fmt.Errorf("member Bucket is nil")
13655	}
13656	return parseEndpointARN(*s.Bucket)
13657}
13658
13659func (s *DeleteBucketWebsiteInput) hasEndpointARN() bool {
13660	if s.Bucket == nil {
13661		return false
13662	}
13663	return arn.IsARN(*s.Bucket)
13664}
13665
13666type DeleteBucketWebsiteOutput struct {
13667	_ struct{} `type:"structure"`
13668}
13669
13670// String returns the string representation
13671func (s DeleteBucketWebsiteOutput) String() string {
13672	return awsutil.Prettify(s)
13673}
13674
13675// GoString returns the string representation
13676func (s DeleteBucketWebsiteOutput) GoString() string {
13677	return s.String()
13678}
13679
13680// Information about the delete marker.
13681type DeleteMarkerEntry struct {
13682	_ struct{} `type:"structure"`
13683
13684	// Specifies whether the object is (true) or is not (false) the latest version
13685	// of an object.
13686	IsLatest *bool `type:"boolean"`
13687
13688	// The object key.
13689	Key *string `min:"1" type:"string"`
13690
13691	// Date and time the object was last modified.
13692	LastModified *time.Time `type:"timestamp"`
13693
13694	// The account that created the delete marker.>
13695	Owner *Owner `type:"structure"`
13696
13697	// Version ID of an object.
13698	VersionId *string `type:"string"`
13699}
13700
13701// String returns the string representation
13702func (s DeleteMarkerEntry) String() string {
13703	return awsutil.Prettify(s)
13704}
13705
13706// GoString returns the string representation
13707func (s DeleteMarkerEntry) GoString() string {
13708	return s.String()
13709}
13710
13711// SetIsLatest sets the IsLatest field's value.
13712func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
13713	s.IsLatest = &v
13714	return s
13715}
13716
13717// SetKey sets the Key field's value.
13718func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
13719	s.Key = &v
13720	return s
13721}
13722
13723// SetLastModified sets the LastModified field's value.
13724func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
13725	s.LastModified = &v
13726	return s
13727}
13728
13729// SetOwner sets the Owner field's value.
13730func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
13731	s.Owner = v
13732	return s
13733}
13734
13735// SetVersionId sets the VersionId field's value.
13736func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
13737	s.VersionId = &v
13738	return s
13739}
13740
13741// Specifies whether Amazon S3 replicates the delete markers. If you specify
13742// a Filter, you must specify this element. However, in the latest version of
13743// replication configuration (when Filter is specified), Amazon S3 doesn't replicate
13744// delete markers. Therefore, the DeleteMarkerReplication element can contain
13745// only <Status>Disabled</Status>. For an example configuration, see Basic Rule
13746// Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
13747//
13748// If you don't specify the Filter element, Amazon S3 assumes that the replication
13749// configuration is the earlier version, V1. In the earlier version, Amazon
13750// S3 handled replication of delete markers differently. For more information,
13751// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
13752type DeleteMarkerReplication struct {
13753	_ struct{} `type:"structure"`
13754
13755	// Indicates whether to replicate delete markers.
13756	//
13757	// In the current implementation, Amazon S3 doesn't replicate the delete markers.
13758	// The status must be Disabled.
13759	Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
13760}
13761
13762// String returns the string representation
13763func (s DeleteMarkerReplication) String() string {
13764	return awsutil.Prettify(s)
13765}
13766
13767// GoString returns the string representation
13768func (s DeleteMarkerReplication) GoString() string {
13769	return s.String()
13770}
13771
13772// SetStatus sets the Status field's value.
13773func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication {
13774	s.Status = &v
13775	return s
13776}
13777
13778type DeleteObjectInput struct {
13779	_ struct{} `locationName:"DeleteObjectRequest" type:"structure"`
13780
13781	// The bucket name of the bucket containing the object.
13782	//
13783	// When using this API with an access point, you must direct requests to the
13784	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
13785	// When using this operation using an access point through the AWS SDKs, you
13786	// provide the access point ARN in place of the bucket name. For more information
13787	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
13788	// in the Amazon Simple Storage Service Developer Guide.
13789	//
13790	// Bucket is a required field
13791	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13792
13793	// Indicates whether S3 Object Lock should bypass Governance-mode restrictions
13794	// to process this operation.
13795	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
13796
13797	// Key name of the object to delete.
13798	//
13799	// Key is a required field
13800	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13801
13802	// The concatenation of the authentication device's serial number, a space,
13803	// and the value that is displayed on your authentication device. Required to
13804	// permanently delete a versioned object if versioning is configured with MFA
13805	// delete enabled.
13806	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
13807
13808	// Confirms that the requester knows that she or he will be charged for the
13809	// request. Bucket owners need not specify this parameter in their requests.
13810	// For information about downloading objects from Requester Pays buckets, see
13811	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
13812	// in the Amazon S3 Developer Guide.
13813	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13814
13815	// VersionId used to reference a specific version of the object.
13816	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
13817}
13818
13819// String returns the string representation
13820func (s DeleteObjectInput) String() string {
13821	return awsutil.Prettify(s)
13822}
13823
13824// GoString returns the string representation
13825func (s DeleteObjectInput) GoString() string {
13826	return s.String()
13827}
13828
13829// Validate inspects the fields of the type to determine if they are valid.
13830func (s *DeleteObjectInput) Validate() error {
13831	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
13832	if s.Bucket == nil {
13833		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13834	}
13835	if s.Bucket != nil && len(*s.Bucket) < 1 {
13836		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13837	}
13838	if s.Key == nil {
13839		invalidParams.Add(request.NewErrParamRequired("Key"))
13840	}
13841	if s.Key != nil && len(*s.Key) < 1 {
13842		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13843	}
13844
13845	if invalidParams.Len() > 0 {
13846		return invalidParams
13847	}
13848	return nil
13849}
13850
13851// SetBucket sets the Bucket field's value.
13852func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
13853	s.Bucket = &v
13854	return s
13855}
13856
13857func (s *DeleteObjectInput) getBucket() (v string) {
13858	if s.Bucket == nil {
13859		return v
13860	}
13861	return *s.Bucket
13862}
13863
13864// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
13865func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput {
13866	s.BypassGovernanceRetention = &v
13867	return s
13868}
13869
13870// SetKey sets the Key field's value.
13871func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
13872	s.Key = &v
13873	return s
13874}
13875
13876// SetMFA sets the MFA field's value.
13877func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
13878	s.MFA = &v
13879	return s
13880}
13881
13882// SetRequestPayer sets the RequestPayer field's value.
13883func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
13884	s.RequestPayer = &v
13885	return s
13886}
13887
13888// SetVersionId sets the VersionId field's value.
13889func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
13890	s.VersionId = &v
13891	return s
13892}
13893
13894func (s *DeleteObjectInput) getEndpointARN() (arn.Resource, error) {
13895	if s.Bucket == nil {
13896		return nil, fmt.Errorf("member Bucket is nil")
13897	}
13898	return parseEndpointARN(*s.Bucket)
13899}
13900
13901func (s *DeleteObjectInput) hasEndpointARN() bool {
13902	if s.Bucket == nil {
13903		return false
13904	}
13905	return arn.IsARN(*s.Bucket)
13906}
13907
13908type DeleteObjectOutput struct {
13909	_ struct{} `type:"structure"`
13910
13911	// Specifies whether the versioned object that was permanently deleted was (true)
13912	// or was not (false) a delete marker.
13913	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
13914
13915	// If present, indicates that the requester was successfully charged for the
13916	// request.
13917	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
13918
13919	// Returns the version ID of the delete marker created as a result of the DELETE
13920	// operation.
13921	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
13922}
13923
13924// String returns the string representation
13925func (s DeleteObjectOutput) String() string {
13926	return awsutil.Prettify(s)
13927}
13928
13929// GoString returns the string representation
13930func (s DeleteObjectOutput) GoString() string {
13931	return s.String()
13932}
13933
13934// SetDeleteMarker sets the DeleteMarker field's value.
13935func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
13936	s.DeleteMarker = &v
13937	return s
13938}
13939
13940// SetRequestCharged sets the RequestCharged field's value.
13941func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
13942	s.RequestCharged = &v
13943	return s
13944}
13945
13946// SetVersionId sets the VersionId field's value.
13947func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
13948	s.VersionId = &v
13949	return s
13950}
13951
13952type DeleteObjectTaggingInput struct {
13953	_ struct{} `locationName:"DeleteObjectTaggingRequest" type:"structure"`
13954
13955	// The bucket name containing the objects from which to remove the tags.
13956	//
13957	// When using this API with an access point, you must direct requests to the
13958	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
13959	// When using this operation using an access point through the AWS SDKs, you
13960	// provide the access point ARN in place of the bucket name. For more information
13961	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
13962	// in the Amazon Simple Storage Service Developer Guide.
13963	//
13964	// Bucket is a required field
13965	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13966
13967	// Name of the tag.
13968	//
13969	// Key is a required field
13970	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13971
13972	// The versionId of the object that the tag-set will be removed from.
13973	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
13974}
13975
13976// String returns the string representation
13977func (s DeleteObjectTaggingInput) String() string {
13978	return awsutil.Prettify(s)
13979}
13980
13981// GoString returns the string representation
13982func (s DeleteObjectTaggingInput) GoString() string {
13983	return s.String()
13984}
13985
13986// Validate inspects the fields of the type to determine if they are valid.
13987func (s *DeleteObjectTaggingInput) Validate() error {
13988	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
13989	if s.Bucket == nil {
13990		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13991	}
13992	if s.Bucket != nil && len(*s.Bucket) < 1 {
13993		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13994	}
13995	if s.Key == nil {
13996		invalidParams.Add(request.NewErrParamRequired("Key"))
13997	}
13998	if s.Key != nil && len(*s.Key) < 1 {
13999		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14000	}
14001
14002	if invalidParams.Len() > 0 {
14003		return invalidParams
14004	}
14005	return nil
14006}
14007
14008// SetBucket sets the Bucket field's value.
14009func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
14010	s.Bucket = &v
14011	return s
14012}
14013
14014func (s *DeleteObjectTaggingInput) getBucket() (v string) {
14015	if s.Bucket == nil {
14016		return v
14017	}
14018	return *s.Bucket
14019}
14020
14021// SetKey sets the Key field's value.
14022func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
14023	s.Key = &v
14024	return s
14025}
14026
14027// SetVersionId sets the VersionId field's value.
14028func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
14029	s.VersionId = &v
14030	return s
14031}
14032
14033func (s *DeleteObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
14034	if s.Bucket == nil {
14035		return nil, fmt.Errorf("member Bucket is nil")
14036	}
14037	return parseEndpointARN(*s.Bucket)
14038}
14039
14040func (s *DeleteObjectTaggingInput) hasEndpointARN() bool {
14041	if s.Bucket == nil {
14042		return false
14043	}
14044	return arn.IsARN(*s.Bucket)
14045}
14046
14047type DeleteObjectTaggingOutput struct {
14048	_ struct{} `type:"structure"`
14049
14050	// The versionId of the object the tag-set was removed from.
14051	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
14052}
14053
14054// String returns the string representation
14055func (s DeleteObjectTaggingOutput) String() string {
14056	return awsutil.Prettify(s)
14057}
14058
14059// GoString returns the string representation
14060func (s DeleteObjectTaggingOutput) GoString() string {
14061	return s.String()
14062}
14063
14064// SetVersionId sets the VersionId field's value.
14065func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
14066	s.VersionId = &v
14067	return s
14068}
14069
14070type DeleteObjectsInput struct {
14071	_ struct{} `locationName:"DeleteObjectsRequest" type:"structure" payload:"Delete"`
14072
14073	// The bucket name containing the objects to delete.
14074	//
14075	// When using this API with an access point, you must direct requests to the
14076	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
14077	// When using this operation using an access point through the AWS SDKs, you
14078	// provide the access point ARN in place of the bucket name. For more information
14079	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
14080	// in the Amazon Simple Storage Service Developer Guide.
14081	//
14082	// Bucket is a required field
14083	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14084
14085	// Specifies whether you want to delete this object even if it has a Governance-type
14086	// Object Lock in place. You must have sufficient permissions to perform this
14087	// operation.
14088	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
14089
14090	// Container for the request.
14091	//
14092	// Delete is a required field
14093	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
14094
14095	// The concatenation of the authentication device's serial number, a space,
14096	// and the value that is displayed on your authentication device. Required to
14097	// permanently delete a versioned object if versioning is configured with MFA
14098	// delete enabled.
14099	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
14100
14101	// Confirms that the requester knows that she or he will be charged for the
14102	// request. Bucket owners need not specify this parameter in their requests.
14103	// For information about downloading objects from Requester Pays buckets, see
14104	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
14105	// in the Amazon S3 Developer Guide.
14106	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
14107}
14108
14109// String returns the string representation
14110func (s DeleteObjectsInput) String() string {
14111	return awsutil.Prettify(s)
14112}
14113
14114// GoString returns the string representation
14115func (s DeleteObjectsInput) GoString() string {
14116	return s.String()
14117}
14118
14119// Validate inspects the fields of the type to determine if they are valid.
14120func (s *DeleteObjectsInput) Validate() error {
14121	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
14122	if s.Bucket == nil {
14123		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14124	}
14125	if s.Bucket != nil && len(*s.Bucket) < 1 {
14126		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14127	}
14128	if s.Delete == nil {
14129		invalidParams.Add(request.NewErrParamRequired("Delete"))
14130	}
14131	if s.Delete != nil {
14132		if err := s.Delete.Validate(); err != nil {
14133			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
14134		}
14135	}
14136
14137	if invalidParams.Len() > 0 {
14138		return invalidParams
14139	}
14140	return nil
14141}
14142
14143// SetBucket sets the Bucket field's value.
14144func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
14145	s.Bucket = &v
14146	return s
14147}
14148
14149func (s *DeleteObjectsInput) getBucket() (v string) {
14150	if s.Bucket == nil {
14151		return v
14152	}
14153	return *s.Bucket
14154}
14155
14156// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
14157func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput {
14158	s.BypassGovernanceRetention = &v
14159	return s
14160}
14161
14162// SetDelete sets the Delete field's value.
14163func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
14164	s.Delete = v
14165	return s
14166}
14167
14168// SetMFA sets the MFA field's value.
14169func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
14170	s.MFA = &v
14171	return s
14172}
14173
14174// SetRequestPayer sets the RequestPayer field's value.
14175func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
14176	s.RequestPayer = &v
14177	return s
14178}
14179
14180func (s *DeleteObjectsInput) getEndpointARN() (arn.Resource, error) {
14181	if s.Bucket == nil {
14182		return nil, fmt.Errorf("member Bucket is nil")
14183	}
14184	return parseEndpointARN(*s.Bucket)
14185}
14186
14187func (s *DeleteObjectsInput) hasEndpointARN() bool {
14188	if s.Bucket == nil {
14189		return false
14190	}
14191	return arn.IsARN(*s.Bucket)
14192}
14193
14194type DeleteObjectsOutput struct {
14195	_ struct{} `type:"structure"`
14196
14197	// Container element for a successful delete. It identifies the object that
14198	// was successfully deleted.
14199	Deleted []*DeletedObject `type:"list" flattened:"true"`
14200
14201	// Container for a failed delete operation that describes the object that Amazon
14202	// S3 attempted to delete and the error it encountered.
14203	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
14204
14205	// If present, indicates that the requester was successfully charged for the
14206	// request.
14207	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
14208}
14209
14210// String returns the string representation
14211func (s DeleteObjectsOutput) String() string {
14212	return awsutil.Prettify(s)
14213}
14214
14215// GoString returns the string representation
14216func (s DeleteObjectsOutput) GoString() string {
14217	return s.String()
14218}
14219
14220// SetDeleted sets the Deleted field's value.
14221func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
14222	s.Deleted = v
14223	return s
14224}
14225
14226// SetErrors sets the Errors field's value.
14227func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
14228	s.Errors = v
14229	return s
14230}
14231
14232// SetRequestCharged sets the RequestCharged field's value.
14233func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
14234	s.RequestCharged = &v
14235	return s
14236}
14237
14238type DeletePublicAccessBlockInput struct {
14239	_ struct{} `locationName:"DeletePublicAccessBlockRequest" type:"structure"`
14240
14241	// The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.
14242	//
14243	// Bucket is a required field
14244	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14245}
14246
14247// String returns the string representation
14248func (s DeletePublicAccessBlockInput) String() string {
14249	return awsutil.Prettify(s)
14250}
14251
14252// GoString returns the string representation
14253func (s DeletePublicAccessBlockInput) GoString() string {
14254	return s.String()
14255}
14256
14257// Validate inspects the fields of the type to determine if they are valid.
14258func (s *DeletePublicAccessBlockInput) Validate() error {
14259	invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"}
14260	if s.Bucket == nil {
14261		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14262	}
14263	if s.Bucket != nil && len(*s.Bucket) < 1 {
14264		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14265	}
14266
14267	if invalidParams.Len() > 0 {
14268		return invalidParams
14269	}
14270	return nil
14271}
14272
14273// SetBucket sets the Bucket field's value.
14274func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput {
14275	s.Bucket = &v
14276	return s
14277}
14278
14279func (s *DeletePublicAccessBlockInput) getBucket() (v string) {
14280	if s.Bucket == nil {
14281		return v
14282	}
14283	return *s.Bucket
14284}
14285
14286func (s *DeletePublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
14287	if s.Bucket == nil {
14288		return nil, fmt.Errorf("member Bucket is nil")
14289	}
14290	return parseEndpointARN(*s.Bucket)
14291}
14292
14293func (s *DeletePublicAccessBlockInput) hasEndpointARN() bool {
14294	if s.Bucket == nil {
14295		return false
14296	}
14297	return arn.IsARN(*s.Bucket)
14298}
14299
14300type DeletePublicAccessBlockOutput struct {
14301	_ struct{} `type:"structure"`
14302}
14303
14304// String returns the string representation
14305func (s DeletePublicAccessBlockOutput) String() string {
14306	return awsutil.Prettify(s)
14307}
14308
14309// GoString returns the string representation
14310func (s DeletePublicAccessBlockOutput) GoString() string {
14311	return s.String()
14312}
14313
14314// Information about the deleted object.
14315type DeletedObject struct {
14316	_ struct{} `type:"structure"`
14317
14318	// Specifies whether the versioned object that was permanently deleted was (true)
14319	// or was not (false) a delete marker. In a simple DELETE, this header indicates
14320	// whether (true) or not (false) a delete marker was created.
14321	DeleteMarker *bool `type:"boolean"`
14322
14323	// The version ID of the delete marker created as a result of the DELETE operation.
14324	// If you delete a specific object version, the value returned by this header
14325	// is the version ID of the object version deleted.
14326	DeleteMarkerVersionId *string `type:"string"`
14327
14328	// The name of the deleted object.
14329	Key *string `min:"1" type:"string"`
14330
14331	// The version ID of the deleted object.
14332	VersionId *string `type:"string"`
14333}
14334
14335// String returns the string representation
14336func (s DeletedObject) String() string {
14337	return awsutil.Prettify(s)
14338}
14339
14340// GoString returns the string representation
14341func (s DeletedObject) GoString() string {
14342	return s.String()
14343}
14344
14345// SetDeleteMarker sets the DeleteMarker field's value.
14346func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
14347	s.DeleteMarker = &v
14348	return s
14349}
14350
14351// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
14352func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
14353	s.DeleteMarkerVersionId = &v
14354	return s
14355}
14356
14357// SetKey sets the Key field's value.
14358func (s *DeletedObject) SetKey(v string) *DeletedObject {
14359	s.Key = &v
14360	return s
14361}
14362
14363// SetVersionId sets the VersionId field's value.
14364func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
14365	s.VersionId = &v
14366	return s
14367}
14368
14369// Specifies information about where to publish analysis or configuration results
14370// for an Amazon S3 bucket and S3 Replication Time Control (S3 RTC).
14371type Destination struct {
14372	_ struct{} `type:"structure"`
14373
14374	// Specify this only in a cross-account scenario (where source and destination
14375	// bucket owners are not the same), and you want to change replica ownership
14376	// to the AWS account that owns the destination bucket. If this is not specified
14377	// in the replication configuration, the replicas are owned by same AWS account
14378	// that owns the source object.
14379	AccessControlTranslation *AccessControlTranslation `type:"structure"`
14380
14381	// Destination bucket owner account ID. In a cross-account scenario, if you
14382	// direct Amazon S3 to change replica ownership to the AWS account that owns
14383	// the destination bucket by specifying the AccessControlTranslation property,
14384	// this is the account ID of the destination bucket owner. For more information,
14385	// see Replication Additional Configuration: Changing the Replica Owner (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html)
14386	// in the Amazon Simple Storage Service Developer Guide.
14387	Account *string `type:"string"`
14388
14389	// The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
14390	// store the results.
14391	//
14392	// Bucket is a required field
14393	Bucket *string `type:"string" required:"true"`
14394
14395	// A container that provides information about encryption. If SourceSelectionCriteria
14396	// is specified, you must specify this element.
14397	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
14398
14399	// A container specifying replication metrics-related settings enabling metrics
14400	// and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified
14401	// together with a ReplicationTime block.
14402	Metrics *Metrics `type:"structure"`
14403
14404	// A container specifying S3 Replication Time Control (S3 RTC), including whether
14405	// S3 RTC is enabled and the time when all objects and operations on objects
14406	// must be replicated. Must be specified together with a Metrics block.
14407	ReplicationTime *ReplicationTime `type:"structure"`
14408
14409	// The storage class to use when replicating objects, such as standard or reduced
14410	// redundancy. By default, Amazon S3 uses the storage class of the source object
14411	// to create the object replica.
14412	//
14413	// For valid values, see the StorageClass element of the PUT Bucket replication
14414	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
14415	// action in the Amazon Simple Storage Service API Reference.
14416	StorageClass *string `type:"string" enum:"StorageClass"`
14417}
14418
14419// String returns the string representation
14420func (s Destination) String() string {
14421	return awsutil.Prettify(s)
14422}
14423
14424// GoString returns the string representation
14425func (s Destination) GoString() string {
14426	return s.String()
14427}
14428
14429// Validate inspects the fields of the type to determine if they are valid.
14430func (s *Destination) Validate() error {
14431	invalidParams := request.ErrInvalidParams{Context: "Destination"}
14432	if s.Bucket == nil {
14433		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14434	}
14435	if s.AccessControlTranslation != nil {
14436		if err := s.AccessControlTranslation.Validate(); err != nil {
14437			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
14438		}
14439	}
14440	if s.Metrics != nil {
14441		if err := s.Metrics.Validate(); err != nil {
14442			invalidParams.AddNested("Metrics", err.(request.ErrInvalidParams))
14443		}
14444	}
14445	if s.ReplicationTime != nil {
14446		if err := s.ReplicationTime.Validate(); err != nil {
14447			invalidParams.AddNested("ReplicationTime", err.(request.ErrInvalidParams))
14448		}
14449	}
14450
14451	if invalidParams.Len() > 0 {
14452		return invalidParams
14453	}
14454	return nil
14455}
14456
14457// SetAccessControlTranslation sets the AccessControlTranslation field's value.
14458func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
14459	s.AccessControlTranslation = v
14460	return s
14461}
14462
14463// SetAccount sets the Account field's value.
14464func (s *Destination) SetAccount(v string) *Destination {
14465	s.Account = &v
14466	return s
14467}
14468
14469// SetBucket sets the Bucket field's value.
14470func (s *Destination) SetBucket(v string) *Destination {
14471	s.Bucket = &v
14472	return s
14473}
14474
14475func (s *Destination) getBucket() (v string) {
14476	if s.Bucket == nil {
14477		return v
14478	}
14479	return *s.Bucket
14480}
14481
14482// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
14483func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
14484	s.EncryptionConfiguration = v
14485	return s
14486}
14487
14488// SetMetrics sets the Metrics field's value.
14489func (s *Destination) SetMetrics(v *Metrics) *Destination {
14490	s.Metrics = v
14491	return s
14492}
14493
14494// SetReplicationTime sets the ReplicationTime field's value.
14495func (s *Destination) SetReplicationTime(v *ReplicationTime) *Destination {
14496	s.ReplicationTime = v
14497	return s
14498}
14499
14500// SetStorageClass sets the StorageClass field's value.
14501func (s *Destination) SetStorageClass(v string) *Destination {
14502	s.StorageClass = &v
14503	return s
14504}
14505
14506// Contains the type of server-side encryption used.
14507type Encryption struct {
14508	_ struct{} `type:"structure"`
14509
14510	// The server-side encryption algorithm used when storing job results in Amazon
14511	// S3 (for example, AES256, aws:kms).
14512	//
14513	// EncryptionType is a required field
14514	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
14515
14516	// If the encryption type is aws:kms, this optional value can be used to specify
14517	// the encryption context for the restore results.
14518	KMSContext *string `type:"string"`
14519
14520	// If the encryption type is aws:kms, this optional value specifies the AWS
14521	// KMS key ID to use for encryption of job results.
14522	KMSKeyId *string `type:"string" sensitive:"true"`
14523}
14524
14525// String returns the string representation
14526func (s Encryption) String() string {
14527	return awsutil.Prettify(s)
14528}
14529
14530// GoString returns the string representation
14531func (s Encryption) GoString() string {
14532	return s.String()
14533}
14534
14535// Validate inspects the fields of the type to determine if they are valid.
14536func (s *Encryption) Validate() error {
14537	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
14538	if s.EncryptionType == nil {
14539		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
14540	}
14541
14542	if invalidParams.Len() > 0 {
14543		return invalidParams
14544	}
14545	return nil
14546}
14547
14548// SetEncryptionType sets the EncryptionType field's value.
14549func (s *Encryption) SetEncryptionType(v string) *Encryption {
14550	s.EncryptionType = &v
14551	return s
14552}
14553
14554// SetKMSContext sets the KMSContext field's value.
14555func (s *Encryption) SetKMSContext(v string) *Encryption {
14556	s.KMSContext = &v
14557	return s
14558}
14559
14560// SetKMSKeyId sets the KMSKeyId field's value.
14561func (s *Encryption) SetKMSKeyId(v string) *Encryption {
14562	s.KMSKeyId = &v
14563	return s
14564}
14565
14566// Specifies encryption-related information for an Amazon S3 bucket that is
14567// a destination for replicated objects.
14568type EncryptionConfiguration struct {
14569	_ struct{} `type:"structure"`
14570
14571	// Specifies the AWS KMS Key ID (Key ARN or Alias ARN) for the destination bucket.
14572	// Amazon S3 uses this key to encrypt replica objects.
14573	ReplicaKmsKeyID *string `type:"string"`
14574}
14575
14576// String returns the string representation
14577func (s EncryptionConfiguration) String() string {
14578	return awsutil.Prettify(s)
14579}
14580
14581// GoString returns the string representation
14582func (s EncryptionConfiguration) GoString() string {
14583	return s.String()
14584}
14585
14586// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
14587func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
14588	s.ReplicaKmsKeyID = &v
14589	return s
14590}
14591
14592// A message that indicates the request is complete and no more messages will
14593// be sent. You should not assume that the request is complete until the client
14594// receives an EndEvent.
14595type EndEvent struct {
14596	_ struct{} `locationName:"EndEvent" type:"structure"`
14597}
14598
14599// String returns the string representation
14600func (s EndEvent) String() string {
14601	return awsutil.Prettify(s)
14602}
14603
14604// GoString returns the string representation
14605func (s EndEvent) GoString() string {
14606	return s.String()
14607}
14608
14609// The EndEvent is and event in the SelectObjectContentEventStream group of events.
14610func (s *EndEvent) eventSelectObjectContentEventStream() {}
14611
14612// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
14613// This method is only used internally within the SDK's EventStream handling.
14614func (s *EndEvent) UnmarshalEvent(
14615	payloadUnmarshaler protocol.PayloadUnmarshaler,
14616	msg eventstream.Message,
14617) error {
14618	return nil
14619}
14620
14621// Container for all error elements.
14622type Error struct {
14623	_ struct{} `type:"structure"`
14624
14625	// The error code is a string that uniquely identifies an error condition. It
14626	// is meant to be read and understood by programs that detect and handle errors
14627	// by type.
14628	//
14629	// Amazon S3 error codes
14630	//
14631	//    * Code: AccessDenied Description: Access Denied HTTP Status Code: 403
14632	//    Forbidden SOAP Fault Code Prefix: Client
14633	//
14634	//    * Code: AccountProblem Description: There is a problem with your AWS account
14635	//    that prevents the operation from completing successfully. Contact AWS
14636	//    Support for further assistance. HTTP Status Code: 403 Forbidden SOAP Fault
14637	//    Code Prefix: Client
14638	//
14639	//    * Code: AllAccessDisabled Description: All access to this Amazon S3 resource
14640	//    has been disabled. Contact AWS Support for further assistance. HTTP Status
14641	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
14642	//
14643	//    * Code: AmbiguousGrantByEmailAddress Description: The email address you
14644	//    provided is associated with more than one account. HTTP Status Code: 400
14645	//    Bad Request SOAP Fault Code Prefix: Client
14646	//
14647	//    * Code: AuthorizationHeaderMalformed Description: The authorization header
14648	//    you provided is invalid. HTTP Status Code: 400 Bad Request HTTP Status
14649	//    Code: N/A
14650	//
14651	//    * Code: BadDigest Description: The Content-MD5 you specified did not match
14652	//    what we received. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14653	//    Client
14654	//
14655	//    * Code: BucketAlreadyExists Description: The requested bucket name is
14656	//    not available. The bucket namespace is shared by all users of the system.
14657	//    Please select a different name and try again. HTTP Status Code: 409 Conflict
14658	//    SOAP Fault Code Prefix: Client
14659	//
14660	//    * Code: BucketAlreadyOwnedByYou Description: The bucket you tried to create
14661	//    already exists, and you own it. Amazon S3 returns this error in all AWS
14662	//    Regions except in the North Virginia Region. For legacy compatibility,
14663	//    if you re-create an existing bucket that you already own in the North
14664	//    Virginia Region, Amazon S3 returns 200 OK and resets the bucket access
14665	//    control lists (ACLs). Code: 409 Conflict (in all Regions except the North
14666	//    Virginia Region) SOAP Fault Code Prefix: Client
14667	//
14668	//    * Code: BucketNotEmpty Description: The bucket you tried to delete is
14669	//    not empty. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
14670	//
14671	//    * Code: CredentialsNotSupported Description: This request does not support
14672	//    credentials. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14673	//    Client
14674	//
14675	//    * Code: CrossLocationLoggingProhibited Description: Cross-location logging
14676	//    not allowed. Buckets in one geographic location cannot log information
14677	//    to a bucket in another location. HTTP Status Code: 403 Forbidden SOAP
14678	//    Fault Code Prefix: Client
14679	//
14680	//    * Code: EntityTooSmall Description: Your proposed upload is smaller than
14681	//    the minimum allowed object size. HTTP Status Code: 400 Bad Request SOAP
14682	//    Fault Code Prefix: Client
14683	//
14684	//    * Code: EntityTooLarge Description: Your proposed upload exceeds the maximum
14685	//    allowed object size. HTTP Status Code: 400 Bad Request SOAP Fault Code
14686	//    Prefix: Client
14687	//
14688	//    * Code: ExpiredToken Description: The provided token has expired. HTTP
14689	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14690	//
14691	//    * Code: IllegalVersioningConfigurationException Description: Indicates
14692	//    that the versioning configuration specified in the request is invalid.
14693	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14694	//
14695	//    * Code: IncompleteBody Description: You did not provide the number of
14696	//    bytes specified by the Content-Length HTTP header HTTP Status Code: 400
14697	//    Bad Request SOAP Fault Code Prefix: Client
14698	//
14699	//    * Code: IncorrectNumberOfFilesInPostRequest Description: POST requires
14700	//    exactly one file upload per request. HTTP Status Code: 400 Bad Request
14701	//    SOAP Fault Code Prefix: Client
14702	//
14703	//    * Code: InlineDataTooLarge Description: Inline data exceeds the maximum
14704	//    allowed size. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14705	//    Client
14706	//
14707	//    * Code: InternalError Description: We encountered an internal error. Please
14708	//    try again. HTTP Status Code: 500 Internal Server Error SOAP Fault Code
14709	//    Prefix: Server
14710	//
14711	//    * Code: InvalidAccessKeyId Description: The AWS access key ID you provided
14712	//    does not exist in our records. HTTP Status Code: 403 Forbidden SOAP Fault
14713	//    Code Prefix: Client
14714	//
14715	//    * Code: InvalidAddressingHeader Description: You must specify the Anonymous
14716	//    role. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
14717	//
14718	//    * Code: InvalidArgument Description: Invalid Argument HTTP Status Code:
14719	//    400 Bad Request SOAP Fault Code Prefix: Client
14720	//
14721	//    * Code: InvalidBucketName Description: The specified bucket is not valid.
14722	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14723	//
14724	//    * Code: InvalidBucketState Description: The request is not valid with
14725	//    the current state of the bucket. HTTP Status Code: 409 Conflict SOAP Fault
14726	//    Code Prefix: Client
14727	//
14728	//    * Code: InvalidDigest Description: The Content-MD5 you specified is not
14729	//    valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14730	//
14731	//    * Code: InvalidEncryptionAlgorithmError Description: The encryption request
14732	//    you specified is not valid. The valid value is AES256. HTTP Status Code:
14733	//    400 Bad Request SOAP Fault Code Prefix: Client
14734	//
14735	//    * Code: InvalidLocationConstraint Description: The specified location
14736	//    constraint is not valid. For more information about Regions, see How to
14737	//    Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
14738	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14739	//
14740	//    * Code: InvalidObjectState Description: The operation is not valid for
14741	//    the current state of the object. HTTP Status Code: 403 Forbidden SOAP
14742	//    Fault Code Prefix: Client
14743	//
14744	//    * Code: InvalidPart Description: One or more of the specified parts could
14745	//    not be found. The part might not have been uploaded, or the specified
14746	//    entity tag might not have matched the part's entity tag. HTTP Status Code:
14747	//    400 Bad Request SOAP Fault Code Prefix: Client
14748	//
14749	//    * Code: InvalidPartOrder Description: The list of parts was not in ascending
14750	//    order. Parts list must be specified in order by part number. HTTP Status
14751	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14752	//
14753	//    * Code: InvalidPayer Description: All access to this object has been disabled.
14754	//    Please contact AWS Support for further assistance. HTTP Status Code: 403
14755	//    Forbidden SOAP Fault Code Prefix: Client
14756	//
14757	//    * Code: InvalidPolicyDocument Description: The content of the form does
14758	//    not meet the conditions specified in the policy document. HTTP Status
14759	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14760	//
14761	//    * Code: InvalidRange Description: The requested range cannot be satisfied.
14762	//    HTTP Status Code: 416 Requested Range Not Satisfiable SOAP Fault Code
14763	//    Prefix: Client
14764	//
14765	//    * Code: InvalidRequest Description: Please use AWS4-HMAC-SHA256. HTTP
14766	//    Status Code: 400 Bad Request Code: N/A
14767	//
14768	//    * Code: InvalidRequest Description: SOAP requests must be made over an
14769	//    HTTPS connection. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14770	//    Client
14771	//
14772	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
14773	//    not supported for buckets with non-DNS compliant names. HTTP Status Code:
14774	//    400 Bad Request Code: N/A
14775	//
14776	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
14777	//    not supported for buckets with periods (.) in their names. HTTP Status
14778	//    Code: 400 Bad Request Code: N/A
14779	//
14780	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate endpoint
14781	//    only supports virtual style requests. HTTP Status Code: 400 Bad Request
14782	//    Code: N/A
14783	//
14784	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is not
14785	//    configured on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
14786	//
14787	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is disabled
14788	//    on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
14789	//
14790	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
14791	//    not supported on this bucket. Contact AWS Support for more information.
14792	//    HTTP Status Code: 400 Bad Request Code: N/A
14793	//
14794	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration cannot
14795	//    be enabled on this bucket. Contact AWS Support for more information. HTTP
14796	//    Status Code: 400 Bad Request Code: N/A
14797	//
14798	//    * Code: InvalidSecurity Description: The provided security credentials
14799	//    are not valid. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix:
14800	//    Client
14801	//
14802	//    * Code: InvalidSOAPRequest Description: The SOAP request body is invalid.
14803	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14804	//
14805	//    * Code: InvalidStorageClass Description: The storage class you specified
14806	//    is not valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14807	//    Client
14808	//
14809	//    * Code: InvalidTargetBucketForLogging Description: The target bucket for
14810	//    logging does not exist, is not owned by you, or does not have the appropriate
14811	//    grants for the log-delivery group. HTTP Status Code: 400 Bad Request SOAP
14812	//    Fault Code Prefix: Client
14813	//
14814	//    * Code: InvalidToken Description: The provided token is malformed or otherwise
14815	//    invalid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14816	//
14817	//    * Code: InvalidURI Description: Couldn't parse the specified URI. HTTP
14818	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14819	//
14820	//    * Code: KeyTooLongError Description: Your key is too long. HTTP Status
14821	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14822	//
14823	//    * Code: MalformedACLError Description: The XML you provided was not well-formed
14824	//    or did not validate against our published schema. HTTP Status Code: 400
14825	//    Bad Request SOAP Fault Code Prefix: Client
14826	//
14827	//    * Code: MalformedPOSTRequest Description: The body of your POST request
14828	//    is not well-formed multipart/form-data. HTTP Status Code: 400 Bad Request
14829	//    SOAP Fault Code Prefix: Client
14830	//
14831	//    * Code: MalformedXML Description: This happens when the user sends malformed
14832	//    XML (XML that doesn't conform to the published XSD) for the configuration.
14833	//    The error message is, "The XML you provided was not well-formed or did
14834	//    not validate against our published schema." HTTP Status Code: 400 Bad
14835	//    Request SOAP Fault Code Prefix: Client
14836	//
14837	//    * Code: MaxMessageLengthExceeded Description: Your request was too big.
14838	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14839	//
14840	//    * Code: MaxPostPreDataLengthExceededError Description: Your POST request
14841	//    fields preceding the upload file were too large. HTTP Status Code: 400
14842	//    Bad Request SOAP Fault Code Prefix: Client
14843	//
14844	//    * Code: MetadataTooLarge Description: Your metadata headers exceed the
14845	//    maximum allowed metadata size. HTTP Status Code: 400 Bad Request SOAP
14846	//    Fault Code Prefix: Client
14847	//
14848	//    * Code: MethodNotAllowed Description: The specified method is not allowed
14849	//    against this resource. HTTP Status Code: 405 Method Not Allowed SOAP Fault
14850	//    Code Prefix: Client
14851	//
14852	//    * Code: MissingAttachment Description: A SOAP attachment was expected,
14853	//    but none were found. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
14854	//
14855	//    * Code: MissingContentLength Description: You must provide the Content-Length
14856	//    HTTP header. HTTP Status Code: 411 Length Required SOAP Fault Code Prefix:
14857	//    Client
14858	//
14859	//    * Code: MissingRequestBodyError Description: This happens when the user
14860	//    sends an empty XML document as a request. The error message is, "Request
14861	//    body is empty." HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
14862	//    Client
14863	//
14864	//    * Code: MissingSecurityElement Description: The SOAP 1.1 request is missing
14865	//    a security element. HTTP Status Code: 400 Bad Request SOAP Fault Code
14866	//    Prefix: Client
14867	//
14868	//    * Code: MissingSecurityHeader Description: Your request is missing a required
14869	//    header. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14870	//
14871	//    * Code: NoLoggingStatusForKey Description: There is no such thing as a
14872	//    logging status subresource for a key. HTTP Status Code: 400 Bad Request
14873	//    SOAP Fault Code Prefix: Client
14874	//
14875	//    * Code: NoSuchBucket Description: The specified bucket does not exist.
14876	//    HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client
14877	//
14878	//    * Code: NoSuchBucketPolicy Description: The specified bucket does not
14879	//    have a bucket policy. HTTP Status Code: 404 Not Found SOAP Fault Code
14880	//    Prefix: Client
14881	//
14882	//    * Code: NoSuchKey Description: The specified key does not exist. HTTP
14883	//    Status Code: 404 Not Found SOAP Fault Code Prefix: Client
14884	//
14885	//    * Code: NoSuchLifecycleConfiguration Description: The lifecycle configuration
14886	//    does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix:
14887	//    Client
14888	//
14889	//    * Code: NoSuchUpload Description: The specified multipart upload does
14890	//    not exist. The upload ID might be invalid, or the multipart upload might
14891	//    have been aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault
14892	//    Code Prefix: Client
14893	//
14894	//    * Code: NoSuchVersion Description: Indicates that the version ID specified
14895	//    in the request does not match an existing version. HTTP Status Code: 404
14896	//    Not Found SOAP Fault Code Prefix: Client
14897	//
14898	//    * Code: NotImplemented Description: A header you provided implies functionality
14899	//    that is not implemented. HTTP Status Code: 501 Not Implemented SOAP Fault
14900	//    Code Prefix: Server
14901	//
14902	//    * Code: NotSignedUp Description: Your account is not signed up for the
14903	//    Amazon S3 service. You must sign up before you can use Amazon S3. You
14904	//    can sign up at the following URL: https://aws.amazon.com/s3 HTTP Status
14905	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
14906	//
14907	//    * Code: OperationAborted Description: A conflicting conditional operation
14908	//    is currently in progress against this resource. Try again. HTTP Status
14909	//    Code: 409 Conflict SOAP Fault Code Prefix: Client
14910	//
14911	//    * Code: PermanentRedirect Description: The bucket you are attempting to
14912	//    access must be addressed using the specified endpoint. Send all future
14913	//    requests to this endpoint. HTTP Status Code: 301 Moved Permanently SOAP
14914	//    Fault Code Prefix: Client
14915	//
14916	//    * Code: PreconditionFailed Description: At least one of the preconditions
14917	//    you specified did not hold. HTTP Status Code: 412 Precondition Failed
14918	//    SOAP Fault Code Prefix: Client
14919	//
14920	//    * Code: Redirect Description: Temporary redirect. HTTP Status Code: 307
14921	//    Moved Temporarily SOAP Fault Code Prefix: Client
14922	//
14923	//    * Code: RestoreAlreadyInProgress Description: Object restore is already
14924	//    in progress. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
14925	//
14926	//    * Code: RequestIsNotMultiPartContent Description: Bucket POST must be
14927	//    of the enclosure-type multipart/form-data. HTTP Status Code: 400 Bad Request
14928	//    SOAP Fault Code Prefix: Client
14929	//
14930	//    * Code: RequestTimeout Description: Your socket connection to the server
14931	//    was not read from or written to within the timeout period. HTTP Status
14932	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
14933	//
14934	//    * Code: RequestTimeTooSkewed Description: The difference between the request
14935	//    time and the server's time is too large. HTTP Status Code: 403 Forbidden
14936	//    SOAP Fault Code Prefix: Client
14937	//
14938	//    * Code: RequestTorrentOfBucketError Description: Requesting the torrent
14939	//    file of a bucket is not permitted. HTTP Status Code: 400 Bad Request SOAP
14940	//    Fault Code Prefix: Client
14941	//
14942	//    * Code: SignatureDoesNotMatch Description: The request signature we calculated
14943	//    does not match the signature you provided. Check your AWS secret access
14944	//    key and signing method. For more information, see REST Authentication
14945	//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
14946	//    and SOAP Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html)
14947	//    for details. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
14948	//
14949	//    * Code: ServiceUnavailable Description: Reduce your request rate. HTTP
14950	//    Status Code: 503 Service Unavailable SOAP Fault Code Prefix: Server
14951	//
14952	//    * Code: SlowDown Description: Reduce your request rate. HTTP Status Code:
14953	//    503 Slow Down SOAP Fault Code Prefix: Server
14954	//
14955	//    * Code: TemporaryRedirect Description: You are being redirected to the
14956	//    bucket while DNS updates. HTTP Status Code: 307 Moved Temporarily SOAP
14957	//    Fault Code Prefix: Client
14958	//
14959	//    * Code: TokenRefreshRequired Description: The provided token must be refreshed.
14960	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14961	//
14962	//    * Code: TooManyBuckets Description: You have attempted to create more
14963	//    buckets than allowed. HTTP Status Code: 400 Bad Request SOAP Fault Code
14964	//    Prefix: Client
14965	//
14966	//    * Code: UnexpectedContent Description: This request does not support content.
14967	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14968	//
14969	//    * Code: UnresolvableGrantByEmailAddress Description: The email address
14970	//    you provided does not match any account on record. HTTP Status Code: 400
14971	//    Bad Request SOAP Fault Code Prefix: Client
14972	//
14973	//    * Code: UserKeyMustBeSpecified Description: The bucket POST must contain
14974	//    the specified field name. If it is specified, check the order of the fields.
14975	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
14976	Code *string `type:"string"`
14977
14978	// The error key.
14979	Key *string `min:"1" type:"string"`
14980
14981	// The error message contains a generic description of the error condition in
14982	// English. It is intended for a human audience. Simple programs display the
14983	// message directly to the end user if they encounter an error condition they
14984	// don't know how or don't care to handle. Sophisticated programs with more
14985	// exhaustive error handling and proper internationalization are more likely
14986	// to ignore the error message.
14987	Message *string `type:"string"`
14988
14989	// The version ID of the error.
14990	VersionId *string `type:"string"`
14991}
14992
14993// String returns the string representation
14994func (s Error) String() string {
14995	return awsutil.Prettify(s)
14996}
14997
14998// GoString returns the string representation
14999func (s Error) GoString() string {
15000	return s.String()
15001}
15002
15003// SetCode sets the Code field's value.
15004func (s *Error) SetCode(v string) *Error {
15005	s.Code = &v
15006	return s
15007}
15008
15009// SetKey sets the Key field's value.
15010func (s *Error) SetKey(v string) *Error {
15011	s.Key = &v
15012	return s
15013}
15014
15015// SetMessage sets the Message field's value.
15016func (s *Error) SetMessage(v string) *Error {
15017	s.Message = &v
15018	return s
15019}
15020
15021// SetVersionId sets the VersionId field's value.
15022func (s *Error) SetVersionId(v string) *Error {
15023	s.VersionId = &v
15024	return s
15025}
15026
15027// The error information.
15028type ErrorDocument struct {
15029	_ struct{} `type:"structure"`
15030
15031	// The object key name to use when a 4XX class error occurs.
15032	//
15033	// Key is a required field
15034	Key *string `min:"1" type:"string" required:"true"`
15035}
15036
15037// String returns the string representation
15038func (s ErrorDocument) String() string {
15039	return awsutil.Prettify(s)
15040}
15041
15042// GoString returns the string representation
15043func (s ErrorDocument) GoString() string {
15044	return s.String()
15045}
15046
15047// Validate inspects the fields of the type to determine if they are valid.
15048func (s *ErrorDocument) Validate() error {
15049	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
15050	if s.Key == nil {
15051		invalidParams.Add(request.NewErrParamRequired("Key"))
15052	}
15053	if s.Key != nil && len(*s.Key) < 1 {
15054		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
15055	}
15056
15057	if invalidParams.Len() > 0 {
15058		return invalidParams
15059	}
15060	return nil
15061}
15062
15063// SetKey sets the Key field's value.
15064func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
15065	s.Key = &v
15066	return s
15067}
15068
15069// Optional configuration to replicate existing source bucket objects. For more
15070// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
15071// in the Amazon S3 Developer Guide.
15072type ExistingObjectReplication struct {
15073	_ struct{} `type:"structure"`
15074
15075	// Status is a required field
15076	Status *string `type:"string" required:"true" enum:"ExistingObjectReplicationStatus"`
15077}
15078
15079// String returns the string representation
15080func (s ExistingObjectReplication) String() string {
15081	return awsutil.Prettify(s)
15082}
15083
15084// GoString returns the string representation
15085func (s ExistingObjectReplication) GoString() string {
15086	return s.String()
15087}
15088
15089// Validate inspects the fields of the type to determine if they are valid.
15090func (s *ExistingObjectReplication) Validate() error {
15091	invalidParams := request.ErrInvalidParams{Context: "ExistingObjectReplication"}
15092	if s.Status == nil {
15093		invalidParams.Add(request.NewErrParamRequired("Status"))
15094	}
15095
15096	if invalidParams.Len() > 0 {
15097		return invalidParams
15098	}
15099	return nil
15100}
15101
15102// SetStatus sets the Status field's value.
15103func (s *ExistingObjectReplication) SetStatus(v string) *ExistingObjectReplication {
15104	s.Status = &v
15105	return s
15106}
15107
15108// Specifies the Amazon S3 object key name to filter on and whether to filter
15109// on the suffix or prefix of the key name.
15110type FilterRule struct {
15111	_ struct{} `type:"structure"`
15112
15113	// The object key name prefix or suffix identifying one or more objects to which
15114	// the filtering rule applies. The maximum length is 1,024 characters. Overlapping
15115	// prefixes and suffixes are not supported. For more information, see Configuring
15116	// Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
15117	// in the Amazon Simple Storage Service Developer Guide.
15118	Name *string `type:"string" enum:"FilterRuleName"`
15119
15120	// The value that the filter searches for in object key names.
15121	Value *string `type:"string"`
15122}
15123
15124// String returns the string representation
15125func (s FilterRule) String() string {
15126	return awsutil.Prettify(s)
15127}
15128
15129// GoString returns the string representation
15130func (s FilterRule) GoString() string {
15131	return s.String()
15132}
15133
15134// SetName sets the Name field's value.
15135func (s *FilterRule) SetName(v string) *FilterRule {
15136	s.Name = &v
15137	return s
15138}
15139
15140// SetValue sets the Value field's value.
15141func (s *FilterRule) SetValue(v string) *FilterRule {
15142	s.Value = &v
15143	return s
15144}
15145
15146type GetBucketAccelerateConfigurationInput struct {
15147	_ struct{} `locationName:"GetBucketAccelerateConfigurationRequest" type:"structure"`
15148
15149	// Name of the bucket for which the accelerate configuration is retrieved.
15150	//
15151	// Bucket is a required field
15152	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15153}
15154
15155// String returns the string representation
15156func (s GetBucketAccelerateConfigurationInput) String() string {
15157	return awsutil.Prettify(s)
15158}
15159
15160// GoString returns the string representation
15161func (s GetBucketAccelerateConfigurationInput) GoString() string {
15162	return s.String()
15163}
15164
15165// Validate inspects the fields of the type to determine if they are valid.
15166func (s *GetBucketAccelerateConfigurationInput) Validate() error {
15167	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
15168	if s.Bucket == nil {
15169		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15170	}
15171	if s.Bucket != nil && len(*s.Bucket) < 1 {
15172		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15173	}
15174
15175	if invalidParams.Len() > 0 {
15176		return invalidParams
15177	}
15178	return nil
15179}
15180
15181// SetBucket sets the Bucket field's value.
15182func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
15183	s.Bucket = &v
15184	return s
15185}
15186
15187func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
15188	if s.Bucket == nil {
15189		return v
15190	}
15191	return *s.Bucket
15192}
15193
15194func (s *GetBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
15195	if s.Bucket == nil {
15196		return nil, fmt.Errorf("member Bucket is nil")
15197	}
15198	return parseEndpointARN(*s.Bucket)
15199}
15200
15201func (s *GetBucketAccelerateConfigurationInput) hasEndpointARN() bool {
15202	if s.Bucket == nil {
15203		return false
15204	}
15205	return arn.IsARN(*s.Bucket)
15206}
15207
15208type GetBucketAccelerateConfigurationOutput struct {
15209	_ struct{} `type:"structure"`
15210
15211	// The accelerate configuration of the bucket.
15212	Status *string `type:"string" enum:"BucketAccelerateStatus"`
15213}
15214
15215// String returns the string representation
15216func (s GetBucketAccelerateConfigurationOutput) String() string {
15217	return awsutil.Prettify(s)
15218}
15219
15220// GoString returns the string representation
15221func (s GetBucketAccelerateConfigurationOutput) GoString() string {
15222	return s.String()
15223}
15224
15225// SetStatus sets the Status field's value.
15226func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
15227	s.Status = &v
15228	return s
15229}
15230
15231type GetBucketAclInput struct {
15232	_ struct{} `locationName:"GetBucketAclRequest" type:"structure"`
15233
15234	// Specifies the S3 bucket whose ACL is being requested.
15235	//
15236	// Bucket is a required field
15237	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15238}
15239
15240// String returns the string representation
15241func (s GetBucketAclInput) String() string {
15242	return awsutil.Prettify(s)
15243}
15244
15245// GoString returns the string representation
15246func (s GetBucketAclInput) GoString() string {
15247	return s.String()
15248}
15249
15250// Validate inspects the fields of the type to determine if they are valid.
15251func (s *GetBucketAclInput) Validate() error {
15252	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
15253	if s.Bucket == nil {
15254		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15255	}
15256	if s.Bucket != nil && len(*s.Bucket) < 1 {
15257		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15258	}
15259
15260	if invalidParams.Len() > 0 {
15261		return invalidParams
15262	}
15263	return nil
15264}
15265
15266// SetBucket sets the Bucket field's value.
15267func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
15268	s.Bucket = &v
15269	return s
15270}
15271
15272func (s *GetBucketAclInput) getBucket() (v string) {
15273	if s.Bucket == nil {
15274		return v
15275	}
15276	return *s.Bucket
15277}
15278
15279func (s *GetBucketAclInput) getEndpointARN() (arn.Resource, error) {
15280	if s.Bucket == nil {
15281		return nil, fmt.Errorf("member Bucket is nil")
15282	}
15283	return parseEndpointARN(*s.Bucket)
15284}
15285
15286func (s *GetBucketAclInput) hasEndpointARN() bool {
15287	if s.Bucket == nil {
15288		return false
15289	}
15290	return arn.IsARN(*s.Bucket)
15291}
15292
15293type GetBucketAclOutput struct {
15294	_ struct{} `type:"structure"`
15295
15296	// A list of grants.
15297	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
15298
15299	// Container for the bucket owner's display name and ID.
15300	Owner *Owner `type:"structure"`
15301}
15302
15303// String returns the string representation
15304func (s GetBucketAclOutput) String() string {
15305	return awsutil.Prettify(s)
15306}
15307
15308// GoString returns the string representation
15309func (s GetBucketAclOutput) GoString() string {
15310	return s.String()
15311}
15312
15313// SetGrants sets the Grants field's value.
15314func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
15315	s.Grants = v
15316	return s
15317}
15318
15319// SetOwner sets the Owner field's value.
15320func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
15321	s.Owner = v
15322	return s
15323}
15324
15325type GetBucketAnalyticsConfigurationInput struct {
15326	_ struct{} `locationName:"GetBucketAnalyticsConfigurationRequest" type:"structure"`
15327
15328	// The name of the bucket from which an analytics configuration is retrieved.
15329	//
15330	// Bucket is a required field
15331	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15332
15333	// The ID that identifies the analytics configuration.
15334	//
15335	// Id is a required field
15336	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15337}
15338
15339// String returns the string representation
15340func (s GetBucketAnalyticsConfigurationInput) String() string {
15341	return awsutil.Prettify(s)
15342}
15343
15344// GoString returns the string representation
15345func (s GetBucketAnalyticsConfigurationInput) GoString() string {
15346	return s.String()
15347}
15348
15349// Validate inspects the fields of the type to determine if they are valid.
15350func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
15351	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
15352	if s.Bucket == nil {
15353		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15354	}
15355	if s.Bucket != nil && len(*s.Bucket) < 1 {
15356		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15357	}
15358	if s.Id == nil {
15359		invalidParams.Add(request.NewErrParamRequired("Id"))
15360	}
15361
15362	if invalidParams.Len() > 0 {
15363		return invalidParams
15364	}
15365	return nil
15366}
15367
15368// SetBucket sets the Bucket field's value.
15369func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
15370	s.Bucket = &v
15371	return s
15372}
15373
15374func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
15375	if s.Bucket == nil {
15376		return v
15377	}
15378	return *s.Bucket
15379}
15380
15381// SetId sets the Id field's value.
15382func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
15383	s.Id = &v
15384	return s
15385}
15386
15387func (s *GetBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
15388	if s.Bucket == nil {
15389		return nil, fmt.Errorf("member Bucket is nil")
15390	}
15391	return parseEndpointARN(*s.Bucket)
15392}
15393
15394func (s *GetBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
15395	if s.Bucket == nil {
15396		return false
15397	}
15398	return arn.IsARN(*s.Bucket)
15399}
15400
15401type GetBucketAnalyticsConfigurationOutput struct {
15402	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
15403
15404	// The configuration and any analyses for the analytics filter.
15405	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
15406}
15407
15408// String returns the string representation
15409func (s GetBucketAnalyticsConfigurationOutput) String() string {
15410	return awsutil.Prettify(s)
15411}
15412
15413// GoString returns the string representation
15414func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
15415	return s.String()
15416}
15417
15418// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
15419func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
15420	s.AnalyticsConfiguration = v
15421	return s
15422}
15423
15424type GetBucketCorsInput struct {
15425	_ struct{} `locationName:"GetBucketCorsRequest" type:"structure"`
15426
15427	// The bucket name for which to get the cors configuration.
15428	//
15429	// Bucket is a required field
15430	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15431}
15432
15433// String returns the string representation
15434func (s GetBucketCorsInput) String() string {
15435	return awsutil.Prettify(s)
15436}
15437
15438// GoString returns the string representation
15439func (s GetBucketCorsInput) GoString() string {
15440	return s.String()
15441}
15442
15443// Validate inspects the fields of the type to determine if they are valid.
15444func (s *GetBucketCorsInput) Validate() error {
15445	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
15446	if s.Bucket == nil {
15447		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15448	}
15449	if s.Bucket != nil && len(*s.Bucket) < 1 {
15450		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15451	}
15452
15453	if invalidParams.Len() > 0 {
15454		return invalidParams
15455	}
15456	return nil
15457}
15458
15459// SetBucket sets the Bucket field's value.
15460func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
15461	s.Bucket = &v
15462	return s
15463}
15464
15465func (s *GetBucketCorsInput) getBucket() (v string) {
15466	if s.Bucket == nil {
15467		return v
15468	}
15469	return *s.Bucket
15470}
15471
15472func (s *GetBucketCorsInput) getEndpointARN() (arn.Resource, error) {
15473	if s.Bucket == nil {
15474		return nil, fmt.Errorf("member Bucket is nil")
15475	}
15476	return parseEndpointARN(*s.Bucket)
15477}
15478
15479func (s *GetBucketCorsInput) hasEndpointARN() bool {
15480	if s.Bucket == nil {
15481		return false
15482	}
15483	return arn.IsARN(*s.Bucket)
15484}
15485
15486type GetBucketCorsOutput struct {
15487	_ struct{} `type:"structure"`
15488
15489	// A set of origins and methods (cross-origin access that you want to allow).
15490	// You can add up to 100 rules to the configuration.
15491	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
15492}
15493
15494// String returns the string representation
15495func (s GetBucketCorsOutput) String() string {
15496	return awsutil.Prettify(s)
15497}
15498
15499// GoString returns the string representation
15500func (s GetBucketCorsOutput) GoString() string {
15501	return s.String()
15502}
15503
15504// SetCORSRules sets the CORSRules field's value.
15505func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
15506	s.CORSRules = v
15507	return s
15508}
15509
15510type GetBucketEncryptionInput struct {
15511	_ struct{} `locationName:"GetBucketEncryptionRequest" type:"structure"`
15512
15513	// The name of the bucket from which the server-side encryption configuration
15514	// is retrieved.
15515	//
15516	// Bucket is a required field
15517	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15518}
15519
15520// String returns the string representation
15521func (s GetBucketEncryptionInput) String() string {
15522	return awsutil.Prettify(s)
15523}
15524
15525// GoString returns the string representation
15526func (s GetBucketEncryptionInput) GoString() string {
15527	return s.String()
15528}
15529
15530// Validate inspects the fields of the type to determine if they are valid.
15531func (s *GetBucketEncryptionInput) Validate() error {
15532	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
15533	if s.Bucket == nil {
15534		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15535	}
15536	if s.Bucket != nil && len(*s.Bucket) < 1 {
15537		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15538	}
15539
15540	if invalidParams.Len() > 0 {
15541		return invalidParams
15542	}
15543	return nil
15544}
15545
15546// SetBucket sets the Bucket field's value.
15547func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
15548	s.Bucket = &v
15549	return s
15550}
15551
15552func (s *GetBucketEncryptionInput) getBucket() (v string) {
15553	if s.Bucket == nil {
15554		return v
15555	}
15556	return *s.Bucket
15557}
15558
15559func (s *GetBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
15560	if s.Bucket == nil {
15561		return nil, fmt.Errorf("member Bucket is nil")
15562	}
15563	return parseEndpointARN(*s.Bucket)
15564}
15565
15566func (s *GetBucketEncryptionInput) hasEndpointARN() bool {
15567	if s.Bucket == nil {
15568		return false
15569	}
15570	return arn.IsARN(*s.Bucket)
15571}
15572
15573type GetBucketEncryptionOutput struct {
15574	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
15575
15576	// Specifies the default server-side-encryption configuration.
15577	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
15578}
15579
15580// String returns the string representation
15581func (s GetBucketEncryptionOutput) String() string {
15582	return awsutil.Prettify(s)
15583}
15584
15585// GoString returns the string representation
15586func (s GetBucketEncryptionOutput) GoString() string {
15587	return s.String()
15588}
15589
15590// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
15591func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
15592	s.ServerSideEncryptionConfiguration = v
15593	return s
15594}
15595
15596type GetBucketInventoryConfigurationInput struct {
15597	_ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"`
15598
15599	// The name of the bucket containing the inventory configuration to retrieve.
15600	//
15601	// Bucket is a required field
15602	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15603
15604	// The ID used to identify the inventory configuration.
15605	//
15606	// Id is a required field
15607	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15608}
15609
15610// String returns the string representation
15611func (s GetBucketInventoryConfigurationInput) String() string {
15612	return awsutil.Prettify(s)
15613}
15614
15615// GoString returns the string representation
15616func (s GetBucketInventoryConfigurationInput) GoString() string {
15617	return s.String()
15618}
15619
15620// Validate inspects the fields of the type to determine if they are valid.
15621func (s *GetBucketInventoryConfigurationInput) Validate() error {
15622	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
15623	if s.Bucket == nil {
15624		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15625	}
15626	if s.Bucket != nil && len(*s.Bucket) < 1 {
15627		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15628	}
15629	if s.Id == nil {
15630		invalidParams.Add(request.NewErrParamRequired("Id"))
15631	}
15632
15633	if invalidParams.Len() > 0 {
15634		return invalidParams
15635	}
15636	return nil
15637}
15638
15639// SetBucket sets the Bucket field's value.
15640func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
15641	s.Bucket = &v
15642	return s
15643}
15644
15645func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
15646	if s.Bucket == nil {
15647		return v
15648	}
15649	return *s.Bucket
15650}
15651
15652// SetId sets the Id field's value.
15653func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
15654	s.Id = &v
15655	return s
15656}
15657
15658func (s *GetBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
15659	if s.Bucket == nil {
15660		return nil, fmt.Errorf("member Bucket is nil")
15661	}
15662	return parseEndpointARN(*s.Bucket)
15663}
15664
15665func (s *GetBucketInventoryConfigurationInput) hasEndpointARN() bool {
15666	if s.Bucket == nil {
15667		return false
15668	}
15669	return arn.IsARN(*s.Bucket)
15670}
15671
15672type GetBucketInventoryConfigurationOutput struct {
15673	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
15674
15675	// Specifies the inventory configuration.
15676	InventoryConfiguration *InventoryConfiguration `type:"structure"`
15677}
15678
15679// String returns the string representation
15680func (s GetBucketInventoryConfigurationOutput) String() string {
15681	return awsutil.Prettify(s)
15682}
15683
15684// GoString returns the string representation
15685func (s GetBucketInventoryConfigurationOutput) GoString() string {
15686	return s.String()
15687}
15688
15689// SetInventoryConfiguration sets the InventoryConfiguration field's value.
15690func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
15691	s.InventoryConfiguration = v
15692	return s
15693}
15694
15695type GetBucketLifecycleConfigurationInput struct {
15696	_ struct{} `locationName:"GetBucketLifecycleConfigurationRequest" type:"structure"`
15697
15698	// The name of the bucket for which to get the lifecycle information.
15699	//
15700	// Bucket is a required field
15701	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15702}
15703
15704// String returns the string representation
15705func (s GetBucketLifecycleConfigurationInput) String() string {
15706	return awsutil.Prettify(s)
15707}
15708
15709// GoString returns the string representation
15710func (s GetBucketLifecycleConfigurationInput) GoString() string {
15711	return s.String()
15712}
15713
15714// Validate inspects the fields of the type to determine if they are valid.
15715func (s *GetBucketLifecycleConfigurationInput) Validate() error {
15716	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
15717	if s.Bucket == nil {
15718		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15719	}
15720	if s.Bucket != nil && len(*s.Bucket) < 1 {
15721		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15722	}
15723
15724	if invalidParams.Len() > 0 {
15725		return invalidParams
15726	}
15727	return nil
15728}
15729
15730// SetBucket sets the Bucket field's value.
15731func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
15732	s.Bucket = &v
15733	return s
15734}
15735
15736func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
15737	if s.Bucket == nil {
15738		return v
15739	}
15740	return *s.Bucket
15741}
15742
15743func (s *GetBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
15744	if s.Bucket == nil {
15745		return nil, fmt.Errorf("member Bucket is nil")
15746	}
15747	return parseEndpointARN(*s.Bucket)
15748}
15749
15750func (s *GetBucketLifecycleConfigurationInput) hasEndpointARN() bool {
15751	if s.Bucket == nil {
15752		return false
15753	}
15754	return arn.IsARN(*s.Bucket)
15755}
15756
15757type GetBucketLifecycleConfigurationOutput struct {
15758	_ struct{} `type:"structure"`
15759
15760	// Container for a lifecycle rule.
15761	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
15762}
15763
15764// String returns the string representation
15765func (s GetBucketLifecycleConfigurationOutput) String() string {
15766	return awsutil.Prettify(s)
15767}
15768
15769// GoString returns the string representation
15770func (s GetBucketLifecycleConfigurationOutput) GoString() string {
15771	return s.String()
15772}
15773
15774// SetRules sets the Rules field's value.
15775func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
15776	s.Rules = v
15777	return s
15778}
15779
15780type GetBucketLifecycleInput struct {
15781	_ struct{} `locationName:"GetBucketLifecycleRequest" type:"structure"`
15782
15783	// The name of the bucket for which to get the lifecycle information.
15784	//
15785	// Bucket is a required field
15786	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15787}
15788
15789// String returns the string representation
15790func (s GetBucketLifecycleInput) String() string {
15791	return awsutil.Prettify(s)
15792}
15793
15794// GoString returns the string representation
15795func (s GetBucketLifecycleInput) GoString() string {
15796	return s.String()
15797}
15798
15799// Validate inspects the fields of the type to determine if they are valid.
15800func (s *GetBucketLifecycleInput) Validate() error {
15801	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
15802	if s.Bucket == nil {
15803		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15804	}
15805	if s.Bucket != nil && len(*s.Bucket) < 1 {
15806		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15807	}
15808
15809	if invalidParams.Len() > 0 {
15810		return invalidParams
15811	}
15812	return nil
15813}
15814
15815// SetBucket sets the Bucket field's value.
15816func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
15817	s.Bucket = &v
15818	return s
15819}
15820
15821func (s *GetBucketLifecycleInput) getBucket() (v string) {
15822	if s.Bucket == nil {
15823		return v
15824	}
15825	return *s.Bucket
15826}
15827
15828func (s *GetBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
15829	if s.Bucket == nil {
15830		return nil, fmt.Errorf("member Bucket is nil")
15831	}
15832	return parseEndpointARN(*s.Bucket)
15833}
15834
15835func (s *GetBucketLifecycleInput) hasEndpointARN() bool {
15836	if s.Bucket == nil {
15837		return false
15838	}
15839	return arn.IsARN(*s.Bucket)
15840}
15841
15842type GetBucketLifecycleOutput struct {
15843	_ struct{} `type:"structure"`
15844
15845	// Container for a lifecycle rule.
15846	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
15847}
15848
15849// String returns the string representation
15850func (s GetBucketLifecycleOutput) String() string {
15851	return awsutil.Prettify(s)
15852}
15853
15854// GoString returns the string representation
15855func (s GetBucketLifecycleOutput) GoString() string {
15856	return s.String()
15857}
15858
15859// SetRules sets the Rules field's value.
15860func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
15861	s.Rules = v
15862	return s
15863}
15864
15865type GetBucketLocationInput struct {
15866	_ struct{} `locationName:"GetBucketLocationRequest" type:"structure"`
15867
15868	// The name of the bucket for which to get the location.
15869	//
15870	// Bucket is a required field
15871	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15872}
15873
15874// String returns the string representation
15875func (s GetBucketLocationInput) String() string {
15876	return awsutil.Prettify(s)
15877}
15878
15879// GoString returns the string representation
15880func (s GetBucketLocationInput) GoString() string {
15881	return s.String()
15882}
15883
15884// Validate inspects the fields of the type to determine if they are valid.
15885func (s *GetBucketLocationInput) Validate() error {
15886	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
15887	if s.Bucket == nil {
15888		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15889	}
15890	if s.Bucket != nil && len(*s.Bucket) < 1 {
15891		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15892	}
15893
15894	if invalidParams.Len() > 0 {
15895		return invalidParams
15896	}
15897	return nil
15898}
15899
15900// SetBucket sets the Bucket field's value.
15901func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
15902	s.Bucket = &v
15903	return s
15904}
15905
15906func (s *GetBucketLocationInput) getBucket() (v string) {
15907	if s.Bucket == nil {
15908		return v
15909	}
15910	return *s.Bucket
15911}
15912
15913func (s *GetBucketLocationInput) getEndpointARN() (arn.Resource, error) {
15914	if s.Bucket == nil {
15915		return nil, fmt.Errorf("member Bucket is nil")
15916	}
15917	return parseEndpointARN(*s.Bucket)
15918}
15919
15920func (s *GetBucketLocationInput) hasEndpointARN() bool {
15921	if s.Bucket == nil {
15922		return false
15923	}
15924	return arn.IsARN(*s.Bucket)
15925}
15926
15927type GetBucketLocationOutput struct {
15928	_ struct{} `type:"structure"`
15929
15930	// Specifies the Region where the bucket resides. For a list of all the Amazon
15931	// S3 supported location constraints by Region, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region).
15932	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
15933}
15934
15935// String returns the string representation
15936func (s GetBucketLocationOutput) String() string {
15937	return awsutil.Prettify(s)
15938}
15939
15940// GoString returns the string representation
15941func (s GetBucketLocationOutput) GoString() string {
15942	return s.String()
15943}
15944
15945// SetLocationConstraint sets the LocationConstraint field's value.
15946func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
15947	s.LocationConstraint = &v
15948	return s
15949}
15950
15951type GetBucketLoggingInput struct {
15952	_ struct{} `locationName:"GetBucketLoggingRequest" type:"structure"`
15953
15954	// The bucket name for which to get the logging information.
15955	//
15956	// Bucket is a required field
15957	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15958}
15959
15960// String returns the string representation
15961func (s GetBucketLoggingInput) String() string {
15962	return awsutil.Prettify(s)
15963}
15964
15965// GoString returns the string representation
15966func (s GetBucketLoggingInput) GoString() string {
15967	return s.String()
15968}
15969
15970// Validate inspects the fields of the type to determine if they are valid.
15971func (s *GetBucketLoggingInput) Validate() error {
15972	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
15973	if s.Bucket == nil {
15974		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15975	}
15976	if s.Bucket != nil && len(*s.Bucket) < 1 {
15977		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15978	}
15979
15980	if invalidParams.Len() > 0 {
15981		return invalidParams
15982	}
15983	return nil
15984}
15985
15986// SetBucket sets the Bucket field's value.
15987func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
15988	s.Bucket = &v
15989	return s
15990}
15991
15992func (s *GetBucketLoggingInput) getBucket() (v string) {
15993	if s.Bucket == nil {
15994		return v
15995	}
15996	return *s.Bucket
15997}
15998
15999func (s *GetBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
16000	if s.Bucket == nil {
16001		return nil, fmt.Errorf("member Bucket is nil")
16002	}
16003	return parseEndpointARN(*s.Bucket)
16004}
16005
16006func (s *GetBucketLoggingInput) hasEndpointARN() bool {
16007	if s.Bucket == nil {
16008		return false
16009	}
16010	return arn.IsARN(*s.Bucket)
16011}
16012
16013type GetBucketLoggingOutput struct {
16014	_ struct{} `type:"structure"`
16015
16016	// Describes where logs are stored and the prefix that Amazon S3 assigns to
16017	// all log object keys for a bucket. For more information, see PUT Bucket logging
16018	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
16019	// in the Amazon Simple Storage Service API Reference.
16020	LoggingEnabled *LoggingEnabled `type:"structure"`
16021}
16022
16023// String returns the string representation
16024func (s GetBucketLoggingOutput) String() string {
16025	return awsutil.Prettify(s)
16026}
16027
16028// GoString returns the string representation
16029func (s GetBucketLoggingOutput) GoString() string {
16030	return s.String()
16031}
16032
16033// SetLoggingEnabled sets the LoggingEnabled field's value.
16034func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
16035	s.LoggingEnabled = v
16036	return s
16037}
16038
16039type GetBucketMetricsConfigurationInput struct {
16040	_ struct{} `locationName:"GetBucketMetricsConfigurationRequest" type:"structure"`
16041
16042	// The name of the bucket containing the metrics configuration to retrieve.
16043	//
16044	// Bucket is a required field
16045	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16046
16047	// The ID used to identify the metrics configuration.
16048	//
16049	// Id is a required field
16050	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
16051}
16052
16053// String returns the string representation
16054func (s GetBucketMetricsConfigurationInput) String() string {
16055	return awsutil.Prettify(s)
16056}
16057
16058// GoString returns the string representation
16059func (s GetBucketMetricsConfigurationInput) GoString() string {
16060	return s.String()
16061}
16062
16063// Validate inspects the fields of the type to determine if they are valid.
16064func (s *GetBucketMetricsConfigurationInput) Validate() error {
16065	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
16066	if s.Bucket == nil {
16067		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16068	}
16069	if s.Bucket != nil && len(*s.Bucket) < 1 {
16070		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16071	}
16072	if s.Id == nil {
16073		invalidParams.Add(request.NewErrParamRequired("Id"))
16074	}
16075
16076	if invalidParams.Len() > 0 {
16077		return invalidParams
16078	}
16079	return nil
16080}
16081
16082// SetBucket sets the Bucket field's value.
16083func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
16084	s.Bucket = &v
16085	return s
16086}
16087
16088func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
16089	if s.Bucket == nil {
16090		return v
16091	}
16092	return *s.Bucket
16093}
16094
16095// SetId sets the Id field's value.
16096func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
16097	s.Id = &v
16098	return s
16099}
16100
16101func (s *GetBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
16102	if s.Bucket == nil {
16103		return nil, fmt.Errorf("member Bucket is nil")
16104	}
16105	return parseEndpointARN(*s.Bucket)
16106}
16107
16108func (s *GetBucketMetricsConfigurationInput) hasEndpointARN() bool {
16109	if s.Bucket == nil {
16110		return false
16111	}
16112	return arn.IsARN(*s.Bucket)
16113}
16114
16115type GetBucketMetricsConfigurationOutput struct {
16116	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
16117
16118	// Specifies the metrics configuration.
16119	MetricsConfiguration *MetricsConfiguration `type:"structure"`
16120}
16121
16122// String returns the string representation
16123func (s GetBucketMetricsConfigurationOutput) String() string {
16124	return awsutil.Prettify(s)
16125}
16126
16127// GoString returns the string representation
16128func (s GetBucketMetricsConfigurationOutput) GoString() string {
16129	return s.String()
16130}
16131
16132// SetMetricsConfiguration sets the MetricsConfiguration field's value.
16133func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
16134	s.MetricsConfiguration = v
16135	return s
16136}
16137
16138type GetBucketNotificationConfigurationRequest struct {
16139	_ struct{} `locationName:"GetBucketNotificationConfigurationRequest" type:"structure"`
16140
16141	// Name of the bucket for which to get the notification configuration
16142	//
16143	// Bucket is a required field
16144	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16145}
16146
16147// String returns the string representation
16148func (s GetBucketNotificationConfigurationRequest) String() string {
16149	return awsutil.Prettify(s)
16150}
16151
16152// GoString returns the string representation
16153func (s GetBucketNotificationConfigurationRequest) GoString() string {
16154	return s.String()
16155}
16156
16157// Validate inspects the fields of the type to determine if they are valid.
16158func (s *GetBucketNotificationConfigurationRequest) Validate() error {
16159	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
16160	if s.Bucket == nil {
16161		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16162	}
16163	if s.Bucket != nil && len(*s.Bucket) < 1 {
16164		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16165	}
16166
16167	if invalidParams.Len() > 0 {
16168		return invalidParams
16169	}
16170	return nil
16171}
16172
16173// SetBucket sets the Bucket field's value.
16174func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
16175	s.Bucket = &v
16176	return s
16177}
16178
16179func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
16180	if s.Bucket == nil {
16181		return v
16182	}
16183	return *s.Bucket
16184}
16185
16186func (s *GetBucketNotificationConfigurationRequest) getEndpointARN() (arn.Resource, error) {
16187	if s.Bucket == nil {
16188		return nil, fmt.Errorf("member Bucket is nil")
16189	}
16190	return parseEndpointARN(*s.Bucket)
16191}
16192
16193func (s *GetBucketNotificationConfigurationRequest) hasEndpointARN() bool {
16194	if s.Bucket == nil {
16195		return false
16196	}
16197	return arn.IsARN(*s.Bucket)
16198}
16199
16200type GetBucketPolicyInput struct {
16201	_ struct{} `locationName:"GetBucketPolicyRequest" type:"structure"`
16202
16203	// The bucket name for which to get the bucket policy.
16204	//
16205	// Bucket is a required field
16206	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16207}
16208
16209// String returns the string representation
16210func (s GetBucketPolicyInput) String() string {
16211	return awsutil.Prettify(s)
16212}
16213
16214// GoString returns the string representation
16215func (s GetBucketPolicyInput) GoString() string {
16216	return s.String()
16217}
16218
16219// Validate inspects the fields of the type to determine if they are valid.
16220func (s *GetBucketPolicyInput) Validate() error {
16221	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
16222	if s.Bucket == nil {
16223		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16224	}
16225	if s.Bucket != nil && len(*s.Bucket) < 1 {
16226		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16227	}
16228
16229	if invalidParams.Len() > 0 {
16230		return invalidParams
16231	}
16232	return nil
16233}
16234
16235// SetBucket sets the Bucket field's value.
16236func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
16237	s.Bucket = &v
16238	return s
16239}
16240
16241func (s *GetBucketPolicyInput) getBucket() (v string) {
16242	if s.Bucket == nil {
16243		return v
16244	}
16245	return *s.Bucket
16246}
16247
16248func (s *GetBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
16249	if s.Bucket == nil {
16250		return nil, fmt.Errorf("member Bucket is nil")
16251	}
16252	return parseEndpointARN(*s.Bucket)
16253}
16254
16255func (s *GetBucketPolicyInput) hasEndpointARN() bool {
16256	if s.Bucket == nil {
16257		return false
16258	}
16259	return arn.IsARN(*s.Bucket)
16260}
16261
16262type GetBucketPolicyOutput struct {
16263	_ struct{} `type:"structure" payload:"Policy"`
16264
16265	// The bucket policy as a JSON document.
16266	Policy *string `type:"string"`
16267}
16268
16269// String returns the string representation
16270func (s GetBucketPolicyOutput) String() string {
16271	return awsutil.Prettify(s)
16272}
16273
16274// GoString returns the string representation
16275func (s GetBucketPolicyOutput) GoString() string {
16276	return s.String()
16277}
16278
16279// SetPolicy sets the Policy field's value.
16280func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
16281	s.Policy = &v
16282	return s
16283}
16284
16285type GetBucketPolicyStatusInput struct {
16286	_ struct{} `locationName:"GetBucketPolicyStatusRequest" type:"structure"`
16287
16288	// The name of the Amazon S3 bucket whose policy status you want to retrieve.
16289	//
16290	// Bucket is a required field
16291	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16292}
16293
16294// String returns the string representation
16295func (s GetBucketPolicyStatusInput) String() string {
16296	return awsutil.Prettify(s)
16297}
16298
16299// GoString returns the string representation
16300func (s GetBucketPolicyStatusInput) GoString() string {
16301	return s.String()
16302}
16303
16304// Validate inspects the fields of the type to determine if they are valid.
16305func (s *GetBucketPolicyStatusInput) Validate() error {
16306	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"}
16307	if s.Bucket == nil {
16308		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16309	}
16310	if s.Bucket != nil && len(*s.Bucket) < 1 {
16311		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16312	}
16313
16314	if invalidParams.Len() > 0 {
16315		return invalidParams
16316	}
16317	return nil
16318}
16319
16320// SetBucket sets the Bucket field's value.
16321func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput {
16322	s.Bucket = &v
16323	return s
16324}
16325
16326func (s *GetBucketPolicyStatusInput) getBucket() (v string) {
16327	if s.Bucket == nil {
16328		return v
16329	}
16330	return *s.Bucket
16331}
16332
16333func (s *GetBucketPolicyStatusInput) getEndpointARN() (arn.Resource, error) {
16334	if s.Bucket == nil {
16335		return nil, fmt.Errorf("member Bucket is nil")
16336	}
16337	return parseEndpointARN(*s.Bucket)
16338}
16339
16340func (s *GetBucketPolicyStatusInput) hasEndpointARN() bool {
16341	if s.Bucket == nil {
16342		return false
16343	}
16344	return arn.IsARN(*s.Bucket)
16345}
16346
16347type GetBucketPolicyStatusOutput struct {
16348	_ struct{} `type:"structure" payload:"PolicyStatus"`
16349
16350	// The policy status for the specified bucket.
16351	PolicyStatus *PolicyStatus `type:"structure"`
16352}
16353
16354// String returns the string representation
16355func (s GetBucketPolicyStatusOutput) String() string {
16356	return awsutil.Prettify(s)
16357}
16358
16359// GoString returns the string representation
16360func (s GetBucketPolicyStatusOutput) GoString() string {
16361	return s.String()
16362}
16363
16364// SetPolicyStatus sets the PolicyStatus field's value.
16365func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput {
16366	s.PolicyStatus = v
16367	return s
16368}
16369
16370type GetBucketReplicationInput struct {
16371	_ struct{} `locationName:"GetBucketReplicationRequest" type:"structure"`
16372
16373	// The bucket name for which to get the replication information.
16374	//
16375	// Bucket is a required field
16376	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16377}
16378
16379// String returns the string representation
16380func (s GetBucketReplicationInput) String() string {
16381	return awsutil.Prettify(s)
16382}
16383
16384// GoString returns the string representation
16385func (s GetBucketReplicationInput) GoString() string {
16386	return s.String()
16387}
16388
16389// Validate inspects the fields of the type to determine if they are valid.
16390func (s *GetBucketReplicationInput) Validate() error {
16391	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
16392	if s.Bucket == nil {
16393		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16394	}
16395	if s.Bucket != nil && len(*s.Bucket) < 1 {
16396		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16397	}
16398
16399	if invalidParams.Len() > 0 {
16400		return invalidParams
16401	}
16402	return nil
16403}
16404
16405// SetBucket sets the Bucket field's value.
16406func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
16407	s.Bucket = &v
16408	return s
16409}
16410
16411func (s *GetBucketReplicationInput) getBucket() (v string) {
16412	if s.Bucket == nil {
16413		return v
16414	}
16415	return *s.Bucket
16416}
16417
16418func (s *GetBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
16419	if s.Bucket == nil {
16420		return nil, fmt.Errorf("member Bucket is nil")
16421	}
16422	return parseEndpointARN(*s.Bucket)
16423}
16424
16425func (s *GetBucketReplicationInput) hasEndpointARN() bool {
16426	if s.Bucket == nil {
16427		return false
16428	}
16429	return arn.IsARN(*s.Bucket)
16430}
16431
16432type GetBucketReplicationOutput struct {
16433	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
16434
16435	// A container for replication rules. You can add up to 1,000 rules. The maximum
16436	// size of a replication configuration is 2 MB.
16437	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
16438}
16439
16440// String returns the string representation
16441func (s GetBucketReplicationOutput) String() string {
16442	return awsutil.Prettify(s)
16443}
16444
16445// GoString returns the string representation
16446func (s GetBucketReplicationOutput) GoString() string {
16447	return s.String()
16448}
16449
16450// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
16451func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
16452	s.ReplicationConfiguration = v
16453	return s
16454}
16455
16456type GetBucketRequestPaymentInput struct {
16457	_ struct{} `locationName:"GetBucketRequestPaymentRequest" type:"structure"`
16458
16459	// The name of the bucket for which to get the payment request configuration
16460	//
16461	// Bucket is a required field
16462	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16463}
16464
16465// String returns the string representation
16466func (s GetBucketRequestPaymentInput) String() string {
16467	return awsutil.Prettify(s)
16468}
16469
16470// GoString returns the string representation
16471func (s GetBucketRequestPaymentInput) GoString() string {
16472	return s.String()
16473}
16474
16475// Validate inspects the fields of the type to determine if they are valid.
16476func (s *GetBucketRequestPaymentInput) Validate() error {
16477	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
16478	if s.Bucket == nil {
16479		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16480	}
16481	if s.Bucket != nil && len(*s.Bucket) < 1 {
16482		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16483	}
16484
16485	if invalidParams.Len() > 0 {
16486		return invalidParams
16487	}
16488	return nil
16489}
16490
16491// SetBucket sets the Bucket field's value.
16492func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
16493	s.Bucket = &v
16494	return s
16495}
16496
16497func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
16498	if s.Bucket == nil {
16499		return v
16500	}
16501	return *s.Bucket
16502}
16503
16504func (s *GetBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
16505	if s.Bucket == nil {
16506		return nil, fmt.Errorf("member Bucket is nil")
16507	}
16508	return parseEndpointARN(*s.Bucket)
16509}
16510
16511func (s *GetBucketRequestPaymentInput) hasEndpointARN() bool {
16512	if s.Bucket == nil {
16513		return false
16514	}
16515	return arn.IsARN(*s.Bucket)
16516}
16517
16518type GetBucketRequestPaymentOutput struct {
16519	_ struct{} `type:"structure"`
16520
16521	// Specifies who pays for the download and request fees.
16522	Payer *string `type:"string" enum:"Payer"`
16523}
16524
16525// String returns the string representation
16526func (s GetBucketRequestPaymentOutput) String() string {
16527	return awsutil.Prettify(s)
16528}
16529
16530// GoString returns the string representation
16531func (s GetBucketRequestPaymentOutput) GoString() string {
16532	return s.String()
16533}
16534
16535// SetPayer sets the Payer field's value.
16536func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
16537	s.Payer = &v
16538	return s
16539}
16540
16541type GetBucketTaggingInput struct {
16542	_ struct{} `locationName:"GetBucketTaggingRequest" type:"structure"`
16543
16544	// The name of the bucket for which to get the tagging information.
16545	//
16546	// Bucket is a required field
16547	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16548}
16549
16550// String returns the string representation
16551func (s GetBucketTaggingInput) String() string {
16552	return awsutil.Prettify(s)
16553}
16554
16555// GoString returns the string representation
16556func (s GetBucketTaggingInput) GoString() string {
16557	return s.String()
16558}
16559
16560// Validate inspects the fields of the type to determine if they are valid.
16561func (s *GetBucketTaggingInput) Validate() error {
16562	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
16563	if s.Bucket == nil {
16564		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16565	}
16566	if s.Bucket != nil && len(*s.Bucket) < 1 {
16567		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16568	}
16569
16570	if invalidParams.Len() > 0 {
16571		return invalidParams
16572	}
16573	return nil
16574}
16575
16576// SetBucket sets the Bucket field's value.
16577func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
16578	s.Bucket = &v
16579	return s
16580}
16581
16582func (s *GetBucketTaggingInput) getBucket() (v string) {
16583	if s.Bucket == nil {
16584		return v
16585	}
16586	return *s.Bucket
16587}
16588
16589func (s *GetBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
16590	if s.Bucket == nil {
16591		return nil, fmt.Errorf("member Bucket is nil")
16592	}
16593	return parseEndpointARN(*s.Bucket)
16594}
16595
16596func (s *GetBucketTaggingInput) hasEndpointARN() bool {
16597	if s.Bucket == nil {
16598		return false
16599	}
16600	return arn.IsARN(*s.Bucket)
16601}
16602
16603type GetBucketTaggingOutput struct {
16604	_ struct{} `type:"structure"`
16605
16606	// Contains the tag set.
16607	//
16608	// TagSet is a required field
16609	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
16610}
16611
16612// String returns the string representation
16613func (s GetBucketTaggingOutput) String() string {
16614	return awsutil.Prettify(s)
16615}
16616
16617// GoString returns the string representation
16618func (s GetBucketTaggingOutput) GoString() string {
16619	return s.String()
16620}
16621
16622// SetTagSet sets the TagSet field's value.
16623func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
16624	s.TagSet = v
16625	return s
16626}
16627
16628type GetBucketVersioningInput struct {
16629	_ struct{} `locationName:"GetBucketVersioningRequest" type:"structure"`
16630
16631	// The name of the bucket for which to get the versioning information.
16632	//
16633	// Bucket is a required field
16634	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16635}
16636
16637// String returns the string representation
16638func (s GetBucketVersioningInput) String() string {
16639	return awsutil.Prettify(s)
16640}
16641
16642// GoString returns the string representation
16643func (s GetBucketVersioningInput) GoString() string {
16644	return s.String()
16645}
16646
16647// Validate inspects the fields of the type to determine if they are valid.
16648func (s *GetBucketVersioningInput) Validate() error {
16649	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
16650	if s.Bucket == nil {
16651		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16652	}
16653	if s.Bucket != nil && len(*s.Bucket) < 1 {
16654		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16655	}
16656
16657	if invalidParams.Len() > 0 {
16658		return invalidParams
16659	}
16660	return nil
16661}
16662
16663// SetBucket sets the Bucket field's value.
16664func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
16665	s.Bucket = &v
16666	return s
16667}
16668
16669func (s *GetBucketVersioningInput) getBucket() (v string) {
16670	if s.Bucket == nil {
16671		return v
16672	}
16673	return *s.Bucket
16674}
16675
16676func (s *GetBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
16677	if s.Bucket == nil {
16678		return nil, fmt.Errorf("member Bucket is nil")
16679	}
16680	return parseEndpointARN(*s.Bucket)
16681}
16682
16683func (s *GetBucketVersioningInput) hasEndpointARN() bool {
16684	if s.Bucket == nil {
16685		return false
16686	}
16687	return arn.IsARN(*s.Bucket)
16688}
16689
16690type GetBucketVersioningOutput struct {
16691	_ struct{} `type:"structure"`
16692
16693	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
16694	// This element is only returned if the bucket has been configured with MFA
16695	// delete. If the bucket has never been so configured, this element is not returned.
16696	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
16697
16698	// The versioning state of the bucket.
16699	Status *string `type:"string" enum:"BucketVersioningStatus"`
16700}
16701
16702// String returns the string representation
16703func (s GetBucketVersioningOutput) String() string {
16704	return awsutil.Prettify(s)
16705}
16706
16707// GoString returns the string representation
16708func (s GetBucketVersioningOutput) GoString() string {
16709	return s.String()
16710}
16711
16712// SetMFADelete sets the MFADelete field's value.
16713func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
16714	s.MFADelete = &v
16715	return s
16716}
16717
16718// SetStatus sets the Status field's value.
16719func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
16720	s.Status = &v
16721	return s
16722}
16723
16724type GetBucketWebsiteInput struct {
16725	_ struct{} `locationName:"GetBucketWebsiteRequest" type:"structure"`
16726
16727	// The bucket name for which to get the website configuration.
16728	//
16729	// Bucket is a required field
16730	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16731}
16732
16733// String returns the string representation
16734func (s GetBucketWebsiteInput) String() string {
16735	return awsutil.Prettify(s)
16736}
16737
16738// GoString returns the string representation
16739func (s GetBucketWebsiteInput) GoString() string {
16740	return s.String()
16741}
16742
16743// Validate inspects the fields of the type to determine if they are valid.
16744func (s *GetBucketWebsiteInput) Validate() error {
16745	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
16746	if s.Bucket == nil {
16747		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16748	}
16749	if s.Bucket != nil && len(*s.Bucket) < 1 {
16750		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16751	}
16752
16753	if invalidParams.Len() > 0 {
16754		return invalidParams
16755	}
16756	return nil
16757}
16758
16759// SetBucket sets the Bucket field's value.
16760func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
16761	s.Bucket = &v
16762	return s
16763}
16764
16765func (s *GetBucketWebsiteInput) getBucket() (v string) {
16766	if s.Bucket == nil {
16767		return v
16768	}
16769	return *s.Bucket
16770}
16771
16772func (s *GetBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
16773	if s.Bucket == nil {
16774		return nil, fmt.Errorf("member Bucket is nil")
16775	}
16776	return parseEndpointARN(*s.Bucket)
16777}
16778
16779func (s *GetBucketWebsiteInput) hasEndpointARN() bool {
16780	if s.Bucket == nil {
16781		return false
16782	}
16783	return arn.IsARN(*s.Bucket)
16784}
16785
16786type GetBucketWebsiteOutput struct {
16787	_ struct{} `type:"structure"`
16788
16789	// The name of the error document for the website.
16790	ErrorDocument *ErrorDocument `type:"structure"`
16791
16792	// The name of the index document for the website.
16793	IndexDocument *IndexDocument `type:"structure"`
16794
16795	// Specifies the redirect behavior of all requests to a website endpoint of
16796	// an Amazon S3 bucket.
16797	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
16798
16799	// Rules that define when a redirect is applied and the redirect behavior.
16800	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
16801}
16802
16803// String returns the string representation
16804func (s GetBucketWebsiteOutput) String() string {
16805	return awsutil.Prettify(s)
16806}
16807
16808// GoString returns the string representation
16809func (s GetBucketWebsiteOutput) GoString() string {
16810	return s.String()
16811}
16812
16813// SetErrorDocument sets the ErrorDocument field's value.
16814func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
16815	s.ErrorDocument = v
16816	return s
16817}
16818
16819// SetIndexDocument sets the IndexDocument field's value.
16820func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
16821	s.IndexDocument = v
16822	return s
16823}
16824
16825// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
16826func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
16827	s.RedirectAllRequestsTo = v
16828	return s
16829}
16830
16831// SetRoutingRules sets the RoutingRules field's value.
16832func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
16833	s.RoutingRules = v
16834	return s
16835}
16836
16837type GetObjectAclInput struct {
16838	_ struct{} `locationName:"GetObjectAclRequest" type:"structure"`
16839
16840	// The bucket name that contains the object for which to get the ACL information.
16841	//
16842	// When using this API with an access point, you must direct requests to the
16843	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16844	// When using this operation using an access point through the AWS SDKs, you
16845	// provide the access point ARN in place of the bucket name. For more information
16846	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
16847	// in the Amazon Simple Storage Service Developer Guide.
16848	//
16849	// Bucket is a required field
16850	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16851
16852	// The key of the object for which to get the ACL information.
16853	//
16854	// Key is a required field
16855	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
16856
16857	// Confirms that the requester knows that she or he will be charged for the
16858	// request. Bucket owners need not specify this parameter in their requests.
16859	// For information about downloading objects from Requester Pays buckets, see
16860	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
16861	// in the Amazon S3 Developer Guide.
16862	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16863
16864	// VersionId used to reference a specific version of the object.
16865	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
16866}
16867
16868// String returns the string representation
16869func (s GetObjectAclInput) String() string {
16870	return awsutil.Prettify(s)
16871}
16872
16873// GoString returns the string representation
16874func (s GetObjectAclInput) GoString() string {
16875	return s.String()
16876}
16877
16878// Validate inspects the fields of the type to determine if they are valid.
16879func (s *GetObjectAclInput) Validate() error {
16880	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
16881	if s.Bucket == nil {
16882		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16883	}
16884	if s.Bucket != nil && len(*s.Bucket) < 1 {
16885		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16886	}
16887	if s.Key == nil {
16888		invalidParams.Add(request.NewErrParamRequired("Key"))
16889	}
16890	if s.Key != nil && len(*s.Key) < 1 {
16891		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16892	}
16893
16894	if invalidParams.Len() > 0 {
16895		return invalidParams
16896	}
16897	return nil
16898}
16899
16900// SetBucket sets the Bucket field's value.
16901func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
16902	s.Bucket = &v
16903	return s
16904}
16905
16906func (s *GetObjectAclInput) getBucket() (v string) {
16907	if s.Bucket == nil {
16908		return v
16909	}
16910	return *s.Bucket
16911}
16912
16913// SetKey sets the Key field's value.
16914func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
16915	s.Key = &v
16916	return s
16917}
16918
16919// SetRequestPayer sets the RequestPayer field's value.
16920func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
16921	s.RequestPayer = &v
16922	return s
16923}
16924
16925// SetVersionId sets the VersionId field's value.
16926func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
16927	s.VersionId = &v
16928	return s
16929}
16930
16931func (s *GetObjectAclInput) getEndpointARN() (arn.Resource, error) {
16932	if s.Bucket == nil {
16933		return nil, fmt.Errorf("member Bucket is nil")
16934	}
16935	return parseEndpointARN(*s.Bucket)
16936}
16937
16938func (s *GetObjectAclInput) hasEndpointARN() bool {
16939	if s.Bucket == nil {
16940		return false
16941	}
16942	return arn.IsARN(*s.Bucket)
16943}
16944
16945type GetObjectAclOutput struct {
16946	_ struct{} `type:"structure"`
16947
16948	// A list of grants.
16949	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
16950
16951	// Container for the bucket owner's display name and ID.
16952	Owner *Owner `type:"structure"`
16953
16954	// If present, indicates that the requester was successfully charged for the
16955	// request.
16956	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
16957}
16958
16959// String returns the string representation
16960func (s GetObjectAclOutput) String() string {
16961	return awsutil.Prettify(s)
16962}
16963
16964// GoString returns the string representation
16965func (s GetObjectAclOutput) GoString() string {
16966	return s.String()
16967}
16968
16969// SetGrants sets the Grants field's value.
16970func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
16971	s.Grants = v
16972	return s
16973}
16974
16975// SetOwner sets the Owner field's value.
16976func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
16977	s.Owner = v
16978	return s
16979}
16980
16981// SetRequestCharged sets the RequestCharged field's value.
16982func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
16983	s.RequestCharged = &v
16984	return s
16985}
16986
16987type GetObjectInput struct {
16988	_ struct{} `locationName:"GetObjectRequest" type:"structure"`
16989
16990	// The bucket name containing the object.
16991	//
16992	// When using this API with an access point, you must direct requests to the
16993	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16994	// When using this operation using an access point through the AWS SDKs, you
16995	// provide the access point ARN in place of the bucket name. For more information
16996	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
16997	// in the Amazon Simple Storage Service Developer Guide.
16998	//
16999	// Bucket is a required field
17000	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17001
17002	// Return the object only if its entity tag (ETag) is the same as the one specified,
17003	// otherwise return a 412 (precondition failed).
17004	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
17005
17006	// Return the object only if it has been modified since the specified time,
17007	// otherwise return a 304 (not modified).
17008	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
17009
17010	// Return the object only if its entity tag (ETag) is different from the one
17011	// specified, otherwise return a 304 (not modified).
17012	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
17013
17014	// Return the object only if it has not been modified since the specified time,
17015	// otherwise return a 412 (precondition failed).
17016	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
17017
17018	// Key of the object to get.
17019	//
17020	// Key is a required field
17021	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17022
17023	// Part number of the object being read. This is a positive integer between
17024	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
17025	// Useful for downloading just a part of an object.
17026	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
17027
17028	// Downloads the specified range bytes of an object. For more information about
17029	// the HTTP Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
17030	Range *string `location:"header" locationName:"Range" type:"string"`
17031
17032	// Confirms that the requester knows that she or he will be charged for the
17033	// request. Bucket owners need not specify this parameter in their requests.
17034	// For information about downloading objects from Requester Pays buckets, see
17035	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17036	// in the Amazon S3 Developer Guide.
17037	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17038
17039	// Sets the Cache-Control header of the response.
17040	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
17041
17042	// Sets the Content-Disposition header of the response
17043	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
17044
17045	// Sets the Content-Encoding header of the response.
17046	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
17047
17048	// Sets the Content-Language header of the response.
17049	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
17050
17051	// Sets the Content-Type header of the response.
17052	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
17053
17054	// Sets the Expires header of the response.
17055	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp"`
17056
17057	// Specifies the algorithm to use to when encrypting the object (for example,
17058	// AES256).
17059	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
17060
17061	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
17062	// data. This value is used to store the object and then it is discarded; Amazon
17063	// S3 does not store the encryption key. The key must be appropriate for use
17064	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
17065	// header.
17066	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
17067
17068	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
17069	// Amazon S3 uses this header for a message integrity check to ensure that the
17070	// encryption key was transmitted without error.
17071	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
17072
17073	// VersionId used to reference a specific version of the object.
17074	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17075}
17076
17077// String returns the string representation
17078func (s GetObjectInput) String() string {
17079	return awsutil.Prettify(s)
17080}
17081
17082// GoString returns the string representation
17083func (s GetObjectInput) GoString() string {
17084	return s.String()
17085}
17086
17087// Validate inspects the fields of the type to determine if they are valid.
17088func (s *GetObjectInput) Validate() error {
17089	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
17090	if s.Bucket == nil {
17091		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17092	}
17093	if s.Bucket != nil && len(*s.Bucket) < 1 {
17094		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17095	}
17096	if s.Key == nil {
17097		invalidParams.Add(request.NewErrParamRequired("Key"))
17098	}
17099	if s.Key != nil && len(*s.Key) < 1 {
17100		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17101	}
17102
17103	if invalidParams.Len() > 0 {
17104		return invalidParams
17105	}
17106	return nil
17107}
17108
17109// SetBucket sets the Bucket field's value.
17110func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
17111	s.Bucket = &v
17112	return s
17113}
17114
17115func (s *GetObjectInput) getBucket() (v string) {
17116	if s.Bucket == nil {
17117		return v
17118	}
17119	return *s.Bucket
17120}
17121
17122// SetIfMatch sets the IfMatch field's value.
17123func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
17124	s.IfMatch = &v
17125	return s
17126}
17127
17128// SetIfModifiedSince sets the IfModifiedSince field's value.
17129func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
17130	s.IfModifiedSince = &v
17131	return s
17132}
17133
17134// SetIfNoneMatch sets the IfNoneMatch field's value.
17135func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
17136	s.IfNoneMatch = &v
17137	return s
17138}
17139
17140// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
17141func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
17142	s.IfUnmodifiedSince = &v
17143	return s
17144}
17145
17146// SetKey sets the Key field's value.
17147func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
17148	s.Key = &v
17149	return s
17150}
17151
17152// SetPartNumber sets the PartNumber field's value.
17153func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
17154	s.PartNumber = &v
17155	return s
17156}
17157
17158// SetRange sets the Range field's value.
17159func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
17160	s.Range = &v
17161	return s
17162}
17163
17164// SetRequestPayer sets the RequestPayer field's value.
17165func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
17166	s.RequestPayer = &v
17167	return s
17168}
17169
17170// SetResponseCacheControl sets the ResponseCacheControl field's value.
17171func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
17172	s.ResponseCacheControl = &v
17173	return s
17174}
17175
17176// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
17177func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
17178	s.ResponseContentDisposition = &v
17179	return s
17180}
17181
17182// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
17183func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
17184	s.ResponseContentEncoding = &v
17185	return s
17186}
17187
17188// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
17189func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
17190	s.ResponseContentLanguage = &v
17191	return s
17192}
17193
17194// SetResponseContentType sets the ResponseContentType field's value.
17195func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
17196	s.ResponseContentType = &v
17197	return s
17198}
17199
17200// SetResponseExpires sets the ResponseExpires field's value.
17201func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
17202	s.ResponseExpires = &v
17203	return s
17204}
17205
17206// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
17207func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
17208	s.SSECustomerAlgorithm = &v
17209	return s
17210}
17211
17212// SetSSECustomerKey sets the SSECustomerKey field's value.
17213func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
17214	s.SSECustomerKey = &v
17215	return s
17216}
17217
17218func (s *GetObjectInput) getSSECustomerKey() (v string) {
17219	if s.SSECustomerKey == nil {
17220		return v
17221	}
17222	return *s.SSECustomerKey
17223}
17224
17225// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
17226func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
17227	s.SSECustomerKeyMD5 = &v
17228	return s
17229}
17230
17231// SetVersionId sets the VersionId field's value.
17232func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
17233	s.VersionId = &v
17234	return s
17235}
17236
17237func (s *GetObjectInput) getEndpointARN() (arn.Resource, error) {
17238	if s.Bucket == nil {
17239		return nil, fmt.Errorf("member Bucket is nil")
17240	}
17241	return parseEndpointARN(*s.Bucket)
17242}
17243
17244func (s *GetObjectInput) hasEndpointARN() bool {
17245	if s.Bucket == nil {
17246		return false
17247	}
17248	return arn.IsARN(*s.Bucket)
17249}
17250
17251type GetObjectLegalHoldInput struct {
17252	_ struct{} `locationName:"GetObjectLegalHoldRequest" type:"structure"`
17253
17254	// The bucket name containing the object whose Legal Hold status you want to
17255	// retrieve.
17256	//
17257	// When using this API with an access point, you must direct requests to the
17258	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17259	// When using this operation using an access point through the AWS SDKs, you
17260	// provide the access point ARN in place of the bucket name. For more information
17261	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17262	// in the Amazon Simple Storage Service Developer Guide.
17263	//
17264	// Bucket is a required field
17265	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17266
17267	// The key name for the object whose Legal Hold status you want to retrieve.
17268	//
17269	// Key is a required field
17270	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17271
17272	// Confirms that the requester knows that she or he will be charged for the
17273	// request. Bucket owners need not specify this parameter in their requests.
17274	// For information about downloading objects from Requester Pays buckets, see
17275	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17276	// in the Amazon S3 Developer Guide.
17277	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17278
17279	// The version ID of the object whose Legal Hold status you want to retrieve.
17280	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17281}
17282
17283// String returns the string representation
17284func (s GetObjectLegalHoldInput) String() string {
17285	return awsutil.Prettify(s)
17286}
17287
17288// GoString returns the string representation
17289func (s GetObjectLegalHoldInput) GoString() string {
17290	return s.String()
17291}
17292
17293// Validate inspects the fields of the type to determine if they are valid.
17294func (s *GetObjectLegalHoldInput) Validate() error {
17295	invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"}
17296	if s.Bucket == nil {
17297		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17298	}
17299	if s.Bucket != nil && len(*s.Bucket) < 1 {
17300		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17301	}
17302	if s.Key == nil {
17303		invalidParams.Add(request.NewErrParamRequired("Key"))
17304	}
17305	if s.Key != nil && len(*s.Key) < 1 {
17306		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17307	}
17308
17309	if invalidParams.Len() > 0 {
17310		return invalidParams
17311	}
17312	return nil
17313}
17314
17315// SetBucket sets the Bucket field's value.
17316func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput {
17317	s.Bucket = &v
17318	return s
17319}
17320
17321func (s *GetObjectLegalHoldInput) getBucket() (v string) {
17322	if s.Bucket == nil {
17323		return v
17324	}
17325	return *s.Bucket
17326}
17327
17328// SetKey sets the Key field's value.
17329func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput {
17330	s.Key = &v
17331	return s
17332}
17333
17334// SetRequestPayer sets the RequestPayer field's value.
17335func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput {
17336	s.RequestPayer = &v
17337	return s
17338}
17339
17340// SetVersionId sets the VersionId field's value.
17341func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput {
17342	s.VersionId = &v
17343	return s
17344}
17345
17346func (s *GetObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
17347	if s.Bucket == nil {
17348		return nil, fmt.Errorf("member Bucket is nil")
17349	}
17350	return parseEndpointARN(*s.Bucket)
17351}
17352
17353func (s *GetObjectLegalHoldInput) hasEndpointARN() bool {
17354	if s.Bucket == nil {
17355		return false
17356	}
17357	return arn.IsARN(*s.Bucket)
17358}
17359
17360type GetObjectLegalHoldOutput struct {
17361	_ struct{} `type:"structure" payload:"LegalHold"`
17362
17363	// The current Legal Hold status for the specified object.
17364	LegalHold *ObjectLockLegalHold `type:"structure"`
17365}
17366
17367// String returns the string representation
17368func (s GetObjectLegalHoldOutput) String() string {
17369	return awsutil.Prettify(s)
17370}
17371
17372// GoString returns the string representation
17373func (s GetObjectLegalHoldOutput) GoString() string {
17374	return s.String()
17375}
17376
17377// SetLegalHold sets the LegalHold field's value.
17378func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput {
17379	s.LegalHold = v
17380	return s
17381}
17382
17383type GetObjectLockConfigurationInput struct {
17384	_ struct{} `locationName:"GetObjectLockConfigurationRequest" type:"structure"`
17385
17386	// The bucket whose Object Lock configuration you want to retrieve.
17387	//
17388	// Bucket is a required field
17389	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17390}
17391
17392// String returns the string representation
17393func (s GetObjectLockConfigurationInput) String() string {
17394	return awsutil.Prettify(s)
17395}
17396
17397// GoString returns the string representation
17398func (s GetObjectLockConfigurationInput) GoString() string {
17399	return s.String()
17400}
17401
17402// Validate inspects the fields of the type to determine if they are valid.
17403func (s *GetObjectLockConfigurationInput) Validate() error {
17404	invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"}
17405	if s.Bucket == nil {
17406		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17407	}
17408	if s.Bucket != nil && len(*s.Bucket) < 1 {
17409		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17410	}
17411
17412	if invalidParams.Len() > 0 {
17413		return invalidParams
17414	}
17415	return nil
17416}
17417
17418// SetBucket sets the Bucket field's value.
17419func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput {
17420	s.Bucket = &v
17421	return s
17422}
17423
17424func (s *GetObjectLockConfigurationInput) getBucket() (v string) {
17425	if s.Bucket == nil {
17426		return v
17427	}
17428	return *s.Bucket
17429}
17430
17431func (s *GetObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
17432	if s.Bucket == nil {
17433		return nil, fmt.Errorf("member Bucket is nil")
17434	}
17435	return parseEndpointARN(*s.Bucket)
17436}
17437
17438func (s *GetObjectLockConfigurationInput) hasEndpointARN() bool {
17439	if s.Bucket == nil {
17440		return false
17441	}
17442	return arn.IsARN(*s.Bucket)
17443}
17444
17445type GetObjectLockConfigurationOutput struct {
17446	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
17447
17448	// The specified bucket's Object Lock configuration.
17449	ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"`
17450}
17451
17452// String returns the string representation
17453func (s GetObjectLockConfigurationOutput) String() string {
17454	return awsutil.Prettify(s)
17455}
17456
17457// GoString returns the string representation
17458func (s GetObjectLockConfigurationOutput) GoString() string {
17459	return s.String()
17460}
17461
17462// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
17463func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput {
17464	s.ObjectLockConfiguration = v
17465	return s
17466}
17467
17468type GetObjectOutput struct {
17469	_ struct{} `type:"structure" payload:"Body"`
17470
17471	// Indicates that a range of bytes was specified.
17472	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
17473
17474	// Object data.
17475	Body io.ReadCloser `type:"blob"`
17476
17477	// Specifies caching behavior along the request/reply chain.
17478	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
17479
17480	// Specifies presentational information for the object.
17481	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
17482
17483	// Specifies what content encodings have been applied to the object and thus
17484	// what decoding mechanisms must be applied to obtain the media-type referenced
17485	// by the Content-Type header field.
17486	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
17487
17488	// The language the content is in.
17489	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
17490
17491	// Size of the body in bytes.
17492	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
17493
17494	// The portion of the object returned in the response.
17495	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
17496
17497	// A standard MIME type describing the format of the object data.
17498	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
17499
17500	// Specifies whether the object retrieved was (true) or was not (false) a Delete
17501	// Marker. If false, this response header does not appear in the response.
17502	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
17503
17504	// An ETag is an opaque identifier assigned by a web server to a specific version
17505	// of a resource found at a URL.
17506	ETag *string `location:"header" locationName:"ETag" type:"string"`
17507
17508	// If the object expiration is configured (see PUT Bucket lifecycle), the response
17509	// includes this header. It includes the expiry-date and rule-id key-value pairs
17510	// providing object expiration information. The value of the rule-id is URL
17511	// encoded.
17512	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
17513
17514	// The date and time at which the object is no longer cacheable.
17515	Expires *string `location:"header" locationName:"Expires" type:"string"`
17516
17517	// Last modified date of the object
17518	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
17519
17520	// A map of metadata to store with the object in S3.
17521	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
17522
17523	// This is set to the number of metadata entries not returned in x-amz-meta
17524	// headers. This can happen if you create metadata using an API like SOAP that
17525	// supports more flexible metadata than the REST API. For example, using SOAP,
17526	// you can create metadata whose values are not legal HTTP headers.
17527	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
17528
17529	// Indicates whether this object has an active legal hold. This field is only
17530	// returned if you have permission to view an object's legal hold status.
17531	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
17532
17533	// The Object Lock mode currently in place for this object.
17534	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
17535
17536	// The date and time when this object's Object Lock will expire.
17537	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
17538
17539	// The count of parts this object has.
17540	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
17541
17542	// Amazon S3 can return this if your request involves a bucket that is either
17543	// a source or destination in a replication rule.
17544	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
17545
17546	// If present, indicates that the requester was successfully charged for the
17547	// request.
17548	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
17549
17550	// Provides information about object restoration operation and expiration time
17551	// of the restored object copy.
17552	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
17553
17554	// If server-side encryption with a customer-provided encryption key was requested,
17555	// the response will include this header confirming the encryption algorithm
17556	// used.
17557	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
17558
17559	// If server-side encryption with a customer-provided encryption key was requested,
17560	// the response will include this header to provide round-trip message integrity
17561	// verification of the customer-provided encryption key.
17562	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
17563
17564	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
17565	// customer master key (CMK) that was used for the object.
17566	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
17567
17568	// The server-side encryption algorithm used when storing this object in Amazon
17569	// S3 (for example, AES256, aws:kms).
17570	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
17571
17572	// Provides storage class information of the object. Amazon S3 returns this
17573	// header for all objects except for Standard storage class objects.
17574	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
17575
17576	// The number of tags, if any, on the object.
17577	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
17578
17579	// Version of the object.
17580	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
17581
17582	// If the bucket is configured as a website, redirects requests for this object
17583	// to another object in the same bucket or to an external URL. Amazon S3 stores
17584	// the value of this header in the object metadata.
17585	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
17586}
17587
17588// String returns the string representation
17589func (s GetObjectOutput) String() string {
17590	return awsutil.Prettify(s)
17591}
17592
17593// GoString returns the string representation
17594func (s GetObjectOutput) GoString() string {
17595	return s.String()
17596}
17597
17598// SetAcceptRanges sets the AcceptRanges field's value.
17599func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
17600	s.AcceptRanges = &v
17601	return s
17602}
17603
17604// SetBody sets the Body field's value.
17605func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
17606	s.Body = v
17607	return s
17608}
17609
17610// SetCacheControl sets the CacheControl field's value.
17611func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
17612	s.CacheControl = &v
17613	return s
17614}
17615
17616// SetContentDisposition sets the ContentDisposition field's value.
17617func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
17618	s.ContentDisposition = &v
17619	return s
17620}
17621
17622// SetContentEncoding sets the ContentEncoding field's value.
17623func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
17624	s.ContentEncoding = &v
17625	return s
17626}
17627
17628// SetContentLanguage sets the ContentLanguage field's value.
17629func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
17630	s.ContentLanguage = &v
17631	return s
17632}
17633
17634// SetContentLength sets the ContentLength field's value.
17635func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
17636	s.ContentLength = &v
17637	return s
17638}
17639
17640// SetContentRange sets the ContentRange field's value.
17641func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
17642	s.ContentRange = &v
17643	return s
17644}
17645
17646// SetContentType sets the ContentType field's value.
17647func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
17648	s.ContentType = &v
17649	return s
17650}
17651
17652// SetDeleteMarker sets the DeleteMarker field's value.
17653func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
17654	s.DeleteMarker = &v
17655	return s
17656}
17657
17658// SetETag sets the ETag field's value.
17659func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
17660	s.ETag = &v
17661	return s
17662}
17663
17664// SetExpiration sets the Expiration field's value.
17665func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
17666	s.Expiration = &v
17667	return s
17668}
17669
17670// SetExpires sets the Expires field's value.
17671func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
17672	s.Expires = &v
17673	return s
17674}
17675
17676// SetLastModified sets the LastModified field's value.
17677func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
17678	s.LastModified = &v
17679	return s
17680}
17681
17682// SetMetadata sets the Metadata field's value.
17683func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
17684	s.Metadata = v
17685	return s
17686}
17687
17688// SetMissingMeta sets the MissingMeta field's value.
17689func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
17690	s.MissingMeta = &v
17691	return s
17692}
17693
17694// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
17695func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput {
17696	s.ObjectLockLegalHoldStatus = &v
17697	return s
17698}
17699
17700// SetObjectLockMode sets the ObjectLockMode field's value.
17701func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput {
17702	s.ObjectLockMode = &v
17703	return s
17704}
17705
17706// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
17707func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput {
17708	s.ObjectLockRetainUntilDate = &v
17709	return s
17710}
17711
17712// SetPartsCount sets the PartsCount field's value.
17713func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
17714	s.PartsCount = &v
17715	return s
17716}
17717
17718// SetReplicationStatus sets the ReplicationStatus field's value.
17719func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
17720	s.ReplicationStatus = &v
17721	return s
17722}
17723
17724// SetRequestCharged sets the RequestCharged field's value.
17725func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
17726	s.RequestCharged = &v
17727	return s
17728}
17729
17730// SetRestore sets the Restore field's value.
17731func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
17732	s.Restore = &v
17733	return s
17734}
17735
17736// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
17737func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
17738	s.SSECustomerAlgorithm = &v
17739	return s
17740}
17741
17742// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
17743func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
17744	s.SSECustomerKeyMD5 = &v
17745	return s
17746}
17747
17748// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
17749func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
17750	s.SSEKMSKeyId = &v
17751	return s
17752}
17753
17754// SetServerSideEncryption sets the ServerSideEncryption field's value.
17755func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
17756	s.ServerSideEncryption = &v
17757	return s
17758}
17759
17760// SetStorageClass sets the StorageClass field's value.
17761func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
17762	s.StorageClass = &v
17763	return s
17764}
17765
17766// SetTagCount sets the TagCount field's value.
17767func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
17768	s.TagCount = &v
17769	return s
17770}
17771
17772// SetVersionId sets the VersionId field's value.
17773func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
17774	s.VersionId = &v
17775	return s
17776}
17777
17778// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
17779func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
17780	s.WebsiteRedirectLocation = &v
17781	return s
17782}
17783
17784type GetObjectRetentionInput struct {
17785	_ struct{} `locationName:"GetObjectRetentionRequest" type:"structure"`
17786
17787	// The bucket name containing the object whose retention settings you want to
17788	// retrieve.
17789	//
17790	// When using this API with an access point, you must direct requests to the
17791	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17792	// When using this operation using an access point through the AWS SDKs, you
17793	// provide the access point ARN in place of the bucket name. For more information
17794	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17795	// in the Amazon Simple Storage Service Developer Guide.
17796	//
17797	// Bucket is a required field
17798	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17799
17800	// The key name for the object whose retention settings you want to retrieve.
17801	//
17802	// Key is a required field
17803	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17804
17805	// Confirms that the requester knows that she or he will be charged for the
17806	// request. Bucket owners need not specify this parameter in their requests.
17807	// For information about downloading objects from Requester Pays buckets, see
17808	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
17809	// in the Amazon S3 Developer Guide.
17810	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
17811
17812	// The version ID for the object whose retention settings you want to retrieve.
17813	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17814}
17815
17816// String returns the string representation
17817func (s GetObjectRetentionInput) String() string {
17818	return awsutil.Prettify(s)
17819}
17820
17821// GoString returns the string representation
17822func (s GetObjectRetentionInput) GoString() string {
17823	return s.String()
17824}
17825
17826// Validate inspects the fields of the type to determine if they are valid.
17827func (s *GetObjectRetentionInput) Validate() error {
17828	invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"}
17829	if s.Bucket == nil {
17830		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17831	}
17832	if s.Bucket != nil && len(*s.Bucket) < 1 {
17833		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17834	}
17835	if s.Key == nil {
17836		invalidParams.Add(request.NewErrParamRequired("Key"))
17837	}
17838	if s.Key != nil && len(*s.Key) < 1 {
17839		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17840	}
17841
17842	if invalidParams.Len() > 0 {
17843		return invalidParams
17844	}
17845	return nil
17846}
17847
17848// SetBucket sets the Bucket field's value.
17849func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput {
17850	s.Bucket = &v
17851	return s
17852}
17853
17854func (s *GetObjectRetentionInput) getBucket() (v string) {
17855	if s.Bucket == nil {
17856		return v
17857	}
17858	return *s.Bucket
17859}
17860
17861// SetKey sets the Key field's value.
17862func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput {
17863	s.Key = &v
17864	return s
17865}
17866
17867// SetRequestPayer sets the RequestPayer field's value.
17868func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput {
17869	s.RequestPayer = &v
17870	return s
17871}
17872
17873// SetVersionId sets the VersionId field's value.
17874func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput {
17875	s.VersionId = &v
17876	return s
17877}
17878
17879func (s *GetObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
17880	if s.Bucket == nil {
17881		return nil, fmt.Errorf("member Bucket is nil")
17882	}
17883	return parseEndpointARN(*s.Bucket)
17884}
17885
17886func (s *GetObjectRetentionInput) hasEndpointARN() bool {
17887	if s.Bucket == nil {
17888		return false
17889	}
17890	return arn.IsARN(*s.Bucket)
17891}
17892
17893type GetObjectRetentionOutput struct {
17894	_ struct{} `type:"structure" payload:"Retention"`
17895
17896	// The container element for an object's retention settings.
17897	Retention *ObjectLockRetention `type:"structure"`
17898}
17899
17900// String returns the string representation
17901func (s GetObjectRetentionOutput) String() string {
17902	return awsutil.Prettify(s)
17903}
17904
17905// GoString returns the string representation
17906func (s GetObjectRetentionOutput) GoString() string {
17907	return s.String()
17908}
17909
17910// SetRetention sets the Retention field's value.
17911func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput {
17912	s.Retention = v
17913	return s
17914}
17915
17916type GetObjectTaggingInput struct {
17917	_ struct{} `locationName:"GetObjectTaggingRequest" type:"structure"`
17918
17919	// The bucket name containing the object for which to get the tagging information.
17920	//
17921	// When using this API with an access point, you must direct requests to the
17922	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
17923	// When using this operation using an access point through the AWS SDKs, you
17924	// provide the access point ARN in place of the bucket name. For more information
17925	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
17926	// in the Amazon Simple Storage Service Developer Guide.
17927	//
17928	// Bucket is a required field
17929	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17930
17931	// Object key for which to get the tagging information.
17932	//
17933	// Key is a required field
17934	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
17935
17936	// The versionId of the object for which to get the tagging information.
17937	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
17938}
17939
17940// String returns the string representation
17941func (s GetObjectTaggingInput) String() string {
17942	return awsutil.Prettify(s)
17943}
17944
17945// GoString returns the string representation
17946func (s GetObjectTaggingInput) GoString() string {
17947	return s.String()
17948}
17949
17950// Validate inspects the fields of the type to determine if they are valid.
17951func (s *GetObjectTaggingInput) Validate() error {
17952	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
17953	if s.Bucket == nil {
17954		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17955	}
17956	if s.Bucket != nil && len(*s.Bucket) < 1 {
17957		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17958	}
17959	if s.Key == nil {
17960		invalidParams.Add(request.NewErrParamRequired("Key"))
17961	}
17962	if s.Key != nil && len(*s.Key) < 1 {
17963		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17964	}
17965
17966	if invalidParams.Len() > 0 {
17967		return invalidParams
17968	}
17969	return nil
17970}
17971
17972// SetBucket sets the Bucket field's value.
17973func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
17974	s.Bucket = &v
17975	return s
17976}
17977
17978func (s *GetObjectTaggingInput) getBucket() (v string) {
17979	if s.Bucket == nil {
17980		return v
17981	}
17982	return *s.Bucket
17983}
17984
17985// SetKey sets the Key field's value.
17986func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
17987	s.Key = &v
17988	return s
17989}
17990
17991// SetVersionId sets the VersionId field's value.
17992func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
17993	s.VersionId = &v
17994	return s
17995}
17996
17997func (s *GetObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
17998	if s.Bucket == nil {
17999		return nil, fmt.Errorf("member Bucket is nil")
18000	}
18001	return parseEndpointARN(*s.Bucket)
18002}
18003
18004func (s *GetObjectTaggingInput) hasEndpointARN() bool {
18005	if s.Bucket == nil {
18006		return false
18007	}
18008	return arn.IsARN(*s.Bucket)
18009}
18010
18011type GetObjectTaggingOutput struct {
18012	_ struct{} `type:"structure"`
18013
18014	// Contains the tag set.
18015	//
18016	// TagSet is a required field
18017	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
18018
18019	// The versionId of the object for which you got the tagging information.
18020	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
18021}
18022
18023// String returns the string representation
18024func (s GetObjectTaggingOutput) String() string {
18025	return awsutil.Prettify(s)
18026}
18027
18028// GoString returns the string representation
18029func (s GetObjectTaggingOutput) GoString() string {
18030	return s.String()
18031}
18032
18033// SetTagSet sets the TagSet field's value.
18034func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
18035	s.TagSet = v
18036	return s
18037}
18038
18039// SetVersionId sets the VersionId field's value.
18040func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
18041	s.VersionId = &v
18042	return s
18043}
18044
18045type GetObjectTorrentInput struct {
18046	_ struct{} `locationName:"GetObjectTorrentRequest" type:"structure"`
18047
18048	// The name of the bucket containing the object for which to get the torrent
18049	// files.
18050	//
18051	// Bucket is a required field
18052	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18053
18054	// The object key for which to get the information.
18055	//
18056	// Key is a required field
18057	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18058
18059	// Confirms that the requester knows that she or he will be charged for the
18060	// request. Bucket owners need not specify this parameter in their requests.
18061	// For information about downloading objects from Requester Pays buckets, see
18062	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
18063	// in the Amazon S3 Developer Guide.
18064	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
18065}
18066
18067// String returns the string representation
18068func (s GetObjectTorrentInput) String() string {
18069	return awsutil.Prettify(s)
18070}
18071
18072// GoString returns the string representation
18073func (s GetObjectTorrentInput) GoString() string {
18074	return s.String()
18075}
18076
18077// Validate inspects the fields of the type to determine if they are valid.
18078func (s *GetObjectTorrentInput) Validate() error {
18079	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
18080	if s.Bucket == nil {
18081		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18082	}
18083	if s.Bucket != nil && len(*s.Bucket) < 1 {
18084		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18085	}
18086	if s.Key == nil {
18087		invalidParams.Add(request.NewErrParamRequired("Key"))
18088	}
18089	if s.Key != nil && len(*s.Key) < 1 {
18090		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18091	}
18092
18093	if invalidParams.Len() > 0 {
18094		return invalidParams
18095	}
18096	return nil
18097}
18098
18099// SetBucket sets the Bucket field's value.
18100func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
18101	s.Bucket = &v
18102	return s
18103}
18104
18105func (s *GetObjectTorrentInput) getBucket() (v string) {
18106	if s.Bucket == nil {
18107		return v
18108	}
18109	return *s.Bucket
18110}
18111
18112// SetKey sets the Key field's value.
18113func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
18114	s.Key = &v
18115	return s
18116}
18117
18118// SetRequestPayer sets the RequestPayer field's value.
18119func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
18120	s.RequestPayer = &v
18121	return s
18122}
18123
18124func (s *GetObjectTorrentInput) getEndpointARN() (arn.Resource, error) {
18125	if s.Bucket == nil {
18126		return nil, fmt.Errorf("member Bucket is nil")
18127	}
18128	return parseEndpointARN(*s.Bucket)
18129}
18130
18131func (s *GetObjectTorrentInput) hasEndpointARN() bool {
18132	if s.Bucket == nil {
18133		return false
18134	}
18135	return arn.IsARN(*s.Bucket)
18136}
18137
18138type GetObjectTorrentOutput struct {
18139	_ struct{} `type:"structure" payload:"Body"`
18140
18141	// A Bencoded dictionary as defined by the BitTorrent specification
18142	Body io.ReadCloser `type:"blob"`
18143
18144	// If present, indicates that the requester was successfully charged for the
18145	// request.
18146	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
18147}
18148
18149// String returns the string representation
18150func (s GetObjectTorrentOutput) String() string {
18151	return awsutil.Prettify(s)
18152}
18153
18154// GoString returns the string representation
18155func (s GetObjectTorrentOutput) GoString() string {
18156	return s.String()
18157}
18158
18159// SetBody sets the Body field's value.
18160func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
18161	s.Body = v
18162	return s
18163}
18164
18165// SetRequestCharged sets the RequestCharged field's value.
18166func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
18167	s.RequestCharged = &v
18168	return s
18169}
18170
18171type GetPublicAccessBlockInput struct {
18172	_ struct{} `locationName:"GetPublicAccessBlockRequest" type:"structure"`
18173
18174	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
18175	// want to retrieve.
18176	//
18177	// Bucket is a required field
18178	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18179}
18180
18181// String returns the string representation
18182func (s GetPublicAccessBlockInput) String() string {
18183	return awsutil.Prettify(s)
18184}
18185
18186// GoString returns the string representation
18187func (s GetPublicAccessBlockInput) GoString() string {
18188	return s.String()
18189}
18190
18191// Validate inspects the fields of the type to determine if they are valid.
18192func (s *GetPublicAccessBlockInput) Validate() error {
18193	invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"}
18194	if s.Bucket == nil {
18195		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18196	}
18197	if s.Bucket != nil && len(*s.Bucket) < 1 {
18198		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18199	}
18200
18201	if invalidParams.Len() > 0 {
18202		return invalidParams
18203	}
18204	return nil
18205}
18206
18207// SetBucket sets the Bucket field's value.
18208func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput {
18209	s.Bucket = &v
18210	return s
18211}
18212
18213func (s *GetPublicAccessBlockInput) getBucket() (v string) {
18214	if s.Bucket == nil {
18215		return v
18216	}
18217	return *s.Bucket
18218}
18219
18220func (s *GetPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
18221	if s.Bucket == nil {
18222		return nil, fmt.Errorf("member Bucket is nil")
18223	}
18224	return parseEndpointARN(*s.Bucket)
18225}
18226
18227func (s *GetPublicAccessBlockInput) hasEndpointARN() bool {
18228	if s.Bucket == nil {
18229		return false
18230	}
18231	return arn.IsARN(*s.Bucket)
18232}
18233
18234type GetPublicAccessBlockOutput struct {
18235	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
18236
18237	// The PublicAccessBlock configuration currently in effect for this Amazon S3
18238	// bucket.
18239	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"`
18240}
18241
18242// String returns the string representation
18243func (s GetPublicAccessBlockOutput) String() string {
18244	return awsutil.Prettify(s)
18245}
18246
18247// GoString returns the string representation
18248func (s GetPublicAccessBlockOutput) GoString() string {
18249	return s.String()
18250}
18251
18252// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
18253func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput {
18254	s.PublicAccessBlockConfiguration = v
18255	return s
18256}
18257
18258// Container for Glacier job parameters.
18259type GlacierJobParameters struct {
18260	_ struct{} `type:"structure"`
18261
18262	// Glacier retrieval tier at which the restore will be processed.
18263	//
18264	// Tier is a required field
18265	Tier *string `type:"string" required:"true" enum:"Tier"`
18266}
18267
18268// String returns the string representation
18269func (s GlacierJobParameters) String() string {
18270	return awsutil.Prettify(s)
18271}
18272
18273// GoString returns the string representation
18274func (s GlacierJobParameters) GoString() string {
18275	return s.String()
18276}
18277
18278// Validate inspects the fields of the type to determine if they are valid.
18279func (s *GlacierJobParameters) Validate() error {
18280	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
18281	if s.Tier == nil {
18282		invalidParams.Add(request.NewErrParamRequired("Tier"))
18283	}
18284
18285	if invalidParams.Len() > 0 {
18286		return invalidParams
18287	}
18288	return nil
18289}
18290
18291// SetTier sets the Tier field's value.
18292func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
18293	s.Tier = &v
18294	return s
18295}
18296
18297// Container for grant information.
18298type Grant struct {
18299	_ struct{} `type:"structure"`
18300
18301	// The person being granted permissions.
18302	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
18303
18304	// Specifies the permission given to the grantee.
18305	Permission *string `type:"string" enum:"Permission"`
18306}
18307
18308// String returns the string representation
18309func (s Grant) String() string {
18310	return awsutil.Prettify(s)
18311}
18312
18313// GoString returns the string representation
18314func (s Grant) GoString() string {
18315	return s.String()
18316}
18317
18318// Validate inspects the fields of the type to determine if they are valid.
18319func (s *Grant) Validate() error {
18320	invalidParams := request.ErrInvalidParams{Context: "Grant"}
18321	if s.Grantee != nil {
18322		if err := s.Grantee.Validate(); err != nil {
18323			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
18324		}
18325	}
18326
18327	if invalidParams.Len() > 0 {
18328		return invalidParams
18329	}
18330	return nil
18331}
18332
18333// SetGrantee sets the Grantee field's value.
18334func (s *Grant) SetGrantee(v *Grantee) *Grant {
18335	s.Grantee = v
18336	return s
18337}
18338
18339// SetPermission sets the Permission field's value.
18340func (s *Grant) SetPermission(v string) *Grant {
18341	s.Permission = &v
18342	return s
18343}
18344
18345// Container for the person being granted permissions.
18346type Grantee struct {
18347	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
18348
18349	// Screen name of the grantee.
18350	DisplayName *string `type:"string"`
18351
18352	// Email address of the grantee.
18353	EmailAddress *string `type:"string"`
18354
18355	// The canonical user ID of the grantee.
18356	ID *string `type:"string"`
18357
18358	// Type of grantee
18359	//
18360	// Type is a required field
18361	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
18362
18363	// URI of the grantee group.
18364	URI *string `type:"string"`
18365}
18366
18367// String returns the string representation
18368func (s Grantee) String() string {
18369	return awsutil.Prettify(s)
18370}
18371
18372// GoString returns the string representation
18373func (s Grantee) GoString() string {
18374	return s.String()
18375}
18376
18377// Validate inspects the fields of the type to determine if they are valid.
18378func (s *Grantee) Validate() error {
18379	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
18380	if s.Type == nil {
18381		invalidParams.Add(request.NewErrParamRequired("Type"))
18382	}
18383
18384	if invalidParams.Len() > 0 {
18385		return invalidParams
18386	}
18387	return nil
18388}
18389
18390// SetDisplayName sets the DisplayName field's value.
18391func (s *Grantee) SetDisplayName(v string) *Grantee {
18392	s.DisplayName = &v
18393	return s
18394}
18395
18396// SetEmailAddress sets the EmailAddress field's value.
18397func (s *Grantee) SetEmailAddress(v string) *Grantee {
18398	s.EmailAddress = &v
18399	return s
18400}
18401
18402// SetID sets the ID field's value.
18403func (s *Grantee) SetID(v string) *Grantee {
18404	s.ID = &v
18405	return s
18406}
18407
18408// SetType sets the Type field's value.
18409func (s *Grantee) SetType(v string) *Grantee {
18410	s.Type = &v
18411	return s
18412}
18413
18414// SetURI sets the URI field's value.
18415func (s *Grantee) SetURI(v string) *Grantee {
18416	s.URI = &v
18417	return s
18418}
18419
18420type HeadBucketInput struct {
18421	_ struct{} `locationName:"HeadBucketRequest" type:"structure"`
18422
18423	// The bucket name.
18424	//
18425	// Bucket is a required field
18426	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18427}
18428
18429// String returns the string representation
18430func (s HeadBucketInput) String() string {
18431	return awsutil.Prettify(s)
18432}
18433
18434// GoString returns the string representation
18435func (s HeadBucketInput) GoString() string {
18436	return s.String()
18437}
18438
18439// Validate inspects the fields of the type to determine if they are valid.
18440func (s *HeadBucketInput) Validate() error {
18441	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
18442	if s.Bucket == nil {
18443		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18444	}
18445	if s.Bucket != nil && len(*s.Bucket) < 1 {
18446		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18447	}
18448
18449	if invalidParams.Len() > 0 {
18450		return invalidParams
18451	}
18452	return nil
18453}
18454
18455// SetBucket sets the Bucket field's value.
18456func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
18457	s.Bucket = &v
18458	return s
18459}
18460
18461func (s *HeadBucketInput) getBucket() (v string) {
18462	if s.Bucket == nil {
18463		return v
18464	}
18465	return *s.Bucket
18466}
18467
18468func (s *HeadBucketInput) getEndpointARN() (arn.Resource, error) {
18469	if s.Bucket == nil {
18470		return nil, fmt.Errorf("member Bucket is nil")
18471	}
18472	return parseEndpointARN(*s.Bucket)
18473}
18474
18475func (s *HeadBucketInput) hasEndpointARN() bool {
18476	if s.Bucket == nil {
18477		return false
18478	}
18479	return arn.IsARN(*s.Bucket)
18480}
18481
18482type HeadBucketOutput struct {
18483	_ struct{} `type:"structure"`
18484}
18485
18486// String returns the string representation
18487func (s HeadBucketOutput) String() string {
18488	return awsutil.Prettify(s)
18489}
18490
18491// GoString returns the string representation
18492func (s HeadBucketOutput) GoString() string {
18493	return s.String()
18494}
18495
18496type HeadObjectInput struct {
18497	_ struct{} `locationName:"HeadObjectRequest" type:"structure"`
18498
18499	// The name of the bucket containing the object.
18500	//
18501	// Bucket is a required field
18502	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18503
18504	// Return the object only if its entity tag (ETag) is the same as the one specified,
18505	// otherwise return a 412 (precondition failed).
18506	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
18507
18508	// Return the object only if it has been modified since the specified time,
18509	// otherwise return a 304 (not modified).
18510	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
18511
18512	// Return the object only if its entity tag (ETag) is different from the one
18513	// specified, otherwise return a 304 (not modified).
18514	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
18515
18516	// Return the object only if it has not been modified since the specified time,
18517	// otherwise return a 412 (precondition failed).
18518	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
18519
18520	// The object key.
18521	//
18522	// Key is a required field
18523	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
18524
18525	// Part number of the object being read. This is a positive integer between
18526	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
18527	// Useful querying about the size of the part and the number of parts in this
18528	// object.
18529	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
18530
18531	// Downloads the specified range bytes of an object. For more information about
18532	// the HTTP Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.
18533	Range *string `location:"header" locationName:"Range" type:"string"`
18534
18535	// Confirms that the requester knows that she or he will be charged for the
18536	// request. Bucket owners need not specify this parameter in their requests.
18537	// For information about downloading objects from Requester Pays buckets, see
18538	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
18539	// in the Amazon S3 Developer Guide.
18540	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
18541
18542	// Specifies the algorithm to use to when encrypting the object (for example,
18543	// AES256).
18544	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
18545
18546	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
18547	// data. This value is used to store the object and then it is discarded; Amazon
18548	// S3 does not store the encryption key. The key must be appropriate for use
18549	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
18550	// header.
18551	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
18552
18553	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
18554	// Amazon S3 uses this header for a message integrity check to ensure that the
18555	// encryption key was transmitted without error.
18556	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
18557
18558	// VersionId used to reference a specific version of the object.
18559	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
18560}
18561
18562// String returns the string representation
18563func (s HeadObjectInput) String() string {
18564	return awsutil.Prettify(s)
18565}
18566
18567// GoString returns the string representation
18568func (s HeadObjectInput) GoString() string {
18569	return s.String()
18570}
18571
18572// Validate inspects the fields of the type to determine if they are valid.
18573func (s *HeadObjectInput) Validate() error {
18574	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
18575	if s.Bucket == nil {
18576		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18577	}
18578	if s.Bucket != nil && len(*s.Bucket) < 1 {
18579		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18580	}
18581	if s.Key == nil {
18582		invalidParams.Add(request.NewErrParamRequired("Key"))
18583	}
18584	if s.Key != nil && len(*s.Key) < 1 {
18585		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
18586	}
18587
18588	if invalidParams.Len() > 0 {
18589		return invalidParams
18590	}
18591	return nil
18592}
18593
18594// SetBucket sets the Bucket field's value.
18595func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
18596	s.Bucket = &v
18597	return s
18598}
18599
18600func (s *HeadObjectInput) getBucket() (v string) {
18601	if s.Bucket == nil {
18602		return v
18603	}
18604	return *s.Bucket
18605}
18606
18607// SetIfMatch sets the IfMatch field's value.
18608func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
18609	s.IfMatch = &v
18610	return s
18611}
18612
18613// SetIfModifiedSince sets the IfModifiedSince field's value.
18614func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
18615	s.IfModifiedSince = &v
18616	return s
18617}
18618
18619// SetIfNoneMatch sets the IfNoneMatch field's value.
18620func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
18621	s.IfNoneMatch = &v
18622	return s
18623}
18624
18625// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
18626func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
18627	s.IfUnmodifiedSince = &v
18628	return s
18629}
18630
18631// SetKey sets the Key field's value.
18632func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
18633	s.Key = &v
18634	return s
18635}
18636
18637// SetPartNumber sets the PartNumber field's value.
18638func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
18639	s.PartNumber = &v
18640	return s
18641}
18642
18643// SetRange sets the Range field's value.
18644func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
18645	s.Range = &v
18646	return s
18647}
18648
18649// SetRequestPayer sets the RequestPayer field's value.
18650func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
18651	s.RequestPayer = &v
18652	return s
18653}
18654
18655// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
18656func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
18657	s.SSECustomerAlgorithm = &v
18658	return s
18659}
18660
18661// SetSSECustomerKey sets the SSECustomerKey field's value.
18662func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
18663	s.SSECustomerKey = &v
18664	return s
18665}
18666
18667func (s *HeadObjectInput) getSSECustomerKey() (v string) {
18668	if s.SSECustomerKey == nil {
18669		return v
18670	}
18671	return *s.SSECustomerKey
18672}
18673
18674// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
18675func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
18676	s.SSECustomerKeyMD5 = &v
18677	return s
18678}
18679
18680// SetVersionId sets the VersionId field's value.
18681func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
18682	s.VersionId = &v
18683	return s
18684}
18685
18686func (s *HeadObjectInput) getEndpointARN() (arn.Resource, error) {
18687	if s.Bucket == nil {
18688		return nil, fmt.Errorf("member Bucket is nil")
18689	}
18690	return parseEndpointARN(*s.Bucket)
18691}
18692
18693func (s *HeadObjectInput) hasEndpointARN() bool {
18694	if s.Bucket == nil {
18695		return false
18696	}
18697	return arn.IsARN(*s.Bucket)
18698}
18699
18700type HeadObjectOutput struct {
18701	_ struct{} `type:"structure"`
18702
18703	// Indicates that a range of bytes was specified.
18704	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
18705
18706	// Specifies caching behavior along the request/reply chain.
18707	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
18708
18709	// Specifies presentational information for the object.
18710	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
18711
18712	// Specifies what content encodings have been applied to the object and thus
18713	// what decoding mechanisms must be applied to obtain the media-type referenced
18714	// by the Content-Type header field.
18715	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
18716
18717	// The language the content is in.
18718	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
18719
18720	// Size of the body in bytes.
18721	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
18722
18723	// A standard MIME type describing the format of the object data.
18724	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
18725
18726	// Specifies whether the object retrieved was (true) or was not (false) a Delete
18727	// Marker. If false, this response header does not appear in the response.
18728	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
18729
18730	// An ETag is an opaque identifier assigned by a web server to a specific version
18731	// of a resource found at a URL.
18732	ETag *string `location:"header" locationName:"ETag" type:"string"`
18733
18734	// If the object expiration is configured (see PUT Bucket lifecycle), the response
18735	// includes this header. It includes the expiry-date and rule-id key-value pairs
18736	// providing object expiration information. The value of the rule-id is URL
18737	// encoded.
18738	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
18739
18740	// The date and time at which the object is no longer cacheable.
18741	Expires *string `location:"header" locationName:"Expires" type:"string"`
18742
18743	// Last modified date of the object
18744	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
18745
18746	// A map of metadata to store with the object in S3.
18747	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
18748
18749	// This is set to the number of metadata entries not returned in x-amz-meta
18750	// headers. This can happen if you create metadata using an API like SOAP that
18751	// supports more flexible metadata than the REST API. For example, using SOAP,
18752	// you can create metadata whose values are not legal HTTP headers.
18753	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
18754
18755	// Specifies whether a legal hold is in effect for this object. This header
18756	// is only returned if the requester has the s3:GetObjectLegalHold permission.
18757	// This header is not returned if the specified version of this object has never
18758	// had a legal hold applied. For more information about S3 Object Lock, see
18759	// Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
18760	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
18761
18762	// The Object Lock mode, if any, that's in effect for this object. This header
18763	// is only returned if the requester has the s3:GetObjectRetention permission.
18764	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
18765	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
18766
18767	// The date and time when the Object Lock retention period expires. This header
18768	// is only returned if the requester has the s3:GetObjectRetention permission.
18769	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
18770
18771	// The count of parts this object has.
18772	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
18773
18774	// Amazon S3 can return this header if your request involves a bucket that is
18775	// either a source or destination in a replication rule.
18776	//
18777	// In replication, you have a source bucket on which you configure replication
18778	// and destination bucket where Amazon S3 stores object replicas. When you request
18779	// an object (GetObject) or object metadata (HeadObject) from these buckets,
18780	// Amazon S3 will return the x-amz-replication-status header in the response
18781	// as follows:
18782	//
18783	//    * If requesting an object from the source bucket — Amazon S3 will return
18784	//    the x-amz-replication-status header if the object in your request is eligible
18785	//    for replication. For example, suppose that in your replication configuration,
18786	//    you specify object prefix TaxDocs requesting Amazon S3 to replicate objects
18787	//    with key prefix TaxDocs. Any objects you upload with this key name prefix,
18788	//    for example TaxDocs/document1.pdf, are eligible for replication. For any
18789	//    object request with this key name prefix, Amazon S3 will return the x-amz-replication-status
18790	//    header with value PENDING, COMPLETED or FAILED indicating object replication
18791	//    status.
18792	//
18793	//    * If requesting an object from the destination bucket — Amazon S3 will
18794	//    return the x-amz-replication-status header with value REPLICA if the object
18795	//    in your request is a replica that Amazon S3 created.
18796	//
18797	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
18798	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
18799
18800	// If present, indicates that the requester was successfully charged for the
18801	// request.
18802	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
18803
18804	// If the object is an archived object (an object whose storage class is GLACIER),
18805	// the response includes this header if either the archive restoration is in
18806	// progress (see RestoreObject or an archive copy is already restored.
18807	//
18808	// If an archive copy is already restored, the header value indicates when Amazon
18809	// S3 is scheduled to delete the object copy. For example:
18810	//
18811	// x-amz-restore: ongoing-request="false", expiry-date="Fri, 23 Dec 2012 00:00:00
18812	// GMT"
18813	//
18814	// If the object restoration is in progress, the header returns the value ongoing-request="true".
18815	//
18816	// For more information about archiving objects, see Transitioning Objects:
18817	// General Considerations (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations).
18818	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
18819
18820	// If server-side encryption with a customer-provided encryption key was requested,
18821	// the response will include this header confirming the encryption algorithm
18822	// used.
18823	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
18824
18825	// If server-side encryption with a customer-provided encryption key was requested,
18826	// the response will include this header to provide round-trip message integrity
18827	// verification of the customer-provided encryption key.
18828	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
18829
18830	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
18831	// customer master key (CMK) that was used for the object.
18832	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
18833
18834	// If the object is stored using server-side encryption either with an AWS KMS
18835	// customer master key (CMK) or an Amazon S3-managed encryption key, the response
18836	// includes this header with the value of the server-side encryption algorithm
18837	// used when storing this object in Amazon S3 (for example, AES256, aws:kms).
18838	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
18839
18840	// Provides storage class information of the object. Amazon S3 returns this
18841	// header for all objects except for Standard storage class objects.
18842	//
18843	// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html).
18844	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
18845
18846	// Version of the object.
18847	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
18848
18849	// If the bucket is configured as a website, redirects requests for this object
18850	// to another object in the same bucket or to an external URL. Amazon S3 stores
18851	// the value of this header in the object metadata.
18852	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
18853}
18854
18855// String returns the string representation
18856func (s HeadObjectOutput) String() string {
18857	return awsutil.Prettify(s)
18858}
18859
18860// GoString returns the string representation
18861func (s HeadObjectOutput) GoString() string {
18862	return s.String()
18863}
18864
18865// SetAcceptRanges sets the AcceptRanges field's value.
18866func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
18867	s.AcceptRanges = &v
18868	return s
18869}
18870
18871// SetCacheControl sets the CacheControl field's value.
18872func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
18873	s.CacheControl = &v
18874	return s
18875}
18876
18877// SetContentDisposition sets the ContentDisposition field's value.
18878func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
18879	s.ContentDisposition = &v
18880	return s
18881}
18882
18883// SetContentEncoding sets the ContentEncoding field's value.
18884func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
18885	s.ContentEncoding = &v
18886	return s
18887}
18888
18889// SetContentLanguage sets the ContentLanguage field's value.
18890func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
18891	s.ContentLanguage = &v
18892	return s
18893}
18894
18895// SetContentLength sets the ContentLength field's value.
18896func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
18897	s.ContentLength = &v
18898	return s
18899}
18900
18901// SetContentType sets the ContentType field's value.
18902func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
18903	s.ContentType = &v
18904	return s
18905}
18906
18907// SetDeleteMarker sets the DeleteMarker field's value.
18908func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
18909	s.DeleteMarker = &v
18910	return s
18911}
18912
18913// SetETag sets the ETag field's value.
18914func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
18915	s.ETag = &v
18916	return s
18917}
18918
18919// SetExpiration sets the Expiration field's value.
18920func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
18921	s.Expiration = &v
18922	return s
18923}
18924
18925// SetExpires sets the Expires field's value.
18926func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
18927	s.Expires = &v
18928	return s
18929}
18930
18931// SetLastModified sets the LastModified field's value.
18932func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
18933	s.LastModified = &v
18934	return s
18935}
18936
18937// SetMetadata sets the Metadata field's value.
18938func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
18939	s.Metadata = v
18940	return s
18941}
18942
18943// SetMissingMeta sets the MissingMeta field's value.
18944func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
18945	s.MissingMeta = &v
18946	return s
18947}
18948
18949// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
18950func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput {
18951	s.ObjectLockLegalHoldStatus = &v
18952	return s
18953}
18954
18955// SetObjectLockMode sets the ObjectLockMode field's value.
18956func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput {
18957	s.ObjectLockMode = &v
18958	return s
18959}
18960
18961// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
18962func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput {
18963	s.ObjectLockRetainUntilDate = &v
18964	return s
18965}
18966
18967// SetPartsCount sets the PartsCount field's value.
18968func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
18969	s.PartsCount = &v
18970	return s
18971}
18972
18973// SetReplicationStatus sets the ReplicationStatus field's value.
18974func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
18975	s.ReplicationStatus = &v
18976	return s
18977}
18978
18979// SetRequestCharged sets the RequestCharged field's value.
18980func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
18981	s.RequestCharged = &v
18982	return s
18983}
18984
18985// SetRestore sets the Restore field's value.
18986func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
18987	s.Restore = &v
18988	return s
18989}
18990
18991// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
18992func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
18993	s.SSECustomerAlgorithm = &v
18994	return s
18995}
18996
18997// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
18998func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
18999	s.SSECustomerKeyMD5 = &v
19000	return s
19001}
19002
19003// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
19004func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
19005	s.SSEKMSKeyId = &v
19006	return s
19007}
19008
19009// SetServerSideEncryption sets the ServerSideEncryption field's value.
19010func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
19011	s.ServerSideEncryption = &v
19012	return s
19013}
19014
19015// SetStorageClass sets the StorageClass field's value.
19016func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
19017	s.StorageClass = &v
19018	return s
19019}
19020
19021// SetVersionId sets the VersionId field's value.
19022func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
19023	s.VersionId = &v
19024	return s
19025}
19026
19027// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
19028func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
19029	s.WebsiteRedirectLocation = &v
19030	return s
19031}
19032
19033// Container for the Suffix element.
19034type IndexDocument struct {
19035	_ struct{} `type:"structure"`
19036
19037	// A suffix that is appended to a request that is for a directory on the website
19038	// endpoint (for example,if the suffix is index.html and you make a request
19039	// to samplebucket/images/ the data that is returned will be for the object
19040	// with the key name images/index.html) The suffix must not be empty and must
19041	// not include a slash character.
19042	//
19043	// Suffix is a required field
19044	Suffix *string `type:"string" required:"true"`
19045}
19046
19047// String returns the string representation
19048func (s IndexDocument) String() string {
19049	return awsutil.Prettify(s)
19050}
19051
19052// GoString returns the string representation
19053func (s IndexDocument) GoString() string {
19054	return s.String()
19055}
19056
19057// Validate inspects the fields of the type to determine if they are valid.
19058func (s *IndexDocument) Validate() error {
19059	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
19060	if s.Suffix == nil {
19061		invalidParams.Add(request.NewErrParamRequired("Suffix"))
19062	}
19063
19064	if invalidParams.Len() > 0 {
19065		return invalidParams
19066	}
19067	return nil
19068}
19069
19070// SetSuffix sets the Suffix field's value.
19071func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
19072	s.Suffix = &v
19073	return s
19074}
19075
19076// Container element that identifies who initiated the multipart upload.
19077type Initiator struct {
19078	_ struct{} `type:"structure"`
19079
19080	// Name of the Principal.
19081	DisplayName *string `type:"string"`
19082
19083	// If the principal is an AWS account, it provides the Canonical User ID. If
19084	// the principal is an IAM User, it provides a user ARN value.
19085	ID *string `type:"string"`
19086}
19087
19088// String returns the string representation
19089func (s Initiator) String() string {
19090	return awsutil.Prettify(s)
19091}
19092
19093// GoString returns the string representation
19094func (s Initiator) GoString() string {
19095	return s.String()
19096}
19097
19098// SetDisplayName sets the DisplayName field's value.
19099func (s *Initiator) SetDisplayName(v string) *Initiator {
19100	s.DisplayName = &v
19101	return s
19102}
19103
19104// SetID sets the ID field's value.
19105func (s *Initiator) SetID(v string) *Initiator {
19106	s.ID = &v
19107	return s
19108}
19109
19110// Describes the serialization format of the object.
19111type InputSerialization struct {
19112	_ struct{} `type:"structure"`
19113
19114	// Describes the serialization of a CSV-encoded object.
19115	CSV *CSVInput `type:"structure"`
19116
19117	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
19118	// Value: NONE.
19119	CompressionType *string `type:"string" enum:"CompressionType"`
19120
19121	// Specifies JSON as object's input serialization format.
19122	JSON *JSONInput `type:"structure"`
19123
19124	// Specifies Parquet as object's input serialization format.
19125	Parquet *ParquetInput `type:"structure"`
19126}
19127
19128// String returns the string representation
19129func (s InputSerialization) String() string {
19130	return awsutil.Prettify(s)
19131}
19132
19133// GoString returns the string representation
19134func (s InputSerialization) GoString() string {
19135	return s.String()
19136}
19137
19138// SetCSV sets the CSV field's value.
19139func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
19140	s.CSV = v
19141	return s
19142}
19143
19144// SetCompressionType sets the CompressionType field's value.
19145func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
19146	s.CompressionType = &v
19147	return s
19148}
19149
19150// SetJSON sets the JSON field's value.
19151func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
19152	s.JSON = v
19153	return s
19154}
19155
19156// SetParquet sets the Parquet field's value.
19157func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
19158	s.Parquet = v
19159	return s
19160}
19161
19162// Specifies the inventory configuration for an Amazon S3 bucket. For more information,
19163// see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html)
19164// in the Amazon Simple Storage Service API Reference.
19165type InventoryConfiguration struct {
19166	_ struct{} `type:"structure"`
19167
19168	// Contains information about where to publish the inventory results.
19169	//
19170	// Destination is a required field
19171	Destination *InventoryDestination `type:"structure" required:"true"`
19172
19173	// Specifies an inventory filter. The inventory only includes objects that meet
19174	// the filter's criteria.
19175	Filter *InventoryFilter `type:"structure"`
19176
19177	// The ID used to identify the inventory configuration.
19178	//
19179	// Id is a required field
19180	Id *string `type:"string" required:"true"`
19181
19182	// Object versions to include in the inventory list. If set to All, the list
19183	// includes all the object versions, which adds the version-related fields VersionId,
19184	// IsLatest, and DeleteMarker to the list. If set to Current, the list does
19185	// not contain these version-related fields.
19186	//
19187	// IncludedObjectVersions is a required field
19188	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
19189
19190	// Specifies whether the inventory is enabled or disabled. If set to True, an
19191	// inventory list is generated. If set to False, no inventory list is generated.
19192	//
19193	// IsEnabled is a required field
19194	IsEnabled *bool `type:"boolean" required:"true"`
19195
19196	// Contains the optional fields that are included in the inventory results.
19197	OptionalFields []*string `locationNameList:"Field" type:"list"`
19198
19199	// Specifies the schedule for generating inventory results.
19200	//
19201	// Schedule is a required field
19202	Schedule *InventorySchedule `type:"structure" required:"true"`
19203}
19204
19205// String returns the string representation
19206func (s InventoryConfiguration) String() string {
19207	return awsutil.Prettify(s)
19208}
19209
19210// GoString returns the string representation
19211func (s InventoryConfiguration) GoString() string {
19212	return s.String()
19213}
19214
19215// Validate inspects the fields of the type to determine if they are valid.
19216func (s *InventoryConfiguration) Validate() error {
19217	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
19218	if s.Destination == nil {
19219		invalidParams.Add(request.NewErrParamRequired("Destination"))
19220	}
19221	if s.Id == nil {
19222		invalidParams.Add(request.NewErrParamRequired("Id"))
19223	}
19224	if s.IncludedObjectVersions == nil {
19225		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
19226	}
19227	if s.IsEnabled == nil {
19228		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
19229	}
19230	if s.Schedule == nil {
19231		invalidParams.Add(request.NewErrParamRequired("Schedule"))
19232	}
19233	if s.Destination != nil {
19234		if err := s.Destination.Validate(); err != nil {
19235			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
19236		}
19237	}
19238	if s.Filter != nil {
19239		if err := s.Filter.Validate(); err != nil {
19240			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
19241		}
19242	}
19243	if s.Schedule != nil {
19244		if err := s.Schedule.Validate(); err != nil {
19245			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
19246		}
19247	}
19248
19249	if invalidParams.Len() > 0 {
19250		return invalidParams
19251	}
19252	return nil
19253}
19254
19255// SetDestination sets the Destination field's value.
19256func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
19257	s.Destination = v
19258	return s
19259}
19260
19261// SetFilter sets the Filter field's value.
19262func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
19263	s.Filter = v
19264	return s
19265}
19266
19267// SetId sets the Id field's value.
19268func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
19269	s.Id = &v
19270	return s
19271}
19272
19273// SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
19274func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
19275	s.IncludedObjectVersions = &v
19276	return s
19277}
19278
19279// SetIsEnabled sets the IsEnabled field's value.
19280func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
19281	s.IsEnabled = &v
19282	return s
19283}
19284
19285// SetOptionalFields sets the OptionalFields field's value.
19286func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
19287	s.OptionalFields = v
19288	return s
19289}
19290
19291// SetSchedule sets the Schedule field's value.
19292func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
19293	s.Schedule = v
19294	return s
19295}
19296
19297// Specifies the inventory configuration for an Amazon S3 bucket.
19298type InventoryDestination struct {
19299	_ struct{} `type:"structure"`
19300
19301	// Contains the bucket name, file format, bucket owner (optional), and prefix
19302	// (optional) where inventory results are published.
19303	//
19304	// S3BucketDestination is a required field
19305	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
19306}
19307
19308// String returns the string representation
19309func (s InventoryDestination) String() string {
19310	return awsutil.Prettify(s)
19311}
19312
19313// GoString returns the string representation
19314func (s InventoryDestination) GoString() string {
19315	return s.String()
19316}
19317
19318// Validate inspects the fields of the type to determine if they are valid.
19319func (s *InventoryDestination) Validate() error {
19320	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
19321	if s.S3BucketDestination == nil {
19322		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
19323	}
19324	if s.S3BucketDestination != nil {
19325		if err := s.S3BucketDestination.Validate(); err != nil {
19326			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
19327		}
19328	}
19329
19330	if invalidParams.Len() > 0 {
19331		return invalidParams
19332	}
19333	return nil
19334}
19335
19336// SetS3BucketDestination sets the S3BucketDestination field's value.
19337func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
19338	s.S3BucketDestination = v
19339	return s
19340}
19341
19342// Contains the type of server-side encryption used to encrypt the inventory
19343// results.
19344type InventoryEncryption struct {
19345	_ struct{} `type:"structure"`
19346
19347	// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
19348	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
19349
19350	// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
19351	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
19352}
19353
19354// String returns the string representation
19355func (s InventoryEncryption) String() string {
19356	return awsutil.Prettify(s)
19357}
19358
19359// GoString returns the string representation
19360func (s InventoryEncryption) GoString() string {
19361	return s.String()
19362}
19363
19364// Validate inspects the fields of the type to determine if they are valid.
19365func (s *InventoryEncryption) Validate() error {
19366	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
19367	if s.SSEKMS != nil {
19368		if err := s.SSEKMS.Validate(); err != nil {
19369			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
19370		}
19371	}
19372
19373	if invalidParams.Len() > 0 {
19374		return invalidParams
19375	}
19376	return nil
19377}
19378
19379// SetSSEKMS sets the SSEKMS field's value.
19380func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
19381	s.SSEKMS = v
19382	return s
19383}
19384
19385// SetSSES3 sets the SSES3 field's value.
19386func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
19387	s.SSES3 = v
19388	return s
19389}
19390
19391// Specifies an inventory filter. The inventory only includes objects that meet
19392// the filter's criteria.
19393type InventoryFilter struct {
19394	_ struct{} `type:"structure"`
19395
19396	// The prefix that an object must have to be included in the inventory results.
19397	//
19398	// Prefix is a required field
19399	Prefix *string `type:"string" required:"true"`
19400}
19401
19402// String returns the string representation
19403func (s InventoryFilter) String() string {
19404	return awsutil.Prettify(s)
19405}
19406
19407// GoString returns the string representation
19408func (s InventoryFilter) GoString() string {
19409	return s.String()
19410}
19411
19412// Validate inspects the fields of the type to determine if they are valid.
19413func (s *InventoryFilter) Validate() error {
19414	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
19415	if s.Prefix == nil {
19416		invalidParams.Add(request.NewErrParamRequired("Prefix"))
19417	}
19418
19419	if invalidParams.Len() > 0 {
19420		return invalidParams
19421	}
19422	return nil
19423}
19424
19425// SetPrefix sets the Prefix field's value.
19426func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
19427	s.Prefix = &v
19428	return s
19429}
19430
19431// Contains the bucket name, file format, bucket owner (optional), and prefix
19432// (optional) where inventory results are published.
19433type InventoryS3BucketDestination struct {
19434	_ struct{} `type:"structure"`
19435
19436	// The ID of the account that owns the destination bucket.
19437	AccountId *string `type:"string"`
19438
19439	// The Amazon Resource Name (ARN) of the bucket where inventory results will
19440	// be published.
19441	//
19442	// Bucket is a required field
19443	Bucket *string `type:"string" required:"true"`
19444
19445	// Contains the type of server-side encryption used to encrypt the inventory
19446	// results.
19447	Encryption *InventoryEncryption `type:"structure"`
19448
19449	// Specifies the output format of the inventory results.
19450	//
19451	// Format is a required field
19452	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
19453
19454	// The prefix that is prepended to all inventory results.
19455	Prefix *string `type:"string"`
19456}
19457
19458// String returns the string representation
19459func (s InventoryS3BucketDestination) String() string {
19460	return awsutil.Prettify(s)
19461}
19462
19463// GoString returns the string representation
19464func (s InventoryS3BucketDestination) GoString() string {
19465	return s.String()
19466}
19467
19468// Validate inspects the fields of the type to determine if they are valid.
19469func (s *InventoryS3BucketDestination) Validate() error {
19470	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
19471	if s.Bucket == nil {
19472		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19473	}
19474	if s.Format == nil {
19475		invalidParams.Add(request.NewErrParamRequired("Format"))
19476	}
19477	if s.Encryption != nil {
19478		if err := s.Encryption.Validate(); err != nil {
19479			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
19480		}
19481	}
19482
19483	if invalidParams.Len() > 0 {
19484		return invalidParams
19485	}
19486	return nil
19487}
19488
19489// SetAccountId sets the AccountId field's value.
19490func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
19491	s.AccountId = &v
19492	return s
19493}
19494
19495// SetBucket sets the Bucket field's value.
19496func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
19497	s.Bucket = &v
19498	return s
19499}
19500
19501func (s *InventoryS3BucketDestination) getBucket() (v string) {
19502	if s.Bucket == nil {
19503		return v
19504	}
19505	return *s.Bucket
19506}
19507
19508// SetEncryption sets the Encryption field's value.
19509func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
19510	s.Encryption = v
19511	return s
19512}
19513
19514// SetFormat sets the Format field's value.
19515func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
19516	s.Format = &v
19517	return s
19518}
19519
19520// SetPrefix sets the Prefix field's value.
19521func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
19522	s.Prefix = &v
19523	return s
19524}
19525
19526// Specifies the schedule for generating inventory results.
19527type InventorySchedule struct {
19528	_ struct{} `type:"structure"`
19529
19530	// Specifies how frequently inventory results are produced.
19531	//
19532	// Frequency is a required field
19533	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
19534}
19535
19536// String returns the string representation
19537func (s InventorySchedule) String() string {
19538	return awsutil.Prettify(s)
19539}
19540
19541// GoString returns the string representation
19542func (s InventorySchedule) GoString() string {
19543	return s.String()
19544}
19545
19546// Validate inspects the fields of the type to determine if they are valid.
19547func (s *InventorySchedule) Validate() error {
19548	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
19549	if s.Frequency == nil {
19550		invalidParams.Add(request.NewErrParamRequired("Frequency"))
19551	}
19552
19553	if invalidParams.Len() > 0 {
19554		return invalidParams
19555	}
19556	return nil
19557}
19558
19559// SetFrequency sets the Frequency field's value.
19560func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
19561	s.Frequency = &v
19562	return s
19563}
19564
19565// Specifies JSON as object's input serialization format.
19566type JSONInput struct {
19567	_ struct{} `type:"structure"`
19568
19569	// The type of JSON. Valid values: Document, Lines.
19570	Type *string `type:"string" enum:"JSONType"`
19571}
19572
19573// String returns the string representation
19574func (s JSONInput) String() string {
19575	return awsutil.Prettify(s)
19576}
19577
19578// GoString returns the string representation
19579func (s JSONInput) GoString() string {
19580	return s.String()
19581}
19582
19583// SetType sets the Type field's value.
19584func (s *JSONInput) SetType(v string) *JSONInput {
19585	s.Type = &v
19586	return s
19587}
19588
19589// Specifies JSON as request's output serialization format.
19590type JSONOutput struct {
19591	_ struct{} `type:"structure"`
19592
19593	// The value used to separate individual records in the output.
19594	RecordDelimiter *string `type:"string"`
19595}
19596
19597// String returns the string representation
19598func (s JSONOutput) String() string {
19599	return awsutil.Prettify(s)
19600}
19601
19602// GoString returns the string representation
19603func (s JSONOutput) GoString() string {
19604	return s.String()
19605}
19606
19607// SetRecordDelimiter sets the RecordDelimiter field's value.
19608func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
19609	s.RecordDelimiter = &v
19610	return s
19611}
19612
19613// A container for object key name prefix and suffix filtering rules.
19614type KeyFilter struct {
19615	_ struct{} `type:"structure"`
19616
19617	// A list of containers for the key-value pair that defines the criteria for
19618	// the filter rule.
19619	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
19620}
19621
19622// String returns the string representation
19623func (s KeyFilter) String() string {
19624	return awsutil.Prettify(s)
19625}
19626
19627// GoString returns the string representation
19628func (s KeyFilter) GoString() string {
19629	return s.String()
19630}
19631
19632// SetFilterRules sets the FilterRules field's value.
19633func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
19634	s.FilterRules = v
19635	return s
19636}
19637
19638// A container for specifying the configuration for AWS Lambda notifications.
19639type LambdaFunctionConfiguration struct {
19640	_ struct{} `type:"structure"`
19641
19642	// The Amazon S3 bucket event for which to invoke the AWS Lambda function. For
19643	// more information, see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
19644	// in the Amazon Simple Storage Service Developer Guide.
19645	//
19646	// Events is a required field
19647	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
19648
19649	// Specifies object key name filtering rules. For information about key name
19650	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
19651	// in the Amazon Simple Storage Service Developer Guide.
19652	Filter *NotificationConfigurationFilter `type:"structure"`
19653
19654	// An optional unique identifier for configurations in a notification configuration.
19655	// If you don't provide one, Amazon S3 will assign an ID.
19656	Id *string `type:"string"`
19657
19658	// The Amazon Resource Name (ARN) of the AWS Lambda function that Amazon S3
19659	// invokes when the specified event type occurs.
19660	//
19661	// LambdaFunctionArn is a required field
19662	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
19663}
19664
19665// String returns the string representation
19666func (s LambdaFunctionConfiguration) String() string {
19667	return awsutil.Prettify(s)
19668}
19669
19670// GoString returns the string representation
19671func (s LambdaFunctionConfiguration) GoString() string {
19672	return s.String()
19673}
19674
19675// Validate inspects the fields of the type to determine if they are valid.
19676func (s *LambdaFunctionConfiguration) Validate() error {
19677	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
19678	if s.Events == nil {
19679		invalidParams.Add(request.NewErrParamRequired("Events"))
19680	}
19681	if s.LambdaFunctionArn == nil {
19682		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
19683	}
19684
19685	if invalidParams.Len() > 0 {
19686		return invalidParams
19687	}
19688	return nil
19689}
19690
19691// SetEvents sets the Events field's value.
19692func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
19693	s.Events = v
19694	return s
19695}
19696
19697// SetFilter sets the Filter field's value.
19698func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
19699	s.Filter = v
19700	return s
19701}
19702
19703// SetId sets the Id field's value.
19704func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
19705	s.Id = &v
19706	return s
19707}
19708
19709// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
19710func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
19711	s.LambdaFunctionArn = &v
19712	return s
19713}
19714
19715// Container for lifecycle rules. You can add as many as 1000 rules.
19716type LifecycleConfiguration struct {
19717	_ struct{} `type:"structure"`
19718
19719	// Specifies lifecycle configuration rules for an Amazon S3 bucket.
19720	//
19721	// Rules is a required field
19722	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
19723}
19724
19725// String returns the string representation
19726func (s LifecycleConfiguration) String() string {
19727	return awsutil.Prettify(s)
19728}
19729
19730// GoString returns the string representation
19731func (s LifecycleConfiguration) GoString() string {
19732	return s.String()
19733}
19734
19735// Validate inspects the fields of the type to determine if they are valid.
19736func (s *LifecycleConfiguration) Validate() error {
19737	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
19738	if s.Rules == nil {
19739		invalidParams.Add(request.NewErrParamRequired("Rules"))
19740	}
19741	if s.Rules != nil {
19742		for i, v := range s.Rules {
19743			if v == nil {
19744				continue
19745			}
19746			if err := v.Validate(); err != nil {
19747				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
19748			}
19749		}
19750	}
19751
19752	if invalidParams.Len() > 0 {
19753		return invalidParams
19754	}
19755	return nil
19756}
19757
19758// SetRules sets the Rules field's value.
19759func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
19760	s.Rules = v
19761	return s
19762}
19763
19764// Container for the expiration for the lifecycle of the object.
19765type LifecycleExpiration struct {
19766	_ struct{} `type:"structure"`
19767
19768	// Indicates at what date the object is to be moved or deleted. Should be in
19769	// GMT ISO 8601 Format.
19770	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
19771
19772	// Indicates the lifetime, in days, of the objects that are subject to the rule.
19773	// The value must be a non-zero positive integer.
19774	Days *int64 `type:"integer"`
19775
19776	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
19777	// versions. If set to true, the delete marker will be expired; if set to false
19778	// the policy takes no action. This cannot be specified with Days or Date in
19779	// a Lifecycle Expiration Policy.
19780	ExpiredObjectDeleteMarker *bool `type:"boolean"`
19781}
19782
19783// String returns the string representation
19784func (s LifecycleExpiration) String() string {
19785	return awsutil.Prettify(s)
19786}
19787
19788// GoString returns the string representation
19789func (s LifecycleExpiration) GoString() string {
19790	return s.String()
19791}
19792
19793// SetDate sets the Date field's value.
19794func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
19795	s.Date = &v
19796	return s
19797}
19798
19799// SetDays sets the Days field's value.
19800func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
19801	s.Days = &v
19802	return s
19803}
19804
19805// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
19806func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
19807	s.ExpiredObjectDeleteMarker = &v
19808	return s
19809}
19810
19811// A lifecycle rule for individual objects in an Amazon S3 bucket.
19812type LifecycleRule struct {
19813	_ struct{} `type:"structure"`
19814
19815	// Specifies the days since the initiation of an incomplete multipart upload
19816	// that Amazon S3 will wait before permanently removing all parts of the upload.
19817	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
19818	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
19819	// in the Amazon Simple Storage Service Developer Guide.
19820	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
19821
19822	// Specifies the expiration for the lifecycle of the object in the form of date,
19823	// days and, whether the object has a delete marker.
19824	Expiration *LifecycleExpiration `type:"structure"`
19825
19826	// The Filter is used to identify objects that a Lifecycle Rule applies to.
19827	// A Filter must have exactly one of Prefix, Tag, or And specified.
19828	Filter *LifecycleRuleFilter `type:"structure"`
19829
19830	// Unique identifier for the rule. The value cannot be longer than 255 characters.
19831	ID *string `type:"string"`
19832
19833	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
19834	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
19835	// configuration action on a bucket that has versioning enabled (or suspended)
19836	// to request that Amazon S3 delete noncurrent object versions at a specific
19837	// period in the object's lifetime.
19838	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
19839
19840	// Specifies the transition rule for the lifecycle rule that describes when
19841	// noncurrent objects transition to a specific storage class. If your bucket
19842	// is versioning-enabled (or versioning is suspended), you can set this action
19843	// to request that Amazon S3 transition noncurrent object versions to a specific
19844	// storage class at a set period in the object's lifetime.
19845	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
19846
19847	// Prefix identifying one or more objects to which the rule applies. This is
19848	// No longer used; use Filter instead.
19849	//
19850	// Deprecated: Prefix has been deprecated
19851	Prefix *string `deprecated:"true" type:"string"`
19852
19853	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
19854	// is not currently being applied.
19855	//
19856	// Status is a required field
19857	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
19858
19859	// Specifies when an Amazon S3 object transitions to a specified storage class.
19860	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
19861}
19862
19863// String returns the string representation
19864func (s LifecycleRule) String() string {
19865	return awsutil.Prettify(s)
19866}
19867
19868// GoString returns the string representation
19869func (s LifecycleRule) GoString() string {
19870	return s.String()
19871}
19872
19873// Validate inspects the fields of the type to determine if they are valid.
19874func (s *LifecycleRule) Validate() error {
19875	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
19876	if s.Status == nil {
19877		invalidParams.Add(request.NewErrParamRequired("Status"))
19878	}
19879	if s.Filter != nil {
19880		if err := s.Filter.Validate(); err != nil {
19881			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
19882		}
19883	}
19884
19885	if invalidParams.Len() > 0 {
19886		return invalidParams
19887	}
19888	return nil
19889}
19890
19891// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
19892func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
19893	s.AbortIncompleteMultipartUpload = v
19894	return s
19895}
19896
19897// SetExpiration sets the Expiration field's value.
19898func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
19899	s.Expiration = v
19900	return s
19901}
19902
19903// SetFilter sets the Filter field's value.
19904func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
19905	s.Filter = v
19906	return s
19907}
19908
19909// SetID sets the ID field's value.
19910func (s *LifecycleRule) SetID(v string) *LifecycleRule {
19911	s.ID = &v
19912	return s
19913}
19914
19915// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
19916func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
19917	s.NoncurrentVersionExpiration = v
19918	return s
19919}
19920
19921// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
19922func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
19923	s.NoncurrentVersionTransitions = v
19924	return s
19925}
19926
19927// SetPrefix sets the Prefix field's value.
19928func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
19929	s.Prefix = &v
19930	return s
19931}
19932
19933// SetStatus sets the Status field's value.
19934func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
19935	s.Status = &v
19936	return s
19937}
19938
19939// SetTransitions sets the Transitions field's value.
19940func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
19941	s.Transitions = v
19942	return s
19943}
19944
19945// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
19946// more predicates. The Lifecycle Rule will apply to any object matching all
19947// of the predicates configured inside the And operator.
19948type LifecycleRuleAndOperator struct {
19949	_ struct{} `type:"structure"`
19950
19951	// Prefix identifying one or more objects to which the rule applies.
19952	Prefix *string `type:"string"`
19953
19954	// All of these tags must exist in the object's tag set in order for the rule
19955	// to apply.
19956	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
19957}
19958
19959// String returns the string representation
19960func (s LifecycleRuleAndOperator) String() string {
19961	return awsutil.Prettify(s)
19962}
19963
19964// GoString returns the string representation
19965func (s LifecycleRuleAndOperator) GoString() string {
19966	return s.String()
19967}
19968
19969// Validate inspects the fields of the type to determine if they are valid.
19970func (s *LifecycleRuleAndOperator) Validate() error {
19971	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
19972	if s.Tags != nil {
19973		for i, v := range s.Tags {
19974			if v == nil {
19975				continue
19976			}
19977			if err := v.Validate(); err != nil {
19978				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
19979			}
19980		}
19981	}
19982
19983	if invalidParams.Len() > 0 {
19984		return invalidParams
19985	}
19986	return nil
19987}
19988
19989// SetPrefix sets the Prefix field's value.
19990func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
19991	s.Prefix = &v
19992	return s
19993}
19994
19995// SetTags sets the Tags field's value.
19996func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
19997	s.Tags = v
19998	return s
19999}
20000
20001// The Filter is used to identify objects that a Lifecycle Rule applies to.
20002// A Filter must have exactly one of Prefix, Tag, or And specified.
20003type LifecycleRuleFilter struct {
20004	_ struct{} `type:"structure"`
20005
20006	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
20007	// more predicates. The Lifecycle Rule will apply to any object matching all
20008	// of the predicates configured inside the And operator.
20009	And *LifecycleRuleAndOperator `type:"structure"`
20010
20011	// Prefix identifying one or more objects to which the rule applies.
20012	Prefix *string `type:"string"`
20013
20014	// This tag must exist in the object's tag set in order for the rule to apply.
20015	Tag *Tag `type:"structure"`
20016}
20017
20018// String returns the string representation
20019func (s LifecycleRuleFilter) String() string {
20020	return awsutil.Prettify(s)
20021}
20022
20023// GoString returns the string representation
20024func (s LifecycleRuleFilter) GoString() string {
20025	return s.String()
20026}
20027
20028// Validate inspects the fields of the type to determine if they are valid.
20029func (s *LifecycleRuleFilter) Validate() error {
20030	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
20031	if s.And != nil {
20032		if err := s.And.Validate(); err != nil {
20033			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
20034		}
20035	}
20036	if s.Tag != nil {
20037		if err := s.Tag.Validate(); err != nil {
20038			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
20039		}
20040	}
20041
20042	if invalidParams.Len() > 0 {
20043		return invalidParams
20044	}
20045	return nil
20046}
20047
20048// SetAnd sets the And field's value.
20049func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
20050	s.And = v
20051	return s
20052}
20053
20054// SetPrefix sets the Prefix field's value.
20055func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
20056	s.Prefix = &v
20057	return s
20058}
20059
20060// SetTag sets the Tag field's value.
20061func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
20062	s.Tag = v
20063	return s
20064}
20065
20066type ListBucketAnalyticsConfigurationsInput struct {
20067	_ struct{} `locationName:"ListBucketAnalyticsConfigurationsRequest" type:"structure"`
20068
20069	// The name of the bucket from which analytics configurations are retrieved.
20070	//
20071	// Bucket is a required field
20072	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20073
20074	// The ContinuationToken that represents a placeholder from where this request
20075	// should begin.
20076	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
20077}
20078
20079// String returns the string representation
20080func (s ListBucketAnalyticsConfigurationsInput) String() string {
20081	return awsutil.Prettify(s)
20082}
20083
20084// GoString returns the string representation
20085func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
20086	return s.String()
20087}
20088
20089// Validate inspects the fields of the type to determine if they are valid.
20090func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
20091	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
20092	if s.Bucket == nil {
20093		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20094	}
20095	if s.Bucket != nil && len(*s.Bucket) < 1 {
20096		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20097	}
20098
20099	if invalidParams.Len() > 0 {
20100		return invalidParams
20101	}
20102	return nil
20103}
20104
20105// SetBucket sets the Bucket field's value.
20106func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
20107	s.Bucket = &v
20108	return s
20109}
20110
20111func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
20112	if s.Bucket == nil {
20113		return v
20114	}
20115	return *s.Bucket
20116}
20117
20118// SetContinuationToken sets the ContinuationToken field's value.
20119func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
20120	s.ContinuationToken = &v
20121	return s
20122}
20123
20124func (s *ListBucketAnalyticsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
20125	if s.Bucket == nil {
20126		return nil, fmt.Errorf("member Bucket is nil")
20127	}
20128	return parseEndpointARN(*s.Bucket)
20129}
20130
20131func (s *ListBucketAnalyticsConfigurationsInput) hasEndpointARN() bool {
20132	if s.Bucket == nil {
20133		return false
20134	}
20135	return arn.IsARN(*s.Bucket)
20136}
20137
20138type ListBucketAnalyticsConfigurationsOutput struct {
20139	_ struct{} `type:"structure"`
20140
20141	// The list of analytics configurations for a bucket.
20142	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
20143
20144	// The marker that is used as a starting point for this analytics configuration
20145	// list response. This value is present if it was sent in the request.
20146	ContinuationToken *string `type:"string"`
20147
20148	// Indicates whether the returned list of analytics configurations is complete.
20149	// A value of true indicates that the list is not complete and the NextContinuationToken
20150	// will be provided for a subsequent request.
20151	IsTruncated *bool `type:"boolean"`
20152
20153	// NextContinuationToken is sent when isTruncated is true, which indicates that
20154	// there are more analytics configurations to list. The next request must include
20155	// this NextContinuationToken. The token is obfuscated and is not a usable value.
20156	NextContinuationToken *string `type:"string"`
20157}
20158
20159// String returns the string representation
20160func (s ListBucketAnalyticsConfigurationsOutput) String() string {
20161	return awsutil.Prettify(s)
20162}
20163
20164// GoString returns the string representation
20165func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
20166	return s.String()
20167}
20168
20169// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
20170func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
20171	s.AnalyticsConfigurationList = v
20172	return s
20173}
20174
20175// SetContinuationToken sets the ContinuationToken field's value.
20176func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
20177	s.ContinuationToken = &v
20178	return s
20179}
20180
20181// SetIsTruncated sets the IsTruncated field's value.
20182func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
20183	s.IsTruncated = &v
20184	return s
20185}
20186
20187// SetNextContinuationToken sets the NextContinuationToken field's value.
20188func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
20189	s.NextContinuationToken = &v
20190	return s
20191}
20192
20193type ListBucketInventoryConfigurationsInput struct {
20194	_ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"`
20195
20196	// The name of the bucket containing the inventory configurations to retrieve.
20197	//
20198	// Bucket is a required field
20199	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20200
20201	// The marker used to continue an inventory configuration listing that has been
20202	// truncated. Use the NextContinuationToken from a previously truncated list
20203	// response to continue the listing. The continuation token is an opaque value
20204	// that Amazon S3 understands.
20205	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
20206}
20207
20208// String returns the string representation
20209func (s ListBucketInventoryConfigurationsInput) String() string {
20210	return awsutil.Prettify(s)
20211}
20212
20213// GoString returns the string representation
20214func (s ListBucketInventoryConfigurationsInput) GoString() string {
20215	return s.String()
20216}
20217
20218// Validate inspects the fields of the type to determine if they are valid.
20219func (s *ListBucketInventoryConfigurationsInput) Validate() error {
20220	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
20221	if s.Bucket == nil {
20222		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20223	}
20224	if s.Bucket != nil && len(*s.Bucket) < 1 {
20225		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20226	}
20227
20228	if invalidParams.Len() > 0 {
20229		return invalidParams
20230	}
20231	return nil
20232}
20233
20234// SetBucket sets the Bucket field's value.
20235func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
20236	s.Bucket = &v
20237	return s
20238}
20239
20240func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
20241	if s.Bucket == nil {
20242		return v
20243	}
20244	return *s.Bucket
20245}
20246
20247// SetContinuationToken sets the ContinuationToken field's value.
20248func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
20249	s.ContinuationToken = &v
20250	return s
20251}
20252
20253func (s *ListBucketInventoryConfigurationsInput) getEndpointARN() (arn.Resource, error) {
20254	if s.Bucket == nil {
20255		return nil, fmt.Errorf("member Bucket is nil")
20256	}
20257	return parseEndpointARN(*s.Bucket)
20258}
20259
20260func (s *ListBucketInventoryConfigurationsInput) hasEndpointARN() bool {
20261	if s.Bucket == nil {
20262		return false
20263	}
20264	return arn.IsARN(*s.Bucket)
20265}
20266
20267type ListBucketInventoryConfigurationsOutput struct {
20268	_ struct{} `type:"structure"`
20269
20270	// If sent in the request, the marker that is used as a starting point for this
20271	// inventory configuration list response.
20272	ContinuationToken *string `type:"string"`
20273
20274	// The list of inventory configurations for a bucket.
20275	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
20276
20277	// Tells whether the returned list of inventory configurations is complete.
20278	// A value of true indicates that the list is not complete and the NextContinuationToken
20279	// is provided for a subsequent request.
20280	IsTruncated *bool `type:"boolean"`
20281
20282	// The marker used to continue this inventory configuration listing. Use the
20283	// NextContinuationToken from this response to continue the listing in a subsequent
20284	// request. The continuation token is an opaque value that Amazon S3 understands.
20285	NextContinuationToken *string `type:"string"`
20286}
20287
20288// String returns the string representation
20289func (s ListBucketInventoryConfigurationsOutput) String() string {
20290	return awsutil.Prettify(s)
20291}
20292
20293// GoString returns the string representation
20294func (s ListBucketInventoryConfigurationsOutput) GoString() string {
20295	return s.String()
20296}
20297
20298// SetContinuationToken sets the ContinuationToken field's value.
20299func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
20300	s.ContinuationToken = &v
20301	return s
20302}
20303
20304// SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
20305func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
20306	s.InventoryConfigurationList = v
20307	return s
20308}
20309
20310// SetIsTruncated sets the IsTruncated field's value.
20311func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
20312	s.IsTruncated = &v
20313	return s
20314}
20315
20316// SetNextContinuationToken sets the NextContinuationToken field's value.
20317func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
20318	s.NextContinuationToken = &v
20319	return s
20320}
20321
20322type ListBucketMetricsConfigurationsInput struct {
20323	_ struct{} `locationName:"ListBucketMetricsConfigurationsRequest" type:"structure"`
20324
20325	// The name of the bucket containing the metrics configurations to retrieve.
20326	//
20327	// Bucket is a required field
20328	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20329
20330	// The marker that is used to continue a metrics configuration listing that
20331	// has been truncated. Use the NextContinuationToken from a previously truncated
20332	// list response to continue the listing. The continuation token is an opaque
20333	// value that Amazon S3 understands.
20334	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
20335}
20336
20337// String returns the string representation
20338func (s ListBucketMetricsConfigurationsInput) String() string {
20339	return awsutil.Prettify(s)
20340}
20341
20342// GoString returns the string representation
20343func (s ListBucketMetricsConfigurationsInput) GoString() string {
20344	return s.String()
20345}
20346
20347// Validate inspects the fields of the type to determine if they are valid.
20348func (s *ListBucketMetricsConfigurationsInput) Validate() error {
20349	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
20350	if s.Bucket == nil {
20351		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20352	}
20353	if s.Bucket != nil && len(*s.Bucket) < 1 {
20354		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20355	}
20356
20357	if invalidParams.Len() > 0 {
20358		return invalidParams
20359	}
20360	return nil
20361}
20362
20363// SetBucket sets the Bucket field's value.
20364func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
20365	s.Bucket = &v
20366	return s
20367}
20368
20369func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
20370	if s.Bucket == nil {
20371		return v
20372	}
20373	return *s.Bucket
20374}
20375
20376// SetContinuationToken sets the ContinuationToken field's value.
20377func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
20378	s.ContinuationToken = &v
20379	return s
20380}
20381
20382func (s *ListBucketMetricsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
20383	if s.Bucket == nil {
20384		return nil, fmt.Errorf("member Bucket is nil")
20385	}
20386	return parseEndpointARN(*s.Bucket)
20387}
20388
20389func (s *ListBucketMetricsConfigurationsInput) hasEndpointARN() bool {
20390	if s.Bucket == nil {
20391		return false
20392	}
20393	return arn.IsARN(*s.Bucket)
20394}
20395
20396type ListBucketMetricsConfigurationsOutput struct {
20397	_ struct{} `type:"structure"`
20398
20399	// The marker that is used as a starting point for this metrics configuration
20400	// list response. This value is present if it was sent in the request.
20401	ContinuationToken *string `type:"string"`
20402
20403	// Indicates whether the returned list of metrics configurations is complete.
20404	// A value of true indicates that the list is not complete and the NextContinuationToken
20405	// will be provided for a subsequent request.
20406	IsTruncated *bool `type:"boolean"`
20407
20408	// The list of metrics configurations for a bucket.
20409	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
20410
20411	// The marker used to continue a metrics configuration listing that has been
20412	// truncated. Use the NextContinuationToken from a previously truncated list
20413	// response to continue the listing. The continuation token is an opaque value
20414	// that Amazon S3 understands.
20415	NextContinuationToken *string `type:"string"`
20416}
20417
20418// String returns the string representation
20419func (s ListBucketMetricsConfigurationsOutput) String() string {
20420	return awsutil.Prettify(s)
20421}
20422
20423// GoString returns the string representation
20424func (s ListBucketMetricsConfigurationsOutput) GoString() string {
20425	return s.String()
20426}
20427
20428// SetContinuationToken sets the ContinuationToken field's value.
20429func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
20430	s.ContinuationToken = &v
20431	return s
20432}
20433
20434// SetIsTruncated sets the IsTruncated field's value.
20435func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
20436	s.IsTruncated = &v
20437	return s
20438}
20439
20440// SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
20441func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
20442	s.MetricsConfigurationList = v
20443	return s
20444}
20445
20446// SetNextContinuationToken sets the NextContinuationToken field's value.
20447func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
20448	s.NextContinuationToken = &v
20449	return s
20450}
20451
20452type ListBucketsInput struct {
20453	_ struct{} `type:"structure"`
20454}
20455
20456// String returns the string representation
20457func (s ListBucketsInput) String() string {
20458	return awsutil.Prettify(s)
20459}
20460
20461// GoString returns the string representation
20462func (s ListBucketsInput) GoString() string {
20463	return s.String()
20464}
20465
20466type ListBucketsOutput struct {
20467	_ struct{} `type:"structure"`
20468
20469	// The list of buckets owned by the requestor.
20470	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
20471
20472	// The owner of the buckets listed.
20473	Owner *Owner `type:"structure"`
20474}
20475
20476// String returns the string representation
20477func (s ListBucketsOutput) String() string {
20478	return awsutil.Prettify(s)
20479}
20480
20481// GoString returns the string representation
20482func (s ListBucketsOutput) GoString() string {
20483	return s.String()
20484}
20485
20486// SetBuckets sets the Buckets field's value.
20487func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
20488	s.Buckets = v
20489	return s
20490}
20491
20492// SetOwner sets the Owner field's value.
20493func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
20494	s.Owner = v
20495	return s
20496}
20497
20498type ListMultipartUploadsInput struct {
20499	_ struct{} `locationName:"ListMultipartUploadsRequest" type:"structure"`
20500
20501	// Name of the bucket to which the multipart upload was initiated.
20502	//
20503	// When using this API with an access point, you must direct requests to the
20504	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20505	// When using this operation using an access point through the AWS SDKs, you
20506	// provide the access point ARN in place of the bucket name. For more information
20507	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
20508	// in the Amazon Simple Storage Service Developer Guide.
20509	//
20510	// Bucket is a required field
20511	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20512
20513	// Character you use to group keys.
20514	//
20515	// All keys that contain the same string between the prefix, if specified, and
20516	// the first occurrence of the delimiter after the prefix are grouped under
20517	// a single result element, CommonPrefixes. If you don't specify the prefix
20518	// parameter, then the substring starts at the beginning of the key. The keys
20519	// that are grouped under CommonPrefixes result element are not returned elsewhere
20520	// in the response.
20521	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
20522
20523	// Requests Amazon S3 to encode the object keys in the response and specifies
20524	// the encoding method to use. An object key may contain any Unicode character;
20525	// however, XML 1.0 parser cannot parse some characters, such as characters
20526	// with an ASCII value from 0 to 10. For characters that are not supported in
20527	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
20528	// keys in the response.
20529	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
20530
20531	// Together with upload-id-marker, this parameter specifies the multipart upload
20532	// after which listing should begin.
20533	//
20534	// If upload-id-marker is not specified, only the keys lexicographically greater
20535	// than the specified key-marker will be included in the list.
20536	//
20537	// If upload-id-marker is specified, any multipart uploads for a key equal to
20538	// the key-marker might also be included, provided those multipart uploads have
20539	// upload IDs lexicographically greater than the specified upload-id-marker.
20540	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
20541
20542	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
20543	// in the response body. 1,000 is the maximum number of uploads that can be
20544	// returned in a response.
20545	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
20546
20547	// Lists in-progress uploads only for those keys that begin with the specified
20548	// prefix. You can use prefixes to separate a bucket into different grouping
20549	// of keys. (You can think of using prefix to make groups in the same way you'd
20550	// use a folder in a file system.)
20551	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
20552
20553	// Together with key-marker, specifies the multipart upload after which listing
20554	// should begin. If key-marker is not specified, the upload-id-marker parameter
20555	// is ignored. Otherwise, any multipart uploads for a key equal to the key-marker
20556	// might be included in the list only if they have an upload ID lexicographically
20557	// greater than the specified upload-id-marker.
20558	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
20559}
20560
20561// String returns the string representation
20562func (s ListMultipartUploadsInput) String() string {
20563	return awsutil.Prettify(s)
20564}
20565
20566// GoString returns the string representation
20567func (s ListMultipartUploadsInput) GoString() string {
20568	return s.String()
20569}
20570
20571// Validate inspects the fields of the type to determine if they are valid.
20572func (s *ListMultipartUploadsInput) Validate() error {
20573	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
20574	if s.Bucket == nil {
20575		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20576	}
20577	if s.Bucket != nil && len(*s.Bucket) < 1 {
20578		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20579	}
20580
20581	if invalidParams.Len() > 0 {
20582		return invalidParams
20583	}
20584	return nil
20585}
20586
20587// SetBucket sets the Bucket field's value.
20588func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
20589	s.Bucket = &v
20590	return s
20591}
20592
20593func (s *ListMultipartUploadsInput) getBucket() (v string) {
20594	if s.Bucket == nil {
20595		return v
20596	}
20597	return *s.Bucket
20598}
20599
20600// SetDelimiter sets the Delimiter field's value.
20601func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
20602	s.Delimiter = &v
20603	return s
20604}
20605
20606// SetEncodingType sets the EncodingType field's value.
20607func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
20608	s.EncodingType = &v
20609	return s
20610}
20611
20612// SetKeyMarker sets the KeyMarker field's value.
20613func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
20614	s.KeyMarker = &v
20615	return s
20616}
20617
20618// SetMaxUploads sets the MaxUploads field's value.
20619func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
20620	s.MaxUploads = &v
20621	return s
20622}
20623
20624// SetPrefix sets the Prefix field's value.
20625func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
20626	s.Prefix = &v
20627	return s
20628}
20629
20630// SetUploadIdMarker sets the UploadIdMarker field's value.
20631func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
20632	s.UploadIdMarker = &v
20633	return s
20634}
20635
20636func (s *ListMultipartUploadsInput) getEndpointARN() (arn.Resource, error) {
20637	if s.Bucket == nil {
20638		return nil, fmt.Errorf("member Bucket is nil")
20639	}
20640	return parseEndpointARN(*s.Bucket)
20641}
20642
20643func (s *ListMultipartUploadsInput) hasEndpointARN() bool {
20644	if s.Bucket == nil {
20645		return false
20646	}
20647	return arn.IsARN(*s.Bucket)
20648}
20649
20650type ListMultipartUploadsOutput struct {
20651	_ struct{} `type:"structure"`
20652
20653	// Name of the bucket to which the multipart upload was initiated.
20654	Bucket *string `type:"string"`
20655
20656	// If you specify a delimiter in the request, then the result returns each distinct
20657	// key prefix containing the delimiter in a CommonPrefixes element. The distinct
20658	// key prefixes are returned in the Prefix child element.
20659	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
20660
20661	// Contains the delimiter you specified in the request. If you don't specify
20662	// a delimiter in your request, this element is absent from the response.
20663	Delimiter *string `type:"string"`
20664
20665	// Encoding type used by Amazon S3 to encode object keys in the response.
20666	//
20667	// If you specify encoding-type request parameter, Amazon S3 includes this element
20668	// in the response, and returns encoded key name values in the following response
20669	// elements:
20670	//
20671	// Delimiter, KeyMarker, Prefix, NextKeyMarker, Key.
20672	EncodingType *string `type:"string" enum:"EncodingType"`
20673
20674	// Indicates whether the returned list of multipart uploads is truncated. A
20675	// value of true indicates that the list was truncated. The list can be truncated
20676	// if the number of multipart uploads exceeds the limit allowed or specified
20677	// by max uploads.
20678	IsTruncated *bool `type:"boolean"`
20679
20680	// The key at or after which the listing began.
20681	KeyMarker *string `type:"string"`
20682
20683	// Maximum number of multipart uploads that could have been included in the
20684	// response.
20685	MaxUploads *int64 `type:"integer"`
20686
20687	// When a list is truncated, this element specifies the value that should be
20688	// used for the key-marker request parameter in a subsequent request.
20689	NextKeyMarker *string `type:"string"`
20690
20691	// When a list is truncated, this element specifies the value that should be
20692	// used for the upload-id-marker request parameter in a subsequent request.
20693	NextUploadIdMarker *string `type:"string"`
20694
20695	// When a prefix is provided in the request, this field contains the specified
20696	// prefix. The result contains only keys starting with the specified prefix.
20697	Prefix *string `type:"string"`
20698
20699	// Upload ID after which listing began.
20700	UploadIdMarker *string `type:"string"`
20701
20702	// Container for elements related to a particular multipart upload. A response
20703	// can contain zero or more Upload elements.
20704	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
20705}
20706
20707// String returns the string representation
20708func (s ListMultipartUploadsOutput) String() string {
20709	return awsutil.Prettify(s)
20710}
20711
20712// GoString returns the string representation
20713func (s ListMultipartUploadsOutput) GoString() string {
20714	return s.String()
20715}
20716
20717// SetBucket sets the Bucket field's value.
20718func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
20719	s.Bucket = &v
20720	return s
20721}
20722
20723func (s *ListMultipartUploadsOutput) getBucket() (v string) {
20724	if s.Bucket == nil {
20725		return v
20726	}
20727	return *s.Bucket
20728}
20729
20730// SetCommonPrefixes sets the CommonPrefixes field's value.
20731func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
20732	s.CommonPrefixes = v
20733	return s
20734}
20735
20736// SetDelimiter sets the Delimiter field's value.
20737func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
20738	s.Delimiter = &v
20739	return s
20740}
20741
20742// SetEncodingType sets the EncodingType field's value.
20743func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
20744	s.EncodingType = &v
20745	return s
20746}
20747
20748// SetIsTruncated sets the IsTruncated field's value.
20749func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
20750	s.IsTruncated = &v
20751	return s
20752}
20753
20754// SetKeyMarker sets the KeyMarker field's value.
20755func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
20756	s.KeyMarker = &v
20757	return s
20758}
20759
20760// SetMaxUploads sets the MaxUploads field's value.
20761func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
20762	s.MaxUploads = &v
20763	return s
20764}
20765
20766// SetNextKeyMarker sets the NextKeyMarker field's value.
20767func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
20768	s.NextKeyMarker = &v
20769	return s
20770}
20771
20772// SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
20773func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
20774	s.NextUploadIdMarker = &v
20775	return s
20776}
20777
20778// SetPrefix sets the Prefix field's value.
20779func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
20780	s.Prefix = &v
20781	return s
20782}
20783
20784// SetUploadIdMarker sets the UploadIdMarker field's value.
20785func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
20786	s.UploadIdMarker = &v
20787	return s
20788}
20789
20790// SetUploads sets the Uploads field's value.
20791func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
20792	s.Uploads = v
20793	return s
20794}
20795
20796type ListObjectVersionsInput struct {
20797	_ struct{} `locationName:"ListObjectVersionsRequest" type:"structure"`
20798
20799	// The bucket name that contains the objects.
20800	//
20801	// When using this API with an access point, you must direct requests to the
20802	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20803	// When using this operation using an access point through the AWS SDKs, you
20804	// provide the access point ARN in place of the bucket name. For more information
20805	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
20806	// in the Amazon Simple Storage Service Developer Guide.
20807	//
20808	// Bucket is a required field
20809	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20810
20811	// A delimiter is a character that you specify to group keys. All keys that
20812	// contain the same string between the prefix and the first occurrence of the
20813	// delimiter are grouped under a single result element in CommonPrefixes. These
20814	// groups are counted as one result against the max-keys limitation. These keys
20815	// are not returned elsewhere in the response.
20816	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
20817
20818	// Requests Amazon S3 to encode the object keys in the response and specifies
20819	// the encoding method to use. An object key may contain any Unicode character;
20820	// however, XML 1.0 parser cannot parse some characters, such as characters
20821	// with an ASCII value from 0 to 10. For characters that are not supported in
20822	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
20823	// keys in the response.
20824	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
20825
20826	// Specifies the key to start with when listing objects in a bucket.
20827	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
20828
20829	// Sets the maximum number of keys returned in the response. The response might
20830	// contain fewer keys but will never contain more. If additional keys satisfy
20831	// the search criteria, but were not returned because max-keys was exceeded,
20832	// the response contains <isTruncated>true</isTruncated>. To return the additional
20833	// keys, see key-marker and version-id-marker.
20834	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
20835
20836	// Use this parameter to select only those keys that begin with the specified
20837	// prefix. You can use prefixes to separate a bucket into different groupings
20838	// of keys. (You can think of using prefix to make groups in the same way you'd
20839	// use a folder in a file system.) You can use prefix with delimiter to roll
20840	// up numerous objects into a single result under CommonPrefixes.
20841	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
20842
20843	// Specifies the object version you want to start listing from.
20844	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
20845}
20846
20847// String returns the string representation
20848func (s ListObjectVersionsInput) String() string {
20849	return awsutil.Prettify(s)
20850}
20851
20852// GoString returns the string representation
20853func (s ListObjectVersionsInput) GoString() string {
20854	return s.String()
20855}
20856
20857// Validate inspects the fields of the type to determine if they are valid.
20858func (s *ListObjectVersionsInput) Validate() error {
20859	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
20860	if s.Bucket == nil {
20861		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20862	}
20863	if s.Bucket != nil && len(*s.Bucket) < 1 {
20864		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20865	}
20866
20867	if invalidParams.Len() > 0 {
20868		return invalidParams
20869	}
20870	return nil
20871}
20872
20873// SetBucket sets the Bucket field's value.
20874func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
20875	s.Bucket = &v
20876	return s
20877}
20878
20879func (s *ListObjectVersionsInput) getBucket() (v string) {
20880	if s.Bucket == nil {
20881		return v
20882	}
20883	return *s.Bucket
20884}
20885
20886// SetDelimiter sets the Delimiter field's value.
20887func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
20888	s.Delimiter = &v
20889	return s
20890}
20891
20892// SetEncodingType sets the EncodingType field's value.
20893func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
20894	s.EncodingType = &v
20895	return s
20896}
20897
20898// SetKeyMarker sets the KeyMarker field's value.
20899func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
20900	s.KeyMarker = &v
20901	return s
20902}
20903
20904// SetMaxKeys sets the MaxKeys field's value.
20905func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
20906	s.MaxKeys = &v
20907	return s
20908}
20909
20910// SetPrefix sets the Prefix field's value.
20911func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
20912	s.Prefix = &v
20913	return s
20914}
20915
20916// SetVersionIdMarker sets the VersionIdMarker field's value.
20917func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
20918	s.VersionIdMarker = &v
20919	return s
20920}
20921
20922func (s *ListObjectVersionsInput) getEndpointARN() (arn.Resource, error) {
20923	if s.Bucket == nil {
20924		return nil, fmt.Errorf("member Bucket is nil")
20925	}
20926	return parseEndpointARN(*s.Bucket)
20927}
20928
20929func (s *ListObjectVersionsInput) hasEndpointARN() bool {
20930	if s.Bucket == nil {
20931		return false
20932	}
20933	return arn.IsARN(*s.Bucket)
20934}
20935
20936type ListObjectVersionsOutput struct {
20937	_ struct{} `type:"structure"`
20938
20939	// All of the keys rolled up into a common prefix count as a single return when
20940	// calculating the number of returns.
20941	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
20942
20943	// Container for an object that is a delete marker.
20944	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
20945
20946	// The delimiter grouping the included keys. A delimiter is a character that
20947	// you specify to group keys. All keys that contain the same string between
20948	// the prefix and the first occurrence of the delimiter are grouped under a
20949	// single result element in CommonPrefixes. These groups are counted as one
20950	// result against the max-keys limitation. These keys are not returned elsewhere
20951	// in the response.
20952	Delimiter *string `type:"string"`
20953
20954	// Encoding type used by Amazon S3 to encode object key names in the XML response.
20955	//
20956	// If you specify encoding-type request parameter, Amazon S3 includes this element
20957	// in the response, and returns encoded key name values in the following response
20958	// elements:
20959	//
20960	// KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.
20961	EncodingType *string `type:"string" enum:"EncodingType"`
20962
20963	// A flag that indicates whether Amazon S3 returned all of the results that
20964	// satisfied the search criteria. If your results were truncated, you can make
20965	// a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
20966	// response parameters as a starting place in another request to return the
20967	// rest of the results.
20968	IsTruncated *bool `type:"boolean"`
20969
20970	// Marks the last key returned in a truncated response.
20971	KeyMarker *string `type:"string"`
20972
20973	// Specifies the maximum number of objects to return.
20974	MaxKeys *int64 `type:"integer"`
20975
20976	// Bucket name.
20977	Name *string `type:"string"`
20978
20979	// When the number of responses exceeds the value of MaxKeys, NextKeyMarker
20980	// specifies the first key not returned that satisfies the search criteria.
20981	// Use this value for the key-marker request parameter in a subsequent request.
20982	NextKeyMarker *string `type:"string"`
20983
20984	// When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker
20985	// specifies the first object version not returned that satisfies the search
20986	// criteria. Use this value for the version-id-marker request parameter in a
20987	// subsequent request.
20988	NextVersionIdMarker *string `type:"string"`
20989
20990	// Selects objects that start with the value supplied by this parameter.
20991	Prefix *string `type:"string"`
20992
20993	// Marks the last version of the key returned in a truncated response.
20994	VersionIdMarker *string `type:"string"`
20995
20996	// Container for version information.
20997	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
20998}
20999
21000// String returns the string representation
21001func (s ListObjectVersionsOutput) String() string {
21002	return awsutil.Prettify(s)
21003}
21004
21005// GoString returns the string representation
21006func (s ListObjectVersionsOutput) GoString() string {
21007	return s.String()
21008}
21009
21010// SetCommonPrefixes sets the CommonPrefixes field's value.
21011func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
21012	s.CommonPrefixes = v
21013	return s
21014}
21015
21016// SetDeleteMarkers sets the DeleteMarkers field's value.
21017func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
21018	s.DeleteMarkers = v
21019	return s
21020}
21021
21022// SetDelimiter sets the Delimiter field's value.
21023func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
21024	s.Delimiter = &v
21025	return s
21026}
21027
21028// SetEncodingType sets the EncodingType field's value.
21029func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
21030	s.EncodingType = &v
21031	return s
21032}
21033
21034// SetIsTruncated sets the IsTruncated field's value.
21035func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
21036	s.IsTruncated = &v
21037	return s
21038}
21039
21040// SetKeyMarker sets the KeyMarker field's value.
21041func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
21042	s.KeyMarker = &v
21043	return s
21044}
21045
21046// SetMaxKeys sets the MaxKeys field's value.
21047func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
21048	s.MaxKeys = &v
21049	return s
21050}
21051
21052// SetName sets the Name field's value.
21053func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
21054	s.Name = &v
21055	return s
21056}
21057
21058// SetNextKeyMarker sets the NextKeyMarker field's value.
21059func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
21060	s.NextKeyMarker = &v
21061	return s
21062}
21063
21064// SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
21065func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
21066	s.NextVersionIdMarker = &v
21067	return s
21068}
21069
21070// SetPrefix sets the Prefix field's value.
21071func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
21072	s.Prefix = &v
21073	return s
21074}
21075
21076// SetVersionIdMarker sets the VersionIdMarker field's value.
21077func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
21078	s.VersionIdMarker = &v
21079	return s
21080}
21081
21082// SetVersions sets the Versions field's value.
21083func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
21084	s.Versions = v
21085	return s
21086}
21087
21088type ListObjectsInput struct {
21089	_ struct{} `locationName:"ListObjectsRequest" type:"structure"`
21090
21091	// The name of the bucket containing the objects.
21092	//
21093	// Bucket is a required field
21094	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21095
21096	// A delimiter is a character you use to group keys.
21097	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
21098
21099	// Requests Amazon S3 to encode the object keys in the response and specifies
21100	// the encoding method to use. An object key may contain any Unicode character;
21101	// however, XML 1.0 parser cannot parse some characters, such as characters
21102	// with an ASCII value from 0 to 10. For characters that are not supported in
21103	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
21104	// keys in the response.
21105	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
21106
21107	// Specifies the key to start with when listing objects in a bucket.
21108	Marker *string `location:"querystring" locationName:"marker" type:"string"`
21109
21110	// Sets the maximum number of keys returned in the response. The response might
21111	// contain fewer keys but will never contain more.
21112	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
21113
21114	// Limits the response to keys that begin with the specified prefix.
21115	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
21116
21117	// Confirms that the requester knows that she or he will be charged for the
21118	// list objects request. Bucket owners need not specify this parameter in their
21119	// requests.
21120	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21121}
21122
21123// String returns the string representation
21124func (s ListObjectsInput) String() string {
21125	return awsutil.Prettify(s)
21126}
21127
21128// GoString returns the string representation
21129func (s ListObjectsInput) GoString() string {
21130	return s.String()
21131}
21132
21133// Validate inspects the fields of the type to determine if they are valid.
21134func (s *ListObjectsInput) Validate() error {
21135	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
21136	if s.Bucket == nil {
21137		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21138	}
21139	if s.Bucket != nil && len(*s.Bucket) < 1 {
21140		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21141	}
21142
21143	if invalidParams.Len() > 0 {
21144		return invalidParams
21145	}
21146	return nil
21147}
21148
21149// SetBucket sets the Bucket field's value.
21150func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
21151	s.Bucket = &v
21152	return s
21153}
21154
21155func (s *ListObjectsInput) getBucket() (v string) {
21156	if s.Bucket == nil {
21157		return v
21158	}
21159	return *s.Bucket
21160}
21161
21162// SetDelimiter sets the Delimiter field's value.
21163func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
21164	s.Delimiter = &v
21165	return s
21166}
21167
21168// SetEncodingType sets the EncodingType field's value.
21169func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
21170	s.EncodingType = &v
21171	return s
21172}
21173
21174// SetMarker sets the Marker field's value.
21175func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
21176	s.Marker = &v
21177	return s
21178}
21179
21180// SetMaxKeys sets the MaxKeys field's value.
21181func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
21182	s.MaxKeys = &v
21183	return s
21184}
21185
21186// SetPrefix sets the Prefix field's value.
21187func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
21188	s.Prefix = &v
21189	return s
21190}
21191
21192// SetRequestPayer sets the RequestPayer field's value.
21193func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
21194	s.RequestPayer = &v
21195	return s
21196}
21197
21198func (s *ListObjectsInput) getEndpointARN() (arn.Resource, error) {
21199	if s.Bucket == nil {
21200		return nil, fmt.Errorf("member Bucket is nil")
21201	}
21202	return parseEndpointARN(*s.Bucket)
21203}
21204
21205func (s *ListObjectsInput) hasEndpointARN() bool {
21206	if s.Bucket == nil {
21207		return false
21208	}
21209	return arn.IsARN(*s.Bucket)
21210}
21211
21212type ListObjectsOutput struct {
21213	_ struct{} `type:"structure"`
21214
21215	// All of the keys rolled up in a common prefix count as a single return when
21216	// calculating the number of returns.
21217	//
21218	// A response can contain CommonPrefixes only if you specify a delimiter.
21219	//
21220	// CommonPrefixes contains all (if there are any) keys between Prefix and the
21221	// next occurrence of the string specified by the delimiter.
21222	//
21223	// CommonPrefixes lists keys that act like subdirectories in the directory specified
21224	// by Prefix.
21225	//
21226	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
21227	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
21228	// that roll up into a common prefix count as a single return when calculating
21229	// the number of returns.
21230	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
21231
21232	// Metadata about each object returned.
21233	Contents []*Object `type:"list" flattened:"true"`
21234
21235	// Causes keys that contain the same string between the prefix and the first
21236	// occurrence of the delimiter to be rolled up into a single result element
21237	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
21238	// in the response. Each rolled-up result counts as only one return against
21239	// the MaxKeys value.
21240	Delimiter *string `type:"string"`
21241
21242	// Encoding type used by Amazon S3 to encode object keys in the response.
21243	EncodingType *string `type:"string" enum:"EncodingType"`
21244
21245	// A flag that indicates whether Amazon S3 returned all of the results that
21246	// satisfied the search criteria.
21247	IsTruncated *bool `type:"boolean"`
21248
21249	// Indicates where in the bucket listing begins. Marker is included in the response
21250	// if it was sent with the request.
21251	Marker *string `type:"string"`
21252
21253	// The maximum number of keys returned in the response body.
21254	MaxKeys *int64 `type:"integer"`
21255
21256	// Bucket name.
21257	Name *string `type:"string"`
21258
21259	// When response is truncated (the IsTruncated element value in the response
21260	// is true), you can use the key name in this field as marker in the subsequent
21261	// request to get next set of objects. Amazon S3 lists objects in alphabetical
21262	// order Note: This element is returned only if you have delimiter request parameter
21263	// specified. If response does not include the NextMaker and it is truncated,
21264	// you can use the value of the last Key in the response as the marker in the
21265	// subsequent request to get the next set of object keys.
21266	NextMarker *string `type:"string"`
21267
21268	// Keys that begin with the indicated prefix.
21269	Prefix *string `type:"string"`
21270}
21271
21272// String returns the string representation
21273func (s ListObjectsOutput) String() string {
21274	return awsutil.Prettify(s)
21275}
21276
21277// GoString returns the string representation
21278func (s ListObjectsOutput) GoString() string {
21279	return s.String()
21280}
21281
21282// SetCommonPrefixes sets the CommonPrefixes field's value.
21283func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
21284	s.CommonPrefixes = v
21285	return s
21286}
21287
21288// SetContents sets the Contents field's value.
21289func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
21290	s.Contents = v
21291	return s
21292}
21293
21294// SetDelimiter sets the Delimiter field's value.
21295func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
21296	s.Delimiter = &v
21297	return s
21298}
21299
21300// SetEncodingType sets the EncodingType field's value.
21301func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
21302	s.EncodingType = &v
21303	return s
21304}
21305
21306// SetIsTruncated sets the IsTruncated field's value.
21307func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
21308	s.IsTruncated = &v
21309	return s
21310}
21311
21312// SetMarker sets the Marker field's value.
21313func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
21314	s.Marker = &v
21315	return s
21316}
21317
21318// SetMaxKeys sets the MaxKeys field's value.
21319func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
21320	s.MaxKeys = &v
21321	return s
21322}
21323
21324// SetName sets the Name field's value.
21325func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
21326	s.Name = &v
21327	return s
21328}
21329
21330// SetNextMarker sets the NextMarker field's value.
21331func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
21332	s.NextMarker = &v
21333	return s
21334}
21335
21336// SetPrefix sets the Prefix field's value.
21337func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
21338	s.Prefix = &v
21339	return s
21340}
21341
21342type ListObjectsV2Input struct {
21343	_ struct{} `locationName:"ListObjectsV2Request" type:"structure"`
21344
21345	// Bucket name to list.
21346	//
21347	// When using this API with an access point, you must direct requests to the
21348	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21349	// When using this operation using an access point through the AWS SDKs, you
21350	// provide the access point ARN in place of the bucket name. For more information
21351	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21352	// in the Amazon Simple Storage Service Developer Guide.
21353	//
21354	// Bucket is a required field
21355	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21356
21357	// ContinuationToken indicates Amazon S3 that the list is being continued on
21358	// this bucket with a token. ContinuationToken is obfuscated and is not a real
21359	// key.
21360	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
21361
21362	// A delimiter is a character you use to group keys.
21363	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
21364
21365	// Encoding type used by Amazon S3 to encode object keys in the response.
21366	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
21367
21368	// The owner field is not present in listV2 by default, if you want to return
21369	// owner field with each key in the result then set the fetch owner field to
21370	// true.
21371	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
21372
21373	// Sets the maximum number of keys returned in the response. The response might
21374	// contain fewer keys but will never contain more.
21375	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
21376
21377	// Limits the response to keys that begin with the specified prefix.
21378	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
21379
21380	// Confirms that the requester knows that she or he will be charged for the
21381	// list objects request in V2 style. Bucket owners need not specify this parameter
21382	// in their requests.
21383	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21384
21385	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
21386	// listing after this specified key. StartAfter can be any key in the bucket.
21387	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
21388}
21389
21390// String returns the string representation
21391func (s ListObjectsV2Input) String() string {
21392	return awsutil.Prettify(s)
21393}
21394
21395// GoString returns the string representation
21396func (s ListObjectsV2Input) GoString() string {
21397	return s.String()
21398}
21399
21400// Validate inspects the fields of the type to determine if they are valid.
21401func (s *ListObjectsV2Input) Validate() error {
21402	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
21403	if s.Bucket == nil {
21404		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21405	}
21406	if s.Bucket != nil && len(*s.Bucket) < 1 {
21407		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21408	}
21409
21410	if invalidParams.Len() > 0 {
21411		return invalidParams
21412	}
21413	return nil
21414}
21415
21416// SetBucket sets the Bucket field's value.
21417func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
21418	s.Bucket = &v
21419	return s
21420}
21421
21422func (s *ListObjectsV2Input) getBucket() (v string) {
21423	if s.Bucket == nil {
21424		return v
21425	}
21426	return *s.Bucket
21427}
21428
21429// SetContinuationToken sets the ContinuationToken field's value.
21430func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
21431	s.ContinuationToken = &v
21432	return s
21433}
21434
21435// SetDelimiter sets the Delimiter field's value.
21436func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
21437	s.Delimiter = &v
21438	return s
21439}
21440
21441// SetEncodingType sets the EncodingType field's value.
21442func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
21443	s.EncodingType = &v
21444	return s
21445}
21446
21447// SetFetchOwner sets the FetchOwner field's value.
21448func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
21449	s.FetchOwner = &v
21450	return s
21451}
21452
21453// SetMaxKeys sets the MaxKeys field's value.
21454func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
21455	s.MaxKeys = &v
21456	return s
21457}
21458
21459// SetPrefix sets the Prefix field's value.
21460func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
21461	s.Prefix = &v
21462	return s
21463}
21464
21465// SetRequestPayer sets the RequestPayer field's value.
21466func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
21467	s.RequestPayer = &v
21468	return s
21469}
21470
21471// SetStartAfter sets the StartAfter field's value.
21472func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
21473	s.StartAfter = &v
21474	return s
21475}
21476
21477func (s *ListObjectsV2Input) getEndpointARN() (arn.Resource, error) {
21478	if s.Bucket == nil {
21479		return nil, fmt.Errorf("member Bucket is nil")
21480	}
21481	return parseEndpointARN(*s.Bucket)
21482}
21483
21484func (s *ListObjectsV2Input) hasEndpointARN() bool {
21485	if s.Bucket == nil {
21486		return false
21487	}
21488	return arn.IsARN(*s.Bucket)
21489}
21490
21491type ListObjectsV2Output struct {
21492	_ struct{} `type:"structure"`
21493
21494	// All of the keys rolled up into a common prefix count as a single return when
21495	// calculating the number of returns.
21496	//
21497	// A response can contain CommonPrefixes only if you specify a delimiter.
21498	//
21499	// CommonPrefixes contains all (if there are any) keys between Prefix and the
21500	// next occurrence of the string specified by a delimiter.
21501	//
21502	// CommonPrefixes lists keys that act like subdirectories in the directory specified
21503	// by Prefix.
21504	//
21505	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
21506	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
21507	// that roll up into a common prefix count as a single return when calculating
21508	// the number of returns.
21509	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
21510
21511	// Metadata about each object returned.
21512	Contents []*Object `type:"list" flattened:"true"`
21513
21514	// If ContinuationToken was sent with the request, it is included in the response.
21515	ContinuationToken *string `type:"string"`
21516
21517	// Causes keys that contain the same string between the prefix and the first
21518	// occurrence of the delimiter to be rolled up into a single result element
21519	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
21520	// in the response. Each rolled-up result counts as only one return against
21521	// the MaxKeys value.
21522	Delimiter *string `type:"string"`
21523
21524	// Encoding type used by Amazon S3 to encode object key names in the XML response.
21525	//
21526	// If you specify the encoding-type request parameter, Amazon S3 includes this
21527	// element in the response, and returns encoded key name values in the following
21528	// response elements:
21529	//
21530	// Delimiter, Prefix, Key, and StartAfter.
21531	EncodingType *string `type:"string" enum:"EncodingType"`
21532
21533	// Set to false if all of the results were returned. Set to true if more keys
21534	// are available to return. If the number of results exceeds that specified
21535	// by MaxKeys, all of the results might not be returned.
21536	IsTruncated *bool `type:"boolean"`
21537
21538	// KeyCount is the number of keys returned with this request. KeyCount will
21539	// always be less than equals to MaxKeys field. Say you ask for 50 keys, your
21540	// result will include less than equals 50 keys
21541	KeyCount *int64 `type:"integer"`
21542
21543	// Sets the maximum number of keys returned in the response. The response might
21544	// contain fewer keys but will never contain more.
21545	MaxKeys *int64 `type:"integer"`
21546
21547	// Bucket name.
21548	//
21549	// When using this API with an access point, you must direct requests to the
21550	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21551	// When using this operation using an access point through the AWS SDKs, you
21552	// provide the access point ARN in place of the bucket name. For more information
21553	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21554	// in the Amazon Simple Storage Service Developer Guide.
21555	Name *string `type:"string"`
21556
21557	// NextContinuationToken is sent when isTruncated is true, which means there
21558	// are more keys in the bucket that can be listed. The next list requests to
21559	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
21560	// is obfuscated and is not a real key
21561	NextContinuationToken *string `type:"string"`
21562
21563	// Keys that begin with the indicated prefix.
21564	Prefix *string `type:"string"`
21565
21566	// If StartAfter was sent with the request, it is included in the response.
21567	StartAfter *string `type:"string"`
21568}
21569
21570// String returns the string representation
21571func (s ListObjectsV2Output) String() string {
21572	return awsutil.Prettify(s)
21573}
21574
21575// GoString returns the string representation
21576func (s ListObjectsV2Output) GoString() string {
21577	return s.String()
21578}
21579
21580// SetCommonPrefixes sets the CommonPrefixes field's value.
21581func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
21582	s.CommonPrefixes = v
21583	return s
21584}
21585
21586// SetContents sets the Contents field's value.
21587func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
21588	s.Contents = v
21589	return s
21590}
21591
21592// SetContinuationToken sets the ContinuationToken field's value.
21593func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
21594	s.ContinuationToken = &v
21595	return s
21596}
21597
21598// SetDelimiter sets the Delimiter field's value.
21599func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
21600	s.Delimiter = &v
21601	return s
21602}
21603
21604// SetEncodingType sets the EncodingType field's value.
21605func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
21606	s.EncodingType = &v
21607	return s
21608}
21609
21610// SetIsTruncated sets the IsTruncated field's value.
21611func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
21612	s.IsTruncated = &v
21613	return s
21614}
21615
21616// SetKeyCount sets the KeyCount field's value.
21617func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
21618	s.KeyCount = &v
21619	return s
21620}
21621
21622// SetMaxKeys sets the MaxKeys field's value.
21623func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
21624	s.MaxKeys = &v
21625	return s
21626}
21627
21628// SetName sets the Name field's value.
21629func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
21630	s.Name = &v
21631	return s
21632}
21633
21634// SetNextContinuationToken sets the NextContinuationToken field's value.
21635func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
21636	s.NextContinuationToken = &v
21637	return s
21638}
21639
21640// SetPrefix sets the Prefix field's value.
21641func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
21642	s.Prefix = &v
21643	return s
21644}
21645
21646// SetStartAfter sets the StartAfter field's value.
21647func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
21648	s.StartAfter = &v
21649	return s
21650}
21651
21652type ListPartsInput struct {
21653	_ struct{} `locationName:"ListPartsRequest" type:"structure"`
21654
21655	// Name of the bucket to which the parts are being uploaded.
21656	//
21657	// When using this API with an access point, you must direct requests to the
21658	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21659	// When using this operation using an access point through the AWS SDKs, you
21660	// provide the access point ARN in place of the bucket name. For more information
21661	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
21662	// in the Amazon Simple Storage Service Developer Guide.
21663	//
21664	// Bucket is a required field
21665	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21666
21667	// Object key for which the multipart upload was initiated.
21668	//
21669	// Key is a required field
21670	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21671
21672	// Sets the maximum number of parts to return.
21673	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
21674
21675	// Specifies the part after which listing should begin. Only parts with higher
21676	// part numbers will be listed.
21677	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
21678
21679	// Confirms that the requester knows that she or he will be charged for the
21680	// request. Bucket owners need not specify this parameter in their requests.
21681	// For information about downloading objects from Requester Pays buckets, see
21682	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21683	// in the Amazon S3 Developer Guide.
21684	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21685
21686	// Upload ID identifying the multipart upload whose parts are being listed.
21687	//
21688	// UploadId is a required field
21689	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
21690}
21691
21692// String returns the string representation
21693func (s ListPartsInput) String() string {
21694	return awsutil.Prettify(s)
21695}
21696
21697// GoString returns the string representation
21698func (s ListPartsInput) GoString() string {
21699	return s.String()
21700}
21701
21702// Validate inspects the fields of the type to determine if they are valid.
21703func (s *ListPartsInput) Validate() error {
21704	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
21705	if s.Bucket == nil {
21706		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21707	}
21708	if s.Bucket != nil && len(*s.Bucket) < 1 {
21709		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21710	}
21711	if s.Key == nil {
21712		invalidParams.Add(request.NewErrParamRequired("Key"))
21713	}
21714	if s.Key != nil && len(*s.Key) < 1 {
21715		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21716	}
21717	if s.UploadId == nil {
21718		invalidParams.Add(request.NewErrParamRequired("UploadId"))
21719	}
21720
21721	if invalidParams.Len() > 0 {
21722		return invalidParams
21723	}
21724	return nil
21725}
21726
21727// SetBucket sets the Bucket field's value.
21728func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
21729	s.Bucket = &v
21730	return s
21731}
21732
21733func (s *ListPartsInput) getBucket() (v string) {
21734	if s.Bucket == nil {
21735		return v
21736	}
21737	return *s.Bucket
21738}
21739
21740// SetKey sets the Key field's value.
21741func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
21742	s.Key = &v
21743	return s
21744}
21745
21746// SetMaxParts sets the MaxParts field's value.
21747func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
21748	s.MaxParts = &v
21749	return s
21750}
21751
21752// SetPartNumberMarker sets the PartNumberMarker field's value.
21753func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
21754	s.PartNumberMarker = &v
21755	return s
21756}
21757
21758// SetRequestPayer sets the RequestPayer field's value.
21759func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
21760	s.RequestPayer = &v
21761	return s
21762}
21763
21764// SetUploadId sets the UploadId field's value.
21765func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
21766	s.UploadId = &v
21767	return s
21768}
21769
21770func (s *ListPartsInput) getEndpointARN() (arn.Resource, error) {
21771	if s.Bucket == nil {
21772		return nil, fmt.Errorf("member Bucket is nil")
21773	}
21774	return parseEndpointARN(*s.Bucket)
21775}
21776
21777func (s *ListPartsInput) hasEndpointARN() bool {
21778	if s.Bucket == nil {
21779		return false
21780	}
21781	return arn.IsARN(*s.Bucket)
21782}
21783
21784type ListPartsOutput struct {
21785	_ struct{} `type:"structure"`
21786
21787	// If the bucket has a lifecycle rule configured with an action to abort incomplete
21788	// multipart uploads and the prefix in the lifecycle rule matches the object
21789	// name in the request, then the response includes this header indicating when
21790	// the initiated multipart upload will become eligible for abort operation.
21791	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
21792	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
21793	//
21794	// The response will also include the x-amz-abort-rule-id header that will provide
21795	// the ID of the lifecycle configuration rule that defines this action.
21796	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
21797
21798	// This header is returned along with the x-amz-abort-date header. It identifies
21799	// applicable lifecycle configuration rule that defines the action to abort
21800	// incomplete multipart uploads.
21801	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
21802
21803	// Name of the bucket to which the multipart upload was initiated.
21804	Bucket *string `type:"string"`
21805
21806	// Container element that identifies who initiated the multipart upload. If
21807	// the initiator is an AWS account, this element provides the same information
21808	// as the Owner element. If the initiator is an IAM User, this element provides
21809	// the user ARN and display name.
21810	Initiator *Initiator `type:"structure"`
21811
21812	// Indicates whether the returned list of parts is truncated. A true value indicates
21813	// that the list was truncated. A list can be truncated if the number of parts
21814	// exceeds the limit returned in the MaxParts element.
21815	IsTruncated *bool `type:"boolean"`
21816
21817	// Object key for which the multipart upload was initiated.
21818	Key *string `min:"1" type:"string"`
21819
21820	// Maximum number of parts that were allowed in the response.
21821	MaxParts *int64 `type:"integer"`
21822
21823	// When a list is truncated, this element specifies the last part in the list,
21824	// as well as the value to use for the part-number-marker request parameter
21825	// in a subsequent request.
21826	NextPartNumberMarker *int64 `type:"integer"`
21827
21828	// Container element that identifies the object owner, after the object is created.
21829	// If multipart upload is initiated by an IAM user, this element provides the
21830	// parent account ID and display name.
21831	Owner *Owner `type:"structure"`
21832
21833	// When a list is truncated, this element specifies the last part in the list,
21834	// as well as the value to use for the part-number-marker request parameter
21835	// in a subsequent request.
21836	PartNumberMarker *int64 `type:"integer"`
21837
21838	// Container for elements related to a particular part. A response can contain
21839	// zero or more Part elements.
21840	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
21841
21842	// If present, indicates that the requester was successfully charged for the
21843	// request.
21844	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
21845
21846	// Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
21847	// object.
21848	StorageClass *string `type:"string" enum:"StorageClass"`
21849
21850	// Upload ID identifying the multipart upload whose parts are being listed.
21851	UploadId *string `type:"string"`
21852}
21853
21854// String returns the string representation
21855func (s ListPartsOutput) String() string {
21856	return awsutil.Prettify(s)
21857}
21858
21859// GoString returns the string representation
21860func (s ListPartsOutput) GoString() string {
21861	return s.String()
21862}
21863
21864// SetAbortDate sets the AbortDate field's value.
21865func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
21866	s.AbortDate = &v
21867	return s
21868}
21869
21870// SetAbortRuleId sets the AbortRuleId field's value.
21871func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
21872	s.AbortRuleId = &v
21873	return s
21874}
21875
21876// SetBucket sets the Bucket field's value.
21877func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
21878	s.Bucket = &v
21879	return s
21880}
21881
21882func (s *ListPartsOutput) getBucket() (v string) {
21883	if s.Bucket == nil {
21884		return v
21885	}
21886	return *s.Bucket
21887}
21888
21889// SetInitiator sets the Initiator field's value.
21890func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
21891	s.Initiator = v
21892	return s
21893}
21894
21895// SetIsTruncated sets the IsTruncated field's value.
21896func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
21897	s.IsTruncated = &v
21898	return s
21899}
21900
21901// SetKey sets the Key field's value.
21902func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
21903	s.Key = &v
21904	return s
21905}
21906
21907// SetMaxParts sets the MaxParts field's value.
21908func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
21909	s.MaxParts = &v
21910	return s
21911}
21912
21913// SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
21914func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
21915	s.NextPartNumberMarker = &v
21916	return s
21917}
21918
21919// SetOwner sets the Owner field's value.
21920func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
21921	s.Owner = v
21922	return s
21923}
21924
21925// SetPartNumberMarker sets the PartNumberMarker field's value.
21926func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
21927	s.PartNumberMarker = &v
21928	return s
21929}
21930
21931// SetParts sets the Parts field's value.
21932func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
21933	s.Parts = v
21934	return s
21935}
21936
21937// SetRequestCharged sets the RequestCharged field's value.
21938func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
21939	s.RequestCharged = &v
21940	return s
21941}
21942
21943// SetStorageClass sets the StorageClass field's value.
21944func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
21945	s.StorageClass = &v
21946	return s
21947}
21948
21949// SetUploadId sets the UploadId field's value.
21950func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
21951	s.UploadId = &v
21952	return s
21953}
21954
21955// Describes an Amazon S3 location that will receive the results of the restore
21956// request.
21957type Location struct {
21958	_ struct{} `type:"structure"`
21959
21960	// A list of grants that control access to the staged results.
21961	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
21962
21963	// The name of the bucket where the restore results will be placed.
21964	//
21965	// BucketName is a required field
21966	BucketName *string `type:"string" required:"true"`
21967
21968	// The canned ACL to apply to the restore results.
21969	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
21970
21971	// Contains the type of server-side encryption used.
21972	Encryption *Encryption `type:"structure"`
21973
21974	// The prefix that is prepended to the restore results for this request.
21975	//
21976	// Prefix is a required field
21977	Prefix *string `type:"string" required:"true"`
21978
21979	// The class of storage used to store the restore results.
21980	StorageClass *string `type:"string" enum:"StorageClass"`
21981
21982	// The tag-set that is applied to the restore results.
21983	Tagging *Tagging `type:"structure"`
21984
21985	// A list of metadata to store with the restore results in S3.
21986	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
21987}
21988
21989// String returns the string representation
21990func (s Location) String() string {
21991	return awsutil.Prettify(s)
21992}
21993
21994// GoString returns the string representation
21995func (s Location) GoString() string {
21996	return s.String()
21997}
21998
21999// Validate inspects the fields of the type to determine if they are valid.
22000func (s *Location) Validate() error {
22001	invalidParams := request.ErrInvalidParams{Context: "Location"}
22002	if s.BucketName == nil {
22003		invalidParams.Add(request.NewErrParamRequired("BucketName"))
22004	}
22005	if s.Prefix == nil {
22006		invalidParams.Add(request.NewErrParamRequired("Prefix"))
22007	}
22008	if s.AccessControlList != nil {
22009		for i, v := range s.AccessControlList {
22010			if v == nil {
22011				continue
22012			}
22013			if err := v.Validate(); err != nil {
22014				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
22015			}
22016		}
22017	}
22018	if s.Encryption != nil {
22019		if err := s.Encryption.Validate(); err != nil {
22020			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
22021		}
22022	}
22023	if s.Tagging != nil {
22024		if err := s.Tagging.Validate(); err != nil {
22025			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
22026		}
22027	}
22028
22029	if invalidParams.Len() > 0 {
22030		return invalidParams
22031	}
22032	return nil
22033}
22034
22035// SetAccessControlList sets the AccessControlList field's value.
22036func (s *Location) SetAccessControlList(v []*Grant) *Location {
22037	s.AccessControlList = v
22038	return s
22039}
22040
22041// SetBucketName sets the BucketName field's value.
22042func (s *Location) SetBucketName(v string) *Location {
22043	s.BucketName = &v
22044	return s
22045}
22046
22047// SetCannedACL sets the CannedACL field's value.
22048func (s *Location) SetCannedACL(v string) *Location {
22049	s.CannedACL = &v
22050	return s
22051}
22052
22053// SetEncryption sets the Encryption field's value.
22054func (s *Location) SetEncryption(v *Encryption) *Location {
22055	s.Encryption = v
22056	return s
22057}
22058
22059// SetPrefix sets the Prefix field's value.
22060func (s *Location) SetPrefix(v string) *Location {
22061	s.Prefix = &v
22062	return s
22063}
22064
22065// SetStorageClass sets the StorageClass field's value.
22066func (s *Location) SetStorageClass(v string) *Location {
22067	s.StorageClass = &v
22068	return s
22069}
22070
22071// SetTagging sets the Tagging field's value.
22072func (s *Location) SetTagging(v *Tagging) *Location {
22073	s.Tagging = v
22074	return s
22075}
22076
22077// SetUserMetadata sets the UserMetadata field's value.
22078func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
22079	s.UserMetadata = v
22080	return s
22081}
22082
22083// Describes where logs are stored and the prefix that Amazon S3 assigns to
22084// all log object keys for a bucket. For more information, see PUT Bucket logging
22085// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
22086// in the Amazon Simple Storage Service API Reference.
22087type LoggingEnabled struct {
22088	_ struct{} `type:"structure"`
22089
22090	// Specifies the bucket where you want Amazon S3 to store server access logs.
22091	// You can have your logs delivered to any bucket that you own, including the
22092	// same bucket that is being logged. You can also configure multiple buckets
22093	// to deliver their logs to the same target bucket. In this case, you should
22094	// choose a different TargetPrefix for each source bucket so that the delivered
22095	// log files can be distinguished by key.
22096	//
22097	// TargetBucket is a required field
22098	TargetBucket *string `type:"string" required:"true"`
22099
22100	// Container for granting information.
22101	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
22102
22103	// A prefix for all log object keys. If you store log files from multiple Amazon
22104	// S3 buckets in a single bucket, you can use a prefix to distinguish which
22105	// log files came from which bucket.
22106	//
22107	// TargetPrefix is a required field
22108	TargetPrefix *string `type:"string" required:"true"`
22109}
22110
22111// String returns the string representation
22112func (s LoggingEnabled) String() string {
22113	return awsutil.Prettify(s)
22114}
22115
22116// GoString returns the string representation
22117func (s LoggingEnabled) GoString() string {
22118	return s.String()
22119}
22120
22121// Validate inspects the fields of the type to determine if they are valid.
22122func (s *LoggingEnabled) Validate() error {
22123	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
22124	if s.TargetBucket == nil {
22125		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
22126	}
22127	if s.TargetPrefix == nil {
22128		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
22129	}
22130	if s.TargetGrants != nil {
22131		for i, v := range s.TargetGrants {
22132			if v == nil {
22133				continue
22134			}
22135			if err := v.Validate(); err != nil {
22136				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
22137			}
22138		}
22139	}
22140
22141	if invalidParams.Len() > 0 {
22142		return invalidParams
22143	}
22144	return nil
22145}
22146
22147// SetTargetBucket sets the TargetBucket field's value.
22148func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
22149	s.TargetBucket = &v
22150	return s
22151}
22152
22153// SetTargetGrants sets the TargetGrants field's value.
22154func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
22155	s.TargetGrants = v
22156	return s
22157}
22158
22159// SetTargetPrefix sets the TargetPrefix field's value.
22160func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
22161	s.TargetPrefix = &v
22162	return s
22163}
22164
22165// A metadata key-value pair to store with an object.
22166type MetadataEntry struct {
22167	_ struct{} `type:"structure"`
22168
22169	// Name of the Object.
22170	Name *string `type:"string"`
22171
22172	// Value of the Object.
22173	Value *string `type:"string"`
22174}
22175
22176// String returns the string representation
22177func (s MetadataEntry) String() string {
22178	return awsutil.Prettify(s)
22179}
22180
22181// GoString returns the string representation
22182func (s MetadataEntry) GoString() string {
22183	return s.String()
22184}
22185
22186// SetName sets the Name field's value.
22187func (s *MetadataEntry) SetName(v string) *MetadataEntry {
22188	s.Name = &v
22189	return s
22190}
22191
22192// SetValue sets the Value field's value.
22193func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
22194	s.Value = &v
22195	return s
22196}
22197
22198// A container specifying replication metrics-related settings enabling metrics
22199// and Amazon S3 events for S3 Replication Time Control (S3 RTC). Must be specified
22200// together with a ReplicationTime block.
22201type Metrics struct {
22202	_ struct{} `type:"structure"`
22203
22204	// A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold
22205	// event.
22206	//
22207	// EventThreshold is a required field
22208	EventThreshold *ReplicationTimeValue `type:"structure" required:"true"`
22209
22210	// Specifies whether the replication metrics are enabled.
22211	//
22212	// Status is a required field
22213	Status *string `type:"string" required:"true" enum:"MetricsStatus"`
22214}
22215
22216// String returns the string representation
22217func (s Metrics) String() string {
22218	return awsutil.Prettify(s)
22219}
22220
22221// GoString returns the string representation
22222func (s Metrics) GoString() string {
22223	return s.String()
22224}
22225
22226// Validate inspects the fields of the type to determine if they are valid.
22227func (s *Metrics) Validate() error {
22228	invalidParams := request.ErrInvalidParams{Context: "Metrics"}
22229	if s.EventThreshold == nil {
22230		invalidParams.Add(request.NewErrParamRequired("EventThreshold"))
22231	}
22232	if s.Status == nil {
22233		invalidParams.Add(request.NewErrParamRequired("Status"))
22234	}
22235
22236	if invalidParams.Len() > 0 {
22237		return invalidParams
22238	}
22239	return nil
22240}
22241
22242// SetEventThreshold sets the EventThreshold field's value.
22243func (s *Metrics) SetEventThreshold(v *ReplicationTimeValue) *Metrics {
22244	s.EventThreshold = v
22245	return s
22246}
22247
22248// SetStatus sets the Status field's value.
22249func (s *Metrics) SetStatus(v string) *Metrics {
22250	s.Status = &v
22251	return s
22252}
22253
22254// A conjunction (logical AND) of predicates, which is used in evaluating a
22255// metrics filter. The operator must have at least two predicates, and an object
22256// must match all of the predicates in order for the filter to apply.
22257type MetricsAndOperator struct {
22258	_ struct{} `type:"structure"`
22259
22260	// The prefix used when evaluating an AND predicate.
22261	Prefix *string `type:"string"`
22262
22263	// The list of tags used when evaluating an AND predicate.
22264	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
22265}
22266
22267// String returns the string representation
22268func (s MetricsAndOperator) String() string {
22269	return awsutil.Prettify(s)
22270}
22271
22272// GoString returns the string representation
22273func (s MetricsAndOperator) GoString() string {
22274	return s.String()
22275}
22276
22277// Validate inspects the fields of the type to determine if they are valid.
22278func (s *MetricsAndOperator) Validate() error {
22279	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
22280	if s.Tags != nil {
22281		for i, v := range s.Tags {
22282			if v == nil {
22283				continue
22284			}
22285			if err := v.Validate(); err != nil {
22286				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
22287			}
22288		}
22289	}
22290
22291	if invalidParams.Len() > 0 {
22292		return invalidParams
22293	}
22294	return nil
22295}
22296
22297// SetPrefix sets the Prefix field's value.
22298func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
22299	s.Prefix = &v
22300	return s
22301}
22302
22303// SetTags sets the Tags field's value.
22304func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
22305	s.Tags = v
22306	return s
22307}
22308
22309// Specifies a metrics configuration for the CloudWatch request metrics (specified
22310// by the metrics configuration ID) from an Amazon S3 bucket. If you're updating
22311// an existing metrics configuration, note that this is a full replacement of
22312// the existing metrics configuration. If you don't include the elements you
22313// want to keep, they are erased. For more information, see PUT Bucket metrics
22314// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html)
22315// in the Amazon Simple Storage Service API Reference.
22316type MetricsConfiguration struct {
22317	_ struct{} `type:"structure"`
22318
22319	// Specifies a metrics configuration filter. The metrics configuration will
22320	// only include objects that meet the filter's criteria. A filter must be a
22321	// prefix, a tag, or a conjunction (MetricsAndOperator).
22322	Filter *MetricsFilter `type:"structure"`
22323
22324	// The ID used to identify the metrics configuration.
22325	//
22326	// Id is a required field
22327	Id *string `type:"string" required:"true"`
22328}
22329
22330// String returns the string representation
22331func (s MetricsConfiguration) String() string {
22332	return awsutil.Prettify(s)
22333}
22334
22335// GoString returns the string representation
22336func (s MetricsConfiguration) GoString() string {
22337	return s.String()
22338}
22339
22340// Validate inspects the fields of the type to determine if they are valid.
22341func (s *MetricsConfiguration) Validate() error {
22342	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
22343	if s.Id == nil {
22344		invalidParams.Add(request.NewErrParamRequired("Id"))
22345	}
22346	if s.Filter != nil {
22347		if err := s.Filter.Validate(); err != nil {
22348			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
22349		}
22350	}
22351
22352	if invalidParams.Len() > 0 {
22353		return invalidParams
22354	}
22355	return nil
22356}
22357
22358// SetFilter sets the Filter field's value.
22359func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
22360	s.Filter = v
22361	return s
22362}
22363
22364// SetId sets the Id field's value.
22365func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
22366	s.Id = &v
22367	return s
22368}
22369
22370// Specifies a metrics configuration filter. The metrics configuration only
22371// includes objects that meet the filter's criteria. A filter must be a prefix,
22372// a tag, or a conjunction (MetricsAndOperator).
22373type MetricsFilter struct {
22374	_ struct{} `type:"structure"`
22375
22376	// A conjunction (logical AND) of predicates, which is used in evaluating a
22377	// metrics filter. The operator must have at least two predicates, and an object
22378	// must match all of the predicates in order for the filter to apply.
22379	And *MetricsAndOperator `type:"structure"`
22380
22381	// The prefix used when evaluating a metrics filter.
22382	Prefix *string `type:"string"`
22383
22384	// The tag used when evaluating a metrics filter.
22385	Tag *Tag `type:"structure"`
22386}
22387
22388// String returns the string representation
22389func (s MetricsFilter) String() string {
22390	return awsutil.Prettify(s)
22391}
22392
22393// GoString returns the string representation
22394func (s MetricsFilter) GoString() string {
22395	return s.String()
22396}
22397
22398// Validate inspects the fields of the type to determine if they are valid.
22399func (s *MetricsFilter) Validate() error {
22400	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
22401	if s.And != nil {
22402		if err := s.And.Validate(); err != nil {
22403			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
22404		}
22405	}
22406	if s.Tag != nil {
22407		if err := s.Tag.Validate(); err != nil {
22408			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
22409		}
22410	}
22411
22412	if invalidParams.Len() > 0 {
22413		return invalidParams
22414	}
22415	return nil
22416}
22417
22418// SetAnd sets the And field's value.
22419func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
22420	s.And = v
22421	return s
22422}
22423
22424// SetPrefix sets the Prefix field's value.
22425func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
22426	s.Prefix = &v
22427	return s
22428}
22429
22430// SetTag sets the Tag field's value.
22431func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
22432	s.Tag = v
22433	return s
22434}
22435
22436// Container for the MultipartUpload for the Amazon S3 object.
22437type MultipartUpload struct {
22438	_ struct{} `type:"structure"`
22439
22440	// Date and time at which the multipart upload was initiated.
22441	Initiated *time.Time `type:"timestamp"`
22442
22443	// Identifies who initiated the multipart upload.
22444	Initiator *Initiator `type:"structure"`
22445
22446	// Key of the object for which the multipart upload was initiated.
22447	Key *string `min:"1" type:"string"`
22448
22449	// Specifies the owner of the object that is part of the multipart upload.
22450	Owner *Owner `type:"structure"`
22451
22452	// The class of storage used to store the object.
22453	StorageClass *string `type:"string" enum:"StorageClass"`
22454
22455	// Upload ID that identifies the multipart upload.
22456	UploadId *string `type:"string"`
22457}
22458
22459// String returns the string representation
22460func (s MultipartUpload) String() string {
22461	return awsutil.Prettify(s)
22462}
22463
22464// GoString returns the string representation
22465func (s MultipartUpload) GoString() string {
22466	return s.String()
22467}
22468
22469// SetInitiated sets the Initiated field's value.
22470func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
22471	s.Initiated = &v
22472	return s
22473}
22474
22475// SetInitiator sets the Initiator field's value.
22476func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
22477	s.Initiator = v
22478	return s
22479}
22480
22481// SetKey sets the Key field's value.
22482func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
22483	s.Key = &v
22484	return s
22485}
22486
22487// SetOwner sets the Owner field's value.
22488func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
22489	s.Owner = v
22490	return s
22491}
22492
22493// SetStorageClass sets the StorageClass field's value.
22494func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
22495	s.StorageClass = &v
22496	return s
22497}
22498
22499// SetUploadId sets the UploadId field's value.
22500func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
22501	s.UploadId = &v
22502	return s
22503}
22504
22505// Specifies when noncurrent object versions expire. Upon expiration, Amazon
22506// S3 permanently deletes the noncurrent object versions. You set this lifecycle
22507// configuration action on a bucket that has versioning enabled (or suspended)
22508// to request that Amazon S3 delete noncurrent object versions at a specific
22509// period in the object's lifetime.
22510type NoncurrentVersionExpiration struct {
22511	_ struct{} `type:"structure"`
22512
22513	// Specifies the number of days an object is noncurrent before Amazon S3 can
22514	// perform the associated action. For information about the noncurrent days
22515	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
22516	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
22517	// in the Amazon Simple Storage Service Developer Guide.
22518	NoncurrentDays *int64 `type:"integer"`
22519}
22520
22521// String returns the string representation
22522func (s NoncurrentVersionExpiration) String() string {
22523	return awsutil.Prettify(s)
22524}
22525
22526// GoString returns the string representation
22527func (s NoncurrentVersionExpiration) GoString() string {
22528	return s.String()
22529}
22530
22531// SetNoncurrentDays sets the NoncurrentDays field's value.
22532func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
22533	s.NoncurrentDays = &v
22534	return s
22535}
22536
22537// Container for the transition rule that describes when noncurrent objects
22538// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
22539// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
22540// is suspended), you can set this action to request that Amazon S3 transition
22541// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
22542// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
22543// lifetime.
22544type NoncurrentVersionTransition struct {
22545	_ struct{} `type:"structure"`
22546
22547	// Specifies the number of days an object is noncurrent before Amazon S3 can
22548	// perform the associated action. For information about the noncurrent days
22549	// calculations, see How Amazon S3 Calculates How Long an Object Has Been Noncurrent
22550	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
22551	// in the Amazon Simple Storage Service Developer Guide.
22552	NoncurrentDays *int64 `type:"integer"`
22553
22554	// The class of storage used to store the object.
22555	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
22556}
22557
22558// String returns the string representation
22559func (s NoncurrentVersionTransition) String() string {
22560	return awsutil.Prettify(s)
22561}
22562
22563// GoString returns the string representation
22564func (s NoncurrentVersionTransition) GoString() string {
22565	return s.String()
22566}
22567
22568// SetNoncurrentDays sets the NoncurrentDays field's value.
22569func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
22570	s.NoncurrentDays = &v
22571	return s
22572}
22573
22574// SetStorageClass sets the StorageClass field's value.
22575func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
22576	s.StorageClass = &v
22577	return s
22578}
22579
22580// A container for specifying the notification configuration of the bucket.
22581// If this element is empty, notifications are turned off for the bucket.
22582type NotificationConfiguration struct {
22583	_ struct{} `type:"structure"`
22584
22585	// Describes the AWS Lambda functions to invoke and the events for which to
22586	// invoke them.
22587	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
22588
22589	// The Amazon Simple Queue Service queues to publish messages to and the events
22590	// for which to publish messages.
22591	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
22592
22593	// The topic to which notifications are sent and the events for which notifications
22594	// are generated.
22595	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
22596}
22597
22598// String returns the string representation
22599func (s NotificationConfiguration) String() string {
22600	return awsutil.Prettify(s)
22601}
22602
22603// GoString returns the string representation
22604func (s NotificationConfiguration) GoString() string {
22605	return s.String()
22606}
22607
22608// Validate inspects the fields of the type to determine if they are valid.
22609func (s *NotificationConfiguration) Validate() error {
22610	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
22611	if s.LambdaFunctionConfigurations != nil {
22612		for i, v := range s.LambdaFunctionConfigurations {
22613			if v == nil {
22614				continue
22615			}
22616			if err := v.Validate(); err != nil {
22617				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
22618			}
22619		}
22620	}
22621	if s.QueueConfigurations != nil {
22622		for i, v := range s.QueueConfigurations {
22623			if v == nil {
22624				continue
22625			}
22626			if err := v.Validate(); err != nil {
22627				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
22628			}
22629		}
22630	}
22631	if s.TopicConfigurations != nil {
22632		for i, v := range s.TopicConfigurations {
22633			if v == nil {
22634				continue
22635			}
22636			if err := v.Validate(); err != nil {
22637				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
22638			}
22639		}
22640	}
22641
22642	if invalidParams.Len() > 0 {
22643		return invalidParams
22644	}
22645	return nil
22646}
22647
22648// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
22649func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
22650	s.LambdaFunctionConfigurations = v
22651	return s
22652}
22653
22654// SetQueueConfigurations sets the QueueConfigurations field's value.
22655func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
22656	s.QueueConfigurations = v
22657	return s
22658}
22659
22660// SetTopicConfigurations sets the TopicConfigurations field's value.
22661func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
22662	s.TopicConfigurations = v
22663	return s
22664}
22665
22666type NotificationConfigurationDeprecated struct {
22667	_ struct{} `type:"structure"`
22668
22669	// Container for specifying the AWS Lambda notification configuration.
22670	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
22671
22672	// This data type is deprecated. This data type specifies the configuration
22673	// for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue
22674	// when Amazon S3 detects specified events.
22675	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
22676
22677	// This data type is deprecated. A container for specifying the configuration
22678	// for publication of messages to an Amazon Simple Notification Service (Amazon
22679	// SNS) topic when Amazon S3 detects specified events.
22680	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
22681}
22682
22683// String returns the string representation
22684func (s NotificationConfigurationDeprecated) String() string {
22685	return awsutil.Prettify(s)
22686}
22687
22688// GoString returns the string representation
22689func (s NotificationConfigurationDeprecated) GoString() string {
22690	return s.String()
22691}
22692
22693// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
22694func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
22695	s.CloudFunctionConfiguration = v
22696	return s
22697}
22698
22699// SetQueueConfiguration sets the QueueConfiguration field's value.
22700func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
22701	s.QueueConfiguration = v
22702	return s
22703}
22704
22705// SetTopicConfiguration sets the TopicConfiguration field's value.
22706func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
22707	s.TopicConfiguration = v
22708	return s
22709}
22710
22711// Specifies object key name filtering rules. For information about key name
22712// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
22713// in the Amazon Simple Storage Service Developer Guide.
22714type NotificationConfigurationFilter struct {
22715	_ struct{} `type:"structure"`
22716
22717	// A container for object key name prefix and suffix filtering rules.
22718	Key *KeyFilter `locationName:"S3Key" type:"structure"`
22719}
22720
22721// String returns the string representation
22722func (s NotificationConfigurationFilter) String() string {
22723	return awsutil.Prettify(s)
22724}
22725
22726// GoString returns the string representation
22727func (s NotificationConfigurationFilter) GoString() string {
22728	return s.String()
22729}
22730
22731// SetKey sets the Key field's value.
22732func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
22733	s.Key = v
22734	return s
22735}
22736
22737// An object consists of data and its descriptive metadata.
22738type Object struct {
22739	_ struct{} `type:"structure"`
22740
22741	// The entity tag is an MD5 hash of the object. ETag reflects only changes to
22742	// the contents of an object, not its metadata.
22743	ETag *string `type:"string"`
22744
22745	// The name that you assign to an object. You use the object key to retrieve
22746	// the object.
22747	Key *string `min:"1" type:"string"`
22748
22749	// The date the Object was Last Modified
22750	LastModified *time.Time `type:"timestamp"`
22751
22752	// The owner of the object
22753	Owner *Owner `type:"structure"`
22754
22755	// Size in bytes of the object
22756	Size *int64 `type:"integer"`
22757
22758	// The class of storage used to store the object.
22759	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
22760}
22761
22762// String returns the string representation
22763func (s Object) String() string {
22764	return awsutil.Prettify(s)
22765}
22766
22767// GoString returns the string representation
22768func (s Object) GoString() string {
22769	return s.String()
22770}
22771
22772// SetETag sets the ETag field's value.
22773func (s *Object) SetETag(v string) *Object {
22774	s.ETag = &v
22775	return s
22776}
22777
22778// SetKey sets the Key field's value.
22779func (s *Object) SetKey(v string) *Object {
22780	s.Key = &v
22781	return s
22782}
22783
22784// SetLastModified sets the LastModified field's value.
22785func (s *Object) SetLastModified(v time.Time) *Object {
22786	s.LastModified = &v
22787	return s
22788}
22789
22790// SetOwner sets the Owner field's value.
22791func (s *Object) SetOwner(v *Owner) *Object {
22792	s.Owner = v
22793	return s
22794}
22795
22796// SetSize sets the Size field's value.
22797func (s *Object) SetSize(v int64) *Object {
22798	s.Size = &v
22799	return s
22800}
22801
22802// SetStorageClass sets the StorageClass field's value.
22803func (s *Object) SetStorageClass(v string) *Object {
22804	s.StorageClass = &v
22805	return s
22806}
22807
22808// Object Identifier is unique value to identify objects.
22809type ObjectIdentifier struct {
22810	_ struct{} `type:"structure"`
22811
22812	// Key name of the object to delete.
22813	//
22814	// Key is a required field
22815	Key *string `min:"1" type:"string" required:"true"`
22816
22817	// VersionId for the specific version of the object to delete.
22818	VersionId *string `type:"string"`
22819}
22820
22821// String returns the string representation
22822func (s ObjectIdentifier) String() string {
22823	return awsutil.Prettify(s)
22824}
22825
22826// GoString returns the string representation
22827func (s ObjectIdentifier) GoString() string {
22828	return s.String()
22829}
22830
22831// Validate inspects the fields of the type to determine if they are valid.
22832func (s *ObjectIdentifier) Validate() error {
22833	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
22834	if s.Key == nil {
22835		invalidParams.Add(request.NewErrParamRequired("Key"))
22836	}
22837	if s.Key != nil && len(*s.Key) < 1 {
22838		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22839	}
22840
22841	if invalidParams.Len() > 0 {
22842		return invalidParams
22843	}
22844	return nil
22845}
22846
22847// SetKey sets the Key field's value.
22848func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
22849	s.Key = &v
22850	return s
22851}
22852
22853// SetVersionId sets the VersionId field's value.
22854func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
22855	s.VersionId = &v
22856	return s
22857}
22858
22859// The container element for Object Lock configuration parameters.
22860type ObjectLockConfiguration struct {
22861	_ struct{} `type:"structure"`
22862
22863	// Indicates whether this bucket has an Object Lock configuration enabled.
22864	ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"`
22865
22866	// The Object Lock rule in place for the specified object.
22867	Rule *ObjectLockRule `type:"structure"`
22868}
22869
22870// String returns the string representation
22871func (s ObjectLockConfiguration) String() string {
22872	return awsutil.Prettify(s)
22873}
22874
22875// GoString returns the string representation
22876func (s ObjectLockConfiguration) GoString() string {
22877	return s.String()
22878}
22879
22880// SetObjectLockEnabled sets the ObjectLockEnabled field's value.
22881func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration {
22882	s.ObjectLockEnabled = &v
22883	return s
22884}
22885
22886// SetRule sets the Rule field's value.
22887func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration {
22888	s.Rule = v
22889	return s
22890}
22891
22892// A Legal Hold configuration for an object.
22893type ObjectLockLegalHold struct {
22894	_ struct{} `type:"structure"`
22895
22896	// Indicates whether the specified object has a Legal Hold in place.
22897	Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"`
22898}
22899
22900// String returns the string representation
22901func (s ObjectLockLegalHold) String() string {
22902	return awsutil.Prettify(s)
22903}
22904
22905// GoString returns the string representation
22906func (s ObjectLockLegalHold) GoString() string {
22907	return s.String()
22908}
22909
22910// SetStatus sets the Status field's value.
22911func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold {
22912	s.Status = &v
22913	return s
22914}
22915
22916// A Retention configuration for an object.
22917type ObjectLockRetention struct {
22918	_ struct{} `type:"structure"`
22919
22920	// Indicates the Retention mode for the specified object.
22921	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
22922
22923	// The date on which this Object Lock Retention will expire.
22924	RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
22925}
22926
22927// String returns the string representation
22928func (s ObjectLockRetention) String() string {
22929	return awsutil.Prettify(s)
22930}
22931
22932// GoString returns the string representation
22933func (s ObjectLockRetention) GoString() string {
22934	return s.String()
22935}
22936
22937// SetMode sets the Mode field's value.
22938func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention {
22939	s.Mode = &v
22940	return s
22941}
22942
22943// SetRetainUntilDate sets the RetainUntilDate field's value.
22944func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention {
22945	s.RetainUntilDate = &v
22946	return s
22947}
22948
22949// The container element for an Object Lock rule.
22950type ObjectLockRule struct {
22951	_ struct{} `type:"structure"`
22952
22953	// The default retention period that you want to apply to new objects placed
22954	// in the specified bucket.
22955	DefaultRetention *DefaultRetention `type:"structure"`
22956}
22957
22958// String returns the string representation
22959func (s ObjectLockRule) String() string {
22960	return awsutil.Prettify(s)
22961}
22962
22963// GoString returns the string representation
22964func (s ObjectLockRule) GoString() string {
22965	return s.String()
22966}
22967
22968// SetDefaultRetention sets the DefaultRetention field's value.
22969func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule {
22970	s.DefaultRetention = v
22971	return s
22972}
22973
22974// The version of an object.
22975type ObjectVersion struct {
22976	_ struct{} `type:"structure"`
22977
22978	// The entity tag is an MD5 hash of that version of the object.
22979	ETag *string `type:"string"`
22980
22981	// Specifies whether the object is (true) or is not (false) the latest version
22982	// of an object.
22983	IsLatest *bool `type:"boolean"`
22984
22985	// The object key.
22986	Key *string `min:"1" type:"string"`
22987
22988	// Date and time the object was last modified.
22989	LastModified *time.Time `type:"timestamp"`
22990
22991	// Specifies the owner of the object.
22992	Owner *Owner `type:"structure"`
22993
22994	// Size in bytes of the object.
22995	Size *int64 `type:"integer"`
22996
22997	// The class of storage used to store the object.
22998	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
22999
23000	// Version ID of an object.
23001	VersionId *string `type:"string"`
23002}
23003
23004// String returns the string representation
23005func (s ObjectVersion) String() string {
23006	return awsutil.Prettify(s)
23007}
23008
23009// GoString returns the string representation
23010func (s ObjectVersion) GoString() string {
23011	return s.String()
23012}
23013
23014// SetETag sets the ETag field's value.
23015func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
23016	s.ETag = &v
23017	return s
23018}
23019
23020// SetIsLatest sets the IsLatest field's value.
23021func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
23022	s.IsLatest = &v
23023	return s
23024}
23025
23026// SetKey sets the Key field's value.
23027func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
23028	s.Key = &v
23029	return s
23030}
23031
23032// SetLastModified sets the LastModified field's value.
23033func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
23034	s.LastModified = &v
23035	return s
23036}
23037
23038// SetOwner sets the Owner field's value.
23039func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
23040	s.Owner = v
23041	return s
23042}
23043
23044// SetSize sets the Size field's value.
23045func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
23046	s.Size = &v
23047	return s
23048}
23049
23050// SetStorageClass sets the StorageClass field's value.
23051func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
23052	s.StorageClass = &v
23053	return s
23054}
23055
23056// SetVersionId sets the VersionId field's value.
23057func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
23058	s.VersionId = &v
23059	return s
23060}
23061
23062// Describes the location where the restore job's output is stored.
23063type OutputLocation struct {
23064	_ struct{} `type:"structure"`
23065
23066	// Describes an S3 location that will receive the results of the restore request.
23067	S3 *Location `type:"structure"`
23068}
23069
23070// String returns the string representation
23071func (s OutputLocation) String() string {
23072	return awsutil.Prettify(s)
23073}
23074
23075// GoString returns the string representation
23076func (s OutputLocation) GoString() string {
23077	return s.String()
23078}
23079
23080// Validate inspects the fields of the type to determine if they are valid.
23081func (s *OutputLocation) Validate() error {
23082	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
23083	if s.S3 != nil {
23084		if err := s.S3.Validate(); err != nil {
23085			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
23086		}
23087	}
23088
23089	if invalidParams.Len() > 0 {
23090		return invalidParams
23091	}
23092	return nil
23093}
23094
23095// SetS3 sets the S3 field's value.
23096func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
23097	s.S3 = v
23098	return s
23099}
23100
23101// Describes how results of the Select job are serialized.
23102type OutputSerialization struct {
23103	_ struct{} `type:"structure"`
23104
23105	// Describes the serialization of CSV-encoded Select results.
23106	CSV *CSVOutput `type:"structure"`
23107
23108	// Specifies JSON as request's output serialization format.
23109	JSON *JSONOutput `type:"structure"`
23110}
23111
23112// String returns the string representation
23113func (s OutputSerialization) String() string {
23114	return awsutil.Prettify(s)
23115}
23116
23117// GoString returns the string representation
23118func (s OutputSerialization) GoString() string {
23119	return s.String()
23120}
23121
23122// SetCSV sets the CSV field's value.
23123func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
23124	s.CSV = v
23125	return s
23126}
23127
23128// SetJSON sets the JSON field's value.
23129func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
23130	s.JSON = v
23131	return s
23132}
23133
23134// Container for the owner's display name and ID.
23135type Owner struct {
23136	_ struct{} `type:"structure"`
23137
23138	// Container for the display name of the owner.
23139	DisplayName *string `type:"string"`
23140
23141	// Container for the ID of the owner.
23142	ID *string `type:"string"`
23143}
23144
23145// String returns the string representation
23146func (s Owner) String() string {
23147	return awsutil.Prettify(s)
23148}
23149
23150// GoString returns the string representation
23151func (s Owner) GoString() string {
23152	return s.String()
23153}
23154
23155// SetDisplayName sets the DisplayName field's value.
23156func (s *Owner) SetDisplayName(v string) *Owner {
23157	s.DisplayName = &v
23158	return s
23159}
23160
23161// SetID sets the ID field's value.
23162func (s *Owner) SetID(v string) *Owner {
23163	s.ID = &v
23164	return s
23165}
23166
23167// Container for Parquet.
23168type ParquetInput struct {
23169	_ struct{} `type:"structure"`
23170}
23171
23172// String returns the string representation
23173func (s ParquetInput) String() string {
23174	return awsutil.Prettify(s)
23175}
23176
23177// GoString returns the string representation
23178func (s ParquetInput) GoString() string {
23179	return s.String()
23180}
23181
23182// Container for elements related to a part.
23183type Part struct {
23184	_ struct{} `type:"structure"`
23185
23186	// Entity tag returned when the part was uploaded.
23187	ETag *string `type:"string"`
23188
23189	// Date and time at which the part was uploaded.
23190	LastModified *time.Time `type:"timestamp"`
23191
23192	// Part number identifying the part. This is a positive integer between 1 and
23193	// 10,000.
23194	PartNumber *int64 `type:"integer"`
23195
23196	// Size in bytes of the uploaded part data.
23197	Size *int64 `type:"integer"`
23198}
23199
23200// String returns the string representation
23201func (s Part) String() string {
23202	return awsutil.Prettify(s)
23203}
23204
23205// GoString returns the string representation
23206func (s Part) GoString() string {
23207	return s.String()
23208}
23209
23210// SetETag sets the ETag field's value.
23211func (s *Part) SetETag(v string) *Part {
23212	s.ETag = &v
23213	return s
23214}
23215
23216// SetLastModified sets the LastModified field's value.
23217func (s *Part) SetLastModified(v time.Time) *Part {
23218	s.LastModified = &v
23219	return s
23220}
23221
23222// SetPartNumber sets the PartNumber field's value.
23223func (s *Part) SetPartNumber(v int64) *Part {
23224	s.PartNumber = &v
23225	return s
23226}
23227
23228// SetSize sets the Size field's value.
23229func (s *Part) SetSize(v int64) *Part {
23230	s.Size = &v
23231	return s
23232}
23233
23234// The container element for a bucket's policy status.
23235type PolicyStatus struct {
23236	_ struct{} `type:"structure"`
23237
23238	// The policy status for this bucket. TRUE indicates that this bucket is public.
23239	// FALSE indicates that the bucket is not public.
23240	IsPublic *bool `locationName:"IsPublic" type:"boolean"`
23241}
23242
23243// String returns the string representation
23244func (s PolicyStatus) String() string {
23245	return awsutil.Prettify(s)
23246}
23247
23248// GoString returns the string representation
23249func (s PolicyStatus) GoString() string {
23250	return s.String()
23251}
23252
23253// SetIsPublic sets the IsPublic field's value.
23254func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus {
23255	s.IsPublic = &v
23256	return s
23257}
23258
23259// This data type contains information about progress of an operation.
23260type Progress struct {
23261	_ struct{} `type:"structure"`
23262
23263	// The current number of uncompressed object bytes processed.
23264	BytesProcessed *int64 `type:"long"`
23265
23266	// The current number of bytes of records payload data returned.
23267	BytesReturned *int64 `type:"long"`
23268
23269	// The current number of object bytes scanned.
23270	BytesScanned *int64 `type:"long"`
23271}
23272
23273// String returns the string representation
23274func (s Progress) String() string {
23275	return awsutil.Prettify(s)
23276}
23277
23278// GoString returns the string representation
23279func (s Progress) GoString() string {
23280	return s.String()
23281}
23282
23283// SetBytesProcessed sets the BytesProcessed field's value.
23284func (s *Progress) SetBytesProcessed(v int64) *Progress {
23285	s.BytesProcessed = &v
23286	return s
23287}
23288
23289// SetBytesReturned sets the BytesReturned field's value.
23290func (s *Progress) SetBytesReturned(v int64) *Progress {
23291	s.BytesReturned = &v
23292	return s
23293}
23294
23295// SetBytesScanned sets the BytesScanned field's value.
23296func (s *Progress) SetBytesScanned(v int64) *Progress {
23297	s.BytesScanned = &v
23298	return s
23299}
23300
23301// This data type contains information about the progress event of an operation.
23302type ProgressEvent struct {
23303	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
23304
23305	// The Progress event details.
23306	Details *Progress `locationName:"Details" type:"structure"`
23307}
23308
23309// String returns the string representation
23310func (s ProgressEvent) String() string {
23311	return awsutil.Prettify(s)
23312}
23313
23314// GoString returns the string representation
23315func (s ProgressEvent) GoString() string {
23316	return s.String()
23317}
23318
23319// SetDetails sets the Details field's value.
23320func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
23321	s.Details = v
23322	return s
23323}
23324
23325// The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
23326func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
23327
23328// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
23329// This method is only used internally within the SDK's EventStream handling.
23330func (s *ProgressEvent) UnmarshalEvent(
23331	payloadUnmarshaler protocol.PayloadUnmarshaler,
23332	msg eventstream.Message,
23333) error {
23334	if err := payloadUnmarshaler.UnmarshalPayload(
23335		bytes.NewReader(msg.Payload), s,
23336	); err != nil {
23337		return err
23338	}
23339	return nil
23340}
23341
23342// The PublicAccessBlock configuration that you want to apply to this Amazon
23343// S3 bucket. You can enable the configuration options in any combination. For
23344// more information about when Amazon S3 considers a bucket or object public,
23345// 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)
23346// in the Amazon Simple Storage Service Developer Guide.
23347type PublicAccessBlockConfiguration struct {
23348	_ struct{} `type:"structure"`
23349
23350	// Specifies whether Amazon S3 should block public access control lists (ACLs)
23351	// for this bucket and objects in this bucket. Setting this element to TRUE
23352	// causes the following behavior:
23353	//
23354	//    * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is
23355	//    public.
23356	//
23357	//    * PUT Object calls fail if the request includes a public ACL.
23358	//
23359	//    * PUT Bucket calls fail if the request includes a public ACL.
23360	//
23361	// Enabling this setting doesn't affect existing policies or ACLs.
23362	BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"`
23363
23364	// Specifies whether Amazon S3 should block public bucket policies for this
23365	// bucket. Setting this element to TRUE causes Amazon S3 to reject calls to
23366	// PUT Bucket policy if the specified bucket policy allows public access.
23367	//
23368	// Enabling this setting doesn't affect existing bucket policies.
23369	BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"`
23370
23371	// Specifies whether Amazon S3 should ignore public ACLs for this bucket and
23372	// objects in this bucket. Setting this element to TRUE causes Amazon S3 to
23373	// ignore all public ACLs on this bucket and objects in this bucket.
23374	//
23375	// Enabling this setting doesn't affect the persistence of any existing ACLs
23376	// and doesn't prevent new public ACLs from being set.
23377	IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"`
23378
23379	// Specifies whether Amazon S3 should restrict public bucket policies for this
23380	// bucket. Setting this element to TRUE restricts access to this bucket to only
23381	// AWS services and authorized users within this account if the bucket has a
23382	// public policy.
23383	//
23384	// Enabling this setting doesn't affect previously stored bucket policies, except
23385	// that public and cross-account access within any public bucket policy, including
23386	// non-public delegation to specific accounts, is blocked.
23387	RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"`
23388}
23389
23390// String returns the string representation
23391func (s PublicAccessBlockConfiguration) String() string {
23392	return awsutil.Prettify(s)
23393}
23394
23395// GoString returns the string representation
23396func (s PublicAccessBlockConfiguration) GoString() string {
23397	return s.String()
23398}
23399
23400// SetBlockPublicAcls sets the BlockPublicAcls field's value.
23401func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration {
23402	s.BlockPublicAcls = &v
23403	return s
23404}
23405
23406// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
23407func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration {
23408	s.BlockPublicPolicy = &v
23409	return s
23410}
23411
23412// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
23413func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration {
23414	s.IgnorePublicAcls = &v
23415	return s
23416}
23417
23418// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
23419func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration {
23420	s.RestrictPublicBuckets = &v
23421	return s
23422}
23423
23424type PutBucketAccelerateConfigurationInput struct {
23425	_ struct{} `locationName:"PutBucketAccelerateConfigurationRequest" type:"structure" payload:"AccelerateConfiguration"`
23426
23427	// Container for setting the transfer acceleration state.
23428	//
23429	// AccelerateConfiguration is a required field
23430	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23431
23432	// Name of the bucket for which the accelerate configuration is set.
23433	//
23434	// Bucket is a required field
23435	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23436}
23437
23438// String returns the string representation
23439func (s PutBucketAccelerateConfigurationInput) String() string {
23440	return awsutil.Prettify(s)
23441}
23442
23443// GoString returns the string representation
23444func (s PutBucketAccelerateConfigurationInput) GoString() string {
23445	return s.String()
23446}
23447
23448// Validate inspects the fields of the type to determine if they are valid.
23449func (s *PutBucketAccelerateConfigurationInput) Validate() error {
23450	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
23451	if s.AccelerateConfiguration == nil {
23452		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
23453	}
23454	if s.Bucket == nil {
23455		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23456	}
23457	if s.Bucket != nil && len(*s.Bucket) < 1 {
23458		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23459	}
23460
23461	if invalidParams.Len() > 0 {
23462		return invalidParams
23463	}
23464	return nil
23465}
23466
23467// SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
23468func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
23469	s.AccelerateConfiguration = v
23470	return s
23471}
23472
23473// SetBucket sets the Bucket field's value.
23474func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
23475	s.Bucket = &v
23476	return s
23477}
23478
23479func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
23480	if s.Bucket == nil {
23481		return v
23482	}
23483	return *s.Bucket
23484}
23485
23486func (s *PutBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
23487	if s.Bucket == nil {
23488		return nil, fmt.Errorf("member Bucket is nil")
23489	}
23490	return parseEndpointARN(*s.Bucket)
23491}
23492
23493func (s *PutBucketAccelerateConfigurationInput) hasEndpointARN() bool {
23494	if s.Bucket == nil {
23495		return false
23496	}
23497	return arn.IsARN(*s.Bucket)
23498}
23499
23500type PutBucketAccelerateConfigurationOutput struct {
23501	_ struct{} `type:"structure"`
23502}
23503
23504// String returns the string representation
23505func (s PutBucketAccelerateConfigurationOutput) String() string {
23506	return awsutil.Prettify(s)
23507}
23508
23509// GoString returns the string representation
23510func (s PutBucketAccelerateConfigurationOutput) GoString() string {
23511	return s.String()
23512}
23513
23514type PutBucketAclInput struct {
23515	_ struct{} `locationName:"PutBucketAclRequest" type:"structure" payload:"AccessControlPolicy"`
23516
23517	// The canned ACL to apply to the bucket.
23518	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
23519
23520	// Contains the elements that set the ACL permissions for an object per grantee.
23521	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23522
23523	// The bucket to which to apply the ACL.
23524	//
23525	// Bucket is a required field
23526	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23527
23528	// Allows grantee the read, write, read ACP, and write ACP permissions on the
23529	// bucket.
23530	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
23531
23532	// Allows grantee to list the objects in the bucket.
23533	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
23534
23535	// Allows grantee to read the bucket ACL.
23536	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
23537
23538	// Allows grantee to create, overwrite, and delete any object in the bucket.
23539	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
23540
23541	// Allows grantee to write the ACL for the applicable bucket.
23542	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
23543}
23544
23545// String returns the string representation
23546func (s PutBucketAclInput) String() string {
23547	return awsutil.Prettify(s)
23548}
23549
23550// GoString returns the string representation
23551func (s PutBucketAclInput) GoString() string {
23552	return s.String()
23553}
23554
23555// Validate inspects the fields of the type to determine if they are valid.
23556func (s *PutBucketAclInput) Validate() error {
23557	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
23558	if s.Bucket == nil {
23559		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23560	}
23561	if s.Bucket != nil && len(*s.Bucket) < 1 {
23562		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23563	}
23564	if s.AccessControlPolicy != nil {
23565		if err := s.AccessControlPolicy.Validate(); err != nil {
23566			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
23567		}
23568	}
23569
23570	if invalidParams.Len() > 0 {
23571		return invalidParams
23572	}
23573	return nil
23574}
23575
23576// SetACL sets the ACL field's value.
23577func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
23578	s.ACL = &v
23579	return s
23580}
23581
23582// SetAccessControlPolicy sets the AccessControlPolicy field's value.
23583func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
23584	s.AccessControlPolicy = v
23585	return s
23586}
23587
23588// SetBucket sets the Bucket field's value.
23589func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
23590	s.Bucket = &v
23591	return s
23592}
23593
23594func (s *PutBucketAclInput) getBucket() (v string) {
23595	if s.Bucket == nil {
23596		return v
23597	}
23598	return *s.Bucket
23599}
23600
23601// SetGrantFullControl sets the GrantFullControl field's value.
23602func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
23603	s.GrantFullControl = &v
23604	return s
23605}
23606
23607// SetGrantRead sets the GrantRead field's value.
23608func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
23609	s.GrantRead = &v
23610	return s
23611}
23612
23613// SetGrantReadACP sets the GrantReadACP field's value.
23614func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
23615	s.GrantReadACP = &v
23616	return s
23617}
23618
23619// SetGrantWrite sets the GrantWrite field's value.
23620func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
23621	s.GrantWrite = &v
23622	return s
23623}
23624
23625// SetGrantWriteACP sets the GrantWriteACP field's value.
23626func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
23627	s.GrantWriteACP = &v
23628	return s
23629}
23630
23631func (s *PutBucketAclInput) getEndpointARN() (arn.Resource, error) {
23632	if s.Bucket == nil {
23633		return nil, fmt.Errorf("member Bucket is nil")
23634	}
23635	return parseEndpointARN(*s.Bucket)
23636}
23637
23638func (s *PutBucketAclInput) hasEndpointARN() bool {
23639	if s.Bucket == nil {
23640		return false
23641	}
23642	return arn.IsARN(*s.Bucket)
23643}
23644
23645type PutBucketAclOutput struct {
23646	_ struct{} `type:"structure"`
23647}
23648
23649// String returns the string representation
23650func (s PutBucketAclOutput) String() string {
23651	return awsutil.Prettify(s)
23652}
23653
23654// GoString returns the string representation
23655func (s PutBucketAclOutput) GoString() string {
23656	return s.String()
23657}
23658
23659type PutBucketAnalyticsConfigurationInput struct {
23660	_ struct{} `locationName:"PutBucketAnalyticsConfigurationRequest" type:"structure" payload:"AnalyticsConfiguration"`
23661
23662	// The configuration and any analyses for the analytics filter.
23663	//
23664	// AnalyticsConfiguration is a required field
23665	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23666
23667	// The name of the bucket to which an analytics configuration is stored.
23668	//
23669	// Bucket is a required field
23670	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23671
23672	// The ID that identifies the analytics configuration.
23673	//
23674	// Id is a required field
23675	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
23676}
23677
23678// String returns the string representation
23679func (s PutBucketAnalyticsConfigurationInput) String() string {
23680	return awsutil.Prettify(s)
23681}
23682
23683// GoString returns the string representation
23684func (s PutBucketAnalyticsConfigurationInput) GoString() string {
23685	return s.String()
23686}
23687
23688// Validate inspects the fields of the type to determine if they are valid.
23689func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
23690	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
23691	if s.AnalyticsConfiguration == nil {
23692		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
23693	}
23694	if s.Bucket == nil {
23695		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23696	}
23697	if s.Bucket != nil && len(*s.Bucket) < 1 {
23698		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23699	}
23700	if s.Id == nil {
23701		invalidParams.Add(request.NewErrParamRequired("Id"))
23702	}
23703	if s.AnalyticsConfiguration != nil {
23704		if err := s.AnalyticsConfiguration.Validate(); err != nil {
23705			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
23706		}
23707	}
23708
23709	if invalidParams.Len() > 0 {
23710		return invalidParams
23711	}
23712	return nil
23713}
23714
23715// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
23716func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
23717	s.AnalyticsConfiguration = v
23718	return s
23719}
23720
23721// SetBucket sets the Bucket field's value.
23722func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
23723	s.Bucket = &v
23724	return s
23725}
23726
23727func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
23728	if s.Bucket == nil {
23729		return v
23730	}
23731	return *s.Bucket
23732}
23733
23734// SetId sets the Id field's value.
23735func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
23736	s.Id = &v
23737	return s
23738}
23739
23740func (s *PutBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
23741	if s.Bucket == nil {
23742		return nil, fmt.Errorf("member Bucket is nil")
23743	}
23744	return parseEndpointARN(*s.Bucket)
23745}
23746
23747func (s *PutBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
23748	if s.Bucket == nil {
23749		return false
23750	}
23751	return arn.IsARN(*s.Bucket)
23752}
23753
23754type PutBucketAnalyticsConfigurationOutput struct {
23755	_ struct{} `type:"structure"`
23756}
23757
23758// String returns the string representation
23759func (s PutBucketAnalyticsConfigurationOutput) String() string {
23760	return awsutil.Prettify(s)
23761}
23762
23763// GoString returns the string representation
23764func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
23765	return s.String()
23766}
23767
23768type PutBucketCorsInput struct {
23769	_ struct{} `locationName:"PutBucketCorsRequest" type:"structure" payload:"CORSConfiguration"`
23770
23771	// Specifies the bucket impacted by the corsconfiguration.
23772	//
23773	// Bucket is a required field
23774	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23775
23776	// Describes the cross-origin access configuration for objects in an Amazon
23777	// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
23778	// (https://docs.aws.amazon.com/AmazonS3/latest/dev//cors.html) in the Amazon
23779	// Simple Storage Service Developer Guide.
23780	//
23781	// CORSConfiguration is a required field
23782	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23783}
23784
23785// String returns the string representation
23786func (s PutBucketCorsInput) String() string {
23787	return awsutil.Prettify(s)
23788}
23789
23790// GoString returns the string representation
23791func (s PutBucketCorsInput) GoString() string {
23792	return s.String()
23793}
23794
23795// Validate inspects the fields of the type to determine if they are valid.
23796func (s *PutBucketCorsInput) Validate() error {
23797	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
23798	if s.Bucket == nil {
23799		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23800	}
23801	if s.Bucket != nil && len(*s.Bucket) < 1 {
23802		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23803	}
23804	if s.CORSConfiguration == nil {
23805		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
23806	}
23807	if s.CORSConfiguration != nil {
23808		if err := s.CORSConfiguration.Validate(); err != nil {
23809			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
23810		}
23811	}
23812
23813	if invalidParams.Len() > 0 {
23814		return invalidParams
23815	}
23816	return nil
23817}
23818
23819// SetBucket sets the Bucket field's value.
23820func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
23821	s.Bucket = &v
23822	return s
23823}
23824
23825func (s *PutBucketCorsInput) getBucket() (v string) {
23826	if s.Bucket == nil {
23827		return v
23828	}
23829	return *s.Bucket
23830}
23831
23832// SetCORSConfiguration sets the CORSConfiguration field's value.
23833func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
23834	s.CORSConfiguration = v
23835	return s
23836}
23837
23838func (s *PutBucketCorsInput) getEndpointARN() (arn.Resource, error) {
23839	if s.Bucket == nil {
23840		return nil, fmt.Errorf("member Bucket is nil")
23841	}
23842	return parseEndpointARN(*s.Bucket)
23843}
23844
23845func (s *PutBucketCorsInput) hasEndpointARN() bool {
23846	if s.Bucket == nil {
23847		return false
23848	}
23849	return arn.IsARN(*s.Bucket)
23850}
23851
23852type PutBucketCorsOutput struct {
23853	_ struct{} `type:"structure"`
23854}
23855
23856// String returns the string representation
23857func (s PutBucketCorsOutput) String() string {
23858	return awsutil.Prettify(s)
23859}
23860
23861// GoString returns the string representation
23862func (s PutBucketCorsOutput) GoString() string {
23863	return s.String()
23864}
23865
23866type PutBucketEncryptionInput struct {
23867	_ struct{} `locationName:"PutBucketEncryptionRequest" type:"structure" payload:"ServerSideEncryptionConfiguration"`
23868
23869	// Specifies default encryption for a bucket using server-side encryption with
23870	// Amazon S3-managed keys (SSE-S3) or customer master keys stored in AWS KMS
23871	// (SSE-KMS). For information about the Amazon S3 default encryption feature,
23872	// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
23873	// in the Amazon Simple Storage Service Developer Guide.
23874	//
23875	// Bucket is a required field
23876	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23877
23878	// Specifies the default server-side-encryption configuration.
23879	//
23880	// ServerSideEncryptionConfiguration is a required field
23881	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23882}
23883
23884// String returns the string representation
23885func (s PutBucketEncryptionInput) String() string {
23886	return awsutil.Prettify(s)
23887}
23888
23889// GoString returns the string representation
23890func (s PutBucketEncryptionInput) GoString() string {
23891	return s.String()
23892}
23893
23894// Validate inspects the fields of the type to determine if they are valid.
23895func (s *PutBucketEncryptionInput) Validate() error {
23896	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
23897	if s.Bucket == nil {
23898		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23899	}
23900	if s.Bucket != nil && len(*s.Bucket) < 1 {
23901		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
23902	}
23903	if s.ServerSideEncryptionConfiguration == nil {
23904		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
23905	}
23906	if s.ServerSideEncryptionConfiguration != nil {
23907		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
23908			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
23909		}
23910	}
23911
23912	if invalidParams.Len() > 0 {
23913		return invalidParams
23914	}
23915	return nil
23916}
23917
23918// SetBucket sets the Bucket field's value.
23919func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
23920	s.Bucket = &v
23921	return s
23922}
23923
23924func (s *PutBucketEncryptionInput) getBucket() (v string) {
23925	if s.Bucket == nil {
23926		return v
23927	}
23928	return *s.Bucket
23929}
23930
23931// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
23932func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
23933	s.ServerSideEncryptionConfiguration = v
23934	return s
23935}
23936
23937func (s *PutBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
23938	if s.Bucket == nil {
23939		return nil, fmt.Errorf("member Bucket is nil")
23940	}
23941	return parseEndpointARN(*s.Bucket)
23942}
23943
23944func (s *PutBucketEncryptionInput) hasEndpointARN() bool {
23945	if s.Bucket == nil {
23946		return false
23947	}
23948	return arn.IsARN(*s.Bucket)
23949}
23950
23951type PutBucketEncryptionOutput struct {
23952	_ struct{} `type:"structure"`
23953}
23954
23955// String returns the string representation
23956func (s PutBucketEncryptionOutput) String() string {
23957	return awsutil.Prettify(s)
23958}
23959
23960// GoString returns the string representation
23961func (s PutBucketEncryptionOutput) GoString() string {
23962	return s.String()
23963}
23964
23965type PutBucketInventoryConfigurationInput struct {
23966	_ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"`
23967
23968	// The name of the bucket where the inventory configuration will be stored.
23969	//
23970	// Bucket is a required field
23971	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
23972
23973	// The ID used to identify the inventory configuration.
23974	//
23975	// Id is a required field
23976	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
23977
23978	// Specifies the inventory configuration.
23979	//
23980	// InventoryConfiguration is a required field
23981	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
23982}
23983
23984// String returns the string representation
23985func (s PutBucketInventoryConfigurationInput) String() string {
23986	return awsutil.Prettify(s)
23987}
23988
23989// GoString returns the string representation
23990func (s PutBucketInventoryConfigurationInput) GoString() string {
23991	return s.String()
23992}
23993
23994// Validate inspects the fields of the type to determine if they are valid.
23995func (s *PutBucketInventoryConfigurationInput) Validate() error {
23996	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
23997	if s.Bucket == nil {
23998		invalidParams.Add(request.NewErrParamRequired("Bucket"))
23999	}
24000	if s.Bucket != nil && len(*s.Bucket) < 1 {
24001		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24002	}
24003	if s.Id == nil {
24004		invalidParams.Add(request.NewErrParamRequired("Id"))
24005	}
24006	if s.InventoryConfiguration == nil {
24007		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
24008	}
24009	if s.InventoryConfiguration != nil {
24010		if err := s.InventoryConfiguration.Validate(); err != nil {
24011			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
24012		}
24013	}
24014
24015	if invalidParams.Len() > 0 {
24016		return invalidParams
24017	}
24018	return nil
24019}
24020
24021// SetBucket sets the Bucket field's value.
24022func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
24023	s.Bucket = &v
24024	return s
24025}
24026
24027func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
24028	if s.Bucket == nil {
24029		return v
24030	}
24031	return *s.Bucket
24032}
24033
24034// SetId sets the Id field's value.
24035func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
24036	s.Id = &v
24037	return s
24038}
24039
24040// SetInventoryConfiguration sets the InventoryConfiguration field's value.
24041func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
24042	s.InventoryConfiguration = v
24043	return s
24044}
24045
24046func (s *PutBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
24047	if s.Bucket == nil {
24048		return nil, fmt.Errorf("member Bucket is nil")
24049	}
24050	return parseEndpointARN(*s.Bucket)
24051}
24052
24053func (s *PutBucketInventoryConfigurationInput) hasEndpointARN() bool {
24054	if s.Bucket == nil {
24055		return false
24056	}
24057	return arn.IsARN(*s.Bucket)
24058}
24059
24060type PutBucketInventoryConfigurationOutput struct {
24061	_ struct{} `type:"structure"`
24062}
24063
24064// String returns the string representation
24065func (s PutBucketInventoryConfigurationOutput) String() string {
24066	return awsutil.Prettify(s)
24067}
24068
24069// GoString returns the string representation
24070func (s PutBucketInventoryConfigurationOutput) GoString() string {
24071	return s.String()
24072}
24073
24074type PutBucketLifecycleConfigurationInput struct {
24075	_ struct{} `locationName:"PutBucketLifecycleConfigurationRequest" type:"structure" payload:"LifecycleConfiguration"`
24076
24077	// The name of the bucket for which to set the configuration.
24078	//
24079	// Bucket is a required field
24080	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24081
24082	// Container for lifecycle rules. You can add as many as 1,000 rules.
24083	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24084}
24085
24086// String returns the string representation
24087func (s PutBucketLifecycleConfigurationInput) String() string {
24088	return awsutil.Prettify(s)
24089}
24090
24091// GoString returns the string representation
24092func (s PutBucketLifecycleConfigurationInput) GoString() string {
24093	return s.String()
24094}
24095
24096// Validate inspects the fields of the type to determine if they are valid.
24097func (s *PutBucketLifecycleConfigurationInput) Validate() error {
24098	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
24099	if s.Bucket == nil {
24100		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24101	}
24102	if s.Bucket != nil && len(*s.Bucket) < 1 {
24103		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24104	}
24105	if s.LifecycleConfiguration != nil {
24106		if err := s.LifecycleConfiguration.Validate(); err != nil {
24107			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
24108		}
24109	}
24110
24111	if invalidParams.Len() > 0 {
24112		return invalidParams
24113	}
24114	return nil
24115}
24116
24117// SetBucket sets the Bucket field's value.
24118func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
24119	s.Bucket = &v
24120	return s
24121}
24122
24123func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
24124	if s.Bucket == nil {
24125		return v
24126	}
24127	return *s.Bucket
24128}
24129
24130// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
24131func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
24132	s.LifecycleConfiguration = v
24133	return s
24134}
24135
24136func (s *PutBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
24137	if s.Bucket == nil {
24138		return nil, fmt.Errorf("member Bucket is nil")
24139	}
24140	return parseEndpointARN(*s.Bucket)
24141}
24142
24143func (s *PutBucketLifecycleConfigurationInput) hasEndpointARN() bool {
24144	if s.Bucket == nil {
24145		return false
24146	}
24147	return arn.IsARN(*s.Bucket)
24148}
24149
24150type PutBucketLifecycleConfigurationOutput struct {
24151	_ struct{} `type:"structure"`
24152}
24153
24154// String returns the string representation
24155func (s PutBucketLifecycleConfigurationOutput) String() string {
24156	return awsutil.Prettify(s)
24157}
24158
24159// GoString returns the string representation
24160func (s PutBucketLifecycleConfigurationOutput) GoString() string {
24161	return s.String()
24162}
24163
24164type PutBucketLifecycleInput struct {
24165	_ struct{} `locationName:"PutBucketLifecycleRequest" type:"structure" payload:"LifecycleConfiguration"`
24166
24167	// Bucket is a required field
24168	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24169
24170	// Container for lifecycle rules. You can add as many as 1000 rules.
24171	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24172}
24173
24174// String returns the string representation
24175func (s PutBucketLifecycleInput) String() string {
24176	return awsutil.Prettify(s)
24177}
24178
24179// GoString returns the string representation
24180func (s PutBucketLifecycleInput) GoString() string {
24181	return s.String()
24182}
24183
24184// Validate inspects the fields of the type to determine if they are valid.
24185func (s *PutBucketLifecycleInput) Validate() error {
24186	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
24187	if s.Bucket == nil {
24188		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24189	}
24190	if s.Bucket != nil && len(*s.Bucket) < 1 {
24191		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24192	}
24193	if s.LifecycleConfiguration != nil {
24194		if err := s.LifecycleConfiguration.Validate(); err != nil {
24195			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
24196		}
24197	}
24198
24199	if invalidParams.Len() > 0 {
24200		return invalidParams
24201	}
24202	return nil
24203}
24204
24205// SetBucket sets the Bucket field's value.
24206func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
24207	s.Bucket = &v
24208	return s
24209}
24210
24211func (s *PutBucketLifecycleInput) getBucket() (v string) {
24212	if s.Bucket == nil {
24213		return v
24214	}
24215	return *s.Bucket
24216}
24217
24218// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
24219func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
24220	s.LifecycleConfiguration = v
24221	return s
24222}
24223
24224func (s *PutBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
24225	if s.Bucket == nil {
24226		return nil, fmt.Errorf("member Bucket is nil")
24227	}
24228	return parseEndpointARN(*s.Bucket)
24229}
24230
24231func (s *PutBucketLifecycleInput) hasEndpointARN() bool {
24232	if s.Bucket == nil {
24233		return false
24234	}
24235	return arn.IsARN(*s.Bucket)
24236}
24237
24238type PutBucketLifecycleOutput struct {
24239	_ struct{} `type:"structure"`
24240}
24241
24242// String returns the string representation
24243func (s PutBucketLifecycleOutput) String() string {
24244	return awsutil.Prettify(s)
24245}
24246
24247// GoString returns the string representation
24248func (s PutBucketLifecycleOutput) GoString() string {
24249	return s.String()
24250}
24251
24252type PutBucketLoggingInput struct {
24253	_ struct{} `locationName:"PutBucketLoggingRequest" type:"structure" payload:"BucketLoggingStatus"`
24254
24255	// The name of the bucket for which to set the logging parameters.
24256	//
24257	// Bucket is a required field
24258	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24259
24260	// Container for logging status information.
24261	//
24262	// BucketLoggingStatus is a required field
24263	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24264}
24265
24266// String returns the string representation
24267func (s PutBucketLoggingInput) String() string {
24268	return awsutil.Prettify(s)
24269}
24270
24271// GoString returns the string representation
24272func (s PutBucketLoggingInput) GoString() string {
24273	return s.String()
24274}
24275
24276// Validate inspects the fields of the type to determine if they are valid.
24277func (s *PutBucketLoggingInput) Validate() error {
24278	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
24279	if s.Bucket == nil {
24280		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24281	}
24282	if s.Bucket != nil && len(*s.Bucket) < 1 {
24283		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24284	}
24285	if s.BucketLoggingStatus == nil {
24286		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
24287	}
24288	if s.BucketLoggingStatus != nil {
24289		if err := s.BucketLoggingStatus.Validate(); err != nil {
24290			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
24291		}
24292	}
24293
24294	if invalidParams.Len() > 0 {
24295		return invalidParams
24296	}
24297	return nil
24298}
24299
24300// SetBucket sets the Bucket field's value.
24301func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
24302	s.Bucket = &v
24303	return s
24304}
24305
24306func (s *PutBucketLoggingInput) getBucket() (v string) {
24307	if s.Bucket == nil {
24308		return v
24309	}
24310	return *s.Bucket
24311}
24312
24313// SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
24314func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
24315	s.BucketLoggingStatus = v
24316	return s
24317}
24318
24319func (s *PutBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
24320	if s.Bucket == nil {
24321		return nil, fmt.Errorf("member Bucket is nil")
24322	}
24323	return parseEndpointARN(*s.Bucket)
24324}
24325
24326func (s *PutBucketLoggingInput) hasEndpointARN() bool {
24327	if s.Bucket == nil {
24328		return false
24329	}
24330	return arn.IsARN(*s.Bucket)
24331}
24332
24333type PutBucketLoggingOutput struct {
24334	_ struct{} `type:"structure"`
24335}
24336
24337// String returns the string representation
24338func (s PutBucketLoggingOutput) String() string {
24339	return awsutil.Prettify(s)
24340}
24341
24342// GoString returns the string representation
24343func (s PutBucketLoggingOutput) GoString() string {
24344	return s.String()
24345}
24346
24347type PutBucketMetricsConfigurationInput struct {
24348	_ struct{} `locationName:"PutBucketMetricsConfigurationRequest" type:"structure" payload:"MetricsConfiguration"`
24349
24350	// The name of the bucket for which the metrics configuration is set.
24351	//
24352	// Bucket is a required field
24353	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24354
24355	// The ID used to identify the metrics configuration.
24356	//
24357	// Id is a required field
24358	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
24359
24360	// Specifies the metrics configuration.
24361	//
24362	// MetricsConfiguration is a required field
24363	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24364}
24365
24366// String returns the string representation
24367func (s PutBucketMetricsConfigurationInput) String() string {
24368	return awsutil.Prettify(s)
24369}
24370
24371// GoString returns the string representation
24372func (s PutBucketMetricsConfigurationInput) GoString() string {
24373	return s.String()
24374}
24375
24376// Validate inspects the fields of the type to determine if they are valid.
24377func (s *PutBucketMetricsConfigurationInput) Validate() error {
24378	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
24379	if s.Bucket == nil {
24380		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24381	}
24382	if s.Bucket != nil && len(*s.Bucket) < 1 {
24383		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24384	}
24385	if s.Id == nil {
24386		invalidParams.Add(request.NewErrParamRequired("Id"))
24387	}
24388	if s.MetricsConfiguration == nil {
24389		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
24390	}
24391	if s.MetricsConfiguration != nil {
24392		if err := s.MetricsConfiguration.Validate(); err != nil {
24393			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
24394		}
24395	}
24396
24397	if invalidParams.Len() > 0 {
24398		return invalidParams
24399	}
24400	return nil
24401}
24402
24403// SetBucket sets the Bucket field's value.
24404func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
24405	s.Bucket = &v
24406	return s
24407}
24408
24409func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
24410	if s.Bucket == nil {
24411		return v
24412	}
24413	return *s.Bucket
24414}
24415
24416// SetId sets the Id field's value.
24417func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
24418	s.Id = &v
24419	return s
24420}
24421
24422// SetMetricsConfiguration sets the MetricsConfiguration field's value.
24423func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
24424	s.MetricsConfiguration = v
24425	return s
24426}
24427
24428func (s *PutBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
24429	if s.Bucket == nil {
24430		return nil, fmt.Errorf("member Bucket is nil")
24431	}
24432	return parseEndpointARN(*s.Bucket)
24433}
24434
24435func (s *PutBucketMetricsConfigurationInput) hasEndpointARN() bool {
24436	if s.Bucket == nil {
24437		return false
24438	}
24439	return arn.IsARN(*s.Bucket)
24440}
24441
24442type PutBucketMetricsConfigurationOutput struct {
24443	_ struct{} `type:"structure"`
24444}
24445
24446// String returns the string representation
24447func (s PutBucketMetricsConfigurationOutput) String() string {
24448	return awsutil.Prettify(s)
24449}
24450
24451// GoString returns the string representation
24452func (s PutBucketMetricsConfigurationOutput) GoString() string {
24453	return s.String()
24454}
24455
24456type PutBucketNotificationConfigurationInput struct {
24457	_ struct{} `locationName:"PutBucketNotificationConfigurationRequest" type:"structure" payload:"NotificationConfiguration"`
24458
24459	// The name of the bucket.
24460	//
24461	// Bucket is a required field
24462	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24463
24464	// A container for specifying the notification configuration of the bucket.
24465	// If this element is empty, notifications are turned off for the bucket.
24466	//
24467	// NotificationConfiguration is a required field
24468	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24469}
24470
24471// String returns the string representation
24472func (s PutBucketNotificationConfigurationInput) String() string {
24473	return awsutil.Prettify(s)
24474}
24475
24476// GoString returns the string representation
24477func (s PutBucketNotificationConfigurationInput) GoString() string {
24478	return s.String()
24479}
24480
24481// Validate inspects the fields of the type to determine if they are valid.
24482func (s *PutBucketNotificationConfigurationInput) Validate() error {
24483	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
24484	if s.Bucket == nil {
24485		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24486	}
24487	if s.Bucket != nil && len(*s.Bucket) < 1 {
24488		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24489	}
24490	if s.NotificationConfiguration == nil {
24491		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
24492	}
24493	if s.NotificationConfiguration != nil {
24494		if err := s.NotificationConfiguration.Validate(); err != nil {
24495			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
24496		}
24497	}
24498
24499	if invalidParams.Len() > 0 {
24500		return invalidParams
24501	}
24502	return nil
24503}
24504
24505// SetBucket sets the Bucket field's value.
24506func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
24507	s.Bucket = &v
24508	return s
24509}
24510
24511func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
24512	if s.Bucket == nil {
24513		return v
24514	}
24515	return *s.Bucket
24516}
24517
24518// SetNotificationConfiguration sets the NotificationConfiguration field's value.
24519func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
24520	s.NotificationConfiguration = v
24521	return s
24522}
24523
24524func (s *PutBucketNotificationConfigurationInput) getEndpointARN() (arn.Resource, error) {
24525	if s.Bucket == nil {
24526		return nil, fmt.Errorf("member Bucket is nil")
24527	}
24528	return parseEndpointARN(*s.Bucket)
24529}
24530
24531func (s *PutBucketNotificationConfigurationInput) hasEndpointARN() bool {
24532	if s.Bucket == nil {
24533		return false
24534	}
24535	return arn.IsARN(*s.Bucket)
24536}
24537
24538type PutBucketNotificationConfigurationOutput struct {
24539	_ struct{} `type:"structure"`
24540}
24541
24542// String returns the string representation
24543func (s PutBucketNotificationConfigurationOutput) String() string {
24544	return awsutil.Prettify(s)
24545}
24546
24547// GoString returns the string representation
24548func (s PutBucketNotificationConfigurationOutput) GoString() string {
24549	return s.String()
24550}
24551
24552type PutBucketNotificationInput struct {
24553	_ struct{} `locationName:"PutBucketNotificationRequest" type:"structure" payload:"NotificationConfiguration"`
24554
24555	// The name of the bucket.
24556	//
24557	// Bucket is a required field
24558	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24559
24560	// The container for the configuration.
24561	//
24562	// NotificationConfiguration is a required field
24563	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24564}
24565
24566// String returns the string representation
24567func (s PutBucketNotificationInput) String() string {
24568	return awsutil.Prettify(s)
24569}
24570
24571// GoString returns the string representation
24572func (s PutBucketNotificationInput) GoString() string {
24573	return s.String()
24574}
24575
24576// Validate inspects the fields of the type to determine if they are valid.
24577func (s *PutBucketNotificationInput) Validate() error {
24578	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
24579	if s.Bucket == nil {
24580		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24581	}
24582	if s.Bucket != nil && len(*s.Bucket) < 1 {
24583		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24584	}
24585	if s.NotificationConfiguration == nil {
24586		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
24587	}
24588
24589	if invalidParams.Len() > 0 {
24590		return invalidParams
24591	}
24592	return nil
24593}
24594
24595// SetBucket sets the Bucket field's value.
24596func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
24597	s.Bucket = &v
24598	return s
24599}
24600
24601func (s *PutBucketNotificationInput) getBucket() (v string) {
24602	if s.Bucket == nil {
24603		return v
24604	}
24605	return *s.Bucket
24606}
24607
24608// SetNotificationConfiguration sets the NotificationConfiguration field's value.
24609func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
24610	s.NotificationConfiguration = v
24611	return s
24612}
24613
24614func (s *PutBucketNotificationInput) getEndpointARN() (arn.Resource, error) {
24615	if s.Bucket == nil {
24616		return nil, fmt.Errorf("member Bucket is nil")
24617	}
24618	return parseEndpointARN(*s.Bucket)
24619}
24620
24621func (s *PutBucketNotificationInput) hasEndpointARN() bool {
24622	if s.Bucket == nil {
24623		return false
24624	}
24625	return arn.IsARN(*s.Bucket)
24626}
24627
24628type PutBucketNotificationOutput struct {
24629	_ struct{} `type:"structure"`
24630}
24631
24632// String returns the string representation
24633func (s PutBucketNotificationOutput) String() string {
24634	return awsutil.Prettify(s)
24635}
24636
24637// GoString returns the string representation
24638func (s PutBucketNotificationOutput) GoString() string {
24639	return s.String()
24640}
24641
24642type PutBucketPolicyInput struct {
24643	_ struct{} `locationName:"PutBucketPolicyRequest" type:"structure" payload:"Policy"`
24644
24645	// The name of the bucket.
24646	//
24647	// Bucket is a required field
24648	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24649
24650	// Set this parameter to true to confirm that you want to remove your permissions
24651	// to change this bucket policy in the future.
24652	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
24653
24654	// The bucket policy as a JSON document.
24655	//
24656	// Policy is a required field
24657	Policy *string `type:"string" required:"true"`
24658}
24659
24660// String returns the string representation
24661func (s PutBucketPolicyInput) String() string {
24662	return awsutil.Prettify(s)
24663}
24664
24665// GoString returns the string representation
24666func (s PutBucketPolicyInput) GoString() string {
24667	return s.String()
24668}
24669
24670// Validate inspects the fields of the type to determine if they are valid.
24671func (s *PutBucketPolicyInput) Validate() error {
24672	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
24673	if s.Bucket == nil {
24674		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24675	}
24676	if s.Bucket != nil && len(*s.Bucket) < 1 {
24677		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24678	}
24679	if s.Policy == nil {
24680		invalidParams.Add(request.NewErrParamRequired("Policy"))
24681	}
24682
24683	if invalidParams.Len() > 0 {
24684		return invalidParams
24685	}
24686	return nil
24687}
24688
24689// SetBucket sets the Bucket field's value.
24690func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
24691	s.Bucket = &v
24692	return s
24693}
24694
24695func (s *PutBucketPolicyInput) getBucket() (v string) {
24696	if s.Bucket == nil {
24697		return v
24698	}
24699	return *s.Bucket
24700}
24701
24702// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
24703func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
24704	s.ConfirmRemoveSelfBucketAccess = &v
24705	return s
24706}
24707
24708// SetPolicy sets the Policy field's value.
24709func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
24710	s.Policy = &v
24711	return s
24712}
24713
24714func (s *PutBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
24715	if s.Bucket == nil {
24716		return nil, fmt.Errorf("member Bucket is nil")
24717	}
24718	return parseEndpointARN(*s.Bucket)
24719}
24720
24721func (s *PutBucketPolicyInput) hasEndpointARN() bool {
24722	if s.Bucket == nil {
24723		return false
24724	}
24725	return arn.IsARN(*s.Bucket)
24726}
24727
24728type PutBucketPolicyOutput struct {
24729	_ struct{} `type:"structure"`
24730}
24731
24732// String returns the string representation
24733func (s PutBucketPolicyOutput) String() string {
24734	return awsutil.Prettify(s)
24735}
24736
24737// GoString returns the string representation
24738func (s PutBucketPolicyOutput) GoString() string {
24739	return s.String()
24740}
24741
24742type PutBucketReplicationInput struct {
24743	_ struct{} `locationName:"PutBucketReplicationRequest" type:"structure" payload:"ReplicationConfiguration"`
24744
24745	// The name of the bucket
24746	//
24747	// Bucket is a required field
24748	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24749
24750	// A container for replication rules. You can add up to 1,000 rules. The maximum
24751	// size of a replication configuration is 2 MB.
24752	//
24753	// ReplicationConfiguration is a required field
24754	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24755
24756	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
24757}
24758
24759// String returns the string representation
24760func (s PutBucketReplicationInput) String() string {
24761	return awsutil.Prettify(s)
24762}
24763
24764// GoString returns the string representation
24765func (s PutBucketReplicationInput) GoString() string {
24766	return s.String()
24767}
24768
24769// Validate inspects the fields of the type to determine if they are valid.
24770func (s *PutBucketReplicationInput) Validate() error {
24771	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
24772	if s.Bucket == nil {
24773		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24774	}
24775	if s.Bucket != nil && len(*s.Bucket) < 1 {
24776		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24777	}
24778	if s.ReplicationConfiguration == nil {
24779		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
24780	}
24781	if s.ReplicationConfiguration != nil {
24782		if err := s.ReplicationConfiguration.Validate(); err != nil {
24783			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
24784		}
24785	}
24786
24787	if invalidParams.Len() > 0 {
24788		return invalidParams
24789	}
24790	return nil
24791}
24792
24793// SetBucket sets the Bucket field's value.
24794func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
24795	s.Bucket = &v
24796	return s
24797}
24798
24799func (s *PutBucketReplicationInput) getBucket() (v string) {
24800	if s.Bucket == nil {
24801		return v
24802	}
24803	return *s.Bucket
24804}
24805
24806// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
24807func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
24808	s.ReplicationConfiguration = v
24809	return s
24810}
24811
24812// SetToken sets the Token field's value.
24813func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput {
24814	s.Token = &v
24815	return s
24816}
24817
24818func (s *PutBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
24819	if s.Bucket == nil {
24820		return nil, fmt.Errorf("member Bucket is nil")
24821	}
24822	return parseEndpointARN(*s.Bucket)
24823}
24824
24825func (s *PutBucketReplicationInput) hasEndpointARN() bool {
24826	if s.Bucket == nil {
24827		return false
24828	}
24829	return arn.IsARN(*s.Bucket)
24830}
24831
24832type PutBucketReplicationOutput struct {
24833	_ struct{} `type:"structure"`
24834}
24835
24836// String returns the string representation
24837func (s PutBucketReplicationOutput) String() string {
24838	return awsutil.Prettify(s)
24839}
24840
24841// GoString returns the string representation
24842func (s PutBucketReplicationOutput) GoString() string {
24843	return s.String()
24844}
24845
24846type PutBucketRequestPaymentInput struct {
24847	_ struct{} `locationName:"PutBucketRequestPaymentRequest" type:"structure" payload:"RequestPaymentConfiguration"`
24848
24849	// The bucket name.
24850	//
24851	// Bucket is a required field
24852	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24853
24854	// Container for Payer.
24855	//
24856	// RequestPaymentConfiguration is a required field
24857	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24858}
24859
24860// String returns the string representation
24861func (s PutBucketRequestPaymentInput) String() string {
24862	return awsutil.Prettify(s)
24863}
24864
24865// GoString returns the string representation
24866func (s PutBucketRequestPaymentInput) GoString() string {
24867	return s.String()
24868}
24869
24870// Validate inspects the fields of the type to determine if they are valid.
24871func (s *PutBucketRequestPaymentInput) Validate() error {
24872	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
24873	if s.Bucket == nil {
24874		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24875	}
24876	if s.Bucket != nil && len(*s.Bucket) < 1 {
24877		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24878	}
24879	if s.RequestPaymentConfiguration == nil {
24880		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
24881	}
24882	if s.RequestPaymentConfiguration != nil {
24883		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
24884			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
24885		}
24886	}
24887
24888	if invalidParams.Len() > 0 {
24889		return invalidParams
24890	}
24891	return nil
24892}
24893
24894// SetBucket sets the Bucket field's value.
24895func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
24896	s.Bucket = &v
24897	return s
24898}
24899
24900func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
24901	if s.Bucket == nil {
24902		return v
24903	}
24904	return *s.Bucket
24905}
24906
24907// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
24908func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
24909	s.RequestPaymentConfiguration = v
24910	return s
24911}
24912
24913func (s *PutBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
24914	if s.Bucket == nil {
24915		return nil, fmt.Errorf("member Bucket is nil")
24916	}
24917	return parseEndpointARN(*s.Bucket)
24918}
24919
24920func (s *PutBucketRequestPaymentInput) hasEndpointARN() bool {
24921	if s.Bucket == nil {
24922		return false
24923	}
24924	return arn.IsARN(*s.Bucket)
24925}
24926
24927type PutBucketRequestPaymentOutput struct {
24928	_ struct{} `type:"structure"`
24929}
24930
24931// String returns the string representation
24932func (s PutBucketRequestPaymentOutput) String() string {
24933	return awsutil.Prettify(s)
24934}
24935
24936// GoString returns the string representation
24937func (s PutBucketRequestPaymentOutput) GoString() string {
24938	return s.String()
24939}
24940
24941type PutBucketTaggingInput struct {
24942	_ struct{} `locationName:"PutBucketTaggingRequest" type:"structure" payload:"Tagging"`
24943
24944	// The bucket name.
24945	//
24946	// Bucket is a required field
24947	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24948
24949	// Container for the TagSet and Tag elements.
24950	//
24951	// Tagging is a required field
24952	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
24953}
24954
24955// String returns the string representation
24956func (s PutBucketTaggingInput) String() string {
24957	return awsutil.Prettify(s)
24958}
24959
24960// GoString returns the string representation
24961func (s PutBucketTaggingInput) GoString() string {
24962	return s.String()
24963}
24964
24965// Validate inspects the fields of the type to determine if they are valid.
24966func (s *PutBucketTaggingInput) Validate() error {
24967	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
24968	if s.Bucket == nil {
24969		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24970	}
24971	if s.Bucket != nil && len(*s.Bucket) < 1 {
24972		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24973	}
24974	if s.Tagging == nil {
24975		invalidParams.Add(request.NewErrParamRequired("Tagging"))
24976	}
24977	if s.Tagging != nil {
24978		if err := s.Tagging.Validate(); err != nil {
24979			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
24980		}
24981	}
24982
24983	if invalidParams.Len() > 0 {
24984		return invalidParams
24985	}
24986	return nil
24987}
24988
24989// SetBucket sets the Bucket field's value.
24990func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
24991	s.Bucket = &v
24992	return s
24993}
24994
24995func (s *PutBucketTaggingInput) getBucket() (v string) {
24996	if s.Bucket == nil {
24997		return v
24998	}
24999	return *s.Bucket
25000}
25001
25002// SetTagging sets the Tagging field's value.
25003func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
25004	s.Tagging = v
25005	return s
25006}
25007
25008func (s *PutBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
25009	if s.Bucket == nil {
25010		return nil, fmt.Errorf("member Bucket is nil")
25011	}
25012	return parseEndpointARN(*s.Bucket)
25013}
25014
25015func (s *PutBucketTaggingInput) hasEndpointARN() bool {
25016	if s.Bucket == nil {
25017		return false
25018	}
25019	return arn.IsARN(*s.Bucket)
25020}
25021
25022type PutBucketTaggingOutput struct {
25023	_ struct{} `type:"structure"`
25024}
25025
25026// String returns the string representation
25027func (s PutBucketTaggingOutput) String() string {
25028	return awsutil.Prettify(s)
25029}
25030
25031// GoString returns the string representation
25032func (s PutBucketTaggingOutput) GoString() string {
25033	return s.String()
25034}
25035
25036type PutBucketVersioningInput struct {
25037	_ struct{} `locationName:"PutBucketVersioningRequest" type:"structure" payload:"VersioningConfiguration"`
25038
25039	// The bucket name.
25040	//
25041	// Bucket is a required field
25042	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25043
25044	// The concatenation of the authentication device's serial number, a space,
25045	// and the value that is displayed on your authentication device.
25046	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
25047
25048	// Container for setting the versioning state.
25049	//
25050	// VersioningConfiguration is a required field
25051	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25052}
25053
25054// String returns the string representation
25055func (s PutBucketVersioningInput) String() string {
25056	return awsutil.Prettify(s)
25057}
25058
25059// GoString returns the string representation
25060func (s PutBucketVersioningInput) GoString() string {
25061	return s.String()
25062}
25063
25064// Validate inspects the fields of the type to determine if they are valid.
25065func (s *PutBucketVersioningInput) Validate() error {
25066	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
25067	if s.Bucket == nil {
25068		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25069	}
25070	if s.Bucket != nil && len(*s.Bucket) < 1 {
25071		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25072	}
25073	if s.VersioningConfiguration == nil {
25074		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
25075	}
25076
25077	if invalidParams.Len() > 0 {
25078		return invalidParams
25079	}
25080	return nil
25081}
25082
25083// SetBucket sets the Bucket field's value.
25084func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
25085	s.Bucket = &v
25086	return s
25087}
25088
25089func (s *PutBucketVersioningInput) getBucket() (v string) {
25090	if s.Bucket == nil {
25091		return v
25092	}
25093	return *s.Bucket
25094}
25095
25096// SetMFA sets the MFA field's value.
25097func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
25098	s.MFA = &v
25099	return s
25100}
25101
25102// SetVersioningConfiguration sets the VersioningConfiguration field's value.
25103func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
25104	s.VersioningConfiguration = v
25105	return s
25106}
25107
25108func (s *PutBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
25109	if s.Bucket == nil {
25110		return nil, fmt.Errorf("member Bucket is nil")
25111	}
25112	return parseEndpointARN(*s.Bucket)
25113}
25114
25115func (s *PutBucketVersioningInput) hasEndpointARN() bool {
25116	if s.Bucket == nil {
25117		return false
25118	}
25119	return arn.IsARN(*s.Bucket)
25120}
25121
25122type PutBucketVersioningOutput struct {
25123	_ struct{} `type:"structure"`
25124}
25125
25126// String returns the string representation
25127func (s PutBucketVersioningOutput) String() string {
25128	return awsutil.Prettify(s)
25129}
25130
25131// GoString returns the string representation
25132func (s PutBucketVersioningOutput) GoString() string {
25133	return s.String()
25134}
25135
25136type PutBucketWebsiteInput struct {
25137	_ struct{} `locationName:"PutBucketWebsiteRequest" type:"structure" payload:"WebsiteConfiguration"`
25138
25139	// The bucket name.
25140	//
25141	// Bucket is a required field
25142	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25143
25144	// Container for the request.
25145	//
25146	// WebsiteConfiguration is a required field
25147	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25148}
25149
25150// String returns the string representation
25151func (s PutBucketWebsiteInput) String() string {
25152	return awsutil.Prettify(s)
25153}
25154
25155// GoString returns the string representation
25156func (s PutBucketWebsiteInput) GoString() string {
25157	return s.String()
25158}
25159
25160// Validate inspects the fields of the type to determine if they are valid.
25161func (s *PutBucketWebsiteInput) Validate() error {
25162	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
25163	if s.Bucket == nil {
25164		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25165	}
25166	if s.Bucket != nil && len(*s.Bucket) < 1 {
25167		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25168	}
25169	if s.WebsiteConfiguration == nil {
25170		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
25171	}
25172	if s.WebsiteConfiguration != nil {
25173		if err := s.WebsiteConfiguration.Validate(); err != nil {
25174			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
25175		}
25176	}
25177
25178	if invalidParams.Len() > 0 {
25179		return invalidParams
25180	}
25181	return nil
25182}
25183
25184// SetBucket sets the Bucket field's value.
25185func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
25186	s.Bucket = &v
25187	return s
25188}
25189
25190func (s *PutBucketWebsiteInput) getBucket() (v string) {
25191	if s.Bucket == nil {
25192		return v
25193	}
25194	return *s.Bucket
25195}
25196
25197// SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
25198func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
25199	s.WebsiteConfiguration = v
25200	return s
25201}
25202
25203func (s *PutBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
25204	if s.Bucket == nil {
25205		return nil, fmt.Errorf("member Bucket is nil")
25206	}
25207	return parseEndpointARN(*s.Bucket)
25208}
25209
25210func (s *PutBucketWebsiteInput) hasEndpointARN() bool {
25211	if s.Bucket == nil {
25212		return false
25213	}
25214	return arn.IsARN(*s.Bucket)
25215}
25216
25217type PutBucketWebsiteOutput struct {
25218	_ struct{} `type:"structure"`
25219}
25220
25221// String returns the string representation
25222func (s PutBucketWebsiteOutput) String() string {
25223	return awsutil.Prettify(s)
25224}
25225
25226// GoString returns the string representation
25227func (s PutBucketWebsiteOutput) GoString() string {
25228	return s.String()
25229}
25230
25231type PutObjectAclInput struct {
25232	_ struct{} `locationName:"PutObjectAclRequest" type:"structure" payload:"AccessControlPolicy"`
25233
25234	// The canned ACL to apply to the object. For more information, see Canned ACL
25235	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
25236	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
25237
25238	// Contains the elements that set the ACL permissions for an object per grantee.
25239	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25240
25241	// The bucket name that contains the object to which you want to attach the
25242	// ACL.
25243	//
25244	// When using this API with an access point, you must direct requests to the
25245	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25246	// When using this operation using an access point through the AWS SDKs, you
25247	// provide the access point ARN in place of the bucket name. For more information
25248	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
25249	// in the Amazon Simple Storage Service Developer Guide.
25250	//
25251	// Bucket is a required field
25252	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25253
25254	// Allows grantee the read, write, read ACP, and write ACP permissions on the
25255	// bucket.
25256	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
25257
25258	// Allows grantee to list the objects in the bucket.
25259	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
25260
25261	// Allows grantee to read the bucket ACL.
25262	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
25263
25264	// Allows grantee to create, overwrite, and delete any object in the bucket.
25265	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
25266
25267	// Allows grantee to write the ACL for the applicable bucket.
25268	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
25269
25270	// Key for which the PUT operation was initiated.
25271	//
25272	// Key is a required field
25273	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
25274
25275	// Confirms that the requester knows that she or he will be charged for the
25276	// request. Bucket owners need not specify this parameter in their requests.
25277	// For information about downloading objects from Requester Pays buckets, see
25278	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
25279	// in the Amazon S3 Developer Guide.
25280	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
25281
25282	// VersionId used to reference a specific version of the object.
25283	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
25284}
25285
25286// String returns the string representation
25287func (s PutObjectAclInput) String() string {
25288	return awsutil.Prettify(s)
25289}
25290
25291// GoString returns the string representation
25292func (s PutObjectAclInput) GoString() string {
25293	return s.String()
25294}
25295
25296// Validate inspects the fields of the type to determine if they are valid.
25297func (s *PutObjectAclInput) Validate() error {
25298	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
25299	if s.Bucket == nil {
25300		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25301	}
25302	if s.Bucket != nil && len(*s.Bucket) < 1 {
25303		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25304	}
25305	if s.Key == nil {
25306		invalidParams.Add(request.NewErrParamRequired("Key"))
25307	}
25308	if s.Key != nil && len(*s.Key) < 1 {
25309		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
25310	}
25311	if s.AccessControlPolicy != nil {
25312		if err := s.AccessControlPolicy.Validate(); err != nil {
25313			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
25314		}
25315	}
25316
25317	if invalidParams.Len() > 0 {
25318		return invalidParams
25319	}
25320	return nil
25321}
25322
25323// SetACL sets the ACL field's value.
25324func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
25325	s.ACL = &v
25326	return s
25327}
25328
25329// SetAccessControlPolicy sets the AccessControlPolicy field's value.
25330func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
25331	s.AccessControlPolicy = v
25332	return s
25333}
25334
25335// SetBucket sets the Bucket field's value.
25336func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
25337	s.Bucket = &v
25338	return s
25339}
25340
25341func (s *PutObjectAclInput) getBucket() (v string) {
25342	if s.Bucket == nil {
25343		return v
25344	}
25345	return *s.Bucket
25346}
25347
25348// SetGrantFullControl sets the GrantFullControl field's value.
25349func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
25350	s.GrantFullControl = &v
25351	return s
25352}
25353
25354// SetGrantRead sets the GrantRead field's value.
25355func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
25356	s.GrantRead = &v
25357	return s
25358}
25359
25360// SetGrantReadACP sets the GrantReadACP field's value.
25361func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
25362	s.GrantReadACP = &v
25363	return s
25364}
25365
25366// SetGrantWrite sets the GrantWrite field's value.
25367func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
25368	s.GrantWrite = &v
25369	return s
25370}
25371
25372// SetGrantWriteACP sets the GrantWriteACP field's value.
25373func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
25374	s.GrantWriteACP = &v
25375	return s
25376}
25377
25378// SetKey sets the Key field's value.
25379func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
25380	s.Key = &v
25381	return s
25382}
25383
25384// SetRequestPayer sets the RequestPayer field's value.
25385func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
25386	s.RequestPayer = &v
25387	return s
25388}
25389
25390// SetVersionId sets the VersionId field's value.
25391func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
25392	s.VersionId = &v
25393	return s
25394}
25395
25396func (s *PutObjectAclInput) getEndpointARN() (arn.Resource, error) {
25397	if s.Bucket == nil {
25398		return nil, fmt.Errorf("member Bucket is nil")
25399	}
25400	return parseEndpointARN(*s.Bucket)
25401}
25402
25403func (s *PutObjectAclInput) hasEndpointARN() bool {
25404	if s.Bucket == nil {
25405		return false
25406	}
25407	return arn.IsARN(*s.Bucket)
25408}
25409
25410type PutObjectAclOutput struct {
25411	_ struct{} `type:"structure"`
25412
25413	// If present, indicates that the requester was successfully charged for the
25414	// request.
25415	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
25416}
25417
25418// String returns the string representation
25419func (s PutObjectAclOutput) String() string {
25420	return awsutil.Prettify(s)
25421}
25422
25423// GoString returns the string representation
25424func (s PutObjectAclOutput) GoString() string {
25425	return s.String()
25426}
25427
25428// SetRequestCharged sets the RequestCharged field's value.
25429func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
25430	s.RequestCharged = &v
25431	return s
25432}
25433
25434type PutObjectInput struct {
25435	_ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"`
25436
25437	// The canned ACL to apply to the object. For more information, see Canned ACL
25438	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
25439	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
25440
25441	// Object data.
25442	Body io.ReadSeeker `type:"blob"`
25443
25444	// Bucket name to which the PUT operation was initiated.
25445	//
25446	// When using this API with an access point, you must direct requests to the
25447	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25448	// When using this operation using an access point through the AWS SDKs, you
25449	// provide the access point ARN in place of the bucket name. For more information
25450	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
25451	// in the Amazon Simple Storage Service Developer Guide.
25452	//
25453	// Bucket is a required field
25454	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25455
25456	// Can be used to specify caching behavior along the request/reply chain. For
25457	// more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
25458	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).
25459	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
25460
25461	// Specifies presentational information for the object. For more information,
25462	// 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).
25463	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
25464
25465	// Specifies what content encodings have been applied to the object and thus
25466	// what decoding mechanisms must be applied to obtain the media-type referenced
25467	// by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
25468	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).
25469	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
25470
25471	// The language the content is in.
25472	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
25473
25474	// Size of the body in bytes. This parameter is useful when the size of the
25475	// body cannot be determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
25476	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).
25477	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
25478
25479	// The base64-encoded 128-bit MD5 digest of the message (without the headers)
25480	// according to RFC 1864. This header can be used as a message integrity check
25481	// to verify that the data is the same data that was originally sent. Although
25482	// it is optional, we recommend using the Content-MD5 mechanism as an end-to-end
25483	// integrity check. For more information about REST request authentication,
25484	// see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
25485	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
25486
25487	// A standard MIME type describing the format of the contents. For more information,
25488	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).
25489	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
25490
25491	// The date and time at which the object is no longer cacheable. For more information,
25492	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).
25493	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
25494
25495	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
25496	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
25497
25498	// Allows grantee to read the object data and its metadata.
25499	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
25500
25501	// Allows grantee to read the object ACL.
25502	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
25503
25504	// Allows grantee to write the ACL for the applicable object.
25505	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
25506
25507	// Object key for which the PUT operation was initiated.
25508	//
25509	// Key is a required field
25510	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
25511
25512	// A map of metadata to store with the object in S3.
25513	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
25514
25515	// Specifies whether a legal hold will be applied to this object. For more information
25516	// about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
25517	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
25518
25519	// The Object Lock mode that you want to apply to this object.
25520	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
25521
25522	// The date and time when you want this object's Object Lock to expire.
25523	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
25524
25525	// Confirms that the requester knows that she or he will be charged for the
25526	// request. Bucket owners need not specify this parameter in their requests.
25527	// For information about downloading objects from Requester Pays buckets, see
25528	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
25529	// in the Amazon S3 Developer Guide.
25530	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
25531
25532	// Specifies the algorithm to use to when encrypting the object (for example,
25533	// AES256).
25534	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
25535
25536	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
25537	// data. This value is used to store the object and then it is discarded; Amazon
25538	// S3 does not store the encryption key. The key must be appropriate for use
25539	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
25540	// header.
25541	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
25542
25543	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
25544	// Amazon S3 uses this header for a message integrity check to ensure that the
25545	// encryption key was transmitted without error.
25546	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
25547
25548	// Specifies the AWS KMS Encryption Context to use for object encryption. The
25549	// value of this header is a base64-encoded UTF-8 string holding JSON with the
25550	// encryption context key-value pairs.
25551	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
25552
25553	// If x-amz-server-side-encryption is present and has the value of aws:kms,
25554	// this header specifies the ID of the AWS Key Management Service (AWS KMS)
25555	// customer master key (CMK) that was used for the object.
25556	//
25557	// If the value of x-amz-server-side-encryption is aws:kms, this header specifies
25558	// the ID of the AWS KMS CMK that will be used for the object. If you specify
25559	// x-amz-server-side-encryption:aws:kms, but do not providex-amz-server-side-encryption-aws-kms-key-id,
25560	// Amazon S3 uses the AWS managed CMK in AWS to protect the data.
25561	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
25562
25563	// The server-side encryption algorithm used when storing this object in Amazon
25564	// S3 (for example, AES256, aws:kms).
25565	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
25566
25567	// If you don't specify, Standard is the default storage class. Amazon S3 supports
25568	// other storage classes.
25569	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
25570
25571	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
25572	// (For example, "Key1=Value1")
25573	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
25574
25575	// If the bucket is configured as a website, redirects requests for this object
25576	// to another object in the same bucket or to an external URL. Amazon S3 stores
25577	// the value of this header in the object metadata. For information about object
25578	// metadata, see Object Key and Metadata (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html).
25579	//
25580	// In the following example, the request header sets the redirect to an object
25581	// (anotherPage.html) in the same bucket:
25582	//
25583	// x-amz-website-redirect-location: /anotherPage.html
25584	//
25585	// In the following example, the request header sets the object redirect to
25586	// another website:
25587	//
25588	// x-amz-website-redirect-location: http://www.example.com/
25589	//
25590	// For more information about website hosting in Amazon S3, see Hosting Websites
25591	// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
25592	// and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
25593	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
25594}
25595
25596// String returns the string representation
25597func (s PutObjectInput) String() string {
25598	return awsutil.Prettify(s)
25599}
25600
25601// GoString returns the string representation
25602func (s PutObjectInput) GoString() string {
25603	return s.String()
25604}
25605
25606// Validate inspects the fields of the type to determine if they are valid.
25607func (s *PutObjectInput) Validate() error {
25608	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
25609	if s.Bucket == nil {
25610		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25611	}
25612	if s.Bucket != nil && len(*s.Bucket) < 1 {
25613		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25614	}
25615	if s.Key == nil {
25616		invalidParams.Add(request.NewErrParamRequired("Key"))
25617	}
25618	if s.Key != nil && len(*s.Key) < 1 {
25619		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
25620	}
25621
25622	if invalidParams.Len() > 0 {
25623		return invalidParams
25624	}
25625	return nil
25626}
25627
25628// SetACL sets the ACL field's value.
25629func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
25630	s.ACL = &v
25631	return s
25632}
25633
25634// SetBody sets the Body field's value.
25635func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
25636	s.Body = v
25637	return s
25638}
25639
25640// SetBucket sets the Bucket field's value.
25641func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
25642	s.Bucket = &v
25643	return s
25644}
25645
25646func (s *PutObjectInput) getBucket() (v string) {
25647	if s.Bucket == nil {
25648		return v
25649	}
25650	return *s.Bucket
25651}
25652
25653// SetCacheControl sets the CacheControl field's value.
25654func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
25655	s.CacheControl = &v
25656	return s
25657}
25658
25659// SetContentDisposition sets the ContentDisposition field's value.
25660func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
25661	s.ContentDisposition = &v
25662	return s
25663}
25664
25665// SetContentEncoding sets the ContentEncoding field's value.
25666func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
25667	s.ContentEncoding = &v
25668	return s
25669}
25670
25671// SetContentLanguage sets the ContentLanguage field's value.
25672func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
25673	s.ContentLanguage = &v
25674	return s
25675}
25676
25677// SetContentLength sets the ContentLength field's value.
25678func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
25679	s.ContentLength = &v
25680	return s
25681}
25682
25683// SetContentMD5 sets the ContentMD5 field's value.
25684func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
25685	s.ContentMD5 = &v
25686	return s
25687}
25688
25689// SetContentType sets the ContentType field's value.
25690func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
25691	s.ContentType = &v
25692	return s
25693}
25694
25695// SetExpires sets the Expires field's value.
25696func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
25697	s.Expires = &v
25698	return s
25699}
25700
25701// SetGrantFullControl sets the GrantFullControl field's value.
25702func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
25703	s.GrantFullControl = &v
25704	return s
25705}
25706
25707// SetGrantRead sets the GrantRead field's value.
25708func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
25709	s.GrantRead = &v
25710	return s
25711}
25712
25713// SetGrantReadACP sets the GrantReadACP field's value.
25714func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
25715	s.GrantReadACP = &v
25716	return s
25717}
25718
25719// SetGrantWriteACP sets the GrantWriteACP field's value.
25720func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
25721	s.GrantWriteACP = &v
25722	return s
25723}
25724
25725// SetKey sets the Key field's value.
25726func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
25727	s.Key = &v
25728	return s
25729}
25730
25731// SetMetadata sets the Metadata field's value.
25732func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
25733	s.Metadata = v
25734	return s
25735}
25736
25737// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
25738func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput {
25739	s.ObjectLockLegalHoldStatus = &v
25740	return s
25741}
25742
25743// SetObjectLockMode sets the ObjectLockMode field's value.
25744func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput {
25745	s.ObjectLockMode = &v
25746	return s
25747}
25748
25749// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
25750func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput {
25751	s.ObjectLockRetainUntilDate = &v
25752	return s
25753}
25754
25755// SetRequestPayer sets the RequestPayer field's value.
25756func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
25757	s.RequestPayer = &v
25758	return s
25759}
25760
25761// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
25762func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
25763	s.SSECustomerAlgorithm = &v
25764	return s
25765}
25766
25767// SetSSECustomerKey sets the SSECustomerKey field's value.
25768func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
25769	s.SSECustomerKey = &v
25770	return s
25771}
25772
25773func (s *PutObjectInput) getSSECustomerKey() (v string) {
25774	if s.SSECustomerKey == nil {
25775		return v
25776	}
25777	return *s.SSECustomerKey
25778}
25779
25780// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
25781func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
25782	s.SSECustomerKeyMD5 = &v
25783	return s
25784}
25785
25786// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
25787func (s *PutObjectInput) SetSSEKMSEncryptionContext(v string) *PutObjectInput {
25788	s.SSEKMSEncryptionContext = &v
25789	return s
25790}
25791
25792// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
25793func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
25794	s.SSEKMSKeyId = &v
25795	return s
25796}
25797
25798// SetServerSideEncryption sets the ServerSideEncryption field's value.
25799func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
25800	s.ServerSideEncryption = &v
25801	return s
25802}
25803
25804// SetStorageClass sets the StorageClass field's value.
25805func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
25806	s.StorageClass = &v
25807	return s
25808}
25809
25810// SetTagging sets the Tagging field's value.
25811func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
25812	s.Tagging = &v
25813	return s
25814}
25815
25816// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
25817func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
25818	s.WebsiteRedirectLocation = &v
25819	return s
25820}
25821
25822func (s *PutObjectInput) getEndpointARN() (arn.Resource, error) {
25823	if s.Bucket == nil {
25824		return nil, fmt.Errorf("member Bucket is nil")
25825	}
25826	return parseEndpointARN(*s.Bucket)
25827}
25828
25829func (s *PutObjectInput) hasEndpointARN() bool {
25830	if s.Bucket == nil {
25831		return false
25832	}
25833	return arn.IsARN(*s.Bucket)
25834}
25835
25836type PutObjectLegalHoldInput struct {
25837	_ struct{} `locationName:"PutObjectLegalHoldRequest" type:"structure" payload:"LegalHold"`
25838
25839	// The bucket name containing the object that you want to place a Legal Hold
25840	// on.
25841	//
25842	// When using this API with an access point, you must direct requests to the
25843	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25844	// When using this operation using an access point through the AWS SDKs, you
25845	// provide the access point ARN in place of the bucket name. For more information
25846	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
25847	// in the Amazon Simple Storage Service Developer Guide.
25848	//
25849	// Bucket is a required field
25850	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25851
25852	// The key name for the object that you want to place a Legal Hold on.
25853	//
25854	// Key is a required field
25855	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
25856
25857	// Container element for the Legal Hold configuration you want to apply to the
25858	// specified object.
25859	LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25860
25861	// Confirms that the requester knows that she or he will be charged for the
25862	// request. Bucket owners need not specify this parameter in their requests.
25863	// For information about downloading objects from Requester Pays buckets, see
25864	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
25865	// in the Amazon S3 Developer Guide.
25866	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
25867
25868	// The version ID of the object that you want to place a Legal Hold on.
25869	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
25870}
25871
25872// String returns the string representation
25873func (s PutObjectLegalHoldInput) String() string {
25874	return awsutil.Prettify(s)
25875}
25876
25877// GoString returns the string representation
25878func (s PutObjectLegalHoldInput) GoString() string {
25879	return s.String()
25880}
25881
25882// Validate inspects the fields of the type to determine if they are valid.
25883func (s *PutObjectLegalHoldInput) Validate() error {
25884	invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"}
25885	if s.Bucket == nil {
25886		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25887	}
25888	if s.Bucket != nil && len(*s.Bucket) < 1 {
25889		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25890	}
25891	if s.Key == nil {
25892		invalidParams.Add(request.NewErrParamRequired("Key"))
25893	}
25894	if s.Key != nil && len(*s.Key) < 1 {
25895		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
25896	}
25897
25898	if invalidParams.Len() > 0 {
25899		return invalidParams
25900	}
25901	return nil
25902}
25903
25904// SetBucket sets the Bucket field's value.
25905func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput {
25906	s.Bucket = &v
25907	return s
25908}
25909
25910func (s *PutObjectLegalHoldInput) getBucket() (v string) {
25911	if s.Bucket == nil {
25912		return v
25913	}
25914	return *s.Bucket
25915}
25916
25917// SetKey sets the Key field's value.
25918func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput {
25919	s.Key = &v
25920	return s
25921}
25922
25923// SetLegalHold sets the LegalHold field's value.
25924func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput {
25925	s.LegalHold = v
25926	return s
25927}
25928
25929// SetRequestPayer sets the RequestPayer field's value.
25930func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput {
25931	s.RequestPayer = &v
25932	return s
25933}
25934
25935// SetVersionId sets the VersionId field's value.
25936func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput {
25937	s.VersionId = &v
25938	return s
25939}
25940
25941func (s *PutObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
25942	if s.Bucket == nil {
25943		return nil, fmt.Errorf("member Bucket is nil")
25944	}
25945	return parseEndpointARN(*s.Bucket)
25946}
25947
25948func (s *PutObjectLegalHoldInput) hasEndpointARN() bool {
25949	if s.Bucket == nil {
25950		return false
25951	}
25952	return arn.IsARN(*s.Bucket)
25953}
25954
25955type PutObjectLegalHoldOutput struct {
25956	_ struct{} `type:"structure"`
25957
25958	// If present, indicates that the requester was successfully charged for the
25959	// request.
25960	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
25961}
25962
25963// String returns the string representation
25964func (s PutObjectLegalHoldOutput) String() string {
25965	return awsutil.Prettify(s)
25966}
25967
25968// GoString returns the string representation
25969func (s PutObjectLegalHoldOutput) GoString() string {
25970	return s.String()
25971}
25972
25973// SetRequestCharged sets the RequestCharged field's value.
25974func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput {
25975	s.RequestCharged = &v
25976	return s
25977}
25978
25979type PutObjectLockConfigurationInput struct {
25980	_ struct{} `locationName:"PutObjectLockConfigurationRequest" type:"structure" payload:"ObjectLockConfiguration"`
25981
25982	// The bucket whose Object Lock configuration you want to create or replace.
25983	//
25984	// Bucket is a required field
25985	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25986
25987	// The Object Lock configuration that you want to apply to the specified bucket.
25988	ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
25989
25990	// Confirms that the requester knows that she or he will be charged for the
25991	// request. Bucket owners need not specify this parameter in their requests.
25992	// For information about downloading objects from Requester Pays buckets, see
25993	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
25994	// in the Amazon S3 Developer Guide.
25995	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
25996
25997	// A token to allow Object Lock to be enabled for an existing bucket.
25998	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
25999}
26000
26001// String returns the string representation
26002func (s PutObjectLockConfigurationInput) String() string {
26003	return awsutil.Prettify(s)
26004}
26005
26006// GoString returns the string representation
26007func (s PutObjectLockConfigurationInput) GoString() string {
26008	return s.String()
26009}
26010
26011// Validate inspects the fields of the type to determine if they are valid.
26012func (s *PutObjectLockConfigurationInput) Validate() error {
26013	invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"}
26014	if s.Bucket == nil {
26015		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26016	}
26017	if s.Bucket != nil && len(*s.Bucket) < 1 {
26018		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26019	}
26020
26021	if invalidParams.Len() > 0 {
26022		return invalidParams
26023	}
26024	return nil
26025}
26026
26027// SetBucket sets the Bucket field's value.
26028func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput {
26029	s.Bucket = &v
26030	return s
26031}
26032
26033func (s *PutObjectLockConfigurationInput) getBucket() (v string) {
26034	if s.Bucket == nil {
26035		return v
26036	}
26037	return *s.Bucket
26038}
26039
26040// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
26041func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput {
26042	s.ObjectLockConfiguration = v
26043	return s
26044}
26045
26046// SetRequestPayer sets the RequestPayer field's value.
26047func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput {
26048	s.RequestPayer = &v
26049	return s
26050}
26051
26052// SetToken sets the Token field's value.
26053func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput {
26054	s.Token = &v
26055	return s
26056}
26057
26058func (s *PutObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
26059	if s.Bucket == nil {
26060		return nil, fmt.Errorf("member Bucket is nil")
26061	}
26062	return parseEndpointARN(*s.Bucket)
26063}
26064
26065func (s *PutObjectLockConfigurationInput) hasEndpointARN() bool {
26066	if s.Bucket == nil {
26067		return false
26068	}
26069	return arn.IsARN(*s.Bucket)
26070}
26071
26072type PutObjectLockConfigurationOutput struct {
26073	_ struct{} `type:"structure"`
26074
26075	// If present, indicates that the requester was successfully charged for the
26076	// request.
26077	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
26078}
26079
26080// String returns the string representation
26081func (s PutObjectLockConfigurationOutput) String() string {
26082	return awsutil.Prettify(s)
26083}
26084
26085// GoString returns the string representation
26086func (s PutObjectLockConfigurationOutput) GoString() string {
26087	return s.String()
26088}
26089
26090// SetRequestCharged sets the RequestCharged field's value.
26091func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput {
26092	s.RequestCharged = &v
26093	return s
26094}
26095
26096type PutObjectOutput struct {
26097	_ struct{} `type:"structure"`
26098
26099	// Entity tag for the uploaded object.
26100	ETag *string `location:"header" locationName:"ETag" type:"string"`
26101
26102	// If the expiration is configured for the object (see PutBucketLifecycleConfiguration),
26103	// the response includes this header. It includes the expiry-date and rule-id
26104	// key-value pairs that provide information about object expiration. The value
26105	// of the rule-id is URL encoded.
26106	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
26107
26108	// If present, indicates that the requester was successfully charged for the
26109	// request.
26110	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
26111
26112	// If server-side encryption with a customer-provided encryption key was requested,
26113	// the response will include this header confirming the encryption algorithm
26114	// used.
26115	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
26116
26117	// If server-side encryption with a customer-provided encryption key was requested,
26118	// the response will include this header to provide round-trip message integrity
26119	// verification of the customer-provided encryption key.
26120	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
26121
26122	// If present, specifies the AWS KMS Encryption Context to use for object encryption.
26123	// The value of this header is a base64-encoded UTF-8 string holding JSON with
26124	// the encryption context key-value pairs.
26125	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
26126
26127	// If x-amz-server-side-encryption is present and has the value of aws:kms,
26128	// this header specifies the ID of the AWS Key Management Service (AWS KMS)
26129	// customer master key (CMK) that was used for the object.
26130	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
26131
26132	// If you specified server-side encryption either with an AWS KMS customer master
26133	// key (CMK) or Amazon S3-managed encryption key in your PUT request, the response
26134	// includes this header. It confirms the encryption algorithm that Amazon S3
26135	// used to encrypt the object.
26136	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
26137
26138	// Version of the object.
26139	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
26140}
26141
26142// String returns the string representation
26143func (s PutObjectOutput) String() string {
26144	return awsutil.Prettify(s)
26145}
26146
26147// GoString returns the string representation
26148func (s PutObjectOutput) GoString() string {
26149	return s.String()
26150}
26151
26152// SetETag sets the ETag field's value.
26153func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
26154	s.ETag = &v
26155	return s
26156}
26157
26158// SetExpiration sets the Expiration field's value.
26159func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
26160	s.Expiration = &v
26161	return s
26162}
26163
26164// SetRequestCharged sets the RequestCharged field's value.
26165func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
26166	s.RequestCharged = &v
26167	return s
26168}
26169
26170// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
26171func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
26172	s.SSECustomerAlgorithm = &v
26173	return s
26174}
26175
26176// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
26177func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
26178	s.SSECustomerKeyMD5 = &v
26179	return s
26180}
26181
26182// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
26183func (s *PutObjectOutput) SetSSEKMSEncryptionContext(v string) *PutObjectOutput {
26184	s.SSEKMSEncryptionContext = &v
26185	return s
26186}
26187
26188// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
26189func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
26190	s.SSEKMSKeyId = &v
26191	return s
26192}
26193
26194// SetServerSideEncryption sets the ServerSideEncryption field's value.
26195func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
26196	s.ServerSideEncryption = &v
26197	return s
26198}
26199
26200// SetVersionId sets the VersionId field's value.
26201func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
26202	s.VersionId = &v
26203	return s
26204}
26205
26206type PutObjectRetentionInput struct {
26207	_ struct{} `locationName:"PutObjectRetentionRequest" type:"structure" payload:"Retention"`
26208
26209	// The bucket name that contains the object you want to apply this Object Retention
26210	// configuration to.
26211	//
26212	// When using this API with an access point, you must direct requests to the
26213	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26214	// When using this operation using an access point through the AWS SDKs, you
26215	// provide the access point ARN in place of the bucket name. For more information
26216	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
26217	// in the Amazon Simple Storage Service Developer Guide.
26218	//
26219	// Bucket is a required field
26220	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26221
26222	// Indicates whether this operation should bypass Governance-mode restrictions.
26223	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
26224
26225	// The key name for the object that you want to apply this Object Retention
26226	// configuration to.
26227	//
26228	// Key is a required field
26229	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26230
26231	// Confirms that the requester knows that she or he will be charged for the
26232	// request. Bucket owners need not specify this parameter in their requests.
26233	// For information about downloading objects from Requester Pays buckets, see
26234	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
26235	// in the Amazon S3 Developer Guide.
26236	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26237
26238	// The container element for the Object Retention configuration.
26239	Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26240
26241	// The version ID for the object that you want to apply this Object Retention
26242	// configuration to.
26243	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
26244}
26245
26246// String returns the string representation
26247func (s PutObjectRetentionInput) String() string {
26248	return awsutil.Prettify(s)
26249}
26250
26251// GoString returns the string representation
26252func (s PutObjectRetentionInput) GoString() string {
26253	return s.String()
26254}
26255
26256// Validate inspects the fields of the type to determine if they are valid.
26257func (s *PutObjectRetentionInput) Validate() error {
26258	invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"}
26259	if s.Bucket == nil {
26260		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26261	}
26262	if s.Bucket != nil && len(*s.Bucket) < 1 {
26263		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26264	}
26265	if s.Key == nil {
26266		invalidParams.Add(request.NewErrParamRequired("Key"))
26267	}
26268	if s.Key != nil && len(*s.Key) < 1 {
26269		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
26270	}
26271
26272	if invalidParams.Len() > 0 {
26273		return invalidParams
26274	}
26275	return nil
26276}
26277
26278// SetBucket sets the Bucket field's value.
26279func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput {
26280	s.Bucket = &v
26281	return s
26282}
26283
26284func (s *PutObjectRetentionInput) getBucket() (v string) {
26285	if s.Bucket == nil {
26286		return v
26287	}
26288	return *s.Bucket
26289}
26290
26291// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
26292func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput {
26293	s.BypassGovernanceRetention = &v
26294	return s
26295}
26296
26297// SetKey sets the Key field's value.
26298func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput {
26299	s.Key = &v
26300	return s
26301}
26302
26303// SetRequestPayer sets the RequestPayer field's value.
26304func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput {
26305	s.RequestPayer = &v
26306	return s
26307}
26308
26309// SetRetention sets the Retention field's value.
26310func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput {
26311	s.Retention = v
26312	return s
26313}
26314
26315// SetVersionId sets the VersionId field's value.
26316func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput {
26317	s.VersionId = &v
26318	return s
26319}
26320
26321func (s *PutObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
26322	if s.Bucket == nil {
26323		return nil, fmt.Errorf("member Bucket is nil")
26324	}
26325	return parseEndpointARN(*s.Bucket)
26326}
26327
26328func (s *PutObjectRetentionInput) hasEndpointARN() bool {
26329	if s.Bucket == nil {
26330		return false
26331	}
26332	return arn.IsARN(*s.Bucket)
26333}
26334
26335type PutObjectRetentionOutput struct {
26336	_ struct{} `type:"structure"`
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
26343// String returns the string representation
26344func (s PutObjectRetentionOutput) String() string {
26345	return awsutil.Prettify(s)
26346}
26347
26348// GoString returns the string representation
26349func (s PutObjectRetentionOutput) GoString() string {
26350	return s.String()
26351}
26352
26353// SetRequestCharged sets the RequestCharged field's value.
26354func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput {
26355	s.RequestCharged = &v
26356	return s
26357}
26358
26359type PutObjectTaggingInput struct {
26360	_ struct{} `locationName:"PutObjectTaggingRequest" type:"structure" payload:"Tagging"`
26361
26362	// The bucket name containing the object.
26363	//
26364	// When using this API with an access point, you must direct requests to the
26365	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26366	// When using this operation using an access point through the AWS SDKs, you
26367	// provide the access point ARN in place of the bucket name. For more information
26368	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
26369	// in the Amazon Simple Storage Service Developer Guide.
26370	//
26371	// Bucket is a required field
26372	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26373
26374	// Name of the tag.
26375	//
26376	// Key is a required field
26377	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26378
26379	// Container for the TagSet and Tag elements
26380	//
26381	// Tagging is a required field
26382	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26383
26384	// The versionId of the object that the tag-set will be added to.
26385	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
26386}
26387
26388// String returns the string representation
26389func (s PutObjectTaggingInput) String() string {
26390	return awsutil.Prettify(s)
26391}
26392
26393// GoString returns the string representation
26394func (s PutObjectTaggingInput) GoString() string {
26395	return s.String()
26396}
26397
26398// Validate inspects the fields of the type to determine if they are valid.
26399func (s *PutObjectTaggingInput) Validate() error {
26400	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
26401	if s.Bucket == nil {
26402		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26403	}
26404	if s.Bucket != nil && len(*s.Bucket) < 1 {
26405		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26406	}
26407	if s.Key == nil {
26408		invalidParams.Add(request.NewErrParamRequired("Key"))
26409	}
26410	if s.Key != nil && len(*s.Key) < 1 {
26411		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
26412	}
26413	if s.Tagging == nil {
26414		invalidParams.Add(request.NewErrParamRequired("Tagging"))
26415	}
26416	if s.Tagging != nil {
26417		if err := s.Tagging.Validate(); err != nil {
26418			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
26419		}
26420	}
26421
26422	if invalidParams.Len() > 0 {
26423		return invalidParams
26424	}
26425	return nil
26426}
26427
26428// SetBucket sets the Bucket field's value.
26429func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
26430	s.Bucket = &v
26431	return s
26432}
26433
26434func (s *PutObjectTaggingInput) getBucket() (v string) {
26435	if s.Bucket == nil {
26436		return v
26437	}
26438	return *s.Bucket
26439}
26440
26441// SetKey sets the Key field's value.
26442func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
26443	s.Key = &v
26444	return s
26445}
26446
26447// SetTagging sets the Tagging field's value.
26448func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
26449	s.Tagging = v
26450	return s
26451}
26452
26453// SetVersionId sets the VersionId field's value.
26454func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
26455	s.VersionId = &v
26456	return s
26457}
26458
26459func (s *PutObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
26460	if s.Bucket == nil {
26461		return nil, fmt.Errorf("member Bucket is nil")
26462	}
26463	return parseEndpointARN(*s.Bucket)
26464}
26465
26466func (s *PutObjectTaggingInput) hasEndpointARN() bool {
26467	if s.Bucket == nil {
26468		return false
26469	}
26470	return arn.IsARN(*s.Bucket)
26471}
26472
26473type PutObjectTaggingOutput struct {
26474	_ struct{} `type:"structure"`
26475
26476	// The versionId of the object the tag-set was added to.
26477	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
26478}
26479
26480// String returns the string representation
26481func (s PutObjectTaggingOutput) String() string {
26482	return awsutil.Prettify(s)
26483}
26484
26485// GoString returns the string representation
26486func (s PutObjectTaggingOutput) GoString() string {
26487	return s.String()
26488}
26489
26490// SetVersionId sets the VersionId field's value.
26491func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
26492	s.VersionId = &v
26493	return s
26494}
26495
26496type PutPublicAccessBlockInput struct {
26497	_ struct{} `locationName:"PutPublicAccessBlockRequest" type:"structure" payload:"PublicAccessBlockConfiguration"`
26498
26499	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
26500	// want to set.
26501	//
26502	// Bucket is a required field
26503	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26504
26505	// The PublicAccessBlock configuration that you want to apply to this Amazon
26506	// S3 bucket. You can enable the configuration options in any combination. For
26507	// more information about when Amazon S3 considers a bucket or object public,
26508	// 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)
26509	// in the Amazon Simple Storage Service Developer Guide.
26510	//
26511	// PublicAccessBlockConfiguration is a required field
26512	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
26513}
26514
26515// String returns the string representation
26516func (s PutPublicAccessBlockInput) String() string {
26517	return awsutil.Prettify(s)
26518}
26519
26520// GoString returns the string representation
26521func (s PutPublicAccessBlockInput) GoString() string {
26522	return s.String()
26523}
26524
26525// Validate inspects the fields of the type to determine if they are valid.
26526func (s *PutPublicAccessBlockInput) Validate() error {
26527	invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"}
26528	if s.Bucket == nil {
26529		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26530	}
26531	if s.Bucket != nil && len(*s.Bucket) < 1 {
26532		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26533	}
26534	if s.PublicAccessBlockConfiguration == nil {
26535		invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration"))
26536	}
26537
26538	if invalidParams.Len() > 0 {
26539		return invalidParams
26540	}
26541	return nil
26542}
26543
26544// SetBucket sets the Bucket field's value.
26545func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput {
26546	s.Bucket = &v
26547	return s
26548}
26549
26550func (s *PutPublicAccessBlockInput) getBucket() (v string) {
26551	if s.Bucket == nil {
26552		return v
26553	}
26554	return *s.Bucket
26555}
26556
26557// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
26558func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput {
26559	s.PublicAccessBlockConfiguration = v
26560	return s
26561}
26562
26563func (s *PutPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
26564	if s.Bucket == nil {
26565		return nil, fmt.Errorf("member Bucket is nil")
26566	}
26567	return parseEndpointARN(*s.Bucket)
26568}
26569
26570func (s *PutPublicAccessBlockInput) hasEndpointARN() bool {
26571	if s.Bucket == nil {
26572		return false
26573	}
26574	return arn.IsARN(*s.Bucket)
26575}
26576
26577type PutPublicAccessBlockOutput struct {
26578	_ struct{} `type:"structure"`
26579}
26580
26581// String returns the string representation
26582func (s PutPublicAccessBlockOutput) String() string {
26583	return awsutil.Prettify(s)
26584}
26585
26586// GoString returns the string representation
26587func (s PutPublicAccessBlockOutput) GoString() string {
26588	return s.String()
26589}
26590
26591// Specifies the configuration for publishing messages to an Amazon Simple Queue
26592// Service (Amazon SQS) queue when Amazon S3 detects specified events.
26593type QueueConfiguration struct {
26594	_ struct{} `type:"structure"`
26595
26596	// A collection of bucket events for which to send notifications
26597	//
26598	// Events is a required field
26599	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
26600
26601	// Specifies object key name filtering rules. For information about key name
26602	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
26603	// in the Amazon Simple Storage Service Developer Guide.
26604	Filter *NotificationConfigurationFilter `type:"structure"`
26605
26606	// An optional unique identifier for configurations in a notification configuration.
26607	// If you don't provide one, Amazon S3 will assign an ID.
26608	Id *string `type:"string"`
26609
26610	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
26611	// publishes a message when it detects events of the specified type.
26612	//
26613	// QueueArn is a required field
26614	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
26615}
26616
26617// String returns the string representation
26618func (s QueueConfiguration) String() string {
26619	return awsutil.Prettify(s)
26620}
26621
26622// GoString returns the string representation
26623func (s QueueConfiguration) GoString() string {
26624	return s.String()
26625}
26626
26627// Validate inspects the fields of the type to determine if they are valid.
26628func (s *QueueConfiguration) Validate() error {
26629	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
26630	if s.Events == nil {
26631		invalidParams.Add(request.NewErrParamRequired("Events"))
26632	}
26633	if s.QueueArn == nil {
26634		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
26635	}
26636
26637	if invalidParams.Len() > 0 {
26638		return invalidParams
26639	}
26640	return nil
26641}
26642
26643// SetEvents sets the Events field's value.
26644func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
26645	s.Events = v
26646	return s
26647}
26648
26649// SetFilter sets the Filter field's value.
26650func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
26651	s.Filter = v
26652	return s
26653}
26654
26655// SetId sets the Id field's value.
26656func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
26657	s.Id = &v
26658	return s
26659}
26660
26661// SetQueueArn sets the QueueArn field's value.
26662func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
26663	s.QueueArn = &v
26664	return s
26665}
26666
26667// This data type is deprecated. Use QueueConfiguration for the same purposes.
26668// This data type specifies the configuration for publishing messages to an
26669// Amazon Simple Queue Service (Amazon SQS) queue when Amazon S3 detects specified
26670// events.
26671type QueueConfigurationDeprecated struct {
26672	_ struct{} `type:"structure"`
26673
26674	// The bucket event for which to send notifications.
26675	//
26676	// Deprecated: Event has been deprecated
26677	Event *string `deprecated:"true" type:"string" enum:"Event"`
26678
26679	// A collection of bucket events for which to send notifications
26680	Events []*string `locationName:"Event" type:"list" flattened:"true"`
26681
26682	// An optional unique identifier for configurations in a notification configuration.
26683	// If you don't provide one, Amazon S3 will assign an ID.
26684	Id *string `type:"string"`
26685
26686	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
26687	// publishes a message when it detects events of the specified type.
26688	Queue *string `type:"string"`
26689}
26690
26691// String returns the string representation
26692func (s QueueConfigurationDeprecated) String() string {
26693	return awsutil.Prettify(s)
26694}
26695
26696// GoString returns the string representation
26697func (s QueueConfigurationDeprecated) GoString() string {
26698	return s.String()
26699}
26700
26701// SetEvent sets the Event field's value.
26702func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
26703	s.Event = &v
26704	return s
26705}
26706
26707// SetEvents sets the Events field's value.
26708func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
26709	s.Events = v
26710	return s
26711}
26712
26713// SetId sets the Id field's value.
26714func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
26715	s.Id = &v
26716	return s
26717}
26718
26719// SetQueue sets the Queue field's value.
26720func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
26721	s.Queue = &v
26722	return s
26723}
26724
26725// The container for the records event.
26726type RecordsEvent struct {
26727	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
26728
26729	// The byte array of partial, one or more result records.
26730	//
26731	// Payload is automatically base64 encoded/decoded by the SDK.
26732	Payload []byte `type:"blob"`
26733}
26734
26735// String returns the string representation
26736func (s RecordsEvent) String() string {
26737	return awsutil.Prettify(s)
26738}
26739
26740// GoString returns the string representation
26741func (s RecordsEvent) GoString() string {
26742	return s.String()
26743}
26744
26745// SetPayload sets the Payload field's value.
26746func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
26747	s.Payload = v
26748	return s
26749}
26750
26751// The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
26752func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
26753
26754// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
26755// This method is only used internally within the SDK's EventStream handling.
26756func (s *RecordsEvent) UnmarshalEvent(
26757	payloadUnmarshaler protocol.PayloadUnmarshaler,
26758	msg eventstream.Message,
26759) error {
26760	s.Payload = make([]byte, len(msg.Payload))
26761	copy(s.Payload, msg.Payload)
26762	return nil
26763}
26764
26765// Specifies how requests are redirected. In the event of an error, you can
26766// specify a different error code to return.
26767type Redirect struct {
26768	_ struct{} `type:"structure"`
26769
26770	// The host name to use in the redirect request.
26771	HostName *string `type:"string"`
26772
26773	// The HTTP redirect code to use on the response. Not required if one of the
26774	// siblings is present.
26775	HttpRedirectCode *string `type:"string"`
26776
26777	// Protocol to use when redirecting requests. The default is the protocol that
26778	// is used in the original request.
26779	Protocol *string `type:"string" enum:"Protocol"`
26780
26781	// The object key prefix to use in the redirect request. For example, to redirect
26782	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
26783	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
26784	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
26785	// if one of the siblings is present. Can be present only if ReplaceKeyWith
26786	// is not provided.
26787	ReplaceKeyPrefixWith *string `type:"string"`
26788
26789	// The specific object key to use in the redirect request. For example, redirect
26790	// request to error.html. Not required if one of the siblings is present. Can
26791	// be present only if ReplaceKeyPrefixWith is not provided.
26792	ReplaceKeyWith *string `type:"string"`
26793}
26794
26795// String returns the string representation
26796func (s Redirect) String() string {
26797	return awsutil.Prettify(s)
26798}
26799
26800// GoString returns the string representation
26801func (s Redirect) GoString() string {
26802	return s.String()
26803}
26804
26805// SetHostName sets the HostName field's value.
26806func (s *Redirect) SetHostName(v string) *Redirect {
26807	s.HostName = &v
26808	return s
26809}
26810
26811// SetHttpRedirectCode sets the HttpRedirectCode field's value.
26812func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
26813	s.HttpRedirectCode = &v
26814	return s
26815}
26816
26817// SetProtocol sets the Protocol field's value.
26818func (s *Redirect) SetProtocol(v string) *Redirect {
26819	s.Protocol = &v
26820	return s
26821}
26822
26823// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
26824func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
26825	s.ReplaceKeyPrefixWith = &v
26826	return s
26827}
26828
26829// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
26830func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
26831	s.ReplaceKeyWith = &v
26832	return s
26833}
26834
26835// Specifies the redirect behavior of all requests to a website endpoint of
26836// an Amazon S3 bucket.
26837type RedirectAllRequestsTo struct {
26838	_ struct{} `type:"structure"`
26839
26840	// Name of the host where requests are redirected.
26841	//
26842	// HostName is a required field
26843	HostName *string `type:"string" required:"true"`
26844
26845	// Protocol to use when redirecting requests. The default is the protocol that
26846	// is used in the original request.
26847	Protocol *string `type:"string" enum:"Protocol"`
26848}
26849
26850// String returns the string representation
26851func (s RedirectAllRequestsTo) String() string {
26852	return awsutil.Prettify(s)
26853}
26854
26855// GoString returns the string representation
26856func (s RedirectAllRequestsTo) GoString() string {
26857	return s.String()
26858}
26859
26860// Validate inspects the fields of the type to determine if they are valid.
26861func (s *RedirectAllRequestsTo) Validate() error {
26862	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
26863	if s.HostName == nil {
26864		invalidParams.Add(request.NewErrParamRequired("HostName"))
26865	}
26866
26867	if invalidParams.Len() > 0 {
26868		return invalidParams
26869	}
26870	return nil
26871}
26872
26873// SetHostName sets the HostName field's value.
26874func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
26875	s.HostName = &v
26876	return s
26877}
26878
26879// SetProtocol sets the Protocol field's value.
26880func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
26881	s.Protocol = &v
26882	return s
26883}
26884
26885// A container for replication rules. You can add up to 1,000 rules. The maximum
26886// size of a replication configuration is 2 MB.
26887type ReplicationConfiguration struct {
26888	_ struct{} `type:"structure"`
26889
26890	// The Amazon Resource Name (ARN) of the AWS Identity and Access Management
26891	// (IAM) role that Amazon S3 assumes when replicating objects. For more information,
26892	// see How to Set Up Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html)
26893	// in the Amazon Simple Storage Service Developer Guide.
26894	//
26895	// Role is a required field
26896	Role *string `type:"string" required:"true"`
26897
26898	// A container for one or more replication rules. A replication configuration
26899	// must have at least one rule and can contain a maximum of 1,000 rules.
26900	//
26901	// Rules is a required field
26902	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
26903}
26904
26905// String returns the string representation
26906func (s ReplicationConfiguration) String() string {
26907	return awsutil.Prettify(s)
26908}
26909
26910// GoString returns the string representation
26911func (s ReplicationConfiguration) GoString() string {
26912	return s.String()
26913}
26914
26915// Validate inspects the fields of the type to determine if they are valid.
26916func (s *ReplicationConfiguration) Validate() error {
26917	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
26918	if s.Role == nil {
26919		invalidParams.Add(request.NewErrParamRequired("Role"))
26920	}
26921	if s.Rules == nil {
26922		invalidParams.Add(request.NewErrParamRequired("Rules"))
26923	}
26924	if s.Rules != nil {
26925		for i, v := range s.Rules {
26926			if v == nil {
26927				continue
26928			}
26929			if err := v.Validate(); err != nil {
26930				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
26931			}
26932		}
26933	}
26934
26935	if invalidParams.Len() > 0 {
26936		return invalidParams
26937	}
26938	return nil
26939}
26940
26941// SetRole sets the Role field's value.
26942func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
26943	s.Role = &v
26944	return s
26945}
26946
26947// SetRules sets the Rules field's value.
26948func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
26949	s.Rules = v
26950	return s
26951}
26952
26953// Specifies which Amazon S3 objects to replicate and where to store the replicas.
26954type ReplicationRule struct {
26955	_ struct{} `type:"structure"`
26956
26957	// Specifies whether Amazon S3 replicates the delete markers. If you specify
26958	// a Filter, you must specify this element. However, in the latest version of
26959	// replication configuration (when Filter is specified), Amazon S3 doesn't replicate
26960	// delete markers. Therefore, the DeleteMarkerReplication element can contain
26961	// only <Status>Disabled</Status>. For an example configuration, see Basic Rule
26962	// Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
26963	//
26964	// If you don't specify the Filter element, Amazon S3 assumes that the replication
26965	// configuration is the earlier version, V1. In the earlier version, Amazon
26966	// S3 handled replication of delete markers differently. For more information,
26967	// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
26968	DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
26969
26970	// A container for information about the replication destination and its configurations
26971	// including enabling the S3 Replication Time Control (S3 RTC).
26972	//
26973	// Destination is a required field
26974	Destination *Destination `type:"structure" required:"true"`
26975
26976	// Optional configuration to replicate existing source bucket objects. For more
26977	// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
26978	// in the Amazon S3 Developer Guide.
26979	ExistingObjectReplication *ExistingObjectReplication `type:"structure"`
26980
26981	// A filter that identifies the subset of objects to which the replication rule
26982	// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
26983	Filter *ReplicationRuleFilter `type:"structure"`
26984
26985	// A unique identifier for the rule. The maximum value is 255 characters.
26986	ID *string `type:"string"`
26987
26988	// An object key name prefix that identifies the object or objects to which
26989	// the rule applies. The maximum prefix length is 1,024 characters. To include
26990	// all objects in a bucket, specify an empty string.
26991	//
26992	// Deprecated: Prefix has been deprecated
26993	Prefix *string `deprecated:"true" type:"string"`
26994
26995	// The priority associated with the rule. If you specify multiple rules in a
26996	// replication configuration, Amazon S3 prioritizes the rules to prevent conflicts
26997	// when filtering. If two or more rules identify the same object based on a
26998	// specified filter, the rule with higher priority takes precedence. For example:
26999	//
27000	//    * Same object quality prefix-based filter criteria if prefixes you specified
27001	//    in multiple rules overlap
27002	//
27003	//    * Same object qualify tag-based filter criteria specified in multiple
27004	//    rules
27005	//
27006	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
27007	// in the Amazon Simple Storage Service Developer Guide.
27008	Priority *int64 `type:"integer"`
27009
27010	// A container that describes additional filters for identifying the source
27011	// objects that you want to replicate. You can choose to enable or disable the
27012	// replication of these objects. Currently, Amazon S3 supports only the filter
27013	// that you can specify for objects created with server-side encryption using
27014	// a customer master key (CMK) stored in AWS Key Management Service (SSE-KMS).
27015	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
27016
27017	// Specifies whether the rule is enabled.
27018	//
27019	// Status is a required field
27020	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
27021}
27022
27023// String returns the string representation
27024func (s ReplicationRule) String() string {
27025	return awsutil.Prettify(s)
27026}
27027
27028// GoString returns the string representation
27029func (s ReplicationRule) GoString() string {
27030	return s.String()
27031}
27032
27033// Validate inspects the fields of the type to determine if they are valid.
27034func (s *ReplicationRule) Validate() error {
27035	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
27036	if s.Destination == nil {
27037		invalidParams.Add(request.NewErrParamRequired("Destination"))
27038	}
27039	if s.Status == nil {
27040		invalidParams.Add(request.NewErrParamRequired("Status"))
27041	}
27042	if s.Destination != nil {
27043		if err := s.Destination.Validate(); err != nil {
27044			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
27045		}
27046	}
27047	if s.ExistingObjectReplication != nil {
27048		if err := s.ExistingObjectReplication.Validate(); err != nil {
27049			invalidParams.AddNested("ExistingObjectReplication", err.(request.ErrInvalidParams))
27050		}
27051	}
27052	if s.Filter != nil {
27053		if err := s.Filter.Validate(); err != nil {
27054			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
27055		}
27056	}
27057	if s.SourceSelectionCriteria != nil {
27058		if err := s.SourceSelectionCriteria.Validate(); err != nil {
27059			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
27060		}
27061	}
27062
27063	if invalidParams.Len() > 0 {
27064		return invalidParams
27065	}
27066	return nil
27067}
27068
27069// SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value.
27070func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule {
27071	s.DeleteMarkerReplication = v
27072	return s
27073}
27074
27075// SetDestination sets the Destination field's value.
27076func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
27077	s.Destination = v
27078	return s
27079}
27080
27081// SetExistingObjectReplication sets the ExistingObjectReplication field's value.
27082func (s *ReplicationRule) SetExistingObjectReplication(v *ExistingObjectReplication) *ReplicationRule {
27083	s.ExistingObjectReplication = v
27084	return s
27085}
27086
27087// SetFilter sets the Filter field's value.
27088func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule {
27089	s.Filter = v
27090	return s
27091}
27092
27093// SetID sets the ID field's value.
27094func (s *ReplicationRule) SetID(v string) *ReplicationRule {
27095	s.ID = &v
27096	return s
27097}
27098
27099// SetPrefix sets the Prefix field's value.
27100func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
27101	s.Prefix = &v
27102	return s
27103}
27104
27105// SetPriority sets the Priority field's value.
27106func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule {
27107	s.Priority = &v
27108	return s
27109}
27110
27111// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
27112func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
27113	s.SourceSelectionCriteria = v
27114	return s
27115}
27116
27117// SetStatus sets the Status field's value.
27118func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
27119	s.Status = &v
27120	return s
27121}
27122
27123// A container for specifying rule filters. The filters determine the subset
27124// of objects to which the rule applies. This element is required only if you
27125// specify more than one filter.
27126//
27127// For example:
27128//
27129//    * If you specify both a Prefix and a Tag filter, wrap these filters in
27130//    an And tag.
27131//
27132//    * If you specify a filter based on multiple tags, wrap the Tag elements
27133//    in an And tag
27134type ReplicationRuleAndOperator struct {
27135	_ struct{} `type:"structure"`
27136
27137	// An object key name prefix that identifies the subset of objects to which
27138	// the rule applies.
27139	Prefix *string `type:"string"`
27140
27141	// An array of tags containing key and value pairs.
27142	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
27143}
27144
27145// String returns the string representation
27146func (s ReplicationRuleAndOperator) String() string {
27147	return awsutil.Prettify(s)
27148}
27149
27150// GoString returns the string representation
27151func (s ReplicationRuleAndOperator) GoString() string {
27152	return s.String()
27153}
27154
27155// Validate inspects the fields of the type to determine if they are valid.
27156func (s *ReplicationRuleAndOperator) Validate() error {
27157	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"}
27158	if s.Tags != nil {
27159		for i, v := range s.Tags {
27160			if v == nil {
27161				continue
27162			}
27163			if err := v.Validate(); err != nil {
27164				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
27165			}
27166		}
27167	}
27168
27169	if invalidParams.Len() > 0 {
27170		return invalidParams
27171	}
27172	return nil
27173}
27174
27175// SetPrefix sets the Prefix field's value.
27176func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator {
27177	s.Prefix = &v
27178	return s
27179}
27180
27181// SetTags sets the Tags field's value.
27182func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator {
27183	s.Tags = v
27184	return s
27185}
27186
27187// A filter that identifies the subset of objects to which the replication rule
27188// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
27189type ReplicationRuleFilter struct {
27190	_ struct{} `type:"structure"`
27191
27192	// A container for specifying rule filters. The filters determine the subset
27193	// of objects to which the rule applies. This element is required only if you
27194	// specify more than one filter. For example:
27195	//
27196	//    * If you specify both a Prefix and a Tag filter, wrap these filters in
27197	//    an And tag.
27198	//
27199	//    * If you specify a filter based on multiple tags, wrap the Tag elements
27200	//    in an And tag.
27201	And *ReplicationRuleAndOperator `type:"structure"`
27202
27203	// An object key name prefix that identifies the subset of objects to which
27204	// the rule applies.
27205	Prefix *string `type:"string"`
27206
27207	// A container for specifying a tag key and value.
27208	//
27209	// The rule applies only to objects that have the tag in their tag set.
27210	Tag *Tag `type:"structure"`
27211}
27212
27213// String returns the string representation
27214func (s ReplicationRuleFilter) String() string {
27215	return awsutil.Prettify(s)
27216}
27217
27218// GoString returns the string representation
27219func (s ReplicationRuleFilter) GoString() string {
27220	return s.String()
27221}
27222
27223// Validate inspects the fields of the type to determine if they are valid.
27224func (s *ReplicationRuleFilter) Validate() error {
27225	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"}
27226	if s.And != nil {
27227		if err := s.And.Validate(); err != nil {
27228			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
27229		}
27230	}
27231	if s.Tag != nil {
27232		if err := s.Tag.Validate(); err != nil {
27233			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
27234		}
27235	}
27236
27237	if invalidParams.Len() > 0 {
27238		return invalidParams
27239	}
27240	return nil
27241}
27242
27243// SetAnd sets the And field's value.
27244func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter {
27245	s.And = v
27246	return s
27247}
27248
27249// SetPrefix sets the Prefix field's value.
27250func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter {
27251	s.Prefix = &v
27252	return s
27253}
27254
27255// SetTag sets the Tag field's value.
27256func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter {
27257	s.Tag = v
27258	return s
27259}
27260
27261// A container specifying S3 Replication Time Control (S3 RTC) related information,
27262// including whether S3 RTC is enabled and the time when all objects and operations
27263// on objects must be replicated. Must be specified together with a Metrics
27264// block.
27265type ReplicationTime struct {
27266	_ struct{} `type:"structure"`
27267
27268	// Specifies whether the replication time is enabled.
27269	//
27270	// Status is a required field
27271	Status *string `type:"string" required:"true" enum:"ReplicationTimeStatus"`
27272
27273	// A container specifying the time by which replication should be complete for
27274	// all objects and operations on objects.
27275	//
27276	// Time is a required field
27277	Time *ReplicationTimeValue `type:"structure" required:"true"`
27278}
27279
27280// String returns the string representation
27281func (s ReplicationTime) String() string {
27282	return awsutil.Prettify(s)
27283}
27284
27285// GoString returns the string representation
27286func (s ReplicationTime) GoString() string {
27287	return s.String()
27288}
27289
27290// Validate inspects the fields of the type to determine if they are valid.
27291func (s *ReplicationTime) Validate() error {
27292	invalidParams := request.ErrInvalidParams{Context: "ReplicationTime"}
27293	if s.Status == nil {
27294		invalidParams.Add(request.NewErrParamRequired("Status"))
27295	}
27296	if s.Time == nil {
27297		invalidParams.Add(request.NewErrParamRequired("Time"))
27298	}
27299
27300	if invalidParams.Len() > 0 {
27301		return invalidParams
27302	}
27303	return nil
27304}
27305
27306// SetStatus sets the Status field's value.
27307func (s *ReplicationTime) SetStatus(v string) *ReplicationTime {
27308	s.Status = &v
27309	return s
27310}
27311
27312// SetTime sets the Time field's value.
27313func (s *ReplicationTime) SetTime(v *ReplicationTimeValue) *ReplicationTime {
27314	s.Time = v
27315	return s
27316}
27317
27318// A container specifying the time value for S3 Replication Time Control (S3
27319// RTC) and replication metrics EventThreshold.
27320type ReplicationTimeValue struct {
27321	_ struct{} `type:"structure"`
27322
27323	// Contains an integer specifying time in minutes.
27324	//
27325	// Valid values: 15 minutes.
27326	Minutes *int64 `type:"integer"`
27327}
27328
27329// String returns the string representation
27330func (s ReplicationTimeValue) String() string {
27331	return awsutil.Prettify(s)
27332}
27333
27334// GoString returns the string representation
27335func (s ReplicationTimeValue) GoString() string {
27336	return s.String()
27337}
27338
27339// SetMinutes sets the Minutes field's value.
27340func (s *ReplicationTimeValue) SetMinutes(v int64) *ReplicationTimeValue {
27341	s.Minutes = &v
27342	return s
27343}
27344
27345// Container for Payer.
27346type RequestPaymentConfiguration struct {
27347	_ struct{} `type:"structure"`
27348
27349	// Specifies who pays for the download and request fees.
27350	//
27351	// Payer is a required field
27352	Payer *string `type:"string" required:"true" enum:"Payer"`
27353}
27354
27355// String returns the string representation
27356func (s RequestPaymentConfiguration) String() string {
27357	return awsutil.Prettify(s)
27358}
27359
27360// GoString returns the string representation
27361func (s RequestPaymentConfiguration) GoString() string {
27362	return s.String()
27363}
27364
27365// Validate inspects the fields of the type to determine if they are valid.
27366func (s *RequestPaymentConfiguration) Validate() error {
27367	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
27368	if s.Payer == nil {
27369		invalidParams.Add(request.NewErrParamRequired("Payer"))
27370	}
27371
27372	if invalidParams.Len() > 0 {
27373		return invalidParams
27374	}
27375	return nil
27376}
27377
27378// SetPayer sets the Payer field's value.
27379func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
27380	s.Payer = &v
27381	return s
27382}
27383
27384// Container for specifying if periodic QueryProgress messages should be sent.
27385type RequestProgress struct {
27386	_ struct{} `type:"structure"`
27387
27388	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
27389	// TRUE, FALSE. Default value: FALSE.
27390	Enabled *bool `type:"boolean"`
27391}
27392
27393// String returns the string representation
27394func (s RequestProgress) String() string {
27395	return awsutil.Prettify(s)
27396}
27397
27398// GoString returns the string representation
27399func (s RequestProgress) GoString() string {
27400	return s.String()
27401}
27402
27403// SetEnabled sets the Enabled field's value.
27404func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
27405	s.Enabled = &v
27406	return s
27407}
27408
27409type RestoreObjectInput struct {
27410	_ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"`
27411
27412	// The bucket name or containing the object to restore.
27413	//
27414	// When using this API with an access point, you must direct requests to the
27415	// access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
27416	// When using this operation using an access point through the AWS SDKs, you
27417	// provide the access point ARN in place of the bucket name. For more information
27418	// about access point ARNs, see Using Access Points (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html)
27419	// in the Amazon Simple Storage Service Developer Guide.
27420	//
27421	// Bucket is a required field
27422	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
27423
27424	// Object key for which the operation was initiated.
27425	//
27426	// Key is a required field
27427	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
27428
27429	// Confirms that the requester knows that she or he will be charged for the
27430	// request. Bucket owners need not specify this parameter in their requests.
27431	// For information about downloading objects from Requester Pays buckets, see
27432	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
27433	// in the Amazon S3 Developer Guide.
27434	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
27435
27436	// Container for restore job parameters.
27437	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
27438
27439	// VersionId used to reference a specific version of the object.
27440	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
27441}
27442
27443// String returns the string representation
27444func (s RestoreObjectInput) String() string {
27445	return awsutil.Prettify(s)
27446}
27447
27448// GoString returns the string representation
27449func (s RestoreObjectInput) GoString() string {
27450	return s.String()
27451}
27452
27453// Validate inspects the fields of the type to determine if they are valid.
27454func (s *RestoreObjectInput) Validate() error {
27455	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
27456	if s.Bucket == nil {
27457		invalidParams.Add(request.NewErrParamRequired("Bucket"))
27458	}
27459	if s.Bucket != nil && len(*s.Bucket) < 1 {
27460		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
27461	}
27462	if s.Key == nil {
27463		invalidParams.Add(request.NewErrParamRequired("Key"))
27464	}
27465	if s.Key != nil && len(*s.Key) < 1 {
27466		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
27467	}
27468	if s.RestoreRequest != nil {
27469		if err := s.RestoreRequest.Validate(); err != nil {
27470			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
27471		}
27472	}
27473
27474	if invalidParams.Len() > 0 {
27475		return invalidParams
27476	}
27477	return nil
27478}
27479
27480// SetBucket sets the Bucket field's value.
27481func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
27482	s.Bucket = &v
27483	return s
27484}
27485
27486func (s *RestoreObjectInput) getBucket() (v string) {
27487	if s.Bucket == nil {
27488		return v
27489	}
27490	return *s.Bucket
27491}
27492
27493// SetKey sets the Key field's value.
27494func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
27495	s.Key = &v
27496	return s
27497}
27498
27499// SetRequestPayer sets the RequestPayer field's value.
27500func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
27501	s.RequestPayer = &v
27502	return s
27503}
27504
27505// SetRestoreRequest sets the RestoreRequest field's value.
27506func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
27507	s.RestoreRequest = v
27508	return s
27509}
27510
27511// SetVersionId sets the VersionId field's value.
27512func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
27513	s.VersionId = &v
27514	return s
27515}
27516
27517func (s *RestoreObjectInput) getEndpointARN() (arn.Resource, error) {
27518	if s.Bucket == nil {
27519		return nil, fmt.Errorf("member Bucket is nil")
27520	}
27521	return parseEndpointARN(*s.Bucket)
27522}
27523
27524func (s *RestoreObjectInput) hasEndpointARN() bool {
27525	if s.Bucket == nil {
27526		return false
27527	}
27528	return arn.IsARN(*s.Bucket)
27529}
27530
27531type RestoreObjectOutput struct {
27532	_ struct{} `type:"structure"`
27533
27534	// If present, indicates that the requester was successfully charged for the
27535	// request.
27536	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
27537
27538	// Indicates the path in the provided S3 output location where Select results
27539	// will be restored to.
27540	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
27541}
27542
27543// String returns the string representation
27544func (s RestoreObjectOutput) String() string {
27545	return awsutil.Prettify(s)
27546}
27547
27548// GoString returns the string representation
27549func (s RestoreObjectOutput) GoString() string {
27550	return s.String()
27551}
27552
27553// SetRequestCharged sets the RequestCharged field's value.
27554func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
27555	s.RequestCharged = &v
27556	return s
27557}
27558
27559// SetRestoreOutputPath sets the RestoreOutputPath field's value.
27560func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
27561	s.RestoreOutputPath = &v
27562	return s
27563}
27564
27565// Container for restore job parameters.
27566type RestoreRequest struct {
27567	_ struct{} `type:"structure"`
27568
27569	// Lifetime of the active copy in days. Do not use with restores that specify
27570	// OutputLocation.
27571	Days *int64 `type:"integer"`
27572
27573	// The optional description for the job.
27574	Description *string `type:"string"`
27575
27576	// Glacier related parameters pertaining to this job. Do not use with restores
27577	// that specify OutputLocation.
27578	GlacierJobParameters *GlacierJobParameters `type:"structure"`
27579
27580	// Describes the location where the restore job's output is stored.
27581	OutputLocation *OutputLocation `type:"structure"`
27582
27583	// Describes the parameters for Select job types.
27584	SelectParameters *SelectParameters `type:"structure"`
27585
27586	// Glacier retrieval tier at which the restore will be processed.
27587	Tier *string `type:"string" enum:"Tier"`
27588
27589	// Type of restore request.
27590	Type *string `type:"string" enum:"RestoreRequestType"`
27591}
27592
27593// String returns the string representation
27594func (s RestoreRequest) String() string {
27595	return awsutil.Prettify(s)
27596}
27597
27598// GoString returns the string representation
27599func (s RestoreRequest) GoString() string {
27600	return s.String()
27601}
27602
27603// Validate inspects the fields of the type to determine if they are valid.
27604func (s *RestoreRequest) Validate() error {
27605	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
27606	if s.GlacierJobParameters != nil {
27607		if err := s.GlacierJobParameters.Validate(); err != nil {
27608			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
27609		}
27610	}
27611	if s.OutputLocation != nil {
27612		if err := s.OutputLocation.Validate(); err != nil {
27613			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
27614		}
27615	}
27616	if s.SelectParameters != nil {
27617		if err := s.SelectParameters.Validate(); err != nil {
27618			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
27619		}
27620	}
27621
27622	if invalidParams.Len() > 0 {
27623		return invalidParams
27624	}
27625	return nil
27626}
27627
27628// SetDays sets the Days field's value.
27629func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
27630	s.Days = &v
27631	return s
27632}
27633
27634// SetDescription sets the Description field's value.
27635func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
27636	s.Description = &v
27637	return s
27638}
27639
27640// SetGlacierJobParameters sets the GlacierJobParameters field's value.
27641func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
27642	s.GlacierJobParameters = v
27643	return s
27644}
27645
27646// SetOutputLocation sets the OutputLocation field's value.
27647func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
27648	s.OutputLocation = v
27649	return s
27650}
27651
27652// SetSelectParameters sets the SelectParameters field's value.
27653func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
27654	s.SelectParameters = v
27655	return s
27656}
27657
27658// SetTier sets the Tier field's value.
27659func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
27660	s.Tier = &v
27661	return s
27662}
27663
27664// SetType sets the Type field's value.
27665func (s *RestoreRequest) SetType(v string) *RestoreRequest {
27666	s.Type = &v
27667	return s
27668}
27669
27670// Specifies the redirect behavior and when a redirect is applied.
27671type RoutingRule struct {
27672	_ struct{} `type:"structure"`
27673
27674	// A container for describing a condition that must be met for the specified
27675	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
27676	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
27677	// redirect request to another host where you might process the error.
27678	Condition *Condition `type:"structure"`
27679
27680	// Container for redirect information. You can redirect requests to another
27681	// host, to another page, or with another protocol. In the event of an error,
27682	// you can specify a different error code to return.
27683	//
27684	// Redirect is a required field
27685	Redirect *Redirect `type:"structure" required:"true"`
27686}
27687
27688// String returns the string representation
27689func (s RoutingRule) String() string {
27690	return awsutil.Prettify(s)
27691}
27692
27693// GoString returns the string representation
27694func (s RoutingRule) GoString() string {
27695	return s.String()
27696}
27697
27698// Validate inspects the fields of the type to determine if they are valid.
27699func (s *RoutingRule) Validate() error {
27700	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
27701	if s.Redirect == nil {
27702		invalidParams.Add(request.NewErrParamRequired("Redirect"))
27703	}
27704
27705	if invalidParams.Len() > 0 {
27706		return invalidParams
27707	}
27708	return nil
27709}
27710
27711// SetCondition sets the Condition field's value.
27712func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
27713	s.Condition = v
27714	return s
27715}
27716
27717// SetRedirect sets the Redirect field's value.
27718func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
27719	s.Redirect = v
27720	return s
27721}
27722
27723// Specifies lifecycle rules for an Amazon S3 bucket. For more information,
27724// see PUT Bucket lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)
27725// in the Amazon Simple Storage Service API Reference.
27726type Rule struct {
27727	_ struct{} `type:"structure"`
27728
27729	// Specifies the days since the initiation of an incomplete multipart upload
27730	// that Amazon S3 will wait before permanently removing all parts of the upload.
27731	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
27732	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
27733	// in the Amazon Simple Storage Service Developer Guide.
27734	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
27735
27736	// Specifies the expiration for the lifecycle of the object.
27737	Expiration *LifecycleExpiration `type:"structure"`
27738
27739	// Unique identifier for the rule. The value can't be longer than 255 characters.
27740	ID *string `type:"string"`
27741
27742	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
27743	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
27744	// configuration action on a bucket that has versioning enabled (or suspended)
27745	// to request that Amazon S3 delete noncurrent object versions at a specific
27746	// period in the object's lifetime.
27747	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
27748
27749	// Container for the transition rule that describes when noncurrent objects
27750	// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
27751	// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
27752	// is suspended), you can set this action to request that Amazon S3 transition
27753	// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
27754	// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
27755	// lifetime.
27756	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
27757
27758	// Object key prefix that identifies one or more objects to which this rule
27759	// applies.
27760	//
27761	// Prefix is a required field
27762	Prefix *string `type:"string" required:"true"`
27763
27764	// If Enabled, the rule is currently being applied. If Disabled, the rule is
27765	// not currently being applied.
27766	//
27767	// Status is a required field
27768	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
27769
27770	// Specifies when an object transitions to a specified storage class.
27771	Transition *Transition `type:"structure"`
27772}
27773
27774// String returns the string representation
27775func (s Rule) String() string {
27776	return awsutil.Prettify(s)
27777}
27778
27779// GoString returns the string representation
27780func (s Rule) GoString() string {
27781	return s.String()
27782}
27783
27784// Validate inspects the fields of the type to determine if they are valid.
27785func (s *Rule) Validate() error {
27786	invalidParams := request.ErrInvalidParams{Context: "Rule"}
27787	if s.Prefix == nil {
27788		invalidParams.Add(request.NewErrParamRequired("Prefix"))
27789	}
27790	if s.Status == nil {
27791		invalidParams.Add(request.NewErrParamRequired("Status"))
27792	}
27793
27794	if invalidParams.Len() > 0 {
27795		return invalidParams
27796	}
27797	return nil
27798}
27799
27800// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
27801func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
27802	s.AbortIncompleteMultipartUpload = v
27803	return s
27804}
27805
27806// SetExpiration sets the Expiration field's value.
27807func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
27808	s.Expiration = v
27809	return s
27810}
27811
27812// SetID sets the ID field's value.
27813func (s *Rule) SetID(v string) *Rule {
27814	s.ID = &v
27815	return s
27816}
27817
27818// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
27819func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
27820	s.NoncurrentVersionExpiration = v
27821	return s
27822}
27823
27824// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
27825func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
27826	s.NoncurrentVersionTransition = v
27827	return s
27828}
27829
27830// SetPrefix sets the Prefix field's value.
27831func (s *Rule) SetPrefix(v string) *Rule {
27832	s.Prefix = &v
27833	return s
27834}
27835
27836// SetStatus sets the Status field's value.
27837func (s *Rule) SetStatus(v string) *Rule {
27838	s.Status = &v
27839	return s
27840}
27841
27842// SetTransition sets the Transition field's value.
27843func (s *Rule) SetTransition(v *Transition) *Rule {
27844	s.Transition = v
27845	return s
27846}
27847
27848// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
27849type SSEKMS struct {
27850	_ struct{} `locationName:"SSE-KMS" type:"structure"`
27851
27852	// Specifies the ID of the AWS Key Management Service (AWS KMS) customer master
27853	// key (CMK) to use for encrypting inventory reports.
27854	//
27855	// KeyId is a required field
27856	KeyId *string `type:"string" required:"true" sensitive:"true"`
27857}
27858
27859// String returns the string representation
27860func (s SSEKMS) String() string {
27861	return awsutil.Prettify(s)
27862}
27863
27864// GoString returns the string representation
27865func (s SSEKMS) GoString() string {
27866	return s.String()
27867}
27868
27869// Validate inspects the fields of the type to determine if they are valid.
27870func (s *SSEKMS) Validate() error {
27871	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
27872	if s.KeyId == nil {
27873		invalidParams.Add(request.NewErrParamRequired("KeyId"))
27874	}
27875
27876	if invalidParams.Len() > 0 {
27877		return invalidParams
27878	}
27879	return nil
27880}
27881
27882// SetKeyId sets the KeyId field's value.
27883func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
27884	s.KeyId = &v
27885	return s
27886}
27887
27888// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
27889type SSES3 struct {
27890	_ struct{} `locationName:"SSE-S3" type:"structure"`
27891}
27892
27893// String returns the string representation
27894func (s SSES3) String() string {
27895	return awsutil.Prettify(s)
27896}
27897
27898// GoString returns the string representation
27899func (s SSES3) GoString() string {
27900	return s.String()
27901}
27902
27903// Specifies the byte range of the object to get the records from. A record
27904// is processed when its first byte is contained by the range. This parameter
27905// is optional, but when specified, it must not be empty. See RFC 2616, Section
27906// 14.35.1 about how to specify the start and end of the range.
27907type ScanRange struct {
27908	_ struct{} `type:"structure"`
27909
27910	// Specifies the end of the byte range. This parameter is optional. Valid values:
27911	// non-negative integers. The default value is one less than the size of the
27912	// object being queried. If only the End parameter is supplied, it is interpreted
27913	// to mean scan the last N bytes of the file. For example, <scanrange><end>50</end></scanrange>
27914	// means scan the last 50 bytes.
27915	End *int64 `type:"long"`
27916
27917	// Specifies the start of the byte range. This parameter is optional. Valid
27918	// values: non-negative integers. The default value is 0. If only start is supplied,
27919	// it means scan from that point to the end of the file.For example; <scanrange><start>50</start></scanrange>
27920	// means scan from byte 50 until the end of the file.
27921	Start *int64 `type:"long"`
27922}
27923
27924// String returns the string representation
27925func (s ScanRange) String() string {
27926	return awsutil.Prettify(s)
27927}
27928
27929// GoString returns the string representation
27930func (s ScanRange) GoString() string {
27931	return s.String()
27932}
27933
27934// SetEnd sets the End field's value.
27935func (s *ScanRange) SetEnd(v int64) *ScanRange {
27936	s.End = &v
27937	return s
27938}
27939
27940// SetStart sets the Start field's value.
27941func (s *ScanRange) SetStart(v int64) *ScanRange {
27942	s.Start = &v
27943	return s
27944}
27945
27946// SelectObjectContentEventStream provides handling of EventStreams for
27947// the SelectObjectContent API.
27948//
27949// Use this type to receive SelectObjectContentEventStream events. The events
27950// can be read from the Events channel member.
27951//
27952// The events that can be received are:
27953//
27954//     * ContinuationEvent
27955//     * EndEvent
27956//     * ProgressEvent
27957//     * RecordsEvent
27958//     * StatsEvent
27959type SelectObjectContentEventStream struct {
27960	// Reader is the EventStream reader for the SelectObjectContentEventStream
27961	// events. This value is automatically set by the SDK when the API call is made
27962	// Use this member when unit testing your code with the SDK to mock out the
27963	// EventStream Reader.
27964	//
27965	// Must not be nil.
27966	Reader SelectObjectContentEventStreamReader
27967
27968	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
27969	// EventStream this is the response Body. The stream will be closed when
27970	// the Close method of the EventStream is called.
27971	StreamCloser io.Closer
27972}
27973
27974// Close closes the EventStream. This will also cause the Events channel to be
27975// closed. You can use the closing of the Events channel to terminate your
27976// application's read from the API's EventStream.
27977//
27978// Will close the underlying EventStream reader. For EventStream over HTTP
27979// connection this will also close the HTTP connection.
27980//
27981// Close must be called when done using the EventStream API. Not calling Close
27982// may result in resource leaks.
27983func (es *SelectObjectContentEventStream) Close() (err error) {
27984	es.Reader.Close()
27985	es.StreamCloser.Close()
27986
27987	return es.Err()
27988}
27989
27990// Err returns any error that occurred while reading EventStream Events from
27991// the service API's response. Returns nil if there were no errors.
27992func (es *SelectObjectContentEventStream) Err() error {
27993	if err := es.Reader.Err(); err != nil {
27994		return err
27995	}
27996	return nil
27997}
27998
27999// Events returns a channel to read EventStream Events from the
28000// SelectObjectContent API.
28001//
28002// These events are:
28003//
28004//     * ContinuationEvent
28005//     * EndEvent
28006//     * ProgressEvent
28007//     * RecordsEvent
28008//     * StatsEvent
28009func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
28010	return es.Reader.Events()
28011}
28012
28013// SelectObjectContentEventStreamEvent groups together all EventStream
28014// events read from the SelectObjectContent API.
28015//
28016// These events are:
28017//
28018//     * ContinuationEvent
28019//     * EndEvent
28020//     * ProgressEvent
28021//     * RecordsEvent
28022//     * StatsEvent
28023type SelectObjectContentEventStreamEvent interface {
28024	eventSelectObjectContentEventStream()
28025}
28026
28027// SelectObjectContentEventStreamReader provides the interface for reading EventStream
28028// Events from the SelectObjectContent API. The
28029// default implementation for this interface will be SelectObjectContentEventStream.
28030//
28031// The reader's Close method must allow multiple concurrent calls.
28032//
28033// These events are:
28034//
28035//     * ContinuationEvent
28036//     * EndEvent
28037//     * ProgressEvent
28038//     * RecordsEvent
28039//     * StatsEvent
28040type SelectObjectContentEventStreamReader interface {
28041	// Returns a channel of events as they are read from the event stream.
28042	Events() <-chan SelectObjectContentEventStreamEvent
28043
28044	// Close will close the underlying event stream reader. For event stream over
28045	// HTTP this will also close the HTTP connection.
28046	Close() error
28047
28048	// Returns any error that has occurred while reading from the event stream.
28049	Err() error
28050}
28051
28052type readSelectObjectContentEventStream struct {
28053	eventReader *eventstreamapi.EventReader
28054	stream      chan SelectObjectContentEventStreamEvent
28055	errVal      atomic.Value
28056
28057	done      chan struct{}
28058	closeOnce sync.Once
28059}
28060
28061func newReadSelectObjectContentEventStream(
28062	reader io.ReadCloser,
28063	unmarshalers request.HandlerList,
28064	logger aws.Logger,
28065	logLevel aws.LogLevelType,
28066) *readSelectObjectContentEventStream {
28067	r := &readSelectObjectContentEventStream{
28068		stream: make(chan SelectObjectContentEventStreamEvent),
28069		done:   make(chan struct{}),
28070	}
28071
28072	r.eventReader = eventstreamapi.NewEventReader(
28073		reader,
28074		protocol.HandlerPayloadUnmarshal{
28075			Unmarshalers: unmarshalers,
28076		},
28077		r.unmarshalerForEventType,
28078	)
28079	r.eventReader.UseLogger(logger, logLevel)
28080
28081	return r
28082}
28083
28084// Close will close the underlying event stream reader. For EventStream over
28085// HTTP this will also close the HTTP connection.
28086func (r *readSelectObjectContentEventStream) Close() error {
28087	r.closeOnce.Do(r.safeClose)
28088
28089	return r.Err()
28090}
28091
28092func (r *readSelectObjectContentEventStream) safeClose() {
28093	close(r.done)
28094	err := r.eventReader.Close()
28095	if err != nil {
28096		r.errVal.Store(err)
28097	}
28098}
28099
28100func (r *readSelectObjectContentEventStream) Err() error {
28101	if v := r.errVal.Load(); v != nil {
28102		return v.(error)
28103	}
28104
28105	return nil
28106}
28107
28108func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
28109	return r.stream
28110}
28111
28112func (r *readSelectObjectContentEventStream) readEventStream() {
28113	defer close(r.stream)
28114
28115	for {
28116		event, err := r.eventReader.ReadEvent()
28117		if err != nil {
28118			if err == io.EOF {
28119				return
28120			}
28121			select {
28122			case <-r.done:
28123				// If closed already ignore the error
28124				return
28125			default:
28126			}
28127			r.errVal.Store(err)
28128			return
28129		}
28130
28131		select {
28132		case r.stream <- event.(SelectObjectContentEventStreamEvent):
28133		case <-r.done:
28134			return
28135		}
28136	}
28137}
28138
28139func (r *readSelectObjectContentEventStream) unmarshalerForEventType(
28140	eventType string,
28141) (eventstreamapi.Unmarshaler, error) {
28142	switch eventType {
28143	case "Cont":
28144		return &ContinuationEvent{}, nil
28145
28146	case "End":
28147		return &EndEvent{}, nil
28148
28149	case "Progress":
28150		return &ProgressEvent{}, nil
28151
28152	case "Records":
28153		return &RecordsEvent{}, nil
28154
28155	case "Stats":
28156		return &StatsEvent{}, nil
28157	default:
28158		return nil, awserr.New(
28159			request.ErrCodeSerialization,
28160			fmt.Sprintf("unknown event type name, %s, for SelectObjectContentEventStream", eventType),
28161			nil,
28162		)
28163	}
28164}
28165
28166// Request to filter the contents of an Amazon S3 object based on a simple Structured
28167// Query Language (SQL) statement. In the request, along with the SQL expression,
28168// you must specify a data serialization format (JSON or CSV) of the object.
28169// Amazon S3 uses this to parse object data into records. It returns only records
28170// that match the specified SQL expression. You must also specify the data serialization
28171// format for the response. For more information, see S3Select API Documentation
28172// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
28173type SelectObjectContentInput struct {
28174	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
28175
28176	// The S3 bucket.
28177	//
28178	// Bucket is a required field
28179	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
28180
28181	// The expression that is used to query the object.
28182	//
28183	// Expression is a required field
28184	Expression *string `type:"string" required:"true"`
28185
28186	// The type of the provided expression (for example, SQL).
28187	//
28188	// ExpressionType is a required field
28189	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
28190
28191	// Describes the format of the data in the object that is being queried.
28192	//
28193	// InputSerialization is a required field
28194	InputSerialization *InputSerialization `type:"structure" required:"true"`
28195
28196	// The object key.
28197	//
28198	// Key is a required field
28199	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
28200
28201	// Describes the format of the data that you want Amazon S3 to return in response.
28202	//
28203	// OutputSerialization is a required field
28204	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
28205
28206	// Specifies if periodic request progress information should be enabled.
28207	RequestProgress *RequestProgress `type:"structure"`
28208
28209	// The SSE Algorithm used to encrypt the object. For more information, see Server-Side
28210	// Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
28211	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
28212
28213	// The SSE Customer Key. For more information, see Server-Side Encryption (Using
28214	// Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
28215	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
28216
28217	// The SSE Customer Key MD5. For more information, see Server-Side Encryption
28218	// (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
28219	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
28220
28221	// Specifies the byte range of the object to get the records from. A record
28222	// is processed when its first byte is contained by the range. This parameter
28223	// is optional, but when specified, it must not be empty. See RFC 2616, Section
28224	// 14.35.1 about how to specify the start and end of the range.
28225	//
28226	// ScanRangemay be used in the following ways:
28227	//
28228	//    * <scanrange><start>50</start><end>100</end></scanrange> - process only
28229	//    the records starting between the bytes 50 and 100 (inclusive, counting
28230	//    from zero)
28231	//
28232	//    * <scanrange><start>50</start></scanrange> - process only the records
28233	//    starting after the byte 50
28234	//
28235	//    * <scanrange><end>50</end></scanrange> - process only the records within
28236	//    the last 50 bytes of the file.
28237	ScanRange *ScanRange `type:"structure"`
28238}
28239
28240// String returns the string representation
28241func (s SelectObjectContentInput) String() string {
28242	return awsutil.Prettify(s)
28243}
28244
28245// GoString returns the string representation
28246func (s SelectObjectContentInput) GoString() string {
28247	return s.String()
28248}
28249
28250// Validate inspects the fields of the type to determine if they are valid.
28251func (s *SelectObjectContentInput) Validate() error {
28252	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
28253	if s.Bucket == nil {
28254		invalidParams.Add(request.NewErrParamRequired("Bucket"))
28255	}
28256	if s.Bucket != nil && len(*s.Bucket) < 1 {
28257		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
28258	}
28259	if s.Expression == nil {
28260		invalidParams.Add(request.NewErrParamRequired("Expression"))
28261	}
28262	if s.ExpressionType == nil {
28263		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
28264	}
28265	if s.InputSerialization == nil {
28266		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
28267	}
28268	if s.Key == nil {
28269		invalidParams.Add(request.NewErrParamRequired("Key"))
28270	}
28271	if s.Key != nil && len(*s.Key) < 1 {
28272		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
28273	}
28274	if s.OutputSerialization == nil {
28275		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
28276	}
28277
28278	if invalidParams.Len() > 0 {
28279		return invalidParams
28280	}
28281	return nil
28282}
28283
28284// SetBucket sets the Bucket field's value.
28285func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
28286	s.Bucket = &v
28287	return s
28288}
28289
28290func (s *SelectObjectContentInput) getBucket() (v string) {
28291	if s.Bucket == nil {
28292		return v
28293	}
28294	return *s.Bucket
28295}
28296
28297// SetExpression sets the Expression field's value.
28298func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
28299	s.Expression = &v
28300	return s
28301}
28302
28303// SetExpressionType sets the ExpressionType field's value.
28304func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
28305	s.ExpressionType = &v
28306	return s
28307}
28308
28309// SetInputSerialization sets the InputSerialization field's value.
28310func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
28311	s.InputSerialization = v
28312	return s
28313}
28314
28315// SetKey sets the Key field's value.
28316func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
28317	s.Key = &v
28318	return s
28319}
28320
28321// SetOutputSerialization sets the OutputSerialization field's value.
28322func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
28323	s.OutputSerialization = v
28324	return s
28325}
28326
28327// SetRequestProgress sets the RequestProgress field's value.
28328func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
28329	s.RequestProgress = v
28330	return s
28331}
28332
28333// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
28334func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
28335	s.SSECustomerAlgorithm = &v
28336	return s
28337}
28338
28339// SetSSECustomerKey sets the SSECustomerKey field's value.
28340func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
28341	s.SSECustomerKey = &v
28342	return s
28343}
28344
28345func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
28346	if s.SSECustomerKey == nil {
28347		return v
28348	}
28349	return *s.SSECustomerKey
28350}
28351
28352// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
28353func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
28354	s.SSECustomerKeyMD5 = &v
28355	return s
28356}
28357
28358// SetScanRange sets the ScanRange field's value.
28359func (s *SelectObjectContentInput) SetScanRange(v *ScanRange) *SelectObjectContentInput {
28360	s.ScanRange = v
28361	return s
28362}
28363
28364func (s *SelectObjectContentInput) getEndpointARN() (arn.Resource, error) {
28365	if s.Bucket == nil {
28366		return nil, fmt.Errorf("member Bucket is nil")
28367	}
28368	return parseEndpointARN(*s.Bucket)
28369}
28370
28371func (s *SelectObjectContentInput) hasEndpointARN() bool {
28372	if s.Bucket == nil {
28373		return false
28374	}
28375	return arn.IsARN(*s.Bucket)
28376}
28377
28378type SelectObjectContentOutput struct {
28379	_ struct{} `type:"structure" payload:"Payload"`
28380
28381	// Use EventStream to use the API's stream.
28382	EventStream *SelectObjectContentEventStream `type:"structure"`
28383}
28384
28385// String returns the string representation
28386func (s SelectObjectContentOutput) String() string {
28387	return awsutil.Prettify(s)
28388}
28389
28390// GoString returns the string representation
28391func (s SelectObjectContentOutput) GoString() string {
28392	return s.String()
28393}
28394
28395// SetEventStream sets the EventStream field's value.
28396func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
28397	s.EventStream = v
28398	return s
28399}
28400
28401func (s *SelectObjectContentOutput) runEventStreamLoop(r *request.Request) {
28402	if r.Error != nil {
28403		return
28404	}
28405	reader := newReadSelectObjectContentEventStream(
28406		r.HTTPResponse.Body,
28407		r.Handlers.UnmarshalStream,
28408		r.Config.Logger,
28409		r.Config.LogLevel.Value(),
28410	)
28411	go reader.readEventStream()
28412
28413	eventStream := &SelectObjectContentEventStream{
28414		StreamCloser: r.HTTPResponse.Body,
28415		Reader:       reader,
28416	}
28417	s.EventStream = eventStream
28418}
28419
28420// Describes the parameters for Select job types.
28421type SelectParameters struct {
28422	_ struct{} `type:"structure"`
28423
28424	// The expression that is used to query the object.
28425	//
28426	// Expression is a required field
28427	Expression *string `type:"string" required:"true"`
28428
28429	// The type of the provided expression (for example, SQL).
28430	//
28431	// ExpressionType is a required field
28432	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
28433
28434	// Describes the serialization format of the object.
28435	//
28436	// InputSerialization is a required field
28437	InputSerialization *InputSerialization `type:"structure" required:"true"`
28438
28439	// Describes how the results of the Select job are serialized.
28440	//
28441	// OutputSerialization is a required field
28442	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
28443}
28444
28445// String returns the string representation
28446func (s SelectParameters) String() string {
28447	return awsutil.Prettify(s)
28448}
28449
28450// GoString returns the string representation
28451func (s SelectParameters) GoString() string {
28452	return s.String()
28453}
28454
28455// Validate inspects the fields of the type to determine if they are valid.
28456func (s *SelectParameters) Validate() error {
28457	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
28458	if s.Expression == nil {
28459		invalidParams.Add(request.NewErrParamRequired("Expression"))
28460	}
28461	if s.ExpressionType == nil {
28462		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
28463	}
28464	if s.InputSerialization == nil {
28465		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
28466	}
28467	if s.OutputSerialization == nil {
28468		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
28469	}
28470
28471	if invalidParams.Len() > 0 {
28472		return invalidParams
28473	}
28474	return nil
28475}
28476
28477// SetExpression sets the Expression field's value.
28478func (s *SelectParameters) SetExpression(v string) *SelectParameters {
28479	s.Expression = &v
28480	return s
28481}
28482
28483// SetExpressionType sets the ExpressionType field's value.
28484func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
28485	s.ExpressionType = &v
28486	return s
28487}
28488
28489// SetInputSerialization sets the InputSerialization field's value.
28490func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
28491	s.InputSerialization = v
28492	return s
28493}
28494
28495// SetOutputSerialization sets the OutputSerialization field's value.
28496func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
28497	s.OutputSerialization = v
28498	return s
28499}
28500
28501// Describes the default server-side encryption to apply to new objects in the
28502// bucket. If a PUT Object request doesn't specify any server-side encryption,
28503// this default encryption will be applied. For more information, see PUT Bucket
28504// encryption (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)
28505// in the Amazon Simple Storage Service API Reference.
28506type ServerSideEncryptionByDefault struct {
28507	_ struct{} `type:"structure"`
28508
28509	// KMS master key ID to use for the default encryption. This parameter is allowed
28510	// if and only if SSEAlgorithm is set to aws:kms.
28511	KMSMasterKeyID *string `type:"string" sensitive:"true"`
28512
28513	// Server-side encryption algorithm to use for the default encryption.
28514	//
28515	// SSEAlgorithm is a required field
28516	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
28517}
28518
28519// String returns the string representation
28520func (s ServerSideEncryptionByDefault) String() string {
28521	return awsutil.Prettify(s)
28522}
28523
28524// GoString returns the string representation
28525func (s ServerSideEncryptionByDefault) GoString() string {
28526	return s.String()
28527}
28528
28529// Validate inspects the fields of the type to determine if they are valid.
28530func (s *ServerSideEncryptionByDefault) Validate() error {
28531	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
28532	if s.SSEAlgorithm == nil {
28533		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
28534	}
28535
28536	if invalidParams.Len() > 0 {
28537		return invalidParams
28538	}
28539	return nil
28540}
28541
28542// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
28543func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
28544	s.KMSMasterKeyID = &v
28545	return s
28546}
28547
28548// SetSSEAlgorithm sets the SSEAlgorithm field's value.
28549func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
28550	s.SSEAlgorithm = &v
28551	return s
28552}
28553
28554// Specifies the default server-side-encryption configuration.
28555type ServerSideEncryptionConfiguration struct {
28556	_ struct{} `type:"structure"`
28557
28558	// Container for information about a particular server-side encryption configuration
28559	// rule.
28560	//
28561	// Rules is a required field
28562	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
28563}
28564
28565// String returns the string representation
28566func (s ServerSideEncryptionConfiguration) String() string {
28567	return awsutil.Prettify(s)
28568}
28569
28570// GoString returns the string representation
28571func (s ServerSideEncryptionConfiguration) GoString() string {
28572	return s.String()
28573}
28574
28575// Validate inspects the fields of the type to determine if they are valid.
28576func (s *ServerSideEncryptionConfiguration) Validate() error {
28577	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
28578	if s.Rules == nil {
28579		invalidParams.Add(request.NewErrParamRequired("Rules"))
28580	}
28581	if s.Rules != nil {
28582		for i, v := range s.Rules {
28583			if v == nil {
28584				continue
28585			}
28586			if err := v.Validate(); err != nil {
28587				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
28588			}
28589		}
28590	}
28591
28592	if invalidParams.Len() > 0 {
28593		return invalidParams
28594	}
28595	return nil
28596}
28597
28598// SetRules sets the Rules field's value.
28599func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
28600	s.Rules = v
28601	return s
28602}
28603
28604// Specifies the default server-side encryption configuration.
28605type ServerSideEncryptionRule struct {
28606	_ struct{} `type:"structure"`
28607
28608	// Specifies the default server-side encryption to apply to new objects in the
28609	// bucket. If a PUT Object request doesn't specify any server-side encryption,
28610	// this default encryption will be applied.
28611	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
28612}
28613
28614// String returns the string representation
28615func (s ServerSideEncryptionRule) String() string {
28616	return awsutil.Prettify(s)
28617}
28618
28619// GoString returns the string representation
28620func (s ServerSideEncryptionRule) GoString() string {
28621	return s.String()
28622}
28623
28624// Validate inspects the fields of the type to determine if they are valid.
28625func (s *ServerSideEncryptionRule) Validate() error {
28626	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
28627	if s.ApplyServerSideEncryptionByDefault != nil {
28628		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
28629			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
28630		}
28631	}
28632
28633	if invalidParams.Len() > 0 {
28634		return invalidParams
28635	}
28636	return nil
28637}
28638
28639// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
28640func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
28641	s.ApplyServerSideEncryptionByDefault = v
28642	return s
28643}
28644
28645// A container that describes additional filters for identifying the source
28646// objects that you want to replicate. You can choose to enable or disable the
28647// replication of these objects. Currently, Amazon S3 supports only the filter
28648// that you can specify for objects created with server-side encryption using
28649// a customer master key (CMK) stored in AWS Key Management Service (SSE-KMS).
28650type SourceSelectionCriteria struct {
28651	_ struct{} `type:"structure"`
28652
28653	// A container for filter information for the selection of Amazon S3 objects
28654	// encrypted with AWS KMS. If you include SourceSelectionCriteria in the replication
28655	// configuration, this element is required.
28656	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
28657}
28658
28659// String returns the string representation
28660func (s SourceSelectionCriteria) String() string {
28661	return awsutil.Prettify(s)
28662}
28663
28664// GoString returns the string representation
28665func (s SourceSelectionCriteria) GoString() string {
28666	return s.String()
28667}
28668
28669// Validate inspects the fields of the type to determine if they are valid.
28670func (s *SourceSelectionCriteria) Validate() error {
28671	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
28672	if s.SseKmsEncryptedObjects != nil {
28673		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
28674			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
28675		}
28676	}
28677
28678	if invalidParams.Len() > 0 {
28679		return invalidParams
28680	}
28681	return nil
28682}
28683
28684// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
28685func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
28686	s.SseKmsEncryptedObjects = v
28687	return s
28688}
28689
28690// A container for filter information for the selection of S3 objects encrypted
28691// with AWS KMS.
28692type SseKmsEncryptedObjects struct {
28693	_ struct{} `type:"structure"`
28694
28695	// Specifies whether Amazon S3 replicates objects created with server-side encryption
28696	// using a customer master key (CMK) stored in AWS Key Management Service.
28697	//
28698	// Status is a required field
28699	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
28700}
28701
28702// String returns the string representation
28703func (s SseKmsEncryptedObjects) String() string {
28704	return awsutil.Prettify(s)
28705}
28706
28707// GoString returns the string representation
28708func (s SseKmsEncryptedObjects) GoString() string {
28709	return s.String()
28710}
28711
28712// Validate inspects the fields of the type to determine if they are valid.
28713func (s *SseKmsEncryptedObjects) Validate() error {
28714	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
28715	if s.Status == nil {
28716		invalidParams.Add(request.NewErrParamRequired("Status"))
28717	}
28718
28719	if invalidParams.Len() > 0 {
28720		return invalidParams
28721	}
28722	return nil
28723}
28724
28725// SetStatus sets the Status field's value.
28726func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
28727	s.Status = &v
28728	return s
28729}
28730
28731// Container for the stats details.
28732type Stats struct {
28733	_ struct{} `type:"structure"`
28734
28735	// The total number of uncompressed object bytes processed.
28736	BytesProcessed *int64 `type:"long"`
28737
28738	// The total number of bytes of records payload data returned.
28739	BytesReturned *int64 `type:"long"`
28740
28741	// The total number of object bytes scanned.
28742	BytesScanned *int64 `type:"long"`
28743}
28744
28745// String returns the string representation
28746func (s Stats) String() string {
28747	return awsutil.Prettify(s)
28748}
28749
28750// GoString returns the string representation
28751func (s Stats) GoString() string {
28752	return s.String()
28753}
28754
28755// SetBytesProcessed sets the BytesProcessed field's value.
28756func (s *Stats) SetBytesProcessed(v int64) *Stats {
28757	s.BytesProcessed = &v
28758	return s
28759}
28760
28761// SetBytesReturned sets the BytesReturned field's value.
28762func (s *Stats) SetBytesReturned(v int64) *Stats {
28763	s.BytesReturned = &v
28764	return s
28765}
28766
28767// SetBytesScanned sets the BytesScanned field's value.
28768func (s *Stats) SetBytesScanned(v int64) *Stats {
28769	s.BytesScanned = &v
28770	return s
28771}
28772
28773// Container for the Stats Event.
28774type StatsEvent struct {
28775	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
28776
28777	// The Stats event details.
28778	Details *Stats `locationName:"Details" type:"structure"`
28779}
28780
28781// String returns the string representation
28782func (s StatsEvent) String() string {
28783	return awsutil.Prettify(s)
28784}
28785
28786// GoString returns the string representation
28787func (s StatsEvent) GoString() string {
28788	return s.String()
28789}
28790
28791// SetDetails sets the Details field's value.
28792func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
28793	s.Details = v
28794	return s
28795}
28796
28797// The StatsEvent is and event in the SelectObjectContentEventStream group of events.
28798func (s *StatsEvent) eventSelectObjectContentEventStream() {}
28799
28800// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
28801// This method is only used internally within the SDK's EventStream handling.
28802func (s *StatsEvent) UnmarshalEvent(
28803	payloadUnmarshaler protocol.PayloadUnmarshaler,
28804	msg eventstream.Message,
28805) error {
28806	if err := payloadUnmarshaler.UnmarshalPayload(
28807		bytes.NewReader(msg.Payload), s,
28808	); err != nil {
28809		return err
28810	}
28811	return nil
28812}
28813
28814// Specifies data related to access patterns to be collected and made available
28815// to analyze the tradeoffs between different storage classes for an Amazon
28816// S3 bucket.
28817type StorageClassAnalysis struct {
28818	_ struct{} `type:"structure"`
28819
28820	// Specifies how data related to the storage class analysis for an Amazon S3
28821	// bucket should be exported.
28822	DataExport *StorageClassAnalysisDataExport `type:"structure"`
28823}
28824
28825// String returns the string representation
28826func (s StorageClassAnalysis) String() string {
28827	return awsutil.Prettify(s)
28828}
28829
28830// GoString returns the string representation
28831func (s StorageClassAnalysis) GoString() string {
28832	return s.String()
28833}
28834
28835// Validate inspects the fields of the type to determine if they are valid.
28836func (s *StorageClassAnalysis) Validate() error {
28837	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
28838	if s.DataExport != nil {
28839		if err := s.DataExport.Validate(); err != nil {
28840			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
28841		}
28842	}
28843
28844	if invalidParams.Len() > 0 {
28845		return invalidParams
28846	}
28847	return nil
28848}
28849
28850// SetDataExport sets the DataExport field's value.
28851func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
28852	s.DataExport = v
28853	return s
28854}
28855
28856// Container for data related to the storage class analysis for an Amazon S3
28857// bucket for export.
28858type StorageClassAnalysisDataExport struct {
28859	_ struct{} `type:"structure"`
28860
28861	// The place to store the data for an analysis.
28862	//
28863	// Destination is a required field
28864	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
28865
28866	// The version of the output schema to use when exporting data. Must be V_1.
28867	//
28868	// OutputSchemaVersion is a required field
28869	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
28870}
28871
28872// String returns the string representation
28873func (s StorageClassAnalysisDataExport) String() string {
28874	return awsutil.Prettify(s)
28875}
28876
28877// GoString returns the string representation
28878func (s StorageClassAnalysisDataExport) GoString() string {
28879	return s.String()
28880}
28881
28882// Validate inspects the fields of the type to determine if they are valid.
28883func (s *StorageClassAnalysisDataExport) Validate() error {
28884	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
28885	if s.Destination == nil {
28886		invalidParams.Add(request.NewErrParamRequired("Destination"))
28887	}
28888	if s.OutputSchemaVersion == nil {
28889		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
28890	}
28891	if s.Destination != nil {
28892		if err := s.Destination.Validate(); err != nil {
28893			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
28894		}
28895	}
28896
28897	if invalidParams.Len() > 0 {
28898		return invalidParams
28899	}
28900	return nil
28901}
28902
28903// SetDestination sets the Destination field's value.
28904func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
28905	s.Destination = v
28906	return s
28907}
28908
28909// SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
28910func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
28911	s.OutputSchemaVersion = &v
28912	return s
28913}
28914
28915// A container of a key value name pair.
28916type Tag struct {
28917	_ struct{} `type:"structure"`
28918
28919	// Name of the tag.
28920	//
28921	// Key is a required field
28922	Key *string `min:"1" type:"string" required:"true"`
28923
28924	// Value of the tag.
28925	//
28926	// Value is a required field
28927	Value *string `type:"string" required:"true"`
28928}
28929
28930// String returns the string representation
28931func (s Tag) String() string {
28932	return awsutil.Prettify(s)
28933}
28934
28935// GoString returns the string representation
28936func (s Tag) GoString() string {
28937	return s.String()
28938}
28939
28940// Validate inspects the fields of the type to determine if they are valid.
28941func (s *Tag) Validate() error {
28942	invalidParams := request.ErrInvalidParams{Context: "Tag"}
28943	if s.Key == nil {
28944		invalidParams.Add(request.NewErrParamRequired("Key"))
28945	}
28946	if s.Key != nil && len(*s.Key) < 1 {
28947		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
28948	}
28949	if s.Value == nil {
28950		invalidParams.Add(request.NewErrParamRequired("Value"))
28951	}
28952
28953	if invalidParams.Len() > 0 {
28954		return invalidParams
28955	}
28956	return nil
28957}
28958
28959// SetKey sets the Key field's value.
28960func (s *Tag) SetKey(v string) *Tag {
28961	s.Key = &v
28962	return s
28963}
28964
28965// SetValue sets the Value field's value.
28966func (s *Tag) SetValue(v string) *Tag {
28967	s.Value = &v
28968	return s
28969}
28970
28971// Container for TagSet elements.
28972type Tagging struct {
28973	_ struct{} `type:"structure"`
28974
28975	// A collection for a set of tags
28976	//
28977	// TagSet is a required field
28978	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
28979}
28980
28981// String returns the string representation
28982func (s Tagging) String() string {
28983	return awsutil.Prettify(s)
28984}
28985
28986// GoString returns the string representation
28987func (s Tagging) GoString() string {
28988	return s.String()
28989}
28990
28991// Validate inspects the fields of the type to determine if they are valid.
28992func (s *Tagging) Validate() error {
28993	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
28994	if s.TagSet == nil {
28995		invalidParams.Add(request.NewErrParamRequired("TagSet"))
28996	}
28997	if s.TagSet != nil {
28998		for i, v := range s.TagSet {
28999			if v == nil {
29000				continue
29001			}
29002			if err := v.Validate(); err != nil {
29003				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
29004			}
29005		}
29006	}
29007
29008	if invalidParams.Len() > 0 {
29009		return invalidParams
29010	}
29011	return nil
29012}
29013
29014// SetTagSet sets the TagSet field's value.
29015func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
29016	s.TagSet = v
29017	return s
29018}
29019
29020// Container for granting information.
29021type TargetGrant struct {
29022	_ struct{} `type:"structure"`
29023
29024	// Container for the person being granted permissions.
29025	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
29026
29027	// Logging permissions assigned to the Grantee for the bucket.
29028	Permission *string `type:"string" enum:"BucketLogsPermission"`
29029}
29030
29031// String returns the string representation
29032func (s TargetGrant) String() string {
29033	return awsutil.Prettify(s)
29034}
29035
29036// GoString returns the string representation
29037func (s TargetGrant) GoString() string {
29038	return s.String()
29039}
29040
29041// Validate inspects the fields of the type to determine if they are valid.
29042func (s *TargetGrant) Validate() error {
29043	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
29044	if s.Grantee != nil {
29045		if err := s.Grantee.Validate(); err != nil {
29046			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
29047		}
29048	}
29049
29050	if invalidParams.Len() > 0 {
29051		return invalidParams
29052	}
29053	return nil
29054}
29055
29056// SetGrantee sets the Grantee field's value.
29057func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
29058	s.Grantee = v
29059	return s
29060}
29061
29062// SetPermission sets the Permission field's value.
29063func (s *TargetGrant) SetPermission(v string) *TargetGrant {
29064	s.Permission = &v
29065	return s
29066}
29067
29068// A container for specifying the configuration for publication of messages
29069// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
29070// detects specified events.
29071type TopicConfiguration struct {
29072	_ struct{} `type:"structure"`
29073
29074	// The Amazon S3 bucket event about which to send notifications. For more information,
29075	// see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
29076	// in the Amazon Simple Storage Service Developer Guide.
29077	//
29078	// Events is a required field
29079	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
29080
29081	// Specifies object key name filtering rules. For information about key name
29082	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
29083	// in the Amazon Simple Storage Service Developer Guide.
29084	Filter *NotificationConfigurationFilter `type:"structure"`
29085
29086	// An optional unique identifier for configurations in a notification configuration.
29087	// If you don't provide one, Amazon S3 will assign an ID.
29088	Id *string `type:"string"`
29089
29090	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
29091	// publishes a message when it detects events of the specified type.
29092	//
29093	// TopicArn is a required field
29094	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
29095}
29096
29097// String returns the string representation
29098func (s TopicConfiguration) String() string {
29099	return awsutil.Prettify(s)
29100}
29101
29102// GoString returns the string representation
29103func (s TopicConfiguration) GoString() string {
29104	return s.String()
29105}
29106
29107// Validate inspects the fields of the type to determine if they are valid.
29108func (s *TopicConfiguration) Validate() error {
29109	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
29110	if s.Events == nil {
29111		invalidParams.Add(request.NewErrParamRequired("Events"))
29112	}
29113	if s.TopicArn == nil {
29114		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
29115	}
29116
29117	if invalidParams.Len() > 0 {
29118		return invalidParams
29119	}
29120	return nil
29121}
29122
29123// SetEvents sets the Events field's value.
29124func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
29125	s.Events = v
29126	return s
29127}
29128
29129// SetFilter sets the Filter field's value.
29130func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
29131	s.Filter = v
29132	return s
29133}
29134
29135// SetId sets the Id field's value.
29136func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
29137	s.Id = &v
29138	return s
29139}
29140
29141// SetTopicArn sets the TopicArn field's value.
29142func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
29143	s.TopicArn = &v
29144	return s
29145}
29146
29147// A container for specifying the configuration for publication of messages
29148// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
29149// detects specified events. This data type is deprecated. Use TopicConfiguration
29150// instead.
29151type TopicConfigurationDeprecated struct {
29152	_ struct{} `type:"structure"`
29153
29154	// Bucket event for which to send notifications.
29155	//
29156	// Deprecated: Event has been deprecated
29157	Event *string `deprecated:"true" type:"string" enum:"Event"`
29158
29159	// A collection of events related to objects
29160	Events []*string `locationName:"Event" type:"list" flattened:"true"`
29161
29162	// An optional unique identifier for configurations in a notification configuration.
29163	// If you don't provide one, Amazon S3 will assign an ID.
29164	Id *string `type:"string"`
29165
29166	// Amazon SNS topic to which Amazon S3 will publish a message to report the
29167	// specified events for the bucket.
29168	Topic *string `type:"string"`
29169}
29170
29171// String returns the string representation
29172func (s TopicConfigurationDeprecated) String() string {
29173	return awsutil.Prettify(s)
29174}
29175
29176// GoString returns the string representation
29177func (s TopicConfigurationDeprecated) GoString() string {
29178	return s.String()
29179}
29180
29181// SetEvent sets the Event field's value.
29182func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
29183	s.Event = &v
29184	return s
29185}
29186
29187// SetEvents sets the Events field's value.
29188func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
29189	s.Events = v
29190	return s
29191}
29192
29193// SetId sets the Id field's value.
29194func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
29195	s.Id = &v
29196	return s
29197}
29198
29199// SetTopic sets the Topic field's value.
29200func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
29201	s.Topic = &v
29202	return s
29203}
29204
29205// Specifies when an object transitions to a specified storage class.
29206type Transition struct {
29207	_ struct{} `type:"structure"`
29208
29209	// Indicates when objects are transitioned to the specified storage class. The
29210	// date value must be in ISO 8601 format. The time is always midnight UTC.
29211	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
29212
29213	// Indicates the number of days after creation when objects are transitioned
29214	// to the specified storage class. The value must be a positive integer.
29215	Days *int64 `type:"integer"`
29216
29217	// The storage class to which you want the object to transition.
29218	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
29219}
29220
29221// String returns the string representation
29222func (s Transition) String() string {
29223	return awsutil.Prettify(s)
29224}
29225
29226// GoString returns the string representation
29227func (s Transition) GoString() string {
29228	return s.String()
29229}
29230
29231// SetDate sets the Date field's value.
29232func (s *Transition) SetDate(v time.Time) *Transition {
29233	s.Date = &v
29234	return s
29235}
29236
29237// SetDays sets the Days field's value.
29238func (s *Transition) SetDays(v int64) *Transition {
29239	s.Days = &v
29240	return s
29241}
29242
29243// SetStorageClass sets the StorageClass field's value.
29244func (s *Transition) SetStorageClass(v string) *Transition {
29245	s.StorageClass = &v
29246	return s
29247}
29248
29249type UploadPartCopyInput struct {
29250	_ struct{} `locationName:"UploadPartCopyRequest" type:"structure"`
29251
29252	// The bucket name.
29253	//
29254	// Bucket is a required field
29255	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29256
29257	// The name of the source bucket and key name of the source object, separated
29258	// by a slash (/). Must be URL-encoded.
29259	//
29260	// CopySource is a required field
29261	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
29262
29263	// Copies the object if its entity tag (ETag) matches the specified tag.
29264	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
29265
29266	// Copies the object if it has been modified since the specified time.
29267	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
29268
29269	// Copies the object if its entity tag (ETag) is different than the specified
29270	// ETag.
29271	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
29272
29273	// Copies the object if it hasn't been modified since the specified time.
29274	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
29275
29276	// The range of bytes to copy from the source object. The range value must use
29277	// the form bytes=first-last, where the first and last are the zero-based byte
29278	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
29279	// first 10 bytes of the source. You can copy a range only if the source object
29280	// is greater than 5 MB.
29281	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
29282
29283	// Specifies the algorithm to use when decrypting the source object (for example,
29284	// AES256).
29285	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
29286
29287	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
29288	// the source object. The encryption key provided in this header must be one
29289	// that was used when the source object was created.
29290	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
29291
29292	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
29293	// Amazon S3 uses this header for a message integrity check to ensure that the
29294	// encryption key was transmitted without error.
29295	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
29296
29297	// Object key for which the multipart upload was initiated.
29298	//
29299	// Key is a required field
29300	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
29301
29302	// Part number of part being copied. This is a positive integer between 1 and
29303	// 10,000.
29304	//
29305	// PartNumber is a required field
29306	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
29307
29308	// Confirms that the requester knows that she or he will be charged for the
29309	// request. Bucket owners need not specify this parameter in their requests.
29310	// For information about downloading objects from Requester Pays buckets, see
29311	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
29312	// in the Amazon S3 Developer Guide.
29313	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
29314
29315	// Specifies the algorithm to use to when encrypting the object (for example,
29316	// AES256).
29317	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29318
29319	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
29320	// data. This value is used to store the object and then it is discarded; Amazon
29321	// S3 does not store the encryption key. The key must be appropriate for use
29322	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
29323	// header. This must be the same encryption key specified in the initiate multipart
29324	// upload request.
29325	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
29326
29327	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
29328	// Amazon S3 uses this header for a message integrity check to ensure that the
29329	// encryption key was transmitted without error.
29330	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29331
29332	// Upload ID identifying the multipart upload whose part is being copied.
29333	//
29334	// UploadId is a required field
29335	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
29336}
29337
29338// String returns the string representation
29339func (s UploadPartCopyInput) String() string {
29340	return awsutil.Prettify(s)
29341}
29342
29343// GoString returns the string representation
29344func (s UploadPartCopyInput) GoString() string {
29345	return s.String()
29346}
29347
29348// Validate inspects the fields of the type to determine if they are valid.
29349func (s *UploadPartCopyInput) Validate() error {
29350	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
29351	if s.Bucket == nil {
29352		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29353	}
29354	if s.Bucket != nil && len(*s.Bucket) < 1 {
29355		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29356	}
29357	if s.CopySource == nil {
29358		invalidParams.Add(request.NewErrParamRequired("CopySource"))
29359	}
29360	if s.Key == nil {
29361		invalidParams.Add(request.NewErrParamRequired("Key"))
29362	}
29363	if s.Key != nil && len(*s.Key) < 1 {
29364		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
29365	}
29366	if s.PartNumber == nil {
29367		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
29368	}
29369	if s.UploadId == nil {
29370		invalidParams.Add(request.NewErrParamRequired("UploadId"))
29371	}
29372
29373	if invalidParams.Len() > 0 {
29374		return invalidParams
29375	}
29376	return nil
29377}
29378
29379// SetBucket sets the Bucket field's value.
29380func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
29381	s.Bucket = &v
29382	return s
29383}
29384
29385func (s *UploadPartCopyInput) getBucket() (v string) {
29386	if s.Bucket == nil {
29387		return v
29388	}
29389	return *s.Bucket
29390}
29391
29392// SetCopySource sets the CopySource field's value.
29393func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
29394	s.CopySource = &v
29395	return s
29396}
29397
29398// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
29399func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
29400	s.CopySourceIfMatch = &v
29401	return s
29402}
29403
29404// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
29405func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
29406	s.CopySourceIfModifiedSince = &v
29407	return s
29408}
29409
29410// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
29411func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
29412	s.CopySourceIfNoneMatch = &v
29413	return s
29414}
29415
29416// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
29417func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
29418	s.CopySourceIfUnmodifiedSince = &v
29419	return s
29420}
29421
29422// SetCopySourceRange sets the CopySourceRange field's value.
29423func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
29424	s.CopySourceRange = &v
29425	return s
29426}
29427
29428// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
29429func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
29430	s.CopySourceSSECustomerAlgorithm = &v
29431	return s
29432}
29433
29434// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
29435func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
29436	s.CopySourceSSECustomerKey = &v
29437	return s
29438}
29439
29440func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
29441	if s.CopySourceSSECustomerKey == nil {
29442		return v
29443	}
29444	return *s.CopySourceSSECustomerKey
29445}
29446
29447// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
29448func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
29449	s.CopySourceSSECustomerKeyMD5 = &v
29450	return s
29451}
29452
29453// SetKey sets the Key field's value.
29454func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
29455	s.Key = &v
29456	return s
29457}
29458
29459// SetPartNumber sets the PartNumber field's value.
29460func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
29461	s.PartNumber = &v
29462	return s
29463}
29464
29465// SetRequestPayer sets the RequestPayer field's value.
29466func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
29467	s.RequestPayer = &v
29468	return s
29469}
29470
29471// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29472func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
29473	s.SSECustomerAlgorithm = &v
29474	return s
29475}
29476
29477// SetSSECustomerKey sets the SSECustomerKey field's value.
29478func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
29479	s.SSECustomerKey = &v
29480	return s
29481}
29482
29483func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
29484	if s.SSECustomerKey == nil {
29485		return v
29486	}
29487	return *s.SSECustomerKey
29488}
29489
29490// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29491func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
29492	s.SSECustomerKeyMD5 = &v
29493	return s
29494}
29495
29496// SetUploadId sets the UploadId field's value.
29497func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
29498	s.UploadId = &v
29499	return s
29500}
29501
29502func (s *UploadPartCopyInput) getEndpointARN() (arn.Resource, error) {
29503	if s.Bucket == nil {
29504		return nil, fmt.Errorf("member Bucket is nil")
29505	}
29506	return parseEndpointARN(*s.Bucket)
29507}
29508
29509func (s *UploadPartCopyInput) hasEndpointARN() bool {
29510	if s.Bucket == nil {
29511		return false
29512	}
29513	return arn.IsARN(*s.Bucket)
29514}
29515
29516type UploadPartCopyOutput struct {
29517	_ struct{} `type:"structure" payload:"CopyPartResult"`
29518
29519	// Container for all response elements.
29520	CopyPartResult *CopyPartResult `type:"structure"`
29521
29522	// The version of the source object that was copied, if you have enabled versioning
29523	// on the source bucket.
29524	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
29525
29526	// If present, indicates that the requester was successfully charged for the
29527	// request.
29528	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
29529
29530	// If server-side encryption with a customer-provided encryption key was requested,
29531	// the response will include this header confirming the encryption algorithm
29532	// used.
29533	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29534
29535	// If server-side encryption with a customer-provided encryption key was requested,
29536	// the response will include this header to provide round-trip message integrity
29537	// verification of the customer-provided encryption key.
29538	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29539
29540	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
29541	// customer master key (CMK) that was used for the object.
29542	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
29543
29544	// The server-side encryption algorithm used when storing this object in Amazon
29545	// S3 (for example, AES256, aws:kms).
29546	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
29547}
29548
29549// String returns the string representation
29550func (s UploadPartCopyOutput) String() string {
29551	return awsutil.Prettify(s)
29552}
29553
29554// GoString returns the string representation
29555func (s UploadPartCopyOutput) GoString() string {
29556	return s.String()
29557}
29558
29559// SetCopyPartResult sets the CopyPartResult field's value.
29560func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
29561	s.CopyPartResult = v
29562	return s
29563}
29564
29565// SetCopySourceVersionId sets the CopySourceVersionId field's value.
29566func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
29567	s.CopySourceVersionId = &v
29568	return s
29569}
29570
29571// SetRequestCharged sets the RequestCharged field's value.
29572func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
29573	s.RequestCharged = &v
29574	return s
29575}
29576
29577// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29578func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
29579	s.SSECustomerAlgorithm = &v
29580	return s
29581}
29582
29583// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29584func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
29585	s.SSECustomerKeyMD5 = &v
29586	return s
29587}
29588
29589// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
29590func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
29591	s.SSEKMSKeyId = &v
29592	return s
29593}
29594
29595// SetServerSideEncryption sets the ServerSideEncryption field's value.
29596func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
29597	s.ServerSideEncryption = &v
29598	return s
29599}
29600
29601type UploadPartInput struct {
29602	_ struct{} `locationName:"UploadPartRequest" type:"structure" payload:"Body"`
29603
29604	// Object data.
29605	Body io.ReadSeeker `type:"blob"`
29606
29607	// Name of the bucket to which the multipart upload was initiated.
29608	//
29609	// Bucket is a required field
29610	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29611
29612	// Size of the body in bytes. This parameter is useful when the size of the
29613	// body cannot be determined automatically.
29614	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
29615
29616	// The base64-encoded 128-bit MD5 digest of the part data. This parameter is
29617	// auto-populated when using the command from the CLI. This parameter is required
29618	// if object lock parameters are specified.
29619	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
29620
29621	// Object key for which the multipart upload was initiated.
29622	//
29623	// Key is a required field
29624	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
29625
29626	// Part number of part being uploaded. This is a positive integer between 1
29627	// and 10,000.
29628	//
29629	// PartNumber is a required field
29630	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
29631
29632	// Confirms that the requester knows that she or he will be charged for the
29633	// request. Bucket owners need not specify this parameter in their requests.
29634	// For information about downloading objects from Requester Pays buckets, see
29635	// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
29636	// in the Amazon S3 Developer Guide.
29637	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
29638
29639	// Specifies the algorithm to use to when encrypting the object (for example,
29640	// AES256).
29641	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29642
29643	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
29644	// data. This value is used to store the object and then it is discarded; Amazon
29645	// S3 does not store the encryption key. The key must be appropriate for use
29646	// with the algorithm specified in the x-amz-server-side​-encryption​-customer-algorithm
29647	// header. This must be the same encryption key specified in the initiate multipart
29648	// upload request.
29649	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
29650
29651	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
29652	// Amazon S3 uses this header for a message integrity check to ensure that the
29653	// encryption key was transmitted without error.
29654	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29655
29656	// Upload ID identifying the multipart upload whose part is being uploaded.
29657	//
29658	// UploadId is a required field
29659	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
29660}
29661
29662// String returns the string representation
29663func (s UploadPartInput) String() string {
29664	return awsutil.Prettify(s)
29665}
29666
29667// GoString returns the string representation
29668func (s UploadPartInput) GoString() string {
29669	return s.String()
29670}
29671
29672// Validate inspects the fields of the type to determine if they are valid.
29673func (s *UploadPartInput) Validate() error {
29674	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
29675	if s.Bucket == nil {
29676		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29677	}
29678	if s.Bucket != nil && len(*s.Bucket) < 1 {
29679		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29680	}
29681	if s.Key == nil {
29682		invalidParams.Add(request.NewErrParamRequired("Key"))
29683	}
29684	if s.Key != nil && len(*s.Key) < 1 {
29685		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
29686	}
29687	if s.PartNumber == nil {
29688		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
29689	}
29690	if s.UploadId == nil {
29691		invalidParams.Add(request.NewErrParamRequired("UploadId"))
29692	}
29693
29694	if invalidParams.Len() > 0 {
29695		return invalidParams
29696	}
29697	return nil
29698}
29699
29700// SetBody sets the Body field's value.
29701func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
29702	s.Body = v
29703	return s
29704}
29705
29706// SetBucket sets the Bucket field's value.
29707func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
29708	s.Bucket = &v
29709	return s
29710}
29711
29712func (s *UploadPartInput) getBucket() (v string) {
29713	if s.Bucket == nil {
29714		return v
29715	}
29716	return *s.Bucket
29717}
29718
29719// SetContentLength sets the ContentLength field's value.
29720func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
29721	s.ContentLength = &v
29722	return s
29723}
29724
29725// SetContentMD5 sets the ContentMD5 field's value.
29726func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
29727	s.ContentMD5 = &v
29728	return s
29729}
29730
29731// SetKey sets the Key field's value.
29732func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
29733	s.Key = &v
29734	return s
29735}
29736
29737// SetPartNumber sets the PartNumber field's value.
29738func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
29739	s.PartNumber = &v
29740	return s
29741}
29742
29743// SetRequestPayer sets the RequestPayer field's value.
29744func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
29745	s.RequestPayer = &v
29746	return s
29747}
29748
29749// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29750func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
29751	s.SSECustomerAlgorithm = &v
29752	return s
29753}
29754
29755// SetSSECustomerKey sets the SSECustomerKey field's value.
29756func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
29757	s.SSECustomerKey = &v
29758	return s
29759}
29760
29761func (s *UploadPartInput) getSSECustomerKey() (v string) {
29762	if s.SSECustomerKey == nil {
29763		return v
29764	}
29765	return *s.SSECustomerKey
29766}
29767
29768// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29769func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
29770	s.SSECustomerKeyMD5 = &v
29771	return s
29772}
29773
29774// SetUploadId sets the UploadId field's value.
29775func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
29776	s.UploadId = &v
29777	return s
29778}
29779
29780func (s *UploadPartInput) getEndpointARN() (arn.Resource, error) {
29781	if s.Bucket == nil {
29782		return nil, fmt.Errorf("member Bucket is nil")
29783	}
29784	return parseEndpointARN(*s.Bucket)
29785}
29786
29787func (s *UploadPartInput) hasEndpointARN() bool {
29788	if s.Bucket == nil {
29789		return false
29790	}
29791	return arn.IsARN(*s.Bucket)
29792}
29793
29794type UploadPartOutput struct {
29795	_ struct{} `type:"structure"`
29796
29797	// Entity tag for the uploaded object.
29798	ETag *string `location:"header" locationName:"ETag" type:"string"`
29799
29800	// If present, indicates that the requester was successfully charged for the
29801	// request.
29802	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
29803
29804	// If server-side encryption with a customer-provided encryption key was requested,
29805	// the response will include this header confirming the encryption algorithm
29806	// used.
29807	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
29808
29809	// If server-side encryption with a customer-provided encryption key was requested,
29810	// the response will include this header to provide round-trip message integrity
29811	// verification of the customer-provided encryption key.
29812	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
29813
29814	// If present, specifies the ID of the AWS Key Management Service (AWS KMS)
29815	// customer master key (CMK) was used for the object.
29816	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
29817
29818	// The server-side encryption algorithm used when storing this object in Amazon
29819	// S3 (for example, AES256, aws:kms).
29820	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
29821}
29822
29823// String returns the string representation
29824func (s UploadPartOutput) String() string {
29825	return awsutil.Prettify(s)
29826}
29827
29828// GoString returns the string representation
29829func (s UploadPartOutput) GoString() string {
29830	return s.String()
29831}
29832
29833// SetETag sets the ETag field's value.
29834func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
29835	s.ETag = &v
29836	return s
29837}
29838
29839// SetRequestCharged sets the RequestCharged field's value.
29840func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
29841	s.RequestCharged = &v
29842	return s
29843}
29844
29845// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
29846func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
29847	s.SSECustomerAlgorithm = &v
29848	return s
29849}
29850
29851// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
29852func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
29853	s.SSECustomerKeyMD5 = &v
29854	return s
29855}
29856
29857// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
29858func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
29859	s.SSEKMSKeyId = &v
29860	return s
29861}
29862
29863// SetServerSideEncryption sets the ServerSideEncryption field's value.
29864func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
29865	s.ServerSideEncryption = &v
29866	return s
29867}
29868
29869// Describes the versioning state of an Amazon S3 bucket. For more information,
29870// see PUT Bucket versioning (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html)
29871// in the Amazon Simple Storage Service API Reference.
29872type VersioningConfiguration struct {
29873	_ struct{} `type:"structure"`
29874
29875	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
29876	// This element is only returned if the bucket has been configured with MFA
29877	// delete. If the bucket has never been so configured, this element is not returned.
29878	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
29879
29880	// The versioning state of the bucket.
29881	Status *string `type:"string" enum:"BucketVersioningStatus"`
29882}
29883
29884// String returns the string representation
29885func (s VersioningConfiguration) String() string {
29886	return awsutil.Prettify(s)
29887}
29888
29889// GoString returns the string representation
29890func (s VersioningConfiguration) GoString() string {
29891	return s.String()
29892}
29893
29894// SetMFADelete sets the MFADelete field's value.
29895func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
29896	s.MFADelete = &v
29897	return s
29898}
29899
29900// SetStatus sets the Status field's value.
29901func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
29902	s.Status = &v
29903	return s
29904}
29905
29906// Specifies website configuration parameters for an Amazon S3 bucket.
29907type WebsiteConfiguration struct {
29908	_ struct{} `type:"structure"`
29909
29910	// The name of the error document for the website.
29911	ErrorDocument *ErrorDocument `type:"structure"`
29912
29913	// The name of the index document for the website.
29914	IndexDocument *IndexDocument `type:"structure"`
29915
29916	// The redirect behavior for every request to this bucket's website endpoint.
29917	//
29918	// If you specify this property, you can't specify any other property.
29919	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
29920
29921	// Rules that define when a redirect is applied and the redirect behavior.
29922	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
29923}
29924
29925// String returns the string representation
29926func (s WebsiteConfiguration) String() string {
29927	return awsutil.Prettify(s)
29928}
29929
29930// GoString returns the string representation
29931func (s WebsiteConfiguration) GoString() string {
29932	return s.String()
29933}
29934
29935// Validate inspects the fields of the type to determine if they are valid.
29936func (s *WebsiteConfiguration) Validate() error {
29937	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
29938	if s.ErrorDocument != nil {
29939		if err := s.ErrorDocument.Validate(); err != nil {
29940			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
29941		}
29942	}
29943	if s.IndexDocument != nil {
29944		if err := s.IndexDocument.Validate(); err != nil {
29945			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
29946		}
29947	}
29948	if s.RedirectAllRequestsTo != nil {
29949		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
29950			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
29951		}
29952	}
29953	if s.RoutingRules != nil {
29954		for i, v := range s.RoutingRules {
29955			if v == nil {
29956				continue
29957			}
29958			if err := v.Validate(); err != nil {
29959				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
29960			}
29961		}
29962	}
29963
29964	if invalidParams.Len() > 0 {
29965		return invalidParams
29966	}
29967	return nil
29968}
29969
29970// SetErrorDocument sets the ErrorDocument field's value.
29971func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
29972	s.ErrorDocument = v
29973	return s
29974}
29975
29976// SetIndexDocument sets the IndexDocument field's value.
29977func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
29978	s.IndexDocument = v
29979	return s
29980}
29981
29982// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
29983func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
29984	s.RedirectAllRequestsTo = v
29985	return s
29986}
29987
29988// SetRoutingRules sets the RoutingRules field's value.
29989func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
29990	s.RoutingRules = v
29991	return s
29992}
29993
29994const (
29995	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
29996	AnalyticsS3ExportFileFormatCsv = "CSV"
29997)
29998
29999const (
30000	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
30001	BucketAccelerateStatusEnabled = "Enabled"
30002
30003	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
30004	BucketAccelerateStatusSuspended = "Suspended"
30005)
30006
30007const (
30008	// BucketCannedACLPrivate is a BucketCannedACL enum value
30009	BucketCannedACLPrivate = "private"
30010
30011	// BucketCannedACLPublicRead is a BucketCannedACL enum value
30012	BucketCannedACLPublicRead = "public-read"
30013
30014	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
30015	BucketCannedACLPublicReadWrite = "public-read-write"
30016
30017	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
30018	BucketCannedACLAuthenticatedRead = "authenticated-read"
30019)
30020
30021const (
30022	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
30023	BucketLocationConstraintEu = "EU"
30024
30025	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
30026	BucketLocationConstraintEuWest1 = "eu-west-1"
30027
30028	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
30029	BucketLocationConstraintUsWest1 = "us-west-1"
30030
30031	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
30032	BucketLocationConstraintUsWest2 = "us-west-2"
30033
30034	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
30035	BucketLocationConstraintApSouth1 = "ap-south-1"
30036
30037	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
30038	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
30039
30040	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
30041	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
30042
30043	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
30044	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
30045
30046	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
30047	BucketLocationConstraintSaEast1 = "sa-east-1"
30048
30049	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
30050	BucketLocationConstraintCnNorth1 = "cn-north-1"
30051
30052	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
30053	BucketLocationConstraintEuCentral1 = "eu-central-1"
30054)
30055
30056const (
30057	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
30058	BucketLogsPermissionFullControl = "FULL_CONTROL"
30059
30060	// BucketLogsPermissionRead is a BucketLogsPermission enum value
30061	BucketLogsPermissionRead = "READ"
30062
30063	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
30064	BucketLogsPermissionWrite = "WRITE"
30065)
30066
30067const (
30068	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
30069	BucketVersioningStatusEnabled = "Enabled"
30070
30071	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
30072	BucketVersioningStatusSuspended = "Suspended"
30073)
30074
30075const (
30076	// CompressionTypeNone is a CompressionType enum value
30077	CompressionTypeNone = "NONE"
30078
30079	// CompressionTypeGzip is a CompressionType enum value
30080	CompressionTypeGzip = "GZIP"
30081
30082	// CompressionTypeBzip2 is a CompressionType enum value
30083	CompressionTypeBzip2 = "BZIP2"
30084)
30085
30086const (
30087	// DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value
30088	DeleteMarkerReplicationStatusEnabled = "Enabled"
30089
30090	// DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value
30091	DeleteMarkerReplicationStatusDisabled = "Disabled"
30092)
30093
30094// Requests Amazon S3 to encode the object keys in the response and specifies
30095// the encoding method to use. An object key may contain any Unicode character;
30096// however, XML 1.0 parser cannot parse some characters, such as characters
30097// with an ASCII value from 0 to 10. For characters that are not supported in
30098// XML 1.0, you can add this parameter to request that Amazon S3 encode the
30099// keys in the response.
30100const (
30101	// EncodingTypeUrl is a EncodingType enum value
30102	EncodingTypeUrl = "url"
30103)
30104
30105// The bucket event for which to send notifications.
30106const (
30107	// EventS3ReducedRedundancyLostObject is a Event enum value
30108	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
30109
30110	// EventS3ObjectCreated is a Event enum value
30111	EventS3ObjectCreated = "s3:ObjectCreated:*"
30112
30113	// EventS3ObjectCreatedPut is a Event enum value
30114	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
30115
30116	// EventS3ObjectCreatedPost is a Event enum value
30117	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
30118
30119	// EventS3ObjectCreatedCopy is a Event enum value
30120	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
30121
30122	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
30123	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
30124
30125	// EventS3ObjectRemoved is a Event enum value
30126	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
30127
30128	// EventS3ObjectRemovedDelete is a Event enum value
30129	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
30130
30131	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
30132	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
30133
30134	// EventS3ObjectRestore is a Event enum value
30135	EventS3ObjectRestore = "s3:ObjectRestore:*"
30136
30137	// EventS3ObjectRestorePost is a Event enum value
30138	EventS3ObjectRestorePost = "s3:ObjectRestore:Post"
30139
30140	// EventS3ObjectRestoreCompleted is a Event enum value
30141	EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed"
30142
30143	// EventS3Replication is a Event enum value
30144	EventS3Replication = "s3:Replication:*"
30145
30146	// EventS3ReplicationOperationFailedReplication is a Event enum value
30147	EventS3ReplicationOperationFailedReplication = "s3:Replication:OperationFailedReplication"
30148
30149	// EventS3ReplicationOperationNotTracked is a Event enum value
30150	EventS3ReplicationOperationNotTracked = "s3:Replication:OperationNotTracked"
30151
30152	// EventS3ReplicationOperationMissedThreshold is a Event enum value
30153	EventS3ReplicationOperationMissedThreshold = "s3:Replication:OperationMissedThreshold"
30154
30155	// EventS3ReplicationOperationReplicatedAfterThreshold is a Event enum value
30156	EventS3ReplicationOperationReplicatedAfterThreshold = "s3:Replication:OperationReplicatedAfterThreshold"
30157)
30158
30159const (
30160	// ExistingObjectReplicationStatusEnabled is a ExistingObjectReplicationStatus enum value
30161	ExistingObjectReplicationStatusEnabled = "Enabled"
30162
30163	// ExistingObjectReplicationStatusDisabled is a ExistingObjectReplicationStatus enum value
30164	ExistingObjectReplicationStatusDisabled = "Disabled"
30165)
30166
30167const (
30168	// ExpirationStatusEnabled is a ExpirationStatus enum value
30169	ExpirationStatusEnabled = "Enabled"
30170
30171	// ExpirationStatusDisabled is a ExpirationStatus enum value
30172	ExpirationStatusDisabled = "Disabled"
30173)
30174
30175const (
30176	// ExpressionTypeSql is a ExpressionType enum value
30177	ExpressionTypeSql = "SQL"
30178)
30179
30180const (
30181	// FileHeaderInfoUse is a FileHeaderInfo enum value
30182	FileHeaderInfoUse = "USE"
30183
30184	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
30185	FileHeaderInfoIgnore = "IGNORE"
30186
30187	// FileHeaderInfoNone is a FileHeaderInfo enum value
30188	FileHeaderInfoNone = "NONE"
30189)
30190
30191const (
30192	// FilterRuleNamePrefix is a FilterRuleName enum value
30193	FilterRuleNamePrefix = "prefix"
30194
30195	// FilterRuleNameSuffix is a FilterRuleName enum value
30196	FilterRuleNameSuffix = "suffix"
30197)
30198
30199const (
30200	// InventoryFormatCsv is a InventoryFormat enum value
30201	InventoryFormatCsv = "CSV"
30202
30203	// InventoryFormatOrc is a InventoryFormat enum value
30204	InventoryFormatOrc = "ORC"
30205
30206	// InventoryFormatParquet is a InventoryFormat enum value
30207	InventoryFormatParquet = "Parquet"
30208)
30209
30210const (
30211	// InventoryFrequencyDaily is a InventoryFrequency enum value
30212	InventoryFrequencyDaily = "Daily"
30213
30214	// InventoryFrequencyWeekly is a InventoryFrequency enum value
30215	InventoryFrequencyWeekly = "Weekly"
30216)
30217
30218const (
30219	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
30220	InventoryIncludedObjectVersionsAll = "All"
30221
30222	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
30223	InventoryIncludedObjectVersionsCurrent = "Current"
30224)
30225
30226const (
30227	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
30228	InventoryOptionalFieldSize = "Size"
30229
30230	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
30231	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
30232
30233	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
30234	InventoryOptionalFieldStorageClass = "StorageClass"
30235
30236	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
30237	InventoryOptionalFieldEtag = "ETag"
30238
30239	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
30240	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
30241
30242	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
30243	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
30244
30245	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
30246	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
30247
30248	// InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value
30249	InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate"
30250
30251	// InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value
30252	InventoryOptionalFieldObjectLockMode = "ObjectLockMode"
30253
30254	// InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value
30255	InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus"
30256
30257	// InventoryOptionalFieldIntelligentTieringAccessTier is a InventoryOptionalField enum value
30258	InventoryOptionalFieldIntelligentTieringAccessTier = "IntelligentTieringAccessTier"
30259)
30260
30261const (
30262	// JSONTypeDocument is a JSONType enum value
30263	JSONTypeDocument = "DOCUMENT"
30264
30265	// JSONTypeLines is a JSONType enum value
30266	JSONTypeLines = "LINES"
30267)
30268
30269const (
30270	// MFADeleteEnabled is a MFADelete enum value
30271	MFADeleteEnabled = "Enabled"
30272
30273	// MFADeleteDisabled is a MFADelete enum value
30274	MFADeleteDisabled = "Disabled"
30275)
30276
30277const (
30278	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
30279	MFADeleteStatusEnabled = "Enabled"
30280
30281	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
30282	MFADeleteStatusDisabled = "Disabled"
30283)
30284
30285const (
30286	// MetadataDirectiveCopy is a MetadataDirective enum value
30287	MetadataDirectiveCopy = "COPY"
30288
30289	// MetadataDirectiveReplace is a MetadataDirective enum value
30290	MetadataDirectiveReplace = "REPLACE"
30291)
30292
30293const (
30294	// MetricsStatusEnabled is a MetricsStatus enum value
30295	MetricsStatusEnabled = "Enabled"
30296
30297	// MetricsStatusDisabled is a MetricsStatus enum value
30298	MetricsStatusDisabled = "Disabled"
30299)
30300
30301const (
30302	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
30303	ObjectCannedACLPrivate = "private"
30304
30305	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
30306	ObjectCannedACLPublicRead = "public-read"
30307
30308	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
30309	ObjectCannedACLPublicReadWrite = "public-read-write"
30310
30311	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
30312	ObjectCannedACLAuthenticatedRead = "authenticated-read"
30313
30314	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
30315	ObjectCannedACLAwsExecRead = "aws-exec-read"
30316
30317	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
30318	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
30319
30320	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
30321	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
30322)
30323
30324const (
30325	// ObjectLockEnabledEnabled is a ObjectLockEnabled enum value
30326	ObjectLockEnabledEnabled = "Enabled"
30327)
30328
30329const (
30330	// ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value
30331	ObjectLockLegalHoldStatusOn = "ON"
30332
30333	// ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value
30334	ObjectLockLegalHoldStatusOff = "OFF"
30335)
30336
30337const (
30338	// ObjectLockModeGovernance is a ObjectLockMode enum value
30339	ObjectLockModeGovernance = "GOVERNANCE"
30340
30341	// ObjectLockModeCompliance is a ObjectLockMode enum value
30342	ObjectLockModeCompliance = "COMPLIANCE"
30343)
30344
30345const (
30346	// ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value
30347	ObjectLockRetentionModeGovernance = "GOVERNANCE"
30348
30349	// ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value
30350	ObjectLockRetentionModeCompliance = "COMPLIANCE"
30351)
30352
30353const (
30354	// ObjectStorageClassStandard is a ObjectStorageClass enum value
30355	ObjectStorageClassStandard = "STANDARD"
30356
30357	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
30358	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
30359
30360	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
30361	ObjectStorageClassGlacier = "GLACIER"
30362
30363	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
30364	ObjectStorageClassStandardIa = "STANDARD_IA"
30365
30366	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
30367	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
30368
30369	// ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value
30370	ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
30371
30372	// ObjectStorageClassDeepArchive is a ObjectStorageClass enum value
30373	ObjectStorageClassDeepArchive = "DEEP_ARCHIVE"
30374)
30375
30376const (
30377	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
30378	ObjectVersionStorageClassStandard = "STANDARD"
30379)
30380
30381const (
30382	// OwnerOverrideDestination is a OwnerOverride enum value
30383	OwnerOverrideDestination = "Destination"
30384)
30385
30386const (
30387	// PayerRequester is a Payer enum value
30388	PayerRequester = "Requester"
30389
30390	// PayerBucketOwner is a Payer enum value
30391	PayerBucketOwner = "BucketOwner"
30392)
30393
30394const (
30395	// PermissionFullControl is a Permission enum value
30396	PermissionFullControl = "FULL_CONTROL"
30397
30398	// PermissionWrite is a Permission enum value
30399	PermissionWrite = "WRITE"
30400
30401	// PermissionWriteAcp is a Permission enum value
30402	PermissionWriteAcp = "WRITE_ACP"
30403
30404	// PermissionRead is a Permission enum value
30405	PermissionRead = "READ"
30406
30407	// PermissionReadAcp is a Permission enum value
30408	PermissionReadAcp = "READ_ACP"
30409)
30410
30411const (
30412	// ProtocolHttp is a Protocol enum value
30413	ProtocolHttp = "http"
30414
30415	// ProtocolHttps is a Protocol enum value
30416	ProtocolHttps = "https"
30417)
30418
30419const (
30420	// QuoteFieldsAlways is a QuoteFields enum value
30421	QuoteFieldsAlways = "ALWAYS"
30422
30423	// QuoteFieldsAsneeded is a QuoteFields enum value
30424	QuoteFieldsAsneeded = "ASNEEDED"
30425)
30426
30427const (
30428	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
30429	ReplicationRuleStatusEnabled = "Enabled"
30430
30431	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
30432	ReplicationRuleStatusDisabled = "Disabled"
30433)
30434
30435const (
30436	// ReplicationStatusComplete is a ReplicationStatus enum value
30437	ReplicationStatusComplete = "COMPLETE"
30438
30439	// ReplicationStatusPending is a ReplicationStatus enum value
30440	ReplicationStatusPending = "PENDING"
30441
30442	// ReplicationStatusFailed is a ReplicationStatus enum value
30443	ReplicationStatusFailed = "FAILED"
30444
30445	// ReplicationStatusReplica is a ReplicationStatus enum value
30446	ReplicationStatusReplica = "REPLICA"
30447)
30448
30449const (
30450	// ReplicationTimeStatusEnabled is a ReplicationTimeStatus enum value
30451	ReplicationTimeStatusEnabled = "Enabled"
30452
30453	// ReplicationTimeStatusDisabled is a ReplicationTimeStatus enum value
30454	ReplicationTimeStatusDisabled = "Disabled"
30455)
30456
30457// If present, indicates that the requester was successfully charged for the
30458// request.
30459const (
30460	// RequestChargedRequester is a RequestCharged enum value
30461	RequestChargedRequester = "requester"
30462)
30463
30464// Confirms that the requester knows that she or he will be charged for the
30465// request. Bucket owners need not specify this parameter in their requests.
30466// For information about downloading objects from Requester Pays buckets, see
30467// Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/http:/docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
30468// in the Amazon S3 Developer Guide.
30469const (
30470	// RequestPayerRequester is a RequestPayer enum value
30471	RequestPayerRequester = "requester"
30472)
30473
30474const (
30475	// RestoreRequestTypeSelect is a RestoreRequestType enum value
30476	RestoreRequestTypeSelect = "SELECT"
30477)
30478
30479const (
30480	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
30481	ServerSideEncryptionAes256 = "AES256"
30482
30483	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
30484	ServerSideEncryptionAwsKms = "aws:kms"
30485)
30486
30487const (
30488	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
30489	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
30490
30491	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
30492	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
30493)
30494
30495const (
30496	// StorageClassStandard is a StorageClass enum value
30497	StorageClassStandard = "STANDARD"
30498
30499	// StorageClassReducedRedundancy is a StorageClass enum value
30500	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
30501
30502	// StorageClassStandardIa is a StorageClass enum value
30503	StorageClassStandardIa = "STANDARD_IA"
30504
30505	// StorageClassOnezoneIa is a StorageClass enum value
30506	StorageClassOnezoneIa = "ONEZONE_IA"
30507
30508	// StorageClassIntelligentTiering is a StorageClass enum value
30509	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"
30510
30511	// StorageClassGlacier is a StorageClass enum value
30512	StorageClassGlacier = "GLACIER"
30513
30514	// StorageClassDeepArchive is a StorageClass enum value
30515	StorageClassDeepArchive = "DEEP_ARCHIVE"
30516)
30517
30518const (
30519	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
30520	StorageClassAnalysisSchemaVersionV1 = "V_1"
30521)
30522
30523const (
30524	// TaggingDirectiveCopy is a TaggingDirective enum value
30525	TaggingDirectiveCopy = "COPY"
30526
30527	// TaggingDirectiveReplace is a TaggingDirective enum value
30528	TaggingDirectiveReplace = "REPLACE"
30529)
30530
30531const (
30532	// TierStandard is a Tier enum value
30533	TierStandard = "Standard"
30534
30535	// TierBulk is a Tier enum value
30536	TierBulk = "Bulk"
30537
30538	// TierExpedited is a Tier enum value
30539	TierExpedited = "Expedited"
30540)
30541
30542const (
30543	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
30544	TransitionStorageClassGlacier = "GLACIER"
30545
30546	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
30547	TransitionStorageClassStandardIa = "STANDARD_IA"
30548
30549	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
30550	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
30551
30552	// TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value
30553	TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
30554
30555	// TransitionStorageClassDeepArchive is a TransitionStorageClass enum value
30556	TransitionStorageClassDeepArchive = "DEEP_ARCHIVE"
30557)
30558
30559const (
30560	// TypeCanonicalUser is a Type enum value
30561	TypeCanonicalUser = "CanonicalUser"
30562
30563	// TypeAmazonCustomerByEmail is a Type enum value
30564	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
30565
30566	// TypeGroup is a Type enum value
30567	TypeGroup = "Group"
30568)
30569