1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package s3
4
5import (
6	"bytes"
7	"fmt"
8	"io"
9	"sync"
10	"time"
11
12	"github.com/aws/aws-sdk-go/aws"
13	"github.com/aws/aws-sdk-go/aws/awserr"
14	"github.com/aws/aws-sdk-go/aws/awsutil"
15	"github.com/aws/aws-sdk-go/aws/client"
16	"github.com/aws/aws-sdk-go/aws/request"
17	"github.com/aws/aws-sdk-go/aws/signer/v4"
18	"github.com/aws/aws-sdk-go/internal/s3shared/arn"
19	"github.com/aws/aws-sdk-go/private/checksum"
20	"github.com/aws/aws-sdk-go/private/protocol"
21	"github.com/aws/aws-sdk-go/private/protocol/eventstream"
22	"github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
23	"github.com/aws/aws-sdk-go/private/protocol/rest"
24	"github.com/aws/aws-sdk-go/private/protocol/restxml"
25)
26
27const opAbortMultipartUpload = "AbortMultipartUpload"
28
29// AbortMultipartUploadRequest generates a "aws/request.Request" representing the
30// client's request for the AbortMultipartUpload operation. The "output" return
31// value will be populated with the request's response once the request completes
32// successfully.
33//
34// Use "Send" method on the returned Request to send the API call to the service.
35// the "output" return value is not valid until after Send returns without error.
36//
37// See AbortMultipartUpload for more information on using the AbortMultipartUpload
38// API call, and error handling.
39//
40// This method is useful when you want to inject custom logic or configuration
41// into the SDK's request lifecycle. Such as custom headers, or retry logic.
42//
43//
44//    // Example sending a request using the AbortMultipartUploadRequest method.
45//    req, resp := client.AbortMultipartUploadRequest(params)
46//
47//    err := req.Send()
48//    if err == nil { // resp is now filled
49//        fmt.Println(resp)
50//    }
51//
52// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload
53func (c *S3) AbortMultipartUploadRequest(input *AbortMultipartUploadInput) (req *request.Request, output *AbortMultipartUploadOutput) {
54	op := &request.Operation{
55		Name:       opAbortMultipartUpload,
56		HTTPMethod: "DELETE",
57		HTTPPath:   "/{Bucket}/{Key+}",
58	}
59
60	if input == nil {
61		input = &AbortMultipartUploadInput{}
62	}
63
64	output = &AbortMultipartUploadOutput{}
65	req = c.newRequest(op, input, output)
66	return
67}
68
69// AbortMultipartUpload API operation for Amazon Simple Storage Service.
70//
71// This action aborts a multipart upload. After a multipart upload is aborted,
72// no additional parts can be uploaded using that upload ID. The storage consumed
73// by any previously uploaded parts will be freed. However, if any part uploads
74// are currently in progress, those part uploads might or might not succeed.
75// As a result, it might be necessary to abort a given multipart upload multiple
76// times in order to completely free all storage consumed by all parts.
77//
78// To verify that all parts have been removed, so you don't get charged for
79// the part storage, you should call the ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
80// action and ensure that the parts list is empty.
81//
82// For information about permissions required to use the multipart upload, see
83// Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
84//
85// The following operations are related to AbortMultipartUpload:
86//
87//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
88//
89//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
90//
91//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
92//
93//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
94//
95//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
96//
97// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
98// with awserr.Error's Code and Message methods to get detailed information about
99// the error.
100//
101// See the AWS API reference guide for Amazon Simple Storage Service's
102// API operation AbortMultipartUpload for usage and error information.
103//
104// Returned Error Codes:
105//   * ErrCodeNoSuchUpload "NoSuchUpload"
106//   The specified multipart upload does not exist.
107//
108// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/AbortMultipartUpload
109func (c *S3) AbortMultipartUpload(input *AbortMultipartUploadInput) (*AbortMultipartUploadOutput, error) {
110	req, out := c.AbortMultipartUploadRequest(input)
111	return out, req.Send()
112}
113
114// AbortMultipartUploadWithContext is the same as AbortMultipartUpload with the addition of
115// the ability to pass a context and additional request options.
116//
117// See AbortMultipartUpload for details on how to use this API operation.
118//
119// The context must be non-nil and will be used for request cancellation. If
120// the context is nil a panic will occur. In the future the SDK may create
121// sub-contexts for http.Requests. See https://golang.org/pkg/context/
122// for more information on using Contexts.
123func (c *S3) AbortMultipartUploadWithContext(ctx aws.Context, input *AbortMultipartUploadInput, opts ...request.Option) (*AbortMultipartUploadOutput, error) {
124	req, out := c.AbortMultipartUploadRequest(input)
125	req.SetContext(ctx)
126	req.ApplyOptions(opts...)
127	return out, req.Send()
128}
129
130const opCompleteMultipartUpload = "CompleteMultipartUpload"
131
132// CompleteMultipartUploadRequest generates a "aws/request.Request" representing the
133// client's request for the CompleteMultipartUpload operation. The "output" return
134// value will be populated with the request's response once the request completes
135// successfully.
136//
137// Use "Send" method on the returned Request to send the API call to the service.
138// the "output" return value is not valid until after Send returns without error.
139//
140// See CompleteMultipartUpload for more information on using the CompleteMultipartUpload
141// API call, and error handling.
142//
143// This method is useful when you want to inject custom logic or configuration
144// into the SDK's request lifecycle. Such as custom headers, or retry logic.
145//
146//
147//    // Example sending a request using the CompleteMultipartUploadRequest method.
148//    req, resp := client.CompleteMultipartUploadRequest(params)
149//
150//    err := req.Send()
151//    if err == nil { // resp is now filled
152//        fmt.Println(resp)
153//    }
154//
155// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
156func (c *S3) CompleteMultipartUploadRequest(input *CompleteMultipartUploadInput) (req *request.Request, output *CompleteMultipartUploadOutput) {
157	op := &request.Operation{
158		Name:       opCompleteMultipartUpload,
159		HTTPMethod: "POST",
160		HTTPPath:   "/{Bucket}/{Key+}",
161	}
162
163	if input == nil {
164		input = &CompleteMultipartUploadInput{}
165	}
166
167	output = &CompleteMultipartUploadOutput{}
168	req = c.newRequest(op, input, output)
169	return
170}
171
172// CompleteMultipartUpload API operation for Amazon Simple Storage Service.
173//
174// Completes a multipart upload by assembling previously uploaded parts.
175//
176// You first initiate the multipart upload and then upload all parts using the
177// UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
178// operation. After successfully uploading all relevant parts of an upload,
179// you call this action to complete the upload. Upon receiving this request,
180// Amazon S3 concatenates all the parts in ascending order by part number to
181// create a new object. In the Complete Multipart Upload request, you must provide
182// the parts list. You must ensure that the parts list is complete. This action
183// concatenates the parts that you provide in the list. For each part in the
184// list, you must provide the part number and the ETag value, returned after
185// that part was uploaded.
186//
187// Processing of a Complete Multipart Upload request could take several minutes
188// to complete. After Amazon S3 begins processing the request, it sends an HTTP
189// response header that specifies a 200 OK response. While processing is in
190// progress, Amazon S3 periodically sends white space characters to keep the
191// connection from timing out. Because a request could fail after the initial
192// 200 OK response has been sent, it is important that you check the response
193// body to determine whether the request succeeded.
194//
195// Note that if CompleteMultipartUpload fails, applications should be prepared
196// to retry the failed requests. For more information, see Amazon S3 Error Best
197// Practices (https://docs.aws.amazon.com/AmazonS3/latest/dev/ErrorBestPractices.html).
198//
199// For more information about multipart uploads, see Uploading Objects Using
200// Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
201//
202// For information about permissions required to use the multipart upload API,
203// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
204//
205// CompleteMultipartUpload has the following special errors:
206//
207//    * Error code: EntityTooSmall Description: Your proposed upload is smaller
208//    than the minimum allowed object size. Each part must be at least 5 MB
209//    in size, except the last part. 400 Bad Request
210//
211//    * Error code: InvalidPart Description: One or more of the specified parts
212//    could not be found. The part might not have been uploaded, or the specified
213//    entity tag might not have matched the part's entity tag. 400 Bad Request
214//
215//    * Error code: InvalidPartOrder Description: The list of parts was not
216//    in ascending order. The parts list must be specified in order by part
217//    number. 400 Bad Request
218//
219//    * Error code: NoSuchUpload Description: The specified multipart upload
220//    does not exist. The upload ID might be invalid, or the multipart upload
221//    might have been aborted or completed. 404 Not Found
222//
223// The following operations are related to CompleteMultipartUpload:
224//
225//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
226//
227//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
228//
229//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
230//
231//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
232//
233//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
234//
235// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
236// with awserr.Error's Code and Message methods to get detailed information about
237// the error.
238//
239// See the AWS API reference guide for Amazon Simple Storage Service's
240// API operation CompleteMultipartUpload for usage and error information.
241// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CompleteMultipartUpload
242func (c *S3) CompleteMultipartUpload(input *CompleteMultipartUploadInput) (*CompleteMultipartUploadOutput, error) {
243	req, out := c.CompleteMultipartUploadRequest(input)
244	return out, req.Send()
245}
246
247// CompleteMultipartUploadWithContext is the same as CompleteMultipartUpload with the addition of
248// the ability to pass a context and additional request options.
249//
250// See CompleteMultipartUpload for details on how to use this API operation.
251//
252// The context must be non-nil and will be used for request cancellation. If
253// the context is nil a panic will occur. In the future the SDK may create
254// sub-contexts for http.Requests. See https://golang.org/pkg/context/
255// for more information on using Contexts.
256func (c *S3) CompleteMultipartUploadWithContext(ctx aws.Context, input *CompleteMultipartUploadInput, opts ...request.Option) (*CompleteMultipartUploadOutput, error) {
257	req, out := c.CompleteMultipartUploadRequest(input)
258	req.SetContext(ctx)
259	req.ApplyOptions(opts...)
260	return out, req.Send()
261}
262
263const opCopyObject = "CopyObject"
264
265// CopyObjectRequest generates a "aws/request.Request" representing the
266// client's request for the CopyObject operation. The "output" return
267// value will be populated with the request's response once the request completes
268// successfully.
269//
270// Use "Send" method on the returned Request to send the API call to the service.
271// the "output" return value is not valid until after Send returns without error.
272//
273// See CopyObject for more information on using the CopyObject
274// API call, and error handling.
275//
276// This method is useful when you want to inject custom logic or configuration
277// into the SDK's request lifecycle. Such as custom headers, or retry logic.
278//
279//
280//    // Example sending a request using the CopyObjectRequest method.
281//    req, resp := client.CopyObjectRequest(params)
282//
283//    err := req.Send()
284//    if err == nil { // resp is now filled
285//        fmt.Println(resp)
286//    }
287//
288// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
289func (c *S3) CopyObjectRequest(input *CopyObjectInput) (req *request.Request, output *CopyObjectOutput) {
290	op := &request.Operation{
291		Name:       opCopyObject,
292		HTTPMethod: "PUT",
293		HTTPPath:   "/{Bucket}/{Key+}",
294	}
295
296	if input == nil {
297		input = &CopyObjectInput{}
298	}
299
300	output = &CopyObjectOutput{}
301	req = c.newRequest(op, input, output)
302	return
303}
304
305// CopyObject API operation for Amazon Simple Storage Service.
306//
307// Creates a copy of an object that is already stored in Amazon S3.
308//
309// You can store individual objects of up to 5 TB in Amazon S3. You create a
310// copy of your object up to 5 GB in size in a single atomic action using this
311// API. However, to copy an object greater than 5 GB, you must use the multipart
312// upload Upload Part - Copy API. For more information, see Copy Object Using
313// the REST Multipart Upload API (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjctsUsingRESTMPUapi.html).
314//
315// All copy requests must be authenticated. Additionally, you must have read
316// access to the source object and write access to the destination bucket. For
317// more information, see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
318// Both the Region that you want to copy the object from and the Region that
319// you want to copy the object to must be enabled for your account.
320//
321// A copy request might return an error when Amazon S3 receives the copy request
322// or while Amazon S3 is copying the files. If the error occurs before the copy
323// action starts, you receive a standard Amazon S3 error. If the error occurs
324// during the copy operation, the error response is embedded in the 200 OK response.
325// This means that a 200 OK response can contain either a success or an error.
326// Design your application to parse the contents of the response and handle
327// it appropriately.
328//
329// If the copy is successful, you receive a response with information about
330// the copied object.
331//
332// If the request is an HTTP 1.1 request, the response is chunk encoded. If
333// it were not, it would not contain the content-length, and you would need
334// to read the entire body.
335//
336// The copy request charge is based on the storage class and Region that you
337// specify for the destination object. For pricing information, see Amazon S3
338// pricing (http://aws.amazon.com/s3/pricing/).
339//
340// Amazon S3 transfer acceleration does not support cross-Region copies. If
341// you request a cross-Region copy using a transfer acceleration endpoint, you
342// get a 400 Bad Request error. For more information, see Transfer Acceleration
343// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
344//
345// Metadata
346//
347// When copying an object, you can preserve all metadata (default) or specify
348// new metadata. However, the ACL is not preserved and is set to private for
349// the user making the request. To override the default ACL setting, specify
350// a new ACL when generating a copy request. For more information, see Using
351// ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
352//
353// To specify whether you want the object metadata copied from the source object
354// or replaced with metadata provided in the request, you can optionally add
355// the x-amz-metadata-directive header. When you grant permissions, you can
356// use the s3:x-amz-metadata-directive condition key to enforce certain metadata
357// behavior when objects are uploaded. For more information, see Specifying
358// Conditions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html)
359// in the Amazon S3 User Guide. For a complete list of Amazon S3-specific condition
360// keys, see Actions, Resources, and Condition Keys for Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html).
361//
362//  x-amz-copy-source-if Headers
363//
364// To only copy an object under certain conditions, such as whether the Etag
365// matches or whether the object was modified before or after a specified date,
366// use the following request parameters:
367//
368//    * x-amz-copy-source-if-match
369//
370//    * x-amz-copy-source-if-none-match
371//
372//    * x-amz-copy-source-if-unmodified-since
373//
374//    * x-amz-copy-source-if-modified-since
375//
376// If both the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
377// headers are present in the request and evaluate as follows, Amazon S3 returns
378// 200 OK and copies the data:
379//
380//    * x-amz-copy-source-if-match condition evaluates to true
381//
382//    * x-amz-copy-source-if-unmodified-since condition evaluates to false
383//
384// If both the x-amz-copy-source-if-none-match and x-amz-copy-source-if-modified-since
385// headers are present in the request and evaluate as follows, Amazon S3 returns
386// the 412 Precondition Failed response code:
387//
388//    * x-amz-copy-source-if-none-match condition evaluates to false
389//
390//    * x-amz-copy-source-if-modified-since condition evaluates to true
391//
392// All headers with the x-amz- prefix, including x-amz-copy-source, must be
393// signed.
394//
395// Server-side encryption
396//
397// When you perform a CopyObject operation, you can optionally use the appropriate
398// encryption-related headers to encrypt the object using server-side encryption
399// with Amazon Web Services managed encryption keys (SSE-S3 or SSE-KMS) or a
400// customer-provided encryption key. With server-side encryption, Amazon S3
401// encrypts your data as it writes it to disks in its data centers and decrypts
402// the data when you access it. For more information about server-side encryption,
403// see Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
404//
405// If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the
406// object. For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
407// in the Amazon S3 User Guide.
408//
409// Access Control List (ACL)-Specific Request Headers
410//
411// When copying an object, you can optionally use headers to grant ACL-based
412// permissions. By default, all objects are private. Only the owner has full
413// access control. When adding a new object, you can grant permissions to individual
414// Amazon Web Services accounts or to predefined groups defined by Amazon S3.
415// These permissions are then added to the ACL on the object. For more information,
416// see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
417// and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
418//
419// Storage Class Options
420//
421// You can use the CopyObject action to change the storage class of an object
422// that is already stored in Amazon S3 using the StorageClass parameter. For
423// more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
424// in the Amazon S3 User Guide.
425//
426// Versioning
427//
428// By default, x-amz-copy-source identifies the current version of an object
429// to copy. If the current version is a delete marker, Amazon S3 behaves as
430// if the object was deleted. To copy a different version, use the versionId
431// subresource.
432//
433// If you enable versioning on the target bucket, Amazon S3 generates a unique
434// version ID for the object being copied. This version ID is different from
435// the version ID of the source object. Amazon S3 returns the version ID of
436// the copied object in the x-amz-version-id response header in the response.
437//
438// If you do not enable versioning or suspend it on the target bucket, the version
439// ID that Amazon S3 generates is always null.
440//
441// If the source object's storage class is GLACIER, you must restore a copy
442// of this object before you can use it as a source object for the copy operation.
443// For more information, see RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
444//
445// The following operations are related to CopyObject:
446//
447//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
448//
449//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
450//
451// For more information, see Copying Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html).
452//
453// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
454// with awserr.Error's Code and Message methods to get detailed information about
455// the error.
456//
457// See the AWS API reference guide for Amazon Simple Storage Service's
458// API operation CopyObject for usage and error information.
459//
460// Returned Error Codes:
461//   * ErrCodeObjectNotInActiveTierError "ObjectNotInActiveTierError"
462//   The source object of the COPY action is not in the active tier and is only
463//   stored in Amazon S3 Glacier.
464//
465// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CopyObject
466func (c *S3) CopyObject(input *CopyObjectInput) (*CopyObjectOutput, error) {
467	req, out := c.CopyObjectRequest(input)
468	return out, req.Send()
469}
470
471// CopyObjectWithContext is the same as CopyObject with the addition of
472// the ability to pass a context and additional request options.
473//
474// See CopyObject for details on how to use this API operation.
475//
476// The context must be non-nil and will be used for request cancellation. If
477// the context is nil a panic will occur. In the future the SDK may create
478// sub-contexts for http.Requests. See https://golang.org/pkg/context/
479// for more information on using Contexts.
480func (c *S3) CopyObjectWithContext(ctx aws.Context, input *CopyObjectInput, opts ...request.Option) (*CopyObjectOutput, error) {
481	req, out := c.CopyObjectRequest(input)
482	req.SetContext(ctx)
483	req.ApplyOptions(opts...)
484	return out, req.Send()
485}
486
487const opCreateBucket = "CreateBucket"
488
489// CreateBucketRequest generates a "aws/request.Request" representing the
490// client's request for the CreateBucket operation. The "output" return
491// value will be populated with the request's response once the request completes
492// successfully.
493//
494// Use "Send" method on the returned Request to send the API call to the service.
495// the "output" return value is not valid until after Send returns without error.
496//
497// See CreateBucket for more information on using the CreateBucket
498// API call, and error handling.
499//
500// This method is useful when you want to inject custom logic or configuration
501// into the SDK's request lifecycle. Such as custom headers, or retry logic.
502//
503//
504//    // Example sending a request using the CreateBucketRequest method.
505//    req, resp := client.CreateBucketRequest(params)
506//
507//    err := req.Send()
508//    if err == nil { // resp is now filled
509//        fmt.Println(resp)
510//    }
511//
512// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
513func (c *S3) CreateBucketRequest(input *CreateBucketInput) (req *request.Request, output *CreateBucketOutput) {
514	op := &request.Operation{
515		Name:       opCreateBucket,
516		HTTPMethod: "PUT",
517		HTTPPath:   "/{Bucket}",
518	}
519
520	if input == nil {
521		input = &CreateBucketInput{}
522	}
523
524	output = &CreateBucketOutput{}
525	req = c.newRequest(op, input, output)
526	return
527}
528
529// CreateBucket API operation for Amazon Simple Storage Service.
530//
531// Creates a new S3 bucket. To create a bucket, you must register with Amazon
532// S3 and have a valid Amazon Web Services Access Key ID to authenticate requests.
533// Anonymous requests are never allowed to create buckets. By creating the bucket,
534// you become the bucket owner.
535//
536// Not every string is an acceptable bucket name. For information about bucket
537// naming restrictions, see Bucket naming rules (https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html).
538//
539// If you want to create an Amazon S3 on Outposts bucket, see Create Bucket
540// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_CreateBucket.html).
541//
542// By default, the bucket is created in the US East (N. Virginia) Region. You
543// can optionally specify a Region in the request body. You might choose a Region
544// to optimize latency, minimize costs, or address regulatory requirements.
545// For example, if you reside in Europe, you will probably find it advantageous
546// to create buckets in the Europe (Ireland) Region. For more information, see
547// Accessing a bucket (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
548//
549// If you send your create bucket request to the s3.amazonaws.com endpoint,
550// the request goes to the us-east-1 Region. Accordingly, the signature calculations
551// in Signature Version 4 must use us-east-1 as the Region, even if the location
552// constraint in the request specifies another Region where the bucket is to
553// be created. If you create a bucket in a Region other than US East (N. Virginia),
554// your application must be able to handle 307 redirect. For more information,
555// see Virtual hosting of buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html).
556//
557// When creating a bucket using this operation, you can optionally specify the
558// accounts or groups that should be granted specific permissions on the bucket.
559// There are two ways to grant the appropriate permissions using the request
560// headers.
561//
562//    * Specify a canned ACL using the x-amz-acl request header. Amazon S3 supports
563//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
564//    predefined set of grantees and permissions. For more information, see
565//    Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
566//
567//    * Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write,
568//    x-amz-grant-read-acp, x-amz-grant-write-acp, and x-amz-grant-full-control
569//    headers. These headers map to the set of permissions Amazon S3 supports
570//    in an ACL. For more information, see Access control list (ACL) overview
571//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html). You
572//    specify each grantee as a type=value pair, where the type is one of the
573//    following: id – if the value specified is the canonical user ID of an
574//    Amazon Web Services account uri – if you are granting permissions to
575//    a predefined group emailAddress – if the value specified is the email
576//    address of an Amazon Web Services account Using email addresses to specify
577//    a grantee is only supported in the following Amazon Web Services Regions:
578//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
579//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
580//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
581//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
582//    in the Amazon Web Services General Reference. For example, the following
583//    x-amz-grant-read header grants the Amazon Web Services accounts identified
584//    by account IDs permissions to read object data and its metadata: x-amz-grant-read:
585//    id="11112222333", id="444455556666"
586//
587// You can use either a canned ACL or specify access permissions explicitly.
588// You cannot do both.
589//
590// Permissions
591//
592// If your CreateBucket request specifies ACL permissions and the ACL is public-read,
593// public-read-write, authenticated-read, or if you specify access permissions
594// explicitly through any other ACL, both s3:CreateBucket and s3:PutBucketAcl
595// permissions are needed. If the ACL the CreateBucket request is private, only
596// s3:CreateBucket permission is needed.
597//
598// If ObjectLockEnabledForBucket is set to true in your CreateBucket request,
599// s3:PutBucketObjectLockConfiguration and s3:PutBucketVersioning permissions
600// are required.
601//
602// The following operations are related to CreateBucket:
603//
604//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
605//
606//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
607//
608// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
609// with awserr.Error's Code and Message methods to get detailed information about
610// the error.
611//
612// See the AWS API reference guide for Amazon Simple Storage Service's
613// API operation CreateBucket for usage and error information.
614//
615// Returned Error Codes:
616//   * ErrCodeBucketAlreadyExists "BucketAlreadyExists"
617//   The requested bucket name is not available. The bucket namespace is shared
618//   by all users of the system. Select a different name and try again.
619//
620//   * ErrCodeBucketAlreadyOwnedByYou "BucketAlreadyOwnedByYou"
621//   The bucket you tried to create already exists, and you own it. Amazon S3
622//   returns this error in all Amazon Web Services Regions except in the North
623//   Virginia Region. For legacy compatibility, if you re-create an existing bucket
624//   that you already own in the North Virginia Region, Amazon S3 returns 200
625//   OK and resets the bucket access control lists (ACLs).
626//
627// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateBucket
628func (c *S3) CreateBucket(input *CreateBucketInput) (*CreateBucketOutput, error) {
629	req, out := c.CreateBucketRequest(input)
630	return out, req.Send()
631}
632
633// CreateBucketWithContext is the same as CreateBucket with the addition of
634// the ability to pass a context and additional request options.
635//
636// See CreateBucket for details on how to use this API operation.
637//
638// The context must be non-nil and will be used for request cancellation. If
639// the context is nil a panic will occur. In the future the SDK may create
640// sub-contexts for http.Requests. See https://golang.org/pkg/context/
641// for more information on using Contexts.
642func (c *S3) CreateBucketWithContext(ctx aws.Context, input *CreateBucketInput, opts ...request.Option) (*CreateBucketOutput, error) {
643	req, out := c.CreateBucketRequest(input)
644	req.SetContext(ctx)
645	req.ApplyOptions(opts...)
646	return out, req.Send()
647}
648
649const opCreateMultipartUpload = "CreateMultipartUpload"
650
651// CreateMultipartUploadRequest generates a "aws/request.Request" representing the
652// client's request for the CreateMultipartUpload operation. The "output" return
653// value will be populated with the request's response once the request completes
654// successfully.
655//
656// Use "Send" method on the returned Request to send the API call to the service.
657// the "output" return value is not valid until after Send returns without error.
658//
659// See CreateMultipartUpload for more information on using the CreateMultipartUpload
660// API call, and error handling.
661//
662// This method is useful when you want to inject custom logic or configuration
663// into the SDK's request lifecycle. Such as custom headers, or retry logic.
664//
665//
666//    // Example sending a request using the CreateMultipartUploadRequest method.
667//    req, resp := client.CreateMultipartUploadRequest(params)
668//
669//    err := req.Send()
670//    if err == nil { // resp is now filled
671//        fmt.Println(resp)
672//    }
673//
674// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
675func (c *S3) CreateMultipartUploadRequest(input *CreateMultipartUploadInput) (req *request.Request, output *CreateMultipartUploadOutput) {
676	op := &request.Operation{
677		Name:       opCreateMultipartUpload,
678		HTTPMethod: "POST",
679		HTTPPath:   "/{Bucket}/{Key+}?uploads",
680	}
681
682	if input == nil {
683		input = &CreateMultipartUploadInput{}
684	}
685
686	output = &CreateMultipartUploadOutput{}
687	req = c.newRequest(op, input, output)
688	return
689}
690
691// CreateMultipartUpload API operation for Amazon Simple Storage Service.
692//
693// This action initiates a multipart upload and returns an upload ID. This upload
694// ID is used to associate all of the parts in the specific multipart upload.
695// You specify this upload ID in each of your subsequent upload part requests
696// (see UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)).
697// You also include this upload ID in the final request to either complete or
698// abort the multipart upload request.
699//
700// For more information about multipart uploads, see Multipart Upload Overview
701// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html).
702//
703// If you have configured a lifecycle rule to abort incomplete multipart uploads,
704// the upload must complete within the number of days specified in the bucket
705// lifecycle configuration. Otherwise, the incomplete multipart upload becomes
706// eligible for an abort action and Amazon S3 aborts the multipart upload. For
707// more information, see Aborting Incomplete Multipart Uploads Using a Bucket
708// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
709//
710// For information about the permissions required to use the multipart upload
711// API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
712//
713// For request signing, multipart upload is just a series of regular requests.
714// You initiate a multipart upload, send one or more requests to upload parts,
715// and then complete the multipart upload process. You sign each request individually.
716// There is nothing special about signing multipart upload requests. For more
717// information about signing, see Authenticating Requests (Amazon Web Services
718// Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
719//
720// After you initiate a multipart upload and upload one or more parts, to stop
721// being charged for storing the uploaded parts, you must either complete or
722// abort the multipart upload. Amazon S3 frees up the space used to store the
723// parts and stop charging you for storing them only after you either complete
724// or abort a multipart upload.
725//
726// You can optionally request server-side encryption. For server-side encryption,
727// Amazon S3 encrypts your data as it writes it to disks in its data centers
728// and decrypts it when you access it. You can provide your own encryption key,
729// or use Amazon Web Services KMS keys or Amazon S3-managed encryption keys.
730// If you choose to provide your own encryption key, the request headers you
731// provide in UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
732// and UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
733// requests must match the headers you used in the request to initiate the upload
734// by using CreateMultipartUpload.
735//
736// To perform a multipart upload with encryption using an Amazon Web Services
737// KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey*
738// actions on the key. These permissions are required because Amazon S3 must
739// decrypt and read data from the encrypted file parts before it completes the
740// multipart upload. For more information, see Multipart upload API and permissions
741// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions)
742// in the Amazon S3 User Guide.
743//
744// If your Identity and Access Management (IAM) user or role is in the same
745// Amazon Web Services account as the KMS key, then you must have these permissions
746// on the key policy. If your IAM user or role belongs to a different account
747// than the key, then you must have the permissions on both the key policy and
748// your IAM user or role.
749//
750// For more information, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html).
751//
752// Access Permissions
753//
754// When copying an object, you can optionally specify the accounts or groups
755// that should be granted specific permissions on the new object. There are
756// two ways to grant the permissions using the request headers:
757//
758//    * Specify a canned ACL with the x-amz-acl request header. For more information,
759//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
760//
761//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
762//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. These parameters
763//    map to the set of permissions that Amazon S3 supports in an ACL. For more
764//    information, see Access Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
765//
766// You can use either a canned ACL or specify access permissions explicitly.
767// You cannot do both.
768//
769// Server-Side- Encryption-Specific Request Headers
770//
771// You can optionally tell Amazon S3 to encrypt data at rest using server-side
772// encryption. Server-side encryption is for data encryption at rest. Amazon
773// S3 encrypts your data as it writes it to disks in its data centers and decrypts
774// it when you access it. The option you use depends on whether you want to
775// use Amazon Web Services managed encryption keys or provide your own encryption
776// key.
777//
778//    * Use encryption keys managed by Amazon S3 or customer managed key stored
779//    in Amazon Web Services Key Management Service (Amazon Web Services KMS)
780//    – If you want Amazon Web Services to manage the keys used to encrypt
781//    data, specify the following headers in the request. x-amz-server-side-encryption
782//    x-amz-server-side-encryption-aws-kms-key-id x-amz-server-side-encryption-context
783//    If you specify x-amz-server-side-encryption:aws:kms, but don't provide
784//    x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon
785//    Web Services managed key in Amazon Web Services KMS to protect the data.
786//    All GET and PUT requests for an object protected by Amazon Web Services
787//    KMS fail if you don't make them with SSL or by using SigV4. For more information
788//    about server-side encryption with KMS key (SSE-KMS), see Protecting Data
789//    Using Server-Side Encryption with KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
790//
791//    * Use customer-provided encryption keys – If you want to manage your
792//    own encryption keys, provide all the following headers in the request.
793//    x-amz-server-side-encryption-customer-algorithm x-amz-server-side-encryption-customer-key
794//    x-amz-server-side-encryption-customer-key-MD5 For more information about
795//    server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using
796//    Server-Side Encryption with KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html).
797//
798// Access-Control-List (ACL)-Specific Request Headers
799//
800// You also can use the following access control–related headers with this
801// operation. By default, all objects are private. Only the owner has full access
802// control. When adding a new object, you can grant permissions to individual
803// Amazon Web Services accounts or to predefined groups defined by Amazon S3.
804// These permissions are then added to the access control list (ACL) on the
805// object. For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
806// With this operation, you can grant access permissions using one of the following
807// two methods:
808//
809//    * Specify a canned ACL (x-amz-acl) — Amazon S3 supports a set of predefined
810//    ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees
811//    and permissions. For more information, see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
812//
813//    * Specify access permissions explicitly — To explicitly grant access
814//    permissions to specific Amazon Web Services accounts or groups, use the
815//    following headers. Each header maps to specific permissions that Amazon
816//    S3 supports in an ACL. For more information, see Access Control List (ACL)
817//    Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
818//    In the header, you specify a list of grantees who get the specific permission.
819//    To grant permissions explicitly, use: x-amz-grant-read x-amz-grant-write
820//    x-amz-grant-read-acp x-amz-grant-write-acp x-amz-grant-full-control You
821//    specify each grantee as a type=value pair, where the type is one of the
822//    following: id – if the value specified is the canonical user ID of an
823//    Amazon Web Services account uri – if you are granting permissions to
824//    a predefined group emailAddress – if the value specified is the email
825//    address of an Amazon Web Services account Using email addresses to specify
826//    a grantee is only supported in the following Amazon Web Services Regions:
827//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
828//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
829//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
830//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
831//    in the Amazon Web Services General Reference. For example, the following
832//    x-amz-grant-read header grants the Amazon Web Services accounts identified
833//    by account IDs permissions to read object data and its metadata: x-amz-grant-read:
834//    id="11112222333", id="444455556666"
835//
836// The following operations are related to CreateMultipartUpload:
837//
838//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
839//
840//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
841//
842//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
843//
844//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
845//
846//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
847//
848// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
849// with awserr.Error's Code and Message methods to get detailed information about
850// the error.
851//
852// See the AWS API reference guide for Amazon Simple Storage Service's
853// API operation CreateMultipartUpload for usage and error information.
854// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/CreateMultipartUpload
855func (c *S3) CreateMultipartUpload(input *CreateMultipartUploadInput) (*CreateMultipartUploadOutput, error) {
856	req, out := c.CreateMultipartUploadRequest(input)
857	return out, req.Send()
858}
859
860// CreateMultipartUploadWithContext is the same as CreateMultipartUpload with the addition of
861// the ability to pass a context and additional request options.
862//
863// See CreateMultipartUpload for details on how to use this API operation.
864//
865// The context must be non-nil and will be used for request cancellation. If
866// the context is nil a panic will occur. In the future the SDK may create
867// sub-contexts for http.Requests. See https://golang.org/pkg/context/
868// for more information on using Contexts.
869func (c *S3) CreateMultipartUploadWithContext(ctx aws.Context, input *CreateMultipartUploadInput, opts ...request.Option) (*CreateMultipartUploadOutput, error) {
870	req, out := c.CreateMultipartUploadRequest(input)
871	req.SetContext(ctx)
872	req.ApplyOptions(opts...)
873	return out, req.Send()
874}
875
876const opDeleteBucket = "DeleteBucket"
877
878// DeleteBucketRequest generates a "aws/request.Request" representing the
879// client's request for the DeleteBucket operation. The "output" return
880// value will be populated with the request's response once the request completes
881// successfully.
882//
883// Use "Send" method on the returned Request to send the API call to the service.
884// the "output" return value is not valid until after Send returns without error.
885//
886// See DeleteBucket for more information on using the DeleteBucket
887// API call, and error handling.
888//
889// This method is useful when you want to inject custom logic or configuration
890// into the SDK's request lifecycle. Such as custom headers, or retry logic.
891//
892//
893//    // Example sending a request using the DeleteBucketRequest method.
894//    req, resp := client.DeleteBucketRequest(params)
895//
896//    err := req.Send()
897//    if err == nil { // resp is now filled
898//        fmt.Println(resp)
899//    }
900//
901// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
902func (c *S3) DeleteBucketRequest(input *DeleteBucketInput) (req *request.Request, output *DeleteBucketOutput) {
903	op := &request.Operation{
904		Name:       opDeleteBucket,
905		HTTPMethod: "DELETE",
906		HTTPPath:   "/{Bucket}",
907	}
908
909	if input == nil {
910		input = &DeleteBucketInput{}
911	}
912
913	output = &DeleteBucketOutput{}
914	req = c.newRequest(op, input, output)
915	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
916	return
917}
918
919// DeleteBucket API operation for Amazon Simple Storage Service.
920//
921// Deletes the S3 bucket. All objects (including all object versions and delete
922// markers) in the bucket must be deleted before the bucket itself can be deleted.
923//
924// Related Resources
925//
926//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
927//
928//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
929//
930// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
931// with awserr.Error's Code and Message methods to get detailed information about
932// the error.
933//
934// See the AWS API reference guide for Amazon Simple Storage Service's
935// API operation DeleteBucket for usage and error information.
936// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucket
937func (c *S3) DeleteBucket(input *DeleteBucketInput) (*DeleteBucketOutput, error) {
938	req, out := c.DeleteBucketRequest(input)
939	return out, req.Send()
940}
941
942// DeleteBucketWithContext is the same as DeleteBucket with the addition of
943// the ability to pass a context and additional request options.
944//
945// See DeleteBucket for details on how to use this API operation.
946//
947// The context must be non-nil and will be used for request cancellation. If
948// the context is nil a panic will occur. In the future the SDK may create
949// sub-contexts for http.Requests. See https://golang.org/pkg/context/
950// for more information on using Contexts.
951func (c *S3) DeleteBucketWithContext(ctx aws.Context, input *DeleteBucketInput, opts ...request.Option) (*DeleteBucketOutput, error) {
952	req, out := c.DeleteBucketRequest(input)
953	req.SetContext(ctx)
954	req.ApplyOptions(opts...)
955	return out, req.Send()
956}
957
958const opDeleteBucketAnalyticsConfiguration = "DeleteBucketAnalyticsConfiguration"
959
960// DeleteBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
961// client's request for the DeleteBucketAnalyticsConfiguration operation. The "output" return
962// value will be populated with the request's response once the request completes
963// successfully.
964//
965// Use "Send" method on the returned Request to send the API call to the service.
966// the "output" return value is not valid until after Send returns without error.
967//
968// See DeleteBucketAnalyticsConfiguration for more information on using the DeleteBucketAnalyticsConfiguration
969// API call, and error handling.
970//
971// This method is useful when you want to inject custom logic or configuration
972// into the SDK's request lifecycle. Such as custom headers, or retry logic.
973//
974//
975//    // Example sending a request using the DeleteBucketAnalyticsConfigurationRequest method.
976//    req, resp := client.DeleteBucketAnalyticsConfigurationRequest(params)
977//
978//    err := req.Send()
979//    if err == nil { // resp is now filled
980//        fmt.Println(resp)
981//    }
982//
983// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
984func (c *S3) DeleteBucketAnalyticsConfigurationRequest(input *DeleteBucketAnalyticsConfigurationInput) (req *request.Request, output *DeleteBucketAnalyticsConfigurationOutput) {
985	op := &request.Operation{
986		Name:       opDeleteBucketAnalyticsConfiguration,
987		HTTPMethod: "DELETE",
988		HTTPPath:   "/{Bucket}?analytics",
989	}
990
991	if input == nil {
992		input = &DeleteBucketAnalyticsConfigurationInput{}
993	}
994
995	output = &DeleteBucketAnalyticsConfigurationOutput{}
996	req = c.newRequest(op, input, output)
997	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
998	return
999}
1000
1001// DeleteBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
1002//
1003// Deletes an analytics configuration for the bucket (specified by the analytics
1004// configuration ID).
1005//
1006// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
1007// action. The bucket owner has this permission by default. The bucket owner
1008// can grant this permission to others. For more information about permissions,
1009// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1010// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1011//
1012// For information about the Amazon S3 analytics feature, see Amazon S3 Analytics
1013// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
1014//
1015// The following operations are related to DeleteBucketAnalyticsConfiguration:
1016//
1017//    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
1018//
1019//    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
1020//
1021//    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
1022//
1023// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1024// with awserr.Error's Code and Message methods to get detailed information about
1025// the error.
1026//
1027// See the AWS API reference guide for Amazon Simple Storage Service's
1028// API operation DeleteBucketAnalyticsConfiguration for usage and error information.
1029// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketAnalyticsConfiguration
1030func (c *S3) DeleteBucketAnalyticsConfiguration(input *DeleteBucketAnalyticsConfigurationInput) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1031	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1032	return out, req.Send()
1033}
1034
1035// DeleteBucketAnalyticsConfigurationWithContext is the same as DeleteBucketAnalyticsConfiguration with the addition of
1036// the ability to pass a context and additional request options.
1037//
1038// See DeleteBucketAnalyticsConfiguration for details on how to use this API operation.
1039//
1040// The context must be non-nil and will be used for request cancellation. If
1041// the context is nil a panic will occur. In the future the SDK may create
1042// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1043// for more information on using Contexts.
1044func (c *S3) DeleteBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *DeleteBucketAnalyticsConfigurationInput, opts ...request.Option) (*DeleteBucketAnalyticsConfigurationOutput, error) {
1045	req, out := c.DeleteBucketAnalyticsConfigurationRequest(input)
1046	req.SetContext(ctx)
1047	req.ApplyOptions(opts...)
1048	return out, req.Send()
1049}
1050
1051const opDeleteBucketCors = "DeleteBucketCors"
1052
1053// DeleteBucketCorsRequest generates a "aws/request.Request" representing the
1054// client's request for the DeleteBucketCors operation. The "output" return
1055// value will be populated with the request's response once the request completes
1056// successfully.
1057//
1058// Use "Send" method on the returned Request to send the API call to the service.
1059// the "output" return value is not valid until after Send returns without error.
1060//
1061// See DeleteBucketCors for more information on using the DeleteBucketCors
1062// API call, and error handling.
1063//
1064// This method is useful when you want to inject custom logic or configuration
1065// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1066//
1067//
1068//    // Example sending a request using the DeleteBucketCorsRequest method.
1069//    req, resp := client.DeleteBucketCorsRequest(params)
1070//
1071//    err := req.Send()
1072//    if err == nil { // resp is now filled
1073//        fmt.Println(resp)
1074//    }
1075//
1076// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1077func (c *S3) DeleteBucketCorsRequest(input *DeleteBucketCorsInput) (req *request.Request, output *DeleteBucketCorsOutput) {
1078	op := &request.Operation{
1079		Name:       opDeleteBucketCors,
1080		HTTPMethod: "DELETE",
1081		HTTPPath:   "/{Bucket}?cors",
1082	}
1083
1084	if input == nil {
1085		input = &DeleteBucketCorsInput{}
1086	}
1087
1088	output = &DeleteBucketCorsOutput{}
1089	req = c.newRequest(op, input, output)
1090	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1091	return
1092}
1093
1094// DeleteBucketCors API operation for Amazon Simple Storage Service.
1095//
1096// Deletes the cors configuration information set for the bucket.
1097//
1098// To use this operation, you must have permission to perform the s3:PutBucketCORS
1099// action. The bucket owner has this permission by default and can grant this
1100// permission to others.
1101//
1102// For information about cors, see Enabling Cross-Origin Resource Sharing (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html)
1103// in the Amazon S3 User Guide.
1104//
1105// Related Resources:
1106//
1107//    * PutBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
1108//
1109//    * RESTOPTIONSobject (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
1110//
1111// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1112// with awserr.Error's Code and Message methods to get detailed information about
1113// the error.
1114//
1115// See the AWS API reference guide for Amazon Simple Storage Service's
1116// API operation DeleteBucketCors for usage and error information.
1117// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketCors
1118func (c *S3) DeleteBucketCors(input *DeleteBucketCorsInput) (*DeleteBucketCorsOutput, error) {
1119	req, out := c.DeleteBucketCorsRequest(input)
1120	return out, req.Send()
1121}
1122
1123// DeleteBucketCorsWithContext is the same as DeleteBucketCors with the addition of
1124// the ability to pass a context and additional request options.
1125//
1126// See DeleteBucketCors for details on how to use this API operation.
1127//
1128// The context must be non-nil and will be used for request cancellation. If
1129// the context is nil a panic will occur. In the future the SDK may create
1130// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1131// for more information on using Contexts.
1132func (c *S3) DeleteBucketCorsWithContext(ctx aws.Context, input *DeleteBucketCorsInput, opts ...request.Option) (*DeleteBucketCorsOutput, error) {
1133	req, out := c.DeleteBucketCorsRequest(input)
1134	req.SetContext(ctx)
1135	req.ApplyOptions(opts...)
1136	return out, req.Send()
1137}
1138
1139const opDeleteBucketEncryption = "DeleteBucketEncryption"
1140
1141// DeleteBucketEncryptionRequest generates a "aws/request.Request" representing the
1142// client's request for the DeleteBucketEncryption operation. The "output" return
1143// value will be populated with the request's response once the request completes
1144// successfully.
1145//
1146// Use "Send" method on the returned Request to send the API call to the service.
1147// the "output" return value is not valid until after Send returns without error.
1148//
1149// See DeleteBucketEncryption for more information on using the DeleteBucketEncryption
1150// API call, and error handling.
1151//
1152// This method is useful when you want to inject custom logic or configuration
1153// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1154//
1155//
1156//    // Example sending a request using the DeleteBucketEncryptionRequest method.
1157//    req, resp := client.DeleteBucketEncryptionRequest(params)
1158//
1159//    err := req.Send()
1160//    if err == nil { // resp is now filled
1161//        fmt.Println(resp)
1162//    }
1163//
1164// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1165func (c *S3) DeleteBucketEncryptionRequest(input *DeleteBucketEncryptionInput) (req *request.Request, output *DeleteBucketEncryptionOutput) {
1166	op := &request.Operation{
1167		Name:       opDeleteBucketEncryption,
1168		HTTPMethod: "DELETE",
1169		HTTPPath:   "/{Bucket}?encryption",
1170	}
1171
1172	if input == nil {
1173		input = &DeleteBucketEncryptionInput{}
1174	}
1175
1176	output = &DeleteBucketEncryptionOutput{}
1177	req = c.newRequest(op, input, output)
1178	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1179	return
1180}
1181
1182// DeleteBucketEncryption API operation for Amazon Simple Storage Service.
1183//
1184// This implementation of the DELETE action removes default encryption from
1185// the bucket. For information about the Amazon S3 default encryption feature,
1186// see Amazon S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
1187// in the Amazon S3 User Guide.
1188//
1189// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
1190// action. The bucket owner has this permission by default. The bucket owner
1191// can grant this permission to others. For more information about permissions,
1192// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1193// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
1194// in the Amazon S3 User Guide.
1195//
1196// Related Resources
1197//
1198//    * PutBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
1199//
1200//    * GetBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
1201//
1202// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1203// with awserr.Error's Code and Message methods to get detailed information about
1204// the error.
1205//
1206// See the AWS API reference guide for Amazon Simple Storage Service's
1207// API operation DeleteBucketEncryption for usage and error information.
1208// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketEncryption
1209func (c *S3) DeleteBucketEncryption(input *DeleteBucketEncryptionInput) (*DeleteBucketEncryptionOutput, error) {
1210	req, out := c.DeleteBucketEncryptionRequest(input)
1211	return out, req.Send()
1212}
1213
1214// DeleteBucketEncryptionWithContext is the same as DeleteBucketEncryption with the addition of
1215// the ability to pass a context and additional request options.
1216//
1217// See DeleteBucketEncryption for details on how to use this API operation.
1218//
1219// The context must be non-nil and will be used for request cancellation. If
1220// the context is nil a panic will occur. In the future the SDK may create
1221// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1222// for more information on using Contexts.
1223func (c *S3) DeleteBucketEncryptionWithContext(ctx aws.Context, input *DeleteBucketEncryptionInput, opts ...request.Option) (*DeleteBucketEncryptionOutput, error) {
1224	req, out := c.DeleteBucketEncryptionRequest(input)
1225	req.SetContext(ctx)
1226	req.ApplyOptions(opts...)
1227	return out, req.Send()
1228}
1229
1230const opDeleteBucketIntelligentTieringConfiguration = "DeleteBucketIntelligentTieringConfiguration"
1231
1232// DeleteBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
1233// client's request for the DeleteBucketIntelligentTieringConfiguration operation. The "output" return
1234// value will be populated with the request's response once the request completes
1235// successfully.
1236//
1237// Use "Send" method on the returned Request to send the API call to the service.
1238// the "output" return value is not valid until after Send returns without error.
1239//
1240// See DeleteBucketIntelligentTieringConfiguration for more information on using the DeleteBucketIntelligentTieringConfiguration
1241// API call, and error handling.
1242//
1243// This method is useful when you want to inject custom logic or configuration
1244// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1245//
1246//
1247//    // Example sending a request using the DeleteBucketIntelligentTieringConfigurationRequest method.
1248//    req, resp := client.DeleteBucketIntelligentTieringConfigurationRequest(params)
1249//
1250//    err := req.Send()
1251//    if err == nil { // resp is now filled
1252//        fmt.Println(resp)
1253//    }
1254//
1255// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
1256func (c *S3) DeleteBucketIntelligentTieringConfigurationRequest(input *DeleteBucketIntelligentTieringConfigurationInput) (req *request.Request, output *DeleteBucketIntelligentTieringConfigurationOutput) {
1257	op := &request.Operation{
1258		Name:       opDeleteBucketIntelligentTieringConfiguration,
1259		HTTPMethod: "DELETE",
1260		HTTPPath:   "/{Bucket}?intelligent-tiering",
1261	}
1262
1263	if input == nil {
1264		input = &DeleteBucketIntelligentTieringConfigurationInput{}
1265	}
1266
1267	output = &DeleteBucketIntelligentTieringConfigurationOutput{}
1268	req = c.newRequest(op, input, output)
1269	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1270	return
1271}
1272
1273// DeleteBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
1274//
1275// Deletes the S3 Intelligent-Tiering configuration from the specified bucket.
1276//
1277// The S3 Intelligent-Tiering storage class is designed to optimize storage
1278// costs by automatically moving data to the most cost-effective storage access
1279// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
1280// delivers automatic cost savings in two low latency and high throughput access
1281// tiers. For data that can be accessed asynchronously, you can choose to activate
1282// automatic archiving capabilities within the S3 Intelligent-Tiering storage
1283// class.
1284//
1285// The S3 Intelligent-Tiering storage class is the ideal storage class for data
1286// with unknown, changing, or unpredictable access patterns, independent of
1287// object size or retention period. If the size of an object is less than 128
1288// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
1289// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
1290// storage class.
1291//
1292// For more information, see Storage class for automatically optimizing frequently
1293// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
1294//
1295// Operations related to DeleteBucketIntelligentTieringConfiguration include:
1296//
1297//    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
1298//
1299//    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
1300//
1301//    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
1302//
1303// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1304// with awserr.Error's Code and Message methods to get detailed information about
1305// the error.
1306//
1307// See the AWS API reference guide for Amazon Simple Storage Service's
1308// API operation DeleteBucketIntelligentTieringConfiguration for usage and error information.
1309// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketIntelligentTieringConfiguration
1310func (c *S3) DeleteBucketIntelligentTieringConfiguration(input *DeleteBucketIntelligentTieringConfigurationInput) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
1311	req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
1312	return out, req.Send()
1313}
1314
1315// DeleteBucketIntelligentTieringConfigurationWithContext is the same as DeleteBucketIntelligentTieringConfiguration with the addition of
1316// the ability to pass a context and additional request options.
1317//
1318// See DeleteBucketIntelligentTieringConfiguration for details on how to use this API operation.
1319//
1320// The context must be non-nil and will be used for request cancellation. If
1321// the context is nil a panic will occur. In the future the SDK may create
1322// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1323// for more information on using Contexts.
1324func (c *S3) DeleteBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *DeleteBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*DeleteBucketIntelligentTieringConfigurationOutput, error) {
1325	req, out := c.DeleteBucketIntelligentTieringConfigurationRequest(input)
1326	req.SetContext(ctx)
1327	req.ApplyOptions(opts...)
1328	return out, req.Send()
1329}
1330
1331const opDeleteBucketInventoryConfiguration = "DeleteBucketInventoryConfiguration"
1332
1333// DeleteBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
1334// client's request for the DeleteBucketInventoryConfiguration operation. The "output" return
1335// value will be populated with the request's response once the request completes
1336// successfully.
1337//
1338// Use "Send" method on the returned Request to send the API call to the service.
1339// the "output" return value is not valid until after Send returns without error.
1340//
1341// See DeleteBucketInventoryConfiguration for more information on using the DeleteBucketInventoryConfiguration
1342// API call, and error handling.
1343//
1344// This method is useful when you want to inject custom logic or configuration
1345// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1346//
1347//
1348//    // Example sending a request using the DeleteBucketInventoryConfigurationRequest method.
1349//    req, resp := client.DeleteBucketInventoryConfigurationRequest(params)
1350//
1351//    err := req.Send()
1352//    if err == nil { // resp is now filled
1353//        fmt.Println(resp)
1354//    }
1355//
1356// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1357func (c *S3) DeleteBucketInventoryConfigurationRequest(input *DeleteBucketInventoryConfigurationInput) (req *request.Request, output *DeleteBucketInventoryConfigurationOutput) {
1358	op := &request.Operation{
1359		Name:       opDeleteBucketInventoryConfiguration,
1360		HTTPMethod: "DELETE",
1361		HTTPPath:   "/{Bucket}?inventory",
1362	}
1363
1364	if input == nil {
1365		input = &DeleteBucketInventoryConfigurationInput{}
1366	}
1367
1368	output = &DeleteBucketInventoryConfigurationOutput{}
1369	req = c.newRequest(op, input, output)
1370	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1371	return
1372}
1373
1374// DeleteBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
1375//
1376// Deletes an inventory configuration (identified by the inventory ID) from
1377// the bucket.
1378//
1379// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
1380// action. The bucket owner has this permission by default. The bucket owner
1381// can grant this permission to others. For more information about permissions,
1382// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1383// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1384//
1385// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
1386// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
1387//
1388// Operations related to DeleteBucketInventoryConfiguration include:
1389//
1390//    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
1391//
1392//    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
1393//
1394//    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
1395//
1396// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1397// with awserr.Error's Code and Message methods to get detailed information about
1398// the error.
1399//
1400// See the AWS API reference guide for Amazon Simple Storage Service's
1401// API operation DeleteBucketInventoryConfiguration for usage and error information.
1402// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketInventoryConfiguration
1403func (c *S3) DeleteBucketInventoryConfiguration(input *DeleteBucketInventoryConfigurationInput) (*DeleteBucketInventoryConfigurationOutput, error) {
1404	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1405	return out, req.Send()
1406}
1407
1408// DeleteBucketInventoryConfigurationWithContext is the same as DeleteBucketInventoryConfiguration with the addition of
1409// the ability to pass a context and additional request options.
1410//
1411// See DeleteBucketInventoryConfiguration for details on how to use this API operation.
1412//
1413// The context must be non-nil and will be used for request cancellation. If
1414// the context is nil a panic will occur. In the future the SDK may create
1415// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1416// for more information on using Contexts.
1417func (c *S3) DeleteBucketInventoryConfigurationWithContext(ctx aws.Context, input *DeleteBucketInventoryConfigurationInput, opts ...request.Option) (*DeleteBucketInventoryConfigurationOutput, error) {
1418	req, out := c.DeleteBucketInventoryConfigurationRequest(input)
1419	req.SetContext(ctx)
1420	req.ApplyOptions(opts...)
1421	return out, req.Send()
1422}
1423
1424const opDeleteBucketLifecycle = "DeleteBucketLifecycle"
1425
1426// DeleteBucketLifecycleRequest generates a "aws/request.Request" representing the
1427// client's request for the DeleteBucketLifecycle operation. The "output" return
1428// value will be populated with the request's response once the request completes
1429// successfully.
1430//
1431// Use "Send" method on the returned Request to send the API call to the service.
1432// the "output" return value is not valid until after Send returns without error.
1433//
1434// See DeleteBucketLifecycle for more information on using the DeleteBucketLifecycle
1435// API call, and error handling.
1436//
1437// This method is useful when you want to inject custom logic or configuration
1438// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1439//
1440//
1441//    // Example sending a request using the DeleteBucketLifecycleRequest method.
1442//    req, resp := client.DeleteBucketLifecycleRequest(params)
1443//
1444//    err := req.Send()
1445//    if err == nil { // resp is now filled
1446//        fmt.Println(resp)
1447//    }
1448//
1449// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1450func (c *S3) DeleteBucketLifecycleRequest(input *DeleteBucketLifecycleInput) (req *request.Request, output *DeleteBucketLifecycleOutput) {
1451	op := &request.Operation{
1452		Name:       opDeleteBucketLifecycle,
1453		HTTPMethod: "DELETE",
1454		HTTPPath:   "/{Bucket}?lifecycle",
1455	}
1456
1457	if input == nil {
1458		input = &DeleteBucketLifecycleInput{}
1459	}
1460
1461	output = &DeleteBucketLifecycleOutput{}
1462	req = c.newRequest(op, input, output)
1463	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1464	return
1465}
1466
1467// DeleteBucketLifecycle API operation for Amazon Simple Storage Service.
1468//
1469// Deletes the lifecycle configuration from the specified bucket. Amazon S3
1470// removes all the lifecycle configuration rules in the lifecycle subresource
1471// associated with the bucket. Your objects never expire, and Amazon S3 no longer
1472// automatically deletes any objects on the basis of rules contained in the
1473// deleted lifecycle configuration.
1474//
1475// To use this operation, you must have permission to perform the s3:PutLifecycleConfiguration
1476// action. By default, the bucket owner has this permission and the bucket owner
1477// can grant this permission to others.
1478//
1479// There is usually some time lag before lifecycle configuration deletion is
1480// fully propagated to all the Amazon S3 systems.
1481//
1482// For more information about the object expiration, see Elements to Describe
1483// Lifecycle Actions (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#intro-lifecycle-rules-actions).
1484//
1485// Related actions include:
1486//
1487//    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
1488//
1489//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
1490//
1491// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1492// with awserr.Error's Code and Message methods to get detailed information about
1493// the error.
1494//
1495// See the AWS API reference guide for Amazon Simple Storage Service's
1496// API operation DeleteBucketLifecycle for usage and error information.
1497// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketLifecycle
1498func (c *S3) DeleteBucketLifecycle(input *DeleteBucketLifecycleInput) (*DeleteBucketLifecycleOutput, error) {
1499	req, out := c.DeleteBucketLifecycleRequest(input)
1500	return out, req.Send()
1501}
1502
1503// DeleteBucketLifecycleWithContext is the same as DeleteBucketLifecycle with the addition of
1504// the ability to pass a context and additional request options.
1505//
1506// See DeleteBucketLifecycle for details on how to use this API operation.
1507//
1508// The context must be non-nil and will be used for request cancellation. If
1509// the context is nil a panic will occur. In the future the SDK may create
1510// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1511// for more information on using Contexts.
1512func (c *S3) DeleteBucketLifecycleWithContext(ctx aws.Context, input *DeleteBucketLifecycleInput, opts ...request.Option) (*DeleteBucketLifecycleOutput, error) {
1513	req, out := c.DeleteBucketLifecycleRequest(input)
1514	req.SetContext(ctx)
1515	req.ApplyOptions(opts...)
1516	return out, req.Send()
1517}
1518
1519const opDeleteBucketMetricsConfiguration = "DeleteBucketMetricsConfiguration"
1520
1521// DeleteBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
1522// client's request for the DeleteBucketMetricsConfiguration operation. The "output" return
1523// value will be populated with the request's response once the request completes
1524// successfully.
1525//
1526// Use "Send" method on the returned Request to send the API call to the service.
1527// the "output" return value is not valid until after Send returns without error.
1528//
1529// See DeleteBucketMetricsConfiguration for more information on using the DeleteBucketMetricsConfiguration
1530// API call, and error handling.
1531//
1532// This method is useful when you want to inject custom logic or configuration
1533// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1534//
1535//
1536//    // Example sending a request using the DeleteBucketMetricsConfigurationRequest method.
1537//    req, resp := client.DeleteBucketMetricsConfigurationRequest(params)
1538//
1539//    err := req.Send()
1540//    if err == nil { // resp is now filled
1541//        fmt.Println(resp)
1542//    }
1543//
1544// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1545func (c *S3) DeleteBucketMetricsConfigurationRequest(input *DeleteBucketMetricsConfigurationInput) (req *request.Request, output *DeleteBucketMetricsConfigurationOutput) {
1546	op := &request.Operation{
1547		Name:       opDeleteBucketMetricsConfiguration,
1548		HTTPMethod: "DELETE",
1549		HTTPPath:   "/{Bucket}?metrics",
1550	}
1551
1552	if input == nil {
1553		input = &DeleteBucketMetricsConfigurationInput{}
1554	}
1555
1556	output = &DeleteBucketMetricsConfigurationOutput{}
1557	req = c.newRequest(op, input, output)
1558	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1559	return
1560}
1561
1562// DeleteBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
1563//
1564// Deletes a metrics configuration for the Amazon CloudWatch request metrics
1565// (specified by the metrics configuration ID) from the bucket. Note that this
1566// doesn't include the daily storage metrics.
1567//
1568// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
1569// action. The bucket owner has this permission by default. The bucket owner
1570// can grant this permission to others. For more information about permissions,
1571// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1572// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1573//
1574// For information about CloudWatch request metrics for Amazon S3, see Monitoring
1575// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
1576//
1577// The following operations are related to DeleteBucketMetricsConfiguration:
1578//
1579//    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
1580//
1581//    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
1582//
1583//    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
1584//
1585//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
1586//
1587// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1588// with awserr.Error's Code and Message methods to get detailed information about
1589// the error.
1590//
1591// See the AWS API reference guide for Amazon Simple Storage Service's
1592// API operation DeleteBucketMetricsConfiguration for usage and error information.
1593// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketMetricsConfiguration
1594func (c *S3) DeleteBucketMetricsConfiguration(input *DeleteBucketMetricsConfigurationInput) (*DeleteBucketMetricsConfigurationOutput, error) {
1595	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1596	return out, req.Send()
1597}
1598
1599// DeleteBucketMetricsConfigurationWithContext is the same as DeleteBucketMetricsConfiguration with the addition of
1600// the ability to pass a context and additional request options.
1601//
1602// See DeleteBucketMetricsConfiguration for details on how to use this API operation.
1603//
1604// The context must be non-nil and will be used for request cancellation. If
1605// the context is nil a panic will occur. In the future the SDK may create
1606// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1607// for more information on using Contexts.
1608func (c *S3) DeleteBucketMetricsConfigurationWithContext(ctx aws.Context, input *DeleteBucketMetricsConfigurationInput, opts ...request.Option) (*DeleteBucketMetricsConfigurationOutput, error) {
1609	req, out := c.DeleteBucketMetricsConfigurationRequest(input)
1610	req.SetContext(ctx)
1611	req.ApplyOptions(opts...)
1612	return out, req.Send()
1613}
1614
1615const opDeleteBucketOwnershipControls = "DeleteBucketOwnershipControls"
1616
1617// DeleteBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
1618// client's request for the DeleteBucketOwnershipControls operation. The "output" return
1619// value will be populated with the request's response once the request completes
1620// successfully.
1621//
1622// Use "Send" method on the returned Request to send the API call to the service.
1623// the "output" return value is not valid until after Send returns without error.
1624//
1625// See DeleteBucketOwnershipControls for more information on using the DeleteBucketOwnershipControls
1626// API call, and error handling.
1627//
1628// This method is useful when you want to inject custom logic or configuration
1629// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1630//
1631//
1632//    // Example sending a request using the DeleteBucketOwnershipControlsRequest method.
1633//    req, resp := client.DeleteBucketOwnershipControlsRequest(params)
1634//
1635//    err := req.Send()
1636//    if err == nil { // resp is now filled
1637//        fmt.Println(resp)
1638//    }
1639//
1640// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls
1641func (c *S3) DeleteBucketOwnershipControlsRequest(input *DeleteBucketOwnershipControlsInput) (req *request.Request, output *DeleteBucketOwnershipControlsOutput) {
1642	op := &request.Operation{
1643		Name:       opDeleteBucketOwnershipControls,
1644		HTTPMethod: "DELETE",
1645		HTTPPath:   "/{Bucket}?ownershipControls",
1646	}
1647
1648	if input == nil {
1649		input = &DeleteBucketOwnershipControlsInput{}
1650	}
1651
1652	output = &DeleteBucketOwnershipControlsOutput{}
1653	req = c.newRequest(op, input, output)
1654	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1655	return
1656}
1657
1658// DeleteBucketOwnershipControls API operation for Amazon Simple Storage Service.
1659//
1660// Removes OwnershipControls for an Amazon S3 bucket. To use this operation,
1661// you must have the s3:PutBucketOwnershipControls permission. For more information
1662// about Amazon S3 permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
1663//
1664// For information about Amazon S3 Object Ownership, see Using Object Ownership
1665// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
1666//
1667// The following operations are related to DeleteBucketOwnershipControls:
1668//
1669//    * GetBucketOwnershipControls
1670//
1671//    * PutBucketOwnershipControls
1672//
1673// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1674// with awserr.Error's Code and Message methods to get detailed information about
1675// the error.
1676//
1677// See the AWS API reference guide for Amazon Simple Storage Service's
1678// API operation DeleteBucketOwnershipControls for usage and error information.
1679// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketOwnershipControls
1680func (c *S3) DeleteBucketOwnershipControls(input *DeleteBucketOwnershipControlsInput) (*DeleteBucketOwnershipControlsOutput, error) {
1681	req, out := c.DeleteBucketOwnershipControlsRequest(input)
1682	return out, req.Send()
1683}
1684
1685// DeleteBucketOwnershipControlsWithContext is the same as DeleteBucketOwnershipControls with the addition of
1686// the ability to pass a context and additional request options.
1687//
1688// See DeleteBucketOwnershipControls for details on how to use this API operation.
1689//
1690// The context must be non-nil and will be used for request cancellation. If
1691// the context is nil a panic will occur. In the future the SDK may create
1692// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1693// for more information on using Contexts.
1694func (c *S3) DeleteBucketOwnershipControlsWithContext(ctx aws.Context, input *DeleteBucketOwnershipControlsInput, opts ...request.Option) (*DeleteBucketOwnershipControlsOutput, error) {
1695	req, out := c.DeleteBucketOwnershipControlsRequest(input)
1696	req.SetContext(ctx)
1697	req.ApplyOptions(opts...)
1698	return out, req.Send()
1699}
1700
1701const opDeleteBucketPolicy = "DeleteBucketPolicy"
1702
1703// DeleteBucketPolicyRequest generates a "aws/request.Request" representing the
1704// client's request for the DeleteBucketPolicy operation. The "output" return
1705// value will be populated with the request's response once the request completes
1706// successfully.
1707//
1708// Use "Send" method on the returned Request to send the API call to the service.
1709// the "output" return value is not valid until after Send returns without error.
1710//
1711// See DeleteBucketPolicy for more information on using the DeleteBucketPolicy
1712// API call, and error handling.
1713//
1714// This method is useful when you want to inject custom logic or configuration
1715// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1716//
1717//
1718//    // Example sending a request using the DeleteBucketPolicyRequest method.
1719//    req, resp := client.DeleteBucketPolicyRequest(params)
1720//
1721//    err := req.Send()
1722//    if err == nil { // resp is now filled
1723//        fmt.Println(resp)
1724//    }
1725//
1726// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1727func (c *S3) DeleteBucketPolicyRequest(input *DeleteBucketPolicyInput) (req *request.Request, output *DeleteBucketPolicyOutput) {
1728	op := &request.Operation{
1729		Name:       opDeleteBucketPolicy,
1730		HTTPMethod: "DELETE",
1731		HTTPPath:   "/{Bucket}?policy",
1732	}
1733
1734	if input == nil {
1735		input = &DeleteBucketPolicyInput{}
1736	}
1737
1738	output = &DeleteBucketPolicyOutput{}
1739	req = c.newRequest(op, input, output)
1740	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1741	return
1742}
1743
1744// DeleteBucketPolicy API operation for Amazon Simple Storage Service.
1745//
1746// This implementation of the DELETE action uses the policy subresource to delete
1747// the policy of a specified bucket. If you are using an identity other than
1748// the root user of the Amazon Web Services account that owns the bucket, the
1749// calling identity must have the DeleteBucketPolicy permissions on the specified
1750// bucket and belong to the bucket owner's account to use this operation.
1751//
1752// If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403
1753// Access Denied error. If you have the correct permissions, but you're not
1754// using an identity that belongs to the bucket owner's account, Amazon S3 returns
1755// a 405 Method Not Allowed error.
1756//
1757// As a security precaution, the root user of the Amazon Web Services account
1758// that owns a bucket can always use this operation, even if the policy explicitly
1759// denies the root user the ability to perform this action.
1760//
1761// For more information about bucket policies, see Using Bucket Policies and
1762// UserPolicies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
1763//
1764// The following operations are related to DeleteBucketPolicy
1765//
1766//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
1767//
1768//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
1769//
1770// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1771// with awserr.Error's Code and Message methods to get detailed information about
1772// the error.
1773//
1774// See the AWS API reference guide for Amazon Simple Storage Service's
1775// API operation DeleteBucketPolicy for usage and error information.
1776// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketPolicy
1777func (c *S3) DeleteBucketPolicy(input *DeleteBucketPolicyInput) (*DeleteBucketPolicyOutput, error) {
1778	req, out := c.DeleteBucketPolicyRequest(input)
1779	return out, req.Send()
1780}
1781
1782// DeleteBucketPolicyWithContext is the same as DeleteBucketPolicy with the addition of
1783// the ability to pass a context and additional request options.
1784//
1785// See DeleteBucketPolicy for details on how to use this API operation.
1786//
1787// The context must be non-nil and will be used for request cancellation. If
1788// the context is nil a panic will occur. In the future the SDK may create
1789// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1790// for more information on using Contexts.
1791func (c *S3) DeleteBucketPolicyWithContext(ctx aws.Context, input *DeleteBucketPolicyInput, opts ...request.Option) (*DeleteBucketPolicyOutput, error) {
1792	req, out := c.DeleteBucketPolicyRequest(input)
1793	req.SetContext(ctx)
1794	req.ApplyOptions(opts...)
1795	return out, req.Send()
1796}
1797
1798const opDeleteBucketReplication = "DeleteBucketReplication"
1799
1800// DeleteBucketReplicationRequest generates a "aws/request.Request" representing the
1801// client's request for the DeleteBucketReplication operation. The "output" return
1802// value will be populated with the request's response once the request completes
1803// successfully.
1804//
1805// Use "Send" method on the returned Request to send the API call to the service.
1806// the "output" return value is not valid until after Send returns without error.
1807//
1808// See DeleteBucketReplication for more information on using the DeleteBucketReplication
1809// API call, and error handling.
1810//
1811// This method is useful when you want to inject custom logic or configuration
1812// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1813//
1814//
1815//    // Example sending a request using the DeleteBucketReplicationRequest method.
1816//    req, resp := client.DeleteBucketReplicationRequest(params)
1817//
1818//    err := req.Send()
1819//    if err == nil { // resp is now filled
1820//        fmt.Println(resp)
1821//    }
1822//
1823// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1824func (c *S3) DeleteBucketReplicationRequest(input *DeleteBucketReplicationInput) (req *request.Request, output *DeleteBucketReplicationOutput) {
1825	op := &request.Operation{
1826		Name:       opDeleteBucketReplication,
1827		HTTPMethod: "DELETE",
1828		HTTPPath:   "/{Bucket}?replication",
1829	}
1830
1831	if input == nil {
1832		input = &DeleteBucketReplicationInput{}
1833	}
1834
1835	output = &DeleteBucketReplicationOutput{}
1836	req = c.newRequest(op, input, output)
1837	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1838	return
1839}
1840
1841// DeleteBucketReplication API operation for Amazon Simple Storage Service.
1842//
1843// Deletes the replication configuration from the bucket.
1844//
1845// To use this operation, you must have permissions to perform the s3:PutReplicationConfiguration
1846// action. The bucket owner has these permissions by default and can grant it
1847// to others. For more information about permissions, see Permissions Related
1848// to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
1849// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
1850//
1851// It can take a while for the deletion of a replication configuration to fully
1852// propagate.
1853//
1854// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
1855// in the Amazon S3 User Guide.
1856//
1857// The following operations are related to DeleteBucketReplication:
1858//
1859//    * PutBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
1860//
1861//    * GetBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
1862//
1863// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1864// with awserr.Error's Code and Message methods to get detailed information about
1865// the error.
1866//
1867// See the AWS API reference guide for Amazon Simple Storage Service's
1868// API operation DeleteBucketReplication for usage and error information.
1869// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketReplication
1870func (c *S3) DeleteBucketReplication(input *DeleteBucketReplicationInput) (*DeleteBucketReplicationOutput, error) {
1871	req, out := c.DeleteBucketReplicationRequest(input)
1872	return out, req.Send()
1873}
1874
1875// DeleteBucketReplicationWithContext is the same as DeleteBucketReplication with the addition of
1876// the ability to pass a context and additional request options.
1877//
1878// See DeleteBucketReplication for details on how to use this API operation.
1879//
1880// The context must be non-nil and will be used for request cancellation. If
1881// the context is nil a panic will occur. In the future the SDK may create
1882// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1883// for more information on using Contexts.
1884func (c *S3) DeleteBucketReplicationWithContext(ctx aws.Context, input *DeleteBucketReplicationInput, opts ...request.Option) (*DeleteBucketReplicationOutput, error) {
1885	req, out := c.DeleteBucketReplicationRequest(input)
1886	req.SetContext(ctx)
1887	req.ApplyOptions(opts...)
1888	return out, req.Send()
1889}
1890
1891const opDeleteBucketTagging = "DeleteBucketTagging"
1892
1893// DeleteBucketTaggingRequest generates a "aws/request.Request" representing the
1894// client's request for the DeleteBucketTagging operation. The "output" return
1895// value will be populated with the request's response once the request completes
1896// successfully.
1897//
1898// Use "Send" method on the returned Request to send the API call to the service.
1899// the "output" return value is not valid until after Send returns without error.
1900//
1901// See DeleteBucketTagging for more information on using the DeleteBucketTagging
1902// API call, and error handling.
1903//
1904// This method is useful when you want to inject custom logic or configuration
1905// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1906//
1907//
1908//    // Example sending a request using the DeleteBucketTaggingRequest method.
1909//    req, resp := client.DeleteBucketTaggingRequest(params)
1910//
1911//    err := req.Send()
1912//    if err == nil { // resp is now filled
1913//        fmt.Println(resp)
1914//    }
1915//
1916// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1917func (c *S3) DeleteBucketTaggingRequest(input *DeleteBucketTaggingInput) (req *request.Request, output *DeleteBucketTaggingOutput) {
1918	op := &request.Operation{
1919		Name:       opDeleteBucketTagging,
1920		HTTPMethod: "DELETE",
1921		HTTPPath:   "/{Bucket}?tagging",
1922	}
1923
1924	if input == nil {
1925		input = &DeleteBucketTaggingInput{}
1926	}
1927
1928	output = &DeleteBucketTaggingOutput{}
1929	req = c.newRequest(op, input, output)
1930	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
1931	return
1932}
1933
1934// DeleteBucketTagging API operation for Amazon Simple Storage Service.
1935//
1936// Deletes the tags from the bucket.
1937//
1938// To use this operation, you must have permission to perform the s3:PutBucketTagging
1939// action. By default, the bucket owner has this permission and can grant this
1940// permission to others.
1941//
1942// The following operations are related to DeleteBucketTagging:
1943//
1944//    * GetBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
1945//
1946//    * PutBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
1947//
1948// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1949// with awserr.Error's Code and Message methods to get detailed information about
1950// the error.
1951//
1952// See the AWS API reference guide for Amazon Simple Storage Service's
1953// API operation DeleteBucketTagging for usage and error information.
1954// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketTagging
1955func (c *S3) DeleteBucketTagging(input *DeleteBucketTaggingInput) (*DeleteBucketTaggingOutput, error) {
1956	req, out := c.DeleteBucketTaggingRequest(input)
1957	return out, req.Send()
1958}
1959
1960// DeleteBucketTaggingWithContext is the same as DeleteBucketTagging with the addition of
1961// the ability to pass a context and additional request options.
1962//
1963// See DeleteBucketTagging for details on how to use this API operation.
1964//
1965// The context must be non-nil and will be used for request cancellation. If
1966// the context is nil a panic will occur. In the future the SDK may create
1967// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1968// for more information on using Contexts.
1969func (c *S3) DeleteBucketTaggingWithContext(ctx aws.Context, input *DeleteBucketTaggingInput, opts ...request.Option) (*DeleteBucketTaggingOutput, error) {
1970	req, out := c.DeleteBucketTaggingRequest(input)
1971	req.SetContext(ctx)
1972	req.ApplyOptions(opts...)
1973	return out, req.Send()
1974}
1975
1976const opDeleteBucketWebsite = "DeleteBucketWebsite"
1977
1978// DeleteBucketWebsiteRequest generates a "aws/request.Request" representing the
1979// client's request for the DeleteBucketWebsite operation. The "output" return
1980// value will be populated with the request's response once the request completes
1981// successfully.
1982//
1983// Use "Send" method on the returned Request to send the API call to the service.
1984// the "output" return value is not valid until after Send returns without error.
1985//
1986// See DeleteBucketWebsite for more information on using the DeleteBucketWebsite
1987// API call, and error handling.
1988//
1989// This method is useful when you want to inject custom logic or configuration
1990// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1991//
1992//
1993//    // Example sending a request using the DeleteBucketWebsiteRequest method.
1994//    req, resp := client.DeleteBucketWebsiteRequest(params)
1995//
1996//    err := req.Send()
1997//    if err == nil { // resp is now filled
1998//        fmt.Println(resp)
1999//    }
2000//
2001// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
2002func (c *S3) DeleteBucketWebsiteRequest(input *DeleteBucketWebsiteInput) (req *request.Request, output *DeleteBucketWebsiteOutput) {
2003	op := &request.Operation{
2004		Name:       opDeleteBucketWebsite,
2005		HTTPMethod: "DELETE",
2006		HTTPPath:   "/{Bucket}?website",
2007	}
2008
2009	if input == nil {
2010		input = &DeleteBucketWebsiteInput{}
2011	}
2012
2013	output = &DeleteBucketWebsiteOutput{}
2014	req = c.newRequest(op, input, output)
2015	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2016	return
2017}
2018
2019// DeleteBucketWebsite API operation for Amazon Simple Storage Service.
2020//
2021// This action removes the website configuration for a bucket. Amazon S3 returns
2022// a 200 OK response upon successfully deleting a website configuration on the
2023// specified bucket. You will get a 200 OK response if the website configuration
2024// you are trying to delete does not exist on the bucket. Amazon S3 returns
2025// a 404 response if the bucket specified in the request does not exist.
2026//
2027// This DELETE action requires the S3:DeleteBucketWebsite permission. By default,
2028// only the bucket owner can delete the website configuration attached to a
2029// bucket. However, bucket owners can grant other users permission to delete
2030// the website configuration by writing a bucket policy granting them the S3:DeleteBucketWebsite
2031// permission.
2032//
2033// For more information about hosting websites, see Hosting Websites on Amazon
2034// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
2035//
2036// The following operations are related to DeleteBucketWebsite:
2037//
2038//    * GetBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketWebsite.html)
2039//
2040//    * PutBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
2041//
2042// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2043// with awserr.Error's Code and Message methods to get detailed information about
2044// the error.
2045//
2046// See the AWS API reference guide for Amazon Simple Storage Service's
2047// API operation DeleteBucketWebsite for usage and error information.
2048// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteBucketWebsite
2049func (c *S3) DeleteBucketWebsite(input *DeleteBucketWebsiteInput) (*DeleteBucketWebsiteOutput, error) {
2050	req, out := c.DeleteBucketWebsiteRequest(input)
2051	return out, req.Send()
2052}
2053
2054// DeleteBucketWebsiteWithContext is the same as DeleteBucketWebsite with the addition of
2055// the ability to pass a context and additional request options.
2056//
2057// See DeleteBucketWebsite for details on how to use this API operation.
2058//
2059// The context must be non-nil and will be used for request cancellation. If
2060// the context is nil a panic will occur. In the future the SDK may create
2061// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2062// for more information on using Contexts.
2063func (c *S3) DeleteBucketWebsiteWithContext(ctx aws.Context, input *DeleteBucketWebsiteInput, opts ...request.Option) (*DeleteBucketWebsiteOutput, error) {
2064	req, out := c.DeleteBucketWebsiteRequest(input)
2065	req.SetContext(ctx)
2066	req.ApplyOptions(opts...)
2067	return out, req.Send()
2068}
2069
2070const opDeleteObject = "DeleteObject"
2071
2072// DeleteObjectRequest generates a "aws/request.Request" representing the
2073// client's request for the DeleteObject operation. The "output" return
2074// value will be populated with the request's response once the request completes
2075// successfully.
2076//
2077// Use "Send" method on the returned Request to send the API call to the service.
2078// the "output" return value is not valid until after Send returns without error.
2079//
2080// See DeleteObject for more information on using the DeleteObject
2081// API call, and error handling.
2082//
2083// This method is useful when you want to inject custom logic or configuration
2084// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2085//
2086//
2087//    // Example sending a request using the DeleteObjectRequest method.
2088//    req, resp := client.DeleteObjectRequest(params)
2089//
2090//    err := req.Send()
2091//    if err == nil { // resp is now filled
2092//        fmt.Println(resp)
2093//    }
2094//
2095// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
2096func (c *S3) DeleteObjectRequest(input *DeleteObjectInput) (req *request.Request, output *DeleteObjectOutput) {
2097	op := &request.Operation{
2098		Name:       opDeleteObject,
2099		HTTPMethod: "DELETE",
2100		HTTPPath:   "/{Bucket}/{Key+}",
2101	}
2102
2103	if input == nil {
2104		input = &DeleteObjectInput{}
2105	}
2106
2107	output = &DeleteObjectOutput{}
2108	req = c.newRequest(op, input, output)
2109	return
2110}
2111
2112// DeleteObject API operation for Amazon Simple Storage Service.
2113//
2114// Removes the null version (if there is one) of an object and inserts a delete
2115// marker, which becomes the latest version of the object. If there isn't a
2116// null version, Amazon S3 does not remove any objects but will still respond
2117// that the command was successful.
2118//
2119// To remove a specific version, you must be the bucket owner and you must use
2120// the version Id subresource. Using this subresource permanently deletes the
2121// version. If the object deleted is a delete marker, Amazon S3 sets the response
2122// header, x-amz-delete-marker, to true.
2123//
2124// If the object you want to delete is in a bucket where the bucket versioning
2125// configuration is MFA Delete enabled, you must include the x-amz-mfa request
2126// header in the DELETE versionId request. Requests that include x-amz-mfa must
2127// use HTTPS.
2128//
2129// For more information about MFA Delete, see Using MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html).
2130// To see sample requests that use versioning, see Sample Request (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete).
2131//
2132// You can delete objects by explicitly calling DELETE Object or configure its
2133// lifecycle (PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html))
2134// to enable Amazon S3 to remove them for you. If you want to block users or
2135// accounts from removing or deleting objects from your bucket, you must deny
2136// them the s3:DeleteObject, s3:DeleteObjectVersion, and s3:PutLifeCycleConfiguration
2137// actions.
2138//
2139// The following action is related to DeleteObject:
2140//
2141//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
2142//
2143// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2144// with awserr.Error's Code and Message methods to get detailed information about
2145// the error.
2146//
2147// See the AWS API reference guide for Amazon Simple Storage Service's
2148// API operation DeleteObject for usage and error information.
2149// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObject
2150func (c *S3) DeleteObject(input *DeleteObjectInput) (*DeleteObjectOutput, error) {
2151	req, out := c.DeleteObjectRequest(input)
2152	return out, req.Send()
2153}
2154
2155// DeleteObjectWithContext is the same as DeleteObject with the addition of
2156// the ability to pass a context and additional request options.
2157//
2158// See DeleteObject for details on how to use this API operation.
2159//
2160// The context must be non-nil and will be used for request cancellation. If
2161// the context is nil a panic will occur. In the future the SDK may create
2162// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2163// for more information on using Contexts.
2164func (c *S3) DeleteObjectWithContext(ctx aws.Context, input *DeleteObjectInput, opts ...request.Option) (*DeleteObjectOutput, error) {
2165	req, out := c.DeleteObjectRequest(input)
2166	req.SetContext(ctx)
2167	req.ApplyOptions(opts...)
2168	return out, req.Send()
2169}
2170
2171const opDeleteObjectTagging = "DeleteObjectTagging"
2172
2173// DeleteObjectTaggingRequest generates a "aws/request.Request" representing the
2174// client's request for the DeleteObjectTagging operation. The "output" return
2175// value will be populated with the request's response once the request completes
2176// successfully.
2177//
2178// Use "Send" method on the returned Request to send the API call to the service.
2179// the "output" return value is not valid until after Send returns without error.
2180//
2181// See DeleteObjectTagging for more information on using the DeleteObjectTagging
2182// API call, and error handling.
2183//
2184// This method is useful when you want to inject custom logic or configuration
2185// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2186//
2187//
2188//    // Example sending a request using the DeleteObjectTaggingRequest method.
2189//    req, resp := client.DeleteObjectTaggingRequest(params)
2190//
2191//    err := req.Send()
2192//    if err == nil { // resp is now filled
2193//        fmt.Println(resp)
2194//    }
2195//
2196// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2197func (c *S3) DeleteObjectTaggingRequest(input *DeleteObjectTaggingInput) (req *request.Request, output *DeleteObjectTaggingOutput) {
2198	op := &request.Operation{
2199		Name:       opDeleteObjectTagging,
2200		HTTPMethod: "DELETE",
2201		HTTPPath:   "/{Bucket}/{Key+}?tagging",
2202	}
2203
2204	if input == nil {
2205		input = &DeleteObjectTaggingInput{}
2206	}
2207
2208	output = &DeleteObjectTaggingOutput{}
2209	req = c.newRequest(op, input, output)
2210	return
2211}
2212
2213// DeleteObjectTagging API operation for Amazon Simple Storage Service.
2214//
2215// Removes the entire tag set from the specified object. For more information
2216// about managing object tags, see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
2217//
2218// To use this operation, you must have permission to perform the s3:DeleteObjectTagging
2219// action.
2220//
2221// To delete tags of a specific object version, add the versionId query parameter
2222// in the request. You will need permission for the s3:DeleteObjectVersionTagging
2223// action.
2224//
2225// The following operations are related to DeleteBucketMetricsConfiguration:
2226//
2227//    * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
2228//
2229//    * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
2230//
2231// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2232// with awserr.Error's Code and Message methods to get detailed information about
2233// the error.
2234//
2235// See the AWS API reference guide for Amazon Simple Storage Service's
2236// API operation DeleteObjectTagging for usage and error information.
2237// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjectTagging
2238func (c *S3) DeleteObjectTagging(input *DeleteObjectTaggingInput) (*DeleteObjectTaggingOutput, error) {
2239	req, out := c.DeleteObjectTaggingRequest(input)
2240	return out, req.Send()
2241}
2242
2243// DeleteObjectTaggingWithContext is the same as DeleteObjectTagging with the addition of
2244// the ability to pass a context and additional request options.
2245//
2246// See DeleteObjectTagging for details on how to use this API operation.
2247//
2248// The context must be non-nil and will be used for request cancellation. If
2249// the context is nil a panic will occur. In the future the SDK may create
2250// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2251// for more information on using Contexts.
2252func (c *S3) DeleteObjectTaggingWithContext(ctx aws.Context, input *DeleteObjectTaggingInput, opts ...request.Option) (*DeleteObjectTaggingOutput, error) {
2253	req, out := c.DeleteObjectTaggingRequest(input)
2254	req.SetContext(ctx)
2255	req.ApplyOptions(opts...)
2256	return out, req.Send()
2257}
2258
2259const opDeleteObjects = "DeleteObjects"
2260
2261// DeleteObjectsRequest generates a "aws/request.Request" representing the
2262// client's request for the DeleteObjects operation. The "output" return
2263// value will be populated with the request's response once the request completes
2264// successfully.
2265//
2266// Use "Send" method on the returned Request to send the API call to the service.
2267// the "output" return value is not valid until after Send returns without error.
2268//
2269// See DeleteObjects for more information on using the DeleteObjects
2270// API call, and error handling.
2271//
2272// This method is useful when you want to inject custom logic or configuration
2273// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2274//
2275//
2276//    // Example sending a request using the DeleteObjectsRequest method.
2277//    req, resp := client.DeleteObjectsRequest(params)
2278//
2279//    err := req.Send()
2280//    if err == nil { // resp is now filled
2281//        fmt.Println(resp)
2282//    }
2283//
2284// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2285func (c *S3) DeleteObjectsRequest(input *DeleteObjectsInput) (req *request.Request, output *DeleteObjectsOutput) {
2286	op := &request.Operation{
2287		Name:       opDeleteObjects,
2288		HTTPMethod: "POST",
2289		HTTPPath:   "/{Bucket}?delete",
2290	}
2291
2292	if input == nil {
2293		input = &DeleteObjectsInput{}
2294	}
2295
2296	output = &DeleteObjectsOutput{}
2297	req = c.newRequest(op, input, output)
2298	req.Handlers.Build.PushBackNamed(request.NamedHandler{
2299		Name: "contentMd5Handler",
2300		Fn:   checksum.AddBodyContentMD5Handler,
2301	})
2302	return
2303}
2304
2305// DeleteObjects API operation for Amazon Simple Storage Service.
2306//
2307// This action enables you to delete multiple objects from a bucket using a
2308// single HTTP request. If you know the object keys that you want to delete,
2309// then this action provides a suitable alternative to sending individual delete
2310// requests, reducing per-request overhead.
2311//
2312// The request contains a list of up to 1000 keys that you want to delete. In
2313// the XML, you provide the object key names, and optionally, version IDs if
2314// you want to delete a specific version of the object from a versioning-enabled
2315// bucket. For each key, Amazon S3 performs a delete action and returns the
2316// result of that delete, success, or failure, in the response. Note that if
2317// the object specified in the request is not found, Amazon S3 returns the result
2318// as deleted.
2319//
2320// The action supports two modes for the response: verbose and quiet. By default,
2321// the action uses verbose mode in which the response includes the result of
2322// deletion of each key in your request. In quiet mode the response includes
2323// only keys where the delete action encountered an error. For a successful
2324// deletion, the action does not return any information about the delete in
2325// the response body.
2326//
2327// When performing this action on an MFA Delete enabled bucket, that attempts
2328// to delete any versioned objects, you must include an MFA token. If you do
2329// not provide one, the entire request will fail, even if there are non-versioned
2330// objects you are trying to delete. If you provide an invalid token, whether
2331// there are versioned keys in the request or not, the entire Multi-Object Delete
2332// request will fail. For information about MFA Delete, see MFA Delete (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete).
2333//
2334// Finally, the Content-MD5 header is required for all Multi-Object Delete requests.
2335// Amazon S3 uses the header value to ensure that your request body has not
2336// been altered in transit.
2337//
2338// The following operations are related to DeleteObjects:
2339//
2340//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
2341//
2342//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
2343//
2344//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
2345//
2346//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
2347//
2348//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
2349//
2350// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2351// with awserr.Error's Code and Message methods to get detailed information about
2352// the error.
2353//
2354// See the AWS API reference guide for Amazon Simple Storage Service's
2355// API operation DeleteObjects for usage and error information.
2356// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeleteObjects
2357func (c *S3) DeleteObjects(input *DeleteObjectsInput) (*DeleteObjectsOutput, error) {
2358	req, out := c.DeleteObjectsRequest(input)
2359	return out, req.Send()
2360}
2361
2362// DeleteObjectsWithContext is the same as DeleteObjects with the addition of
2363// the ability to pass a context and additional request options.
2364//
2365// See DeleteObjects for details on how to use this API operation.
2366//
2367// The context must be non-nil and will be used for request cancellation. If
2368// the context is nil a panic will occur. In the future the SDK may create
2369// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2370// for more information on using Contexts.
2371func (c *S3) DeleteObjectsWithContext(ctx aws.Context, input *DeleteObjectsInput, opts ...request.Option) (*DeleteObjectsOutput, error) {
2372	req, out := c.DeleteObjectsRequest(input)
2373	req.SetContext(ctx)
2374	req.ApplyOptions(opts...)
2375	return out, req.Send()
2376}
2377
2378const opDeletePublicAccessBlock = "DeletePublicAccessBlock"
2379
2380// DeletePublicAccessBlockRequest generates a "aws/request.Request" representing the
2381// client's request for the DeletePublicAccessBlock operation. The "output" return
2382// value will be populated with the request's response once the request completes
2383// successfully.
2384//
2385// Use "Send" method on the returned Request to send the API call to the service.
2386// the "output" return value is not valid until after Send returns without error.
2387//
2388// See DeletePublicAccessBlock for more information on using the DeletePublicAccessBlock
2389// API call, and error handling.
2390//
2391// This method is useful when you want to inject custom logic or configuration
2392// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2393//
2394//
2395//    // Example sending a request using the DeletePublicAccessBlockRequest method.
2396//    req, resp := client.DeletePublicAccessBlockRequest(params)
2397//
2398//    err := req.Send()
2399//    if err == nil { // resp is now filled
2400//        fmt.Println(resp)
2401//    }
2402//
2403// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2404func (c *S3) DeletePublicAccessBlockRequest(input *DeletePublicAccessBlockInput) (req *request.Request, output *DeletePublicAccessBlockOutput) {
2405	op := &request.Operation{
2406		Name:       opDeletePublicAccessBlock,
2407		HTTPMethod: "DELETE",
2408		HTTPPath:   "/{Bucket}?publicAccessBlock",
2409	}
2410
2411	if input == nil {
2412		input = &DeletePublicAccessBlockInput{}
2413	}
2414
2415	output = &DeletePublicAccessBlockOutput{}
2416	req = c.newRequest(op, input, output)
2417	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2418	return
2419}
2420
2421// DeletePublicAccessBlock API operation for Amazon Simple Storage Service.
2422//
2423// Removes the PublicAccessBlock configuration for an Amazon S3 bucket. To use
2424// this operation, you must have the s3:PutBucketPublicAccessBlock permission.
2425// For more information about permissions, see Permissions Related to Bucket
2426// Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2427// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
2428//
2429// The following operations are related to DeletePublicAccessBlock:
2430//
2431//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
2432//
2433//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
2434//
2435//    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
2436//
2437//    * GetBucketPolicyStatus (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
2438//
2439// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2440// with awserr.Error's Code and Message methods to get detailed information about
2441// the error.
2442//
2443// See the AWS API reference guide for Amazon Simple Storage Service's
2444// API operation DeletePublicAccessBlock for usage and error information.
2445// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/DeletePublicAccessBlock
2446func (c *S3) DeletePublicAccessBlock(input *DeletePublicAccessBlockInput) (*DeletePublicAccessBlockOutput, error) {
2447	req, out := c.DeletePublicAccessBlockRequest(input)
2448	return out, req.Send()
2449}
2450
2451// DeletePublicAccessBlockWithContext is the same as DeletePublicAccessBlock with the addition of
2452// the ability to pass a context and additional request options.
2453//
2454// See DeletePublicAccessBlock for details on how to use this API operation.
2455//
2456// The context must be non-nil and will be used for request cancellation. If
2457// the context is nil a panic will occur. In the future the SDK may create
2458// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2459// for more information on using Contexts.
2460func (c *S3) DeletePublicAccessBlockWithContext(ctx aws.Context, input *DeletePublicAccessBlockInput, opts ...request.Option) (*DeletePublicAccessBlockOutput, error) {
2461	req, out := c.DeletePublicAccessBlockRequest(input)
2462	req.SetContext(ctx)
2463	req.ApplyOptions(opts...)
2464	return out, req.Send()
2465}
2466
2467const opGetBucketAccelerateConfiguration = "GetBucketAccelerateConfiguration"
2468
2469// GetBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
2470// client's request for the GetBucketAccelerateConfiguration operation. The "output" return
2471// value will be populated with the request's response once the request completes
2472// successfully.
2473//
2474// Use "Send" method on the returned Request to send the API call to the service.
2475// the "output" return value is not valid until after Send returns without error.
2476//
2477// See GetBucketAccelerateConfiguration for more information on using the GetBucketAccelerateConfiguration
2478// API call, and error handling.
2479//
2480// This method is useful when you want to inject custom logic or configuration
2481// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2482//
2483//
2484//    // Example sending a request using the GetBucketAccelerateConfigurationRequest method.
2485//    req, resp := client.GetBucketAccelerateConfigurationRequest(params)
2486//
2487//    err := req.Send()
2488//    if err == nil { // resp is now filled
2489//        fmt.Println(resp)
2490//    }
2491//
2492// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2493func (c *S3) GetBucketAccelerateConfigurationRequest(input *GetBucketAccelerateConfigurationInput) (req *request.Request, output *GetBucketAccelerateConfigurationOutput) {
2494	op := &request.Operation{
2495		Name:       opGetBucketAccelerateConfiguration,
2496		HTTPMethod: "GET",
2497		HTTPPath:   "/{Bucket}?accelerate",
2498	}
2499
2500	if input == nil {
2501		input = &GetBucketAccelerateConfigurationInput{}
2502	}
2503
2504	output = &GetBucketAccelerateConfigurationOutput{}
2505	req = c.newRequest(op, input, output)
2506	return
2507}
2508
2509// GetBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
2510//
2511// This implementation of the GET action uses the accelerate subresource to
2512// return the Transfer Acceleration state of a bucket, which is either Enabled
2513// or Suspended. Amazon S3 Transfer Acceleration is a bucket-level feature that
2514// enables you to perform faster data transfers to and from Amazon S3.
2515//
2516// To use this operation, you must have permission to perform the s3:GetAccelerateConfiguration
2517// action. The bucket owner has this permission by default. The bucket owner
2518// can grant this permission to others. For more information about permissions,
2519// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2520// and Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
2521// in the Amazon S3 User Guide.
2522//
2523// You set the Transfer Acceleration state of an existing bucket to Enabled
2524// or Suspended by using the PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
2525// operation.
2526//
2527// A GET accelerate request does not return a state value for a bucket that
2528// has no transfer acceleration state. A bucket has no Transfer Acceleration
2529// state if a state has never been set on the bucket.
2530//
2531// For more information about transfer acceleration, see Transfer Acceleration
2532// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
2533// in the Amazon S3 User Guide.
2534//
2535// Related Resources
2536//
2537//    * PutBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)
2538//
2539// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2540// with awserr.Error's Code and Message methods to get detailed information about
2541// the error.
2542//
2543// See the AWS API reference guide for Amazon Simple Storage Service's
2544// API operation GetBucketAccelerateConfiguration for usage and error information.
2545// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAccelerateConfiguration
2546func (c *S3) GetBucketAccelerateConfiguration(input *GetBucketAccelerateConfigurationInput) (*GetBucketAccelerateConfigurationOutput, error) {
2547	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2548	return out, req.Send()
2549}
2550
2551// GetBucketAccelerateConfigurationWithContext is the same as GetBucketAccelerateConfiguration with the addition of
2552// the ability to pass a context and additional request options.
2553//
2554// See GetBucketAccelerateConfiguration for details on how to use this API operation.
2555//
2556// The context must be non-nil and will be used for request cancellation. If
2557// the context is nil a panic will occur. In the future the SDK may create
2558// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2559// for more information on using Contexts.
2560func (c *S3) GetBucketAccelerateConfigurationWithContext(ctx aws.Context, input *GetBucketAccelerateConfigurationInput, opts ...request.Option) (*GetBucketAccelerateConfigurationOutput, error) {
2561	req, out := c.GetBucketAccelerateConfigurationRequest(input)
2562	req.SetContext(ctx)
2563	req.ApplyOptions(opts...)
2564	return out, req.Send()
2565}
2566
2567const opGetBucketAcl = "GetBucketAcl"
2568
2569// GetBucketAclRequest generates a "aws/request.Request" representing the
2570// client's request for the GetBucketAcl operation. The "output" return
2571// value will be populated with the request's response once the request completes
2572// successfully.
2573//
2574// Use "Send" method on the returned Request to send the API call to the service.
2575// the "output" return value is not valid until after Send returns without error.
2576//
2577// See GetBucketAcl for more information on using the GetBucketAcl
2578// API call, and error handling.
2579//
2580// This method is useful when you want to inject custom logic or configuration
2581// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2582//
2583//
2584//    // Example sending a request using the GetBucketAclRequest method.
2585//    req, resp := client.GetBucketAclRequest(params)
2586//
2587//    err := req.Send()
2588//    if err == nil { // resp is now filled
2589//        fmt.Println(resp)
2590//    }
2591//
2592// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2593func (c *S3) GetBucketAclRequest(input *GetBucketAclInput) (req *request.Request, output *GetBucketAclOutput) {
2594	op := &request.Operation{
2595		Name:       opGetBucketAcl,
2596		HTTPMethod: "GET",
2597		HTTPPath:   "/{Bucket}?acl",
2598	}
2599
2600	if input == nil {
2601		input = &GetBucketAclInput{}
2602	}
2603
2604	output = &GetBucketAclOutput{}
2605	req = c.newRequest(op, input, output)
2606	return
2607}
2608
2609// GetBucketAcl API operation for Amazon Simple Storage Service.
2610//
2611// This implementation of the GET action uses the acl subresource to return
2612// the access control list (ACL) of a bucket. To use GET to return the ACL of
2613// the bucket, you must have READ_ACP access to the bucket. If READ_ACP permission
2614// is granted to the anonymous user, you can return the ACL of the bucket without
2615// using an authorization header.
2616//
2617// Related Resources
2618//
2619//    * ListObjects (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
2620//
2621// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2622// with awserr.Error's Code and Message methods to get detailed information about
2623// the error.
2624//
2625// See the AWS API reference guide for Amazon Simple Storage Service's
2626// API operation GetBucketAcl for usage and error information.
2627// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAcl
2628func (c *S3) GetBucketAcl(input *GetBucketAclInput) (*GetBucketAclOutput, error) {
2629	req, out := c.GetBucketAclRequest(input)
2630	return out, req.Send()
2631}
2632
2633// GetBucketAclWithContext is the same as GetBucketAcl with the addition of
2634// the ability to pass a context and additional request options.
2635//
2636// See GetBucketAcl for details on how to use this API operation.
2637//
2638// The context must be non-nil and will be used for request cancellation. If
2639// the context is nil a panic will occur. In the future the SDK may create
2640// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2641// for more information on using Contexts.
2642func (c *S3) GetBucketAclWithContext(ctx aws.Context, input *GetBucketAclInput, opts ...request.Option) (*GetBucketAclOutput, error) {
2643	req, out := c.GetBucketAclRequest(input)
2644	req.SetContext(ctx)
2645	req.ApplyOptions(opts...)
2646	return out, req.Send()
2647}
2648
2649const opGetBucketAnalyticsConfiguration = "GetBucketAnalyticsConfiguration"
2650
2651// GetBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
2652// client's request for the GetBucketAnalyticsConfiguration operation. The "output" return
2653// value will be populated with the request's response once the request completes
2654// successfully.
2655//
2656// Use "Send" method on the returned Request to send the API call to the service.
2657// the "output" return value is not valid until after Send returns without error.
2658//
2659// See GetBucketAnalyticsConfiguration for more information on using the GetBucketAnalyticsConfiguration
2660// API call, and error handling.
2661//
2662// This method is useful when you want to inject custom logic or configuration
2663// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2664//
2665//
2666//    // Example sending a request using the GetBucketAnalyticsConfigurationRequest method.
2667//    req, resp := client.GetBucketAnalyticsConfigurationRequest(params)
2668//
2669//    err := req.Send()
2670//    if err == nil { // resp is now filled
2671//        fmt.Println(resp)
2672//    }
2673//
2674// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2675func (c *S3) GetBucketAnalyticsConfigurationRequest(input *GetBucketAnalyticsConfigurationInput) (req *request.Request, output *GetBucketAnalyticsConfigurationOutput) {
2676	op := &request.Operation{
2677		Name:       opGetBucketAnalyticsConfiguration,
2678		HTTPMethod: "GET",
2679		HTTPPath:   "/{Bucket}?analytics",
2680	}
2681
2682	if input == nil {
2683		input = &GetBucketAnalyticsConfigurationInput{}
2684	}
2685
2686	output = &GetBucketAnalyticsConfigurationOutput{}
2687	req = c.newRequest(op, input, output)
2688	return
2689}
2690
2691// GetBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
2692//
2693// This implementation of the GET action returns an analytics configuration
2694// (identified by the analytics configuration ID) from the bucket.
2695//
2696// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
2697// action. The bucket owner has this permission by default. The bucket owner
2698// can grant this permission to others. For more information about permissions,
2699// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2700// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
2701// in the Amazon S3 User Guide.
2702//
2703// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
2704// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html)
2705// in the Amazon S3 User Guide.
2706//
2707// Related Resources
2708//
2709//    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
2710//
2711//    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
2712//
2713//    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
2714//
2715// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2716// with awserr.Error's Code and Message methods to get detailed information about
2717// the error.
2718//
2719// See the AWS API reference guide for Amazon Simple Storage Service's
2720// API operation GetBucketAnalyticsConfiguration for usage and error information.
2721// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketAnalyticsConfiguration
2722func (c *S3) GetBucketAnalyticsConfiguration(input *GetBucketAnalyticsConfigurationInput) (*GetBucketAnalyticsConfigurationOutput, error) {
2723	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2724	return out, req.Send()
2725}
2726
2727// GetBucketAnalyticsConfigurationWithContext is the same as GetBucketAnalyticsConfiguration with the addition of
2728// the ability to pass a context and additional request options.
2729//
2730// See GetBucketAnalyticsConfiguration for details on how to use this API operation.
2731//
2732// The context must be non-nil and will be used for request cancellation. If
2733// the context is nil a panic will occur. In the future the SDK may create
2734// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2735// for more information on using Contexts.
2736func (c *S3) GetBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *GetBucketAnalyticsConfigurationInput, opts ...request.Option) (*GetBucketAnalyticsConfigurationOutput, error) {
2737	req, out := c.GetBucketAnalyticsConfigurationRequest(input)
2738	req.SetContext(ctx)
2739	req.ApplyOptions(opts...)
2740	return out, req.Send()
2741}
2742
2743const opGetBucketCors = "GetBucketCors"
2744
2745// GetBucketCorsRequest generates a "aws/request.Request" representing the
2746// client's request for the GetBucketCors operation. The "output" return
2747// value will be populated with the request's response once the request completes
2748// successfully.
2749//
2750// Use "Send" method on the returned Request to send the API call to the service.
2751// the "output" return value is not valid until after Send returns without error.
2752//
2753// See GetBucketCors for more information on using the GetBucketCors
2754// API call, and error handling.
2755//
2756// This method is useful when you want to inject custom logic or configuration
2757// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2758//
2759//
2760//    // Example sending a request using the GetBucketCorsRequest method.
2761//    req, resp := client.GetBucketCorsRequest(params)
2762//
2763//    err := req.Send()
2764//    if err == nil { // resp is now filled
2765//        fmt.Println(resp)
2766//    }
2767//
2768// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2769func (c *S3) GetBucketCorsRequest(input *GetBucketCorsInput) (req *request.Request, output *GetBucketCorsOutput) {
2770	op := &request.Operation{
2771		Name:       opGetBucketCors,
2772		HTTPMethod: "GET",
2773		HTTPPath:   "/{Bucket}?cors",
2774	}
2775
2776	if input == nil {
2777		input = &GetBucketCorsInput{}
2778	}
2779
2780	output = &GetBucketCorsOutput{}
2781	req = c.newRequest(op, input, output)
2782	return
2783}
2784
2785// GetBucketCors API operation for Amazon Simple Storage Service.
2786//
2787// Returns the cors configuration information set for the bucket.
2788//
2789// To use this operation, you must have permission to perform the s3:GetBucketCORS
2790// action. By default, the bucket owner has this permission and can grant it
2791// to others.
2792//
2793// For more information about cors, see Enabling Cross-Origin Resource Sharing
2794// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html).
2795//
2796// The following operations are related to GetBucketCors:
2797//
2798//    * PutBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketCors.html)
2799//
2800//    * DeleteBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
2801//
2802// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2803// with awserr.Error's Code and Message methods to get detailed information about
2804// the error.
2805//
2806// See the AWS API reference guide for Amazon Simple Storage Service's
2807// API operation GetBucketCors for usage and error information.
2808// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketCors
2809func (c *S3) GetBucketCors(input *GetBucketCorsInput) (*GetBucketCorsOutput, error) {
2810	req, out := c.GetBucketCorsRequest(input)
2811	return out, req.Send()
2812}
2813
2814// GetBucketCorsWithContext is the same as GetBucketCors with the addition of
2815// the ability to pass a context and additional request options.
2816//
2817// See GetBucketCors for details on how to use this API operation.
2818//
2819// The context must be non-nil and will be used for request cancellation. If
2820// the context is nil a panic will occur. In the future the SDK may create
2821// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2822// for more information on using Contexts.
2823func (c *S3) GetBucketCorsWithContext(ctx aws.Context, input *GetBucketCorsInput, opts ...request.Option) (*GetBucketCorsOutput, error) {
2824	req, out := c.GetBucketCorsRequest(input)
2825	req.SetContext(ctx)
2826	req.ApplyOptions(opts...)
2827	return out, req.Send()
2828}
2829
2830const opGetBucketEncryption = "GetBucketEncryption"
2831
2832// GetBucketEncryptionRequest generates a "aws/request.Request" representing the
2833// client's request for the GetBucketEncryption operation. The "output" return
2834// value will be populated with the request's response once the request completes
2835// successfully.
2836//
2837// Use "Send" method on the returned Request to send the API call to the service.
2838// the "output" return value is not valid until after Send returns without error.
2839//
2840// See GetBucketEncryption for more information on using the GetBucketEncryption
2841// API call, and error handling.
2842//
2843// This method is useful when you want to inject custom logic or configuration
2844// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2845//
2846//
2847//    // Example sending a request using the GetBucketEncryptionRequest method.
2848//    req, resp := client.GetBucketEncryptionRequest(params)
2849//
2850//    err := req.Send()
2851//    if err == nil { // resp is now filled
2852//        fmt.Println(resp)
2853//    }
2854//
2855// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2856func (c *S3) GetBucketEncryptionRequest(input *GetBucketEncryptionInput) (req *request.Request, output *GetBucketEncryptionOutput) {
2857	op := &request.Operation{
2858		Name:       opGetBucketEncryption,
2859		HTTPMethod: "GET",
2860		HTTPPath:   "/{Bucket}?encryption",
2861	}
2862
2863	if input == nil {
2864		input = &GetBucketEncryptionInput{}
2865	}
2866
2867	output = &GetBucketEncryptionOutput{}
2868	req = c.newRequest(op, input, output)
2869	return
2870}
2871
2872// GetBucketEncryption API operation for Amazon Simple Storage Service.
2873//
2874// Returns the default encryption configuration for an Amazon S3 bucket. If
2875// the bucket does not have a default encryption configuration, GetBucketEncryption
2876// returns ServerSideEncryptionConfigurationNotFoundError.
2877//
2878// For information about the Amazon S3 default encryption feature, see Amazon
2879// S3 Default Bucket Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html).
2880//
2881// To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration
2882// action. The bucket owner has this permission by default. The bucket owner
2883// can grant this permission to others. For more information about permissions,
2884// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
2885// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
2886//
2887// The following operations are related to GetBucketEncryption:
2888//
2889//    * PutBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html)
2890//
2891//    * DeleteBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
2892//
2893// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2894// with awserr.Error's Code and Message methods to get detailed information about
2895// the error.
2896//
2897// See the AWS API reference guide for Amazon Simple Storage Service's
2898// API operation GetBucketEncryption for usage and error information.
2899// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketEncryption
2900func (c *S3) GetBucketEncryption(input *GetBucketEncryptionInput) (*GetBucketEncryptionOutput, error) {
2901	req, out := c.GetBucketEncryptionRequest(input)
2902	return out, req.Send()
2903}
2904
2905// GetBucketEncryptionWithContext is the same as GetBucketEncryption with the addition of
2906// the ability to pass a context and additional request options.
2907//
2908// See GetBucketEncryption for details on how to use this API operation.
2909//
2910// The context must be non-nil and will be used for request cancellation. If
2911// the context is nil a panic will occur. In the future the SDK may create
2912// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2913// for more information on using Contexts.
2914func (c *S3) GetBucketEncryptionWithContext(ctx aws.Context, input *GetBucketEncryptionInput, opts ...request.Option) (*GetBucketEncryptionOutput, error) {
2915	req, out := c.GetBucketEncryptionRequest(input)
2916	req.SetContext(ctx)
2917	req.ApplyOptions(opts...)
2918	return out, req.Send()
2919}
2920
2921const opGetBucketIntelligentTieringConfiguration = "GetBucketIntelligentTieringConfiguration"
2922
2923// GetBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
2924// client's request for the GetBucketIntelligentTieringConfiguration operation. The "output" return
2925// value will be populated with the request's response once the request completes
2926// successfully.
2927//
2928// Use "Send" method on the returned Request to send the API call to the service.
2929// the "output" return value is not valid until after Send returns without error.
2930//
2931// See GetBucketIntelligentTieringConfiguration for more information on using the GetBucketIntelligentTieringConfiguration
2932// API call, and error handling.
2933//
2934// This method is useful when you want to inject custom logic or configuration
2935// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2936//
2937//
2938//    // Example sending a request using the GetBucketIntelligentTieringConfigurationRequest method.
2939//    req, resp := client.GetBucketIntelligentTieringConfigurationRequest(params)
2940//
2941//    err := req.Send()
2942//    if err == nil { // resp is now filled
2943//        fmt.Println(resp)
2944//    }
2945//
2946// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
2947func (c *S3) GetBucketIntelligentTieringConfigurationRequest(input *GetBucketIntelligentTieringConfigurationInput) (req *request.Request, output *GetBucketIntelligentTieringConfigurationOutput) {
2948	op := &request.Operation{
2949		Name:       opGetBucketIntelligentTieringConfiguration,
2950		HTTPMethod: "GET",
2951		HTTPPath:   "/{Bucket}?intelligent-tiering",
2952	}
2953
2954	if input == nil {
2955		input = &GetBucketIntelligentTieringConfigurationInput{}
2956	}
2957
2958	output = &GetBucketIntelligentTieringConfigurationOutput{}
2959	req = c.newRequest(op, input, output)
2960	return
2961}
2962
2963// GetBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
2964//
2965// Gets the S3 Intelligent-Tiering configuration from the specified bucket.
2966//
2967// The S3 Intelligent-Tiering storage class is designed to optimize storage
2968// costs by automatically moving data to the most cost-effective storage access
2969// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
2970// delivers automatic cost savings in two low latency and high throughput access
2971// tiers. For data that can be accessed asynchronously, you can choose to activate
2972// automatic archiving capabilities within the S3 Intelligent-Tiering storage
2973// class.
2974//
2975// The S3 Intelligent-Tiering storage class is the ideal storage class for data
2976// with unknown, changing, or unpredictable access patterns, independent of
2977// object size or retention period. If the size of an object is less than 128
2978// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
2979// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
2980// storage class.
2981//
2982// For more information, see Storage class for automatically optimizing frequently
2983// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
2984//
2985// Operations related to GetBucketIntelligentTieringConfiguration include:
2986//
2987//    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
2988//
2989//    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
2990//
2991//    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
2992//
2993// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2994// with awserr.Error's Code and Message methods to get detailed information about
2995// the error.
2996//
2997// See the AWS API reference guide for Amazon Simple Storage Service's
2998// API operation GetBucketIntelligentTieringConfiguration for usage and error information.
2999// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketIntelligentTieringConfiguration
3000func (c *S3) GetBucketIntelligentTieringConfiguration(input *GetBucketIntelligentTieringConfigurationInput) (*GetBucketIntelligentTieringConfigurationOutput, error) {
3001	req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
3002	return out, req.Send()
3003}
3004
3005// GetBucketIntelligentTieringConfigurationWithContext is the same as GetBucketIntelligentTieringConfiguration with the addition of
3006// the ability to pass a context and additional request options.
3007//
3008// See GetBucketIntelligentTieringConfiguration for details on how to use this API operation.
3009//
3010// The context must be non-nil and will be used for request cancellation. If
3011// the context is nil a panic will occur. In the future the SDK may create
3012// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3013// for more information on using Contexts.
3014func (c *S3) GetBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *GetBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*GetBucketIntelligentTieringConfigurationOutput, error) {
3015	req, out := c.GetBucketIntelligentTieringConfigurationRequest(input)
3016	req.SetContext(ctx)
3017	req.ApplyOptions(opts...)
3018	return out, req.Send()
3019}
3020
3021const opGetBucketInventoryConfiguration = "GetBucketInventoryConfiguration"
3022
3023// GetBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
3024// client's request for the GetBucketInventoryConfiguration operation. The "output" return
3025// value will be populated with the request's response once the request completes
3026// successfully.
3027//
3028// Use "Send" method on the returned Request to send the API call to the service.
3029// the "output" return value is not valid until after Send returns without error.
3030//
3031// See GetBucketInventoryConfiguration for more information on using the GetBucketInventoryConfiguration
3032// API call, and error handling.
3033//
3034// This method is useful when you want to inject custom logic or configuration
3035// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3036//
3037//
3038//    // Example sending a request using the GetBucketInventoryConfigurationRequest method.
3039//    req, resp := client.GetBucketInventoryConfigurationRequest(params)
3040//
3041//    err := req.Send()
3042//    if err == nil { // resp is now filled
3043//        fmt.Println(resp)
3044//    }
3045//
3046// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
3047func (c *S3) GetBucketInventoryConfigurationRequest(input *GetBucketInventoryConfigurationInput) (req *request.Request, output *GetBucketInventoryConfigurationOutput) {
3048	op := &request.Operation{
3049		Name:       opGetBucketInventoryConfiguration,
3050		HTTPMethod: "GET",
3051		HTTPPath:   "/{Bucket}?inventory",
3052	}
3053
3054	if input == nil {
3055		input = &GetBucketInventoryConfigurationInput{}
3056	}
3057
3058	output = &GetBucketInventoryConfigurationOutput{}
3059	req = c.newRequest(op, input, output)
3060	return
3061}
3062
3063// GetBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
3064//
3065// Returns an inventory configuration (identified by the inventory configuration
3066// ID) from the bucket.
3067//
3068// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
3069// action. The bucket owner has this permission by default and can grant this
3070// permission to others. For more information about permissions, see Permissions
3071// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
3072// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3073//
3074// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
3075// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html).
3076//
3077// The following operations are related to GetBucketInventoryConfiguration:
3078//
3079//    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
3080//
3081//    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
3082//
3083//    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
3084//
3085// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3086// with awserr.Error's Code and Message methods to get detailed information about
3087// the error.
3088//
3089// See the AWS API reference guide for Amazon Simple Storage Service's
3090// API operation GetBucketInventoryConfiguration for usage and error information.
3091// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration
3092func (c *S3) GetBucketInventoryConfiguration(input *GetBucketInventoryConfigurationInput) (*GetBucketInventoryConfigurationOutput, error) {
3093	req, out := c.GetBucketInventoryConfigurationRequest(input)
3094	return out, req.Send()
3095}
3096
3097// GetBucketInventoryConfigurationWithContext is the same as GetBucketInventoryConfiguration with the addition of
3098// the ability to pass a context and additional request options.
3099//
3100// See GetBucketInventoryConfiguration for details on how to use this API operation.
3101//
3102// The context must be non-nil and will be used for request cancellation. If
3103// the context is nil a panic will occur. In the future the SDK may create
3104// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3105// for more information on using Contexts.
3106func (c *S3) GetBucketInventoryConfigurationWithContext(ctx aws.Context, input *GetBucketInventoryConfigurationInput, opts ...request.Option) (*GetBucketInventoryConfigurationOutput, error) {
3107	req, out := c.GetBucketInventoryConfigurationRequest(input)
3108	req.SetContext(ctx)
3109	req.ApplyOptions(opts...)
3110	return out, req.Send()
3111}
3112
3113const opGetBucketLifecycle = "GetBucketLifecycle"
3114
3115// GetBucketLifecycleRequest generates a "aws/request.Request" representing the
3116// client's request for the GetBucketLifecycle operation. The "output" return
3117// value will be populated with the request's response once the request completes
3118// successfully.
3119//
3120// Use "Send" method on the returned Request to send the API call to the service.
3121// the "output" return value is not valid until after Send returns without error.
3122//
3123// See GetBucketLifecycle for more information on using the GetBucketLifecycle
3124// API call, and error handling.
3125//
3126// This method is useful when you want to inject custom logic or configuration
3127// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3128//
3129//
3130//    // Example sending a request using the GetBucketLifecycleRequest method.
3131//    req, resp := client.GetBucketLifecycleRequest(params)
3132//
3133//    err := req.Send()
3134//    if err == nil { // resp is now filled
3135//        fmt.Println(resp)
3136//    }
3137//
3138// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
3139//
3140// Deprecated: GetBucketLifecycle has been deprecated
3141func (c *S3) GetBucketLifecycleRequest(input *GetBucketLifecycleInput) (req *request.Request, output *GetBucketLifecycleOutput) {
3142	if c.Client.Config.Logger != nil {
3143		c.Client.Config.Logger.Log("This operation, GetBucketLifecycle, has been deprecated")
3144	}
3145	op := &request.Operation{
3146		Name:       opGetBucketLifecycle,
3147		HTTPMethod: "GET",
3148		HTTPPath:   "/{Bucket}?lifecycle",
3149	}
3150
3151	if input == nil {
3152		input = &GetBucketLifecycleInput{}
3153	}
3154
3155	output = &GetBucketLifecycleOutput{}
3156	req = c.newRequest(op, input, output)
3157	return
3158}
3159
3160// GetBucketLifecycle API operation for Amazon Simple Storage Service.
3161//
3162//
3163// For an updated version of this API, see GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html).
3164// If you configured a bucket lifecycle using the filter element, you should
3165// see the updated version of this topic. This topic is provided for backward
3166// compatibility.
3167//
3168// Returns the lifecycle configuration information set on the bucket. For information
3169// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
3170//
3171// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
3172// action. The bucket owner has this permission by default. The bucket owner
3173// can grant this permission to others. For more information about permissions,
3174// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
3175// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3176//
3177// GetBucketLifecycle has the following special error:
3178//
3179//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
3180//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
3181//    Code Prefix: Client
3182//
3183// The following operations are related to GetBucketLifecycle:
3184//
3185//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
3186//
3187//    * PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
3188//
3189//    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
3190//
3191// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3192// with awserr.Error's Code and Message methods to get detailed information about
3193// the error.
3194//
3195// See the AWS API reference guide for Amazon Simple Storage Service's
3196// API operation GetBucketLifecycle for usage and error information.
3197// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycle
3198//
3199// Deprecated: GetBucketLifecycle has been deprecated
3200func (c *S3) GetBucketLifecycle(input *GetBucketLifecycleInput) (*GetBucketLifecycleOutput, error) {
3201	req, out := c.GetBucketLifecycleRequest(input)
3202	return out, req.Send()
3203}
3204
3205// GetBucketLifecycleWithContext is the same as GetBucketLifecycle with the addition of
3206// the ability to pass a context and additional request options.
3207//
3208// See GetBucketLifecycle for details on how to use this API operation.
3209//
3210// The context must be non-nil and will be used for request cancellation. If
3211// the context is nil a panic will occur. In the future the SDK may create
3212// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3213// for more information on using Contexts.
3214//
3215// Deprecated: GetBucketLifecycleWithContext has been deprecated
3216func (c *S3) GetBucketLifecycleWithContext(ctx aws.Context, input *GetBucketLifecycleInput, opts ...request.Option) (*GetBucketLifecycleOutput, error) {
3217	req, out := c.GetBucketLifecycleRequest(input)
3218	req.SetContext(ctx)
3219	req.ApplyOptions(opts...)
3220	return out, req.Send()
3221}
3222
3223const opGetBucketLifecycleConfiguration = "GetBucketLifecycleConfiguration"
3224
3225// GetBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
3226// client's request for the GetBucketLifecycleConfiguration operation. The "output" return
3227// value will be populated with the request's response once the request completes
3228// successfully.
3229//
3230// Use "Send" method on the returned Request to send the API call to the service.
3231// the "output" return value is not valid until after Send returns without error.
3232//
3233// See GetBucketLifecycleConfiguration for more information on using the GetBucketLifecycleConfiguration
3234// API call, and error handling.
3235//
3236// This method is useful when you want to inject custom logic or configuration
3237// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3238//
3239//
3240//    // Example sending a request using the GetBucketLifecycleConfigurationRequest method.
3241//    req, resp := client.GetBucketLifecycleConfigurationRequest(params)
3242//
3243//    err := req.Send()
3244//    if err == nil { // resp is now filled
3245//        fmt.Println(resp)
3246//    }
3247//
3248// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
3249func (c *S3) GetBucketLifecycleConfigurationRequest(input *GetBucketLifecycleConfigurationInput) (req *request.Request, output *GetBucketLifecycleConfigurationOutput) {
3250	op := &request.Operation{
3251		Name:       opGetBucketLifecycleConfiguration,
3252		HTTPMethod: "GET",
3253		HTTPPath:   "/{Bucket}?lifecycle",
3254	}
3255
3256	if input == nil {
3257		input = &GetBucketLifecycleConfigurationInput{}
3258	}
3259
3260	output = &GetBucketLifecycleConfigurationOutput{}
3261	req = c.newRequest(op, input, output)
3262	return
3263}
3264
3265// GetBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
3266//
3267//
3268// Bucket lifecycle configuration now supports specifying a lifecycle rule using
3269// an object key name prefix, one or more object tags, or a combination of both.
3270// Accordingly, this section describes the latest API. The response describes
3271// the new filter element that you can use to specify a filter to select a subset
3272// of objects to which the rule applies. If you are using a previous version
3273// of the lifecycle configuration, it still works. For the earlier action, see
3274// GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html).
3275//
3276// Returns the lifecycle configuration information set on the bucket. For information
3277// about lifecycle configuration, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html).
3278//
3279// To use this operation, you must have permission to perform the s3:GetLifecycleConfiguration
3280// action. The bucket owner has this permission, by default. The bucket owner
3281// can grant this permission to others. For more information about permissions,
3282// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
3283// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3284//
3285// GetBucketLifecycleConfiguration has the following special error:
3286//
3287//    * Error code: NoSuchLifecycleConfiguration Description: The lifecycle
3288//    configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault
3289//    Code Prefix: Client
3290//
3291// The following operations are related to GetBucketLifecycleConfiguration:
3292//
3293//    * GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)
3294//
3295//    * PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html)
3296//
3297//    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
3298//
3299// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3300// with awserr.Error's Code and Message methods to get detailed information about
3301// the error.
3302//
3303// See the AWS API reference guide for Amazon Simple Storage Service's
3304// API operation GetBucketLifecycleConfiguration for usage and error information.
3305// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration
3306func (c *S3) GetBucketLifecycleConfiguration(input *GetBucketLifecycleConfigurationInput) (*GetBucketLifecycleConfigurationOutput, error) {
3307	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3308	return out, req.Send()
3309}
3310
3311// GetBucketLifecycleConfigurationWithContext is the same as GetBucketLifecycleConfiguration with the addition of
3312// the ability to pass a context and additional request options.
3313//
3314// See GetBucketLifecycleConfiguration for details on how to use this API operation.
3315//
3316// The context must be non-nil and will be used for request cancellation. If
3317// the context is nil a panic will occur. In the future the SDK may create
3318// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3319// for more information on using Contexts.
3320func (c *S3) GetBucketLifecycleConfigurationWithContext(ctx aws.Context, input *GetBucketLifecycleConfigurationInput, opts ...request.Option) (*GetBucketLifecycleConfigurationOutput, error) {
3321	req, out := c.GetBucketLifecycleConfigurationRequest(input)
3322	req.SetContext(ctx)
3323	req.ApplyOptions(opts...)
3324	return out, req.Send()
3325}
3326
3327const opGetBucketLocation = "GetBucketLocation"
3328
3329// GetBucketLocationRequest generates a "aws/request.Request" representing the
3330// client's request for the GetBucketLocation operation. The "output" return
3331// value will be populated with the request's response once the request completes
3332// successfully.
3333//
3334// Use "Send" method on the returned Request to send the API call to the service.
3335// the "output" return value is not valid until after Send returns without error.
3336//
3337// See GetBucketLocation for more information on using the GetBucketLocation
3338// API call, and error handling.
3339//
3340// This method is useful when you want to inject custom logic or configuration
3341// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3342//
3343//
3344//    // Example sending a request using the GetBucketLocationRequest method.
3345//    req, resp := client.GetBucketLocationRequest(params)
3346//
3347//    err := req.Send()
3348//    if err == nil { // resp is now filled
3349//        fmt.Println(resp)
3350//    }
3351//
3352// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3353func (c *S3) GetBucketLocationRequest(input *GetBucketLocationInput) (req *request.Request, output *GetBucketLocationOutput) {
3354	op := &request.Operation{
3355		Name:       opGetBucketLocation,
3356		HTTPMethod: "GET",
3357		HTTPPath:   "/{Bucket}?location",
3358	}
3359
3360	if input == nil {
3361		input = &GetBucketLocationInput{}
3362	}
3363
3364	output = &GetBucketLocationOutput{}
3365	req = c.newRequest(op, input, output)
3366	return
3367}
3368
3369// GetBucketLocation API operation for Amazon Simple Storage Service.
3370//
3371// Returns the Region the bucket resides in. You set the bucket's Region using
3372// the LocationConstraint request parameter in a CreateBucket request. For more
3373// information, see CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html).
3374//
3375// To use this implementation of the operation, you must be the bucket owner.
3376//
3377// To use this API against an access point, provide the alias of the access
3378// point in place of the bucket name.
3379//
3380// The following operations are related to GetBucketLocation:
3381//
3382//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
3383//
3384//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
3385//
3386// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3387// with awserr.Error's Code and Message methods to get detailed information about
3388// the error.
3389//
3390// See the AWS API reference guide for Amazon Simple Storage Service's
3391// API operation GetBucketLocation for usage and error information.
3392// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation
3393func (c *S3) GetBucketLocation(input *GetBucketLocationInput) (*GetBucketLocationOutput, error) {
3394	req, out := c.GetBucketLocationRequest(input)
3395	return out, req.Send()
3396}
3397
3398// GetBucketLocationWithContext is the same as GetBucketLocation with the addition of
3399// the ability to pass a context and additional request options.
3400//
3401// See GetBucketLocation for details on how to use this API operation.
3402//
3403// The context must be non-nil and will be used for request cancellation. If
3404// the context is nil a panic will occur. In the future the SDK may create
3405// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3406// for more information on using Contexts.
3407func (c *S3) GetBucketLocationWithContext(ctx aws.Context, input *GetBucketLocationInput, opts ...request.Option) (*GetBucketLocationOutput, error) {
3408	req, out := c.GetBucketLocationRequest(input)
3409	req.SetContext(ctx)
3410	req.ApplyOptions(opts...)
3411	return out, req.Send()
3412}
3413
3414const opGetBucketLogging = "GetBucketLogging"
3415
3416// GetBucketLoggingRequest generates a "aws/request.Request" representing the
3417// client's request for the GetBucketLogging operation. The "output" return
3418// value will be populated with the request's response once the request completes
3419// successfully.
3420//
3421// Use "Send" method on the returned Request to send the API call to the service.
3422// the "output" return value is not valid until after Send returns without error.
3423//
3424// See GetBucketLogging for more information on using the GetBucketLogging
3425// API call, and error handling.
3426//
3427// This method is useful when you want to inject custom logic or configuration
3428// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3429//
3430//
3431//    // Example sending a request using the GetBucketLoggingRequest method.
3432//    req, resp := client.GetBucketLoggingRequest(params)
3433//
3434//    err := req.Send()
3435//    if err == nil { // resp is now filled
3436//        fmt.Println(resp)
3437//    }
3438//
3439// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3440func (c *S3) GetBucketLoggingRequest(input *GetBucketLoggingInput) (req *request.Request, output *GetBucketLoggingOutput) {
3441	op := &request.Operation{
3442		Name:       opGetBucketLogging,
3443		HTTPMethod: "GET",
3444		HTTPPath:   "/{Bucket}?logging",
3445	}
3446
3447	if input == nil {
3448		input = &GetBucketLoggingInput{}
3449	}
3450
3451	output = &GetBucketLoggingOutput{}
3452	req = c.newRequest(op, input, output)
3453	return
3454}
3455
3456// GetBucketLogging API operation for Amazon Simple Storage Service.
3457//
3458// Returns the logging status of a bucket and the permissions users have to
3459// view and modify that status. To use GET, you must be the bucket owner.
3460//
3461// The following operations are related to GetBucketLogging:
3462//
3463//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
3464//
3465//    * PutBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLogging.html)
3466//
3467// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3468// with awserr.Error's Code and Message methods to get detailed information about
3469// the error.
3470//
3471// See the AWS API reference guide for Amazon Simple Storage Service's
3472// API operation GetBucketLogging for usage and error information.
3473// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLogging
3474func (c *S3) GetBucketLogging(input *GetBucketLoggingInput) (*GetBucketLoggingOutput, error) {
3475	req, out := c.GetBucketLoggingRequest(input)
3476	return out, req.Send()
3477}
3478
3479// GetBucketLoggingWithContext is the same as GetBucketLogging with the addition of
3480// the ability to pass a context and additional request options.
3481//
3482// See GetBucketLogging for details on how to use this API operation.
3483//
3484// The context must be non-nil and will be used for request cancellation. If
3485// the context is nil a panic will occur. In the future the SDK may create
3486// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3487// for more information on using Contexts.
3488func (c *S3) GetBucketLoggingWithContext(ctx aws.Context, input *GetBucketLoggingInput, opts ...request.Option) (*GetBucketLoggingOutput, error) {
3489	req, out := c.GetBucketLoggingRequest(input)
3490	req.SetContext(ctx)
3491	req.ApplyOptions(opts...)
3492	return out, req.Send()
3493}
3494
3495const opGetBucketMetricsConfiguration = "GetBucketMetricsConfiguration"
3496
3497// GetBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
3498// client's request for the GetBucketMetricsConfiguration operation. The "output" return
3499// value will be populated with the request's response once the request completes
3500// successfully.
3501//
3502// Use "Send" method on the returned Request to send the API call to the service.
3503// the "output" return value is not valid until after Send returns without error.
3504//
3505// See GetBucketMetricsConfiguration for more information on using the GetBucketMetricsConfiguration
3506// API call, and error handling.
3507//
3508// This method is useful when you want to inject custom logic or configuration
3509// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3510//
3511//
3512//    // Example sending a request using the GetBucketMetricsConfigurationRequest method.
3513//    req, resp := client.GetBucketMetricsConfigurationRequest(params)
3514//
3515//    err := req.Send()
3516//    if err == nil { // resp is now filled
3517//        fmt.Println(resp)
3518//    }
3519//
3520// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3521func (c *S3) GetBucketMetricsConfigurationRequest(input *GetBucketMetricsConfigurationInput) (req *request.Request, output *GetBucketMetricsConfigurationOutput) {
3522	op := &request.Operation{
3523		Name:       opGetBucketMetricsConfiguration,
3524		HTTPMethod: "GET",
3525		HTTPPath:   "/{Bucket}?metrics",
3526	}
3527
3528	if input == nil {
3529		input = &GetBucketMetricsConfigurationInput{}
3530	}
3531
3532	output = &GetBucketMetricsConfigurationOutput{}
3533	req = c.newRequest(op, input, output)
3534	return
3535}
3536
3537// GetBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
3538//
3539// Gets a metrics configuration (specified by the metrics configuration ID)
3540// from the bucket. Note that this doesn't include the daily storage metrics.
3541//
3542// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
3543// action. The bucket owner has this permission by default. The bucket owner
3544// can grant this permission to others. For more information about permissions,
3545// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
3546// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
3547//
3548// For information about CloudWatch request metrics for Amazon S3, see Monitoring
3549// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
3550//
3551// The following operations are related to GetBucketMetricsConfiguration:
3552//
3553//    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
3554//
3555//    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
3556//
3557//    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
3558//
3559//    * Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html)
3560//
3561// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3562// with awserr.Error's Code and Message methods to get detailed information about
3563// the error.
3564//
3565// See the AWS API reference guide for Amazon Simple Storage Service's
3566// API operation GetBucketMetricsConfiguration for usage and error information.
3567// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketMetricsConfiguration
3568func (c *S3) GetBucketMetricsConfiguration(input *GetBucketMetricsConfigurationInput) (*GetBucketMetricsConfigurationOutput, error) {
3569	req, out := c.GetBucketMetricsConfigurationRequest(input)
3570	return out, req.Send()
3571}
3572
3573// GetBucketMetricsConfigurationWithContext is the same as GetBucketMetricsConfiguration with the addition of
3574// the ability to pass a context and additional request options.
3575//
3576// See GetBucketMetricsConfiguration for details on how to use this API operation.
3577//
3578// The context must be non-nil and will be used for request cancellation. If
3579// the context is nil a panic will occur. In the future the SDK may create
3580// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3581// for more information on using Contexts.
3582func (c *S3) GetBucketMetricsConfigurationWithContext(ctx aws.Context, input *GetBucketMetricsConfigurationInput, opts ...request.Option) (*GetBucketMetricsConfigurationOutput, error) {
3583	req, out := c.GetBucketMetricsConfigurationRequest(input)
3584	req.SetContext(ctx)
3585	req.ApplyOptions(opts...)
3586	return out, req.Send()
3587}
3588
3589const opGetBucketNotification = "GetBucketNotification"
3590
3591// GetBucketNotificationRequest generates a "aws/request.Request" representing the
3592// client's request for the GetBucketNotification operation. The "output" return
3593// value will be populated with the request's response once the request completes
3594// successfully.
3595//
3596// Use "Send" method on the returned Request to send the API call to the service.
3597// the "output" return value is not valid until after Send returns without error.
3598//
3599// See GetBucketNotification for more information on using the GetBucketNotification
3600// API call, and error handling.
3601//
3602// This method is useful when you want to inject custom logic or configuration
3603// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3604//
3605//
3606//    // Example sending a request using the GetBucketNotificationRequest method.
3607//    req, resp := client.GetBucketNotificationRequest(params)
3608//
3609//    err := req.Send()
3610//    if err == nil { // resp is now filled
3611//        fmt.Println(resp)
3612//    }
3613//
3614// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3615//
3616// Deprecated: GetBucketNotification has been deprecated
3617func (c *S3) GetBucketNotificationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfigurationDeprecated) {
3618	if c.Client.Config.Logger != nil {
3619		c.Client.Config.Logger.Log("This operation, GetBucketNotification, has been deprecated")
3620	}
3621	op := &request.Operation{
3622		Name:       opGetBucketNotification,
3623		HTTPMethod: "GET",
3624		HTTPPath:   "/{Bucket}?notification",
3625	}
3626
3627	if input == nil {
3628		input = &GetBucketNotificationConfigurationRequest{}
3629	}
3630
3631	output = &NotificationConfigurationDeprecated{}
3632	req = c.newRequest(op, input, output)
3633	return
3634}
3635
3636// GetBucketNotification API operation for Amazon Simple Storage Service.
3637//
3638// No longer used, see GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html).
3639//
3640// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3641// with awserr.Error's Code and Message methods to get detailed information about
3642// the error.
3643//
3644// See the AWS API reference guide for Amazon Simple Storage Service's
3645// API operation GetBucketNotification for usage and error information.
3646// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotification
3647//
3648// Deprecated: GetBucketNotification has been deprecated
3649func (c *S3) GetBucketNotification(input *GetBucketNotificationConfigurationRequest) (*NotificationConfigurationDeprecated, error) {
3650	req, out := c.GetBucketNotificationRequest(input)
3651	return out, req.Send()
3652}
3653
3654// GetBucketNotificationWithContext is the same as GetBucketNotification with the addition of
3655// the ability to pass a context and additional request options.
3656//
3657// See GetBucketNotification for details on how to use this API operation.
3658//
3659// The context must be non-nil and will be used for request cancellation. If
3660// the context is nil a panic will occur. In the future the SDK may create
3661// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3662// for more information on using Contexts.
3663//
3664// Deprecated: GetBucketNotificationWithContext has been deprecated
3665func (c *S3) GetBucketNotificationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfigurationDeprecated, error) {
3666	req, out := c.GetBucketNotificationRequest(input)
3667	req.SetContext(ctx)
3668	req.ApplyOptions(opts...)
3669	return out, req.Send()
3670}
3671
3672const opGetBucketNotificationConfiguration = "GetBucketNotificationConfiguration"
3673
3674// GetBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
3675// client's request for the GetBucketNotificationConfiguration operation. The "output" return
3676// value will be populated with the request's response once the request completes
3677// successfully.
3678//
3679// Use "Send" method on the returned Request to send the API call to the service.
3680// the "output" return value is not valid until after Send returns without error.
3681//
3682// See GetBucketNotificationConfiguration for more information on using the GetBucketNotificationConfiguration
3683// API call, and error handling.
3684//
3685// This method is useful when you want to inject custom logic or configuration
3686// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3687//
3688//
3689//    // Example sending a request using the GetBucketNotificationConfigurationRequest method.
3690//    req, resp := client.GetBucketNotificationConfigurationRequest(params)
3691//
3692//    err := req.Send()
3693//    if err == nil { // resp is now filled
3694//        fmt.Println(resp)
3695//    }
3696//
3697// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3698func (c *S3) GetBucketNotificationConfigurationRequest(input *GetBucketNotificationConfigurationRequest) (req *request.Request, output *NotificationConfiguration) {
3699	op := &request.Operation{
3700		Name:       opGetBucketNotificationConfiguration,
3701		HTTPMethod: "GET",
3702		HTTPPath:   "/{Bucket}?notification",
3703	}
3704
3705	if input == nil {
3706		input = &GetBucketNotificationConfigurationRequest{}
3707	}
3708
3709	output = &NotificationConfiguration{}
3710	req = c.newRequest(op, input, output)
3711	return
3712}
3713
3714// GetBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
3715//
3716// Returns the notification configuration of a bucket.
3717//
3718// If notifications are not enabled on the bucket, the action returns an empty
3719// NotificationConfiguration element.
3720//
3721// By default, you must be the bucket owner to read the notification configuration
3722// of a bucket. However, the bucket owner can use a bucket policy to grant permission
3723// to other users to read this configuration with the s3:GetBucketNotification
3724// permission.
3725//
3726// For more information about setting and reading the notification configuration
3727// on a bucket, see Setting Up Notification of Bucket Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
3728// For more information about bucket policies, see Using Bucket Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3729//
3730// The following action is related to GetBucketNotification:
3731//
3732//    * PutBucketNotification (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotification.html)
3733//
3734// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3735// with awserr.Error's Code and Message methods to get detailed information about
3736// the error.
3737//
3738// See the AWS API reference guide for Amazon Simple Storage Service's
3739// API operation GetBucketNotificationConfiguration for usage and error information.
3740// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketNotificationConfiguration
3741func (c *S3) GetBucketNotificationConfiguration(input *GetBucketNotificationConfigurationRequest) (*NotificationConfiguration, error) {
3742	req, out := c.GetBucketNotificationConfigurationRequest(input)
3743	return out, req.Send()
3744}
3745
3746// GetBucketNotificationConfigurationWithContext is the same as GetBucketNotificationConfiguration with the addition of
3747// the ability to pass a context and additional request options.
3748//
3749// See GetBucketNotificationConfiguration for details on how to use this API operation.
3750//
3751// The context must be non-nil and will be used for request cancellation. If
3752// the context is nil a panic will occur. In the future the SDK may create
3753// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3754// for more information on using Contexts.
3755func (c *S3) GetBucketNotificationConfigurationWithContext(ctx aws.Context, input *GetBucketNotificationConfigurationRequest, opts ...request.Option) (*NotificationConfiguration, error) {
3756	req, out := c.GetBucketNotificationConfigurationRequest(input)
3757	req.SetContext(ctx)
3758	req.ApplyOptions(opts...)
3759	return out, req.Send()
3760}
3761
3762const opGetBucketOwnershipControls = "GetBucketOwnershipControls"
3763
3764// GetBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
3765// client's request for the GetBucketOwnershipControls operation. The "output" return
3766// value will be populated with the request's response once the request completes
3767// successfully.
3768//
3769// Use "Send" method on the returned Request to send the API call to the service.
3770// the "output" return value is not valid until after Send returns without error.
3771//
3772// See GetBucketOwnershipControls for more information on using the GetBucketOwnershipControls
3773// API call, and error handling.
3774//
3775// This method is useful when you want to inject custom logic or configuration
3776// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3777//
3778//
3779//    // Example sending a request using the GetBucketOwnershipControlsRequest method.
3780//    req, resp := client.GetBucketOwnershipControlsRequest(params)
3781//
3782//    err := req.Send()
3783//    if err == nil { // resp is now filled
3784//        fmt.Println(resp)
3785//    }
3786//
3787// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls
3788func (c *S3) GetBucketOwnershipControlsRequest(input *GetBucketOwnershipControlsInput) (req *request.Request, output *GetBucketOwnershipControlsOutput) {
3789	op := &request.Operation{
3790		Name:       opGetBucketOwnershipControls,
3791		HTTPMethod: "GET",
3792		HTTPPath:   "/{Bucket}?ownershipControls",
3793	}
3794
3795	if input == nil {
3796		input = &GetBucketOwnershipControlsInput{}
3797	}
3798
3799	output = &GetBucketOwnershipControlsOutput{}
3800	req = c.newRequest(op, input, output)
3801	return
3802}
3803
3804// GetBucketOwnershipControls API operation for Amazon Simple Storage Service.
3805//
3806// Retrieves OwnershipControls for an Amazon S3 bucket. To use this operation,
3807// you must have the s3:GetBucketOwnershipControls permission. For more information
3808// about Amazon S3 permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
3809//
3810// For information about Amazon S3 Object Ownership, see Using Object Ownership
3811// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
3812//
3813// The following operations are related to GetBucketOwnershipControls:
3814//
3815//    * PutBucketOwnershipControls
3816//
3817//    * DeleteBucketOwnershipControls
3818//
3819// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3820// with awserr.Error's Code and Message methods to get detailed information about
3821// the error.
3822//
3823// See the AWS API reference guide for Amazon Simple Storage Service's
3824// API operation GetBucketOwnershipControls for usage and error information.
3825// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketOwnershipControls
3826func (c *S3) GetBucketOwnershipControls(input *GetBucketOwnershipControlsInput) (*GetBucketOwnershipControlsOutput, error) {
3827	req, out := c.GetBucketOwnershipControlsRequest(input)
3828	return out, req.Send()
3829}
3830
3831// GetBucketOwnershipControlsWithContext is the same as GetBucketOwnershipControls with the addition of
3832// the ability to pass a context and additional request options.
3833//
3834// See GetBucketOwnershipControls for details on how to use this API operation.
3835//
3836// The context must be non-nil and will be used for request cancellation. If
3837// the context is nil a panic will occur. In the future the SDK may create
3838// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3839// for more information on using Contexts.
3840func (c *S3) GetBucketOwnershipControlsWithContext(ctx aws.Context, input *GetBucketOwnershipControlsInput, opts ...request.Option) (*GetBucketOwnershipControlsOutput, error) {
3841	req, out := c.GetBucketOwnershipControlsRequest(input)
3842	req.SetContext(ctx)
3843	req.ApplyOptions(opts...)
3844	return out, req.Send()
3845}
3846
3847const opGetBucketPolicy = "GetBucketPolicy"
3848
3849// GetBucketPolicyRequest generates a "aws/request.Request" representing the
3850// client's request for the GetBucketPolicy operation. The "output" return
3851// value will be populated with the request's response once the request completes
3852// successfully.
3853//
3854// Use "Send" method on the returned Request to send the API call to the service.
3855// the "output" return value is not valid until after Send returns without error.
3856//
3857// See GetBucketPolicy for more information on using the GetBucketPolicy
3858// API call, and error handling.
3859//
3860// This method is useful when you want to inject custom logic or configuration
3861// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3862//
3863//
3864//    // Example sending a request using the GetBucketPolicyRequest method.
3865//    req, resp := client.GetBucketPolicyRequest(params)
3866//
3867//    err := req.Send()
3868//    if err == nil { // resp is now filled
3869//        fmt.Println(resp)
3870//    }
3871//
3872// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3873func (c *S3) GetBucketPolicyRequest(input *GetBucketPolicyInput) (req *request.Request, output *GetBucketPolicyOutput) {
3874	op := &request.Operation{
3875		Name:       opGetBucketPolicy,
3876		HTTPMethod: "GET",
3877		HTTPPath:   "/{Bucket}?policy",
3878	}
3879
3880	if input == nil {
3881		input = &GetBucketPolicyInput{}
3882	}
3883
3884	output = &GetBucketPolicyOutput{}
3885	req = c.newRequest(op, input, output)
3886	return
3887}
3888
3889// GetBucketPolicy API operation for Amazon Simple Storage Service.
3890//
3891// Returns the policy of a specified bucket. If you are using an identity other
3892// than the root user of the Amazon Web Services account that owns the bucket,
3893// the calling identity must have the GetBucketPolicy permissions on the specified
3894// bucket and belong to the bucket owner's account in order to use this operation.
3895//
3896// If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access
3897// Denied error. If you have the correct permissions, but you're not using an
3898// identity that belongs to the bucket owner's account, Amazon S3 returns a
3899// 405 Method Not Allowed error.
3900//
3901// As a security precaution, the root user of the Amazon Web Services account
3902// that owns a bucket can always use this operation, even if the policy explicitly
3903// denies the root user the ability to perform this action.
3904//
3905// For more information about bucket policies, see Using Bucket Policies and
3906// User Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
3907//
3908// The following action is related to GetBucketPolicy:
3909//
3910//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
3911//
3912// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
3913// with awserr.Error's Code and Message methods to get detailed information about
3914// the error.
3915//
3916// See the AWS API reference guide for Amazon Simple Storage Service's
3917// API operation GetBucketPolicy for usage and error information.
3918// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicy
3919func (c *S3) GetBucketPolicy(input *GetBucketPolicyInput) (*GetBucketPolicyOutput, error) {
3920	req, out := c.GetBucketPolicyRequest(input)
3921	return out, req.Send()
3922}
3923
3924// GetBucketPolicyWithContext is the same as GetBucketPolicy with the addition of
3925// the ability to pass a context and additional request options.
3926//
3927// See GetBucketPolicy for details on how to use this API operation.
3928//
3929// The context must be non-nil and will be used for request cancellation. If
3930// the context is nil a panic will occur. In the future the SDK may create
3931// sub-contexts for http.Requests. See https://golang.org/pkg/context/
3932// for more information on using Contexts.
3933func (c *S3) GetBucketPolicyWithContext(ctx aws.Context, input *GetBucketPolicyInput, opts ...request.Option) (*GetBucketPolicyOutput, error) {
3934	req, out := c.GetBucketPolicyRequest(input)
3935	req.SetContext(ctx)
3936	req.ApplyOptions(opts...)
3937	return out, req.Send()
3938}
3939
3940const opGetBucketPolicyStatus = "GetBucketPolicyStatus"
3941
3942// GetBucketPolicyStatusRequest generates a "aws/request.Request" representing the
3943// client's request for the GetBucketPolicyStatus operation. The "output" return
3944// value will be populated with the request's response once the request completes
3945// successfully.
3946//
3947// Use "Send" method on the returned Request to send the API call to the service.
3948// the "output" return value is not valid until after Send returns without error.
3949//
3950// See GetBucketPolicyStatus for more information on using the GetBucketPolicyStatus
3951// API call, and error handling.
3952//
3953// This method is useful when you want to inject custom logic or configuration
3954// into the SDK's request lifecycle. Such as custom headers, or retry logic.
3955//
3956//
3957//    // Example sending a request using the GetBucketPolicyStatusRequest method.
3958//    req, resp := client.GetBucketPolicyStatusRequest(params)
3959//
3960//    err := req.Send()
3961//    if err == nil { // resp is now filled
3962//        fmt.Println(resp)
3963//    }
3964//
3965// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
3966func (c *S3) GetBucketPolicyStatusRequest(input *GetBucketPolicyStatusInput) (req *request.Request, output *GetBucketPolicyStatusOutput) {
3967	op := &request.Operation{
3968		Name:       opGetBucketPolicyStatus,
3969		HTTPMethod: "GET",
3970		HTTPPath:   "/{Bucket}?policyStatus",
3971	}
3972
3973	if input == nil {
3974		input = &GetBucketPolicyStatusInput{}
3975	}
3976
3977	output = &GetBucketPolicyStatusOutput{}
3978	req = c.newRequest(op, input, output)
3979	return
3980}
3981
3982// GetBucketPolicyStatus API operation for Amazon Simple Storage Service.
3983//
3984// Retrieves the policy status for an Amazon S3 bucket, indicating whether the
3985// bucket is public. In order to use this operation, you must have the s3:GetBucketPolicyStatus
3986// permission. For more information about Amazon S3 permissions, see Specifying
3987// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
3988//
3989// For more information about when Amazon S3 considers a bucket public, see
3990// 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).
3991//
3992// The following operations are related to GetBucketPolicyStatus:
3993//
3994//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
3995//
3996//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
3997//
3998//    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
3999//
4000//    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
4001//
4002// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4003// with awserr.Error's Code and Message methods to get detailed information about
4004// the error.
4005//
4006// See the AWS API reference guide for Amazon Simple Storage Service's
4007// API operation GetBucketPolicyStatus for usage and error information.
4008// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketPolicyStatus
4009func (c *S3) GetBucketPolicyStatus(input *GetBucketPolicyStatusInput) (*GetBucketPolicyStatusOutput, error) {
4010	req, out := c.GetBucketPolicyStatusRequest(input)
4011	return out, req.Send()
4012}
4013
4014// GetBucketPolicyStatusWithContext is the same as GetBucketPolicyStatus with the addition of
4015// the ability to pass a context and additional request options.
4016//
4017// See GetBucketPolicyStatus for details on how to use this API operation.
4018//
4019// The context must be non-nil and will be used for request cancellation. If
4020// the context is nil a panic will occur. In the future the SDK may create
4021// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4022// for more information on using Contexts.
4023func (c *S3) GetBucketPolicyStatusWithContext(ctx aws.Context, input *GetBucketPolicyStatusInput, opts ...request.Option) (*GetBucketPolicyStatusOutput, error) {
4024	req, out := c.GetBucketPolicyStatusRequest(input)
4025	req.SetContext(ctx)
4026	req.ApplyOptions(opts...)
4027	return out, req.Send()
4028}
4029
4030const opGetBucketReplication = "GetBucketReplication"
4031
4032// GetBucketReplicationRequest generates a "aws/request.Request" representing the
4033// client's request for the GetBucketReplication operation. The "output" return
4034// value will be populated with the request's response once the request completes
4035// successfully.
4036//
4037// Use "Send" method on the returned Request to send the API call to the service.
4038// the "output" return value is not valid until after Send returns without error.
4039//
4040// See GetBucketReplication for more information on using the GetBucketReplication
4041// API call, and error handling.
4042//
4043// This method is useful when you want to inject custom logic or configuration
4044// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4045//
4046//
4047//    // Example sending a request using the GetBucketReplicationRequest method.
4048//    req, resp := client.GetBucketReplicationRequest(params)
4049//
4050//    err := req.Send()
4051//    if err == nil { // resp is now filled
4052//        fmt.Println(resp)
4053//    }
4054//
4055// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
4056func (c *S3) GetBucketReplicationRequest(input *GetBucketReplicationInput) (req *request.Request, output *GetBucketReplicationOutput) {
4057	op := &request.Operation{
4058		Name:       opGetBucketReplication,
4059		HTTPMethod: "GET",
4060		HTTPPath:   "/{Bucket}?replication",
4061	}
4062
4063	if input == nil {
4064		input = &GetBucketReplicationInput{}
4065	}
4066
4067	output = &GetBucketReplicationOutput{}
4068	req = c.newRequest(op, input, output)
4069	return
4070}
4071
4072// GetBucketReplication API operation for Amazon Simple Storage Service.
4073//
4074// Returns the replication configuration of a bucket.
4075//
4076// It can take a while to propagate the put or delete a replication configuration
4077// to all Amazon S3 systems. Therefore, a get request soon after put or delete
4078// can return a wrong result.
4079//
4080// For information about replication configuration, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
4081// in the Amazon S3 User Guide.
4082//
4083// This action requires permissions for the s3:GetReplicationConfiguration action.
4084// For more information about permissions, see Using Bucket Policies and User
4085// Policies (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-iam-policies.html).
4086//
4087// If you include the Filter element in a replication configuration, you must
4088// also include the DeleteMarkerReplication and Priority elements. The response
4089// also returns those elements.
4090//
4091// For information about GetBucketReplication errors, see List of replication-related
4092// error codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
4093//
4094// The following operations are related to GetBucketReplication:
4095//
4096//    * PutBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)
4097//
4098//    * DeleteBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
4099//
4100// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4101// with awserr.Error's Code and Message methods to get detailed information about
4102// the error.
4103//
4104// See the AWS API reference guide for Amazon Simple Storage Service's
4105// API operation GetBucketReplication for usage and error information.
4106// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketReplication
4107func (c *S3) GetBucketReplication(input *GetBucketReplicationInput) (*GetBucketReplicationOutput, error) {
4108	req, out := c.GetBucketReplicationRequest(input)
4109	return out, req.Send()
4110}
4111
4112// GetBucketReplicationWithContext is the same as GetBucketReplication with the addition of
4113// the ability to pass a context and additional request options.
4114//
4115// See GetBucketReplication for details on how to use this API operation.
4116//
4117// The context must be non-nil and will be used for request cancellation. If
4118// the context is nil a panic will occur. In the future the SDK may create
4119// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4120// for more information on using Contexts.
4121func (c *S3) GetBucketReplicationWithContext(ctx aws.Context, input *GetBucketReplicationInput, opts ...request.Option) (*GetBucketReplicationOutput, error) {
4122	req, out := c.GetBucketReplicationRequest(input)
4123	req.SetContext(ctx)
4124	req.ApplyOptions(opts...)
4125	return out, req.Send()
4126}
4127
4128const opGetBucketRequestPayment = "GetBucketRequestPayment"
4129
4130// GetBucketRequestPaymentRequest generates a "aws/request.Request" representing the
4131// client's request for the GetBucketRequestPayment operation. The "output" return
4132// value will be populated with the request's response once the request completes
4133// successfully.
4134//
4135// Use "Send" method on the returned Request to send the API call to the service.
4136// the "output" return value is not valid until after Send returns without error.
4137//
4138// See GetBucketRequestPayment for more information on using the GetBucketRequestPayment
4139// API call, and error handling.
4140//
4141// This method is useful when you want to inject custom logic or configuration
4142// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4143//
4144//
4145//    // Example sending a request using the GetBucketRequestPaymentRequest method.
4146//    req, resp := client.GetBucketRequestPaymentRequest(params)
4147//
4148//    err := req.Send()
4149//    if err == nil { // resp is now filled
4150//        fmt.Println(resp)
4151//    }
4152//
4153// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
4154func (c *S3) GetBucketRequestPaymentRequest(input *GetBucketRequestPaymentInput) (req *request.Request, output *GetBucketRequestPaymentOutput) {
4155	op := &request.Operation{
4156		Name:       opGetBucketRequestPayment,
4157		HTTPMethod: "GET",
4158		HTTPPath:   "/{Bucket}?requestPayment",
4159	}
4160
4161	if input == nil {
4162		input = &GetBucketRequestPaymentInput{}
4163	}
4164
4165	output = &GetBucketRequestPaymentOutput{}
4166	req = c.newRequest(op, input, output)
4167	return
4168}
4169
4170// GetBucketRequestPayment API operation for Amazon Simple Storage Service.
4171//
4172// Returns the request payment configuration of a bucket. To use this version
4173// of the operation, you must be the bucket owner. For more information, see
4174// Requester Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
4175//
4176// The following operations are related to GetBucketRequestPayment:
4177//
4178//    * ListObjects (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html)
4179//
4180// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4181// with awserr.Error's Code and Message methods to get detailed information about
4182// the error.
4183//
4184// See the AWS API reference guide for Amazon Simple Storage Service's
4185// API operation GetBucketRequestPayment for usage and error information.
4186// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketRequestPayment
4187func (c *S3) GetBucketRequestPayment(input *GetBucketRequestPaymentInput) (*GetBucketRequestPaymentOutput, error) {
4188	req, out := c.GetBucketRequestPaymentRequest(input)
4189	return out, req.Send()
4190}
4191
4192// GetBucketRequestPaymentWithContext is the same as GetBucketRequestPayment with the addition of
4193// the ability to pass a context and additional request options.
4194//
4195// See GetBucketRequestPayment for details on how to use this API operation.
4196//
4197// The context must be non-nil and will be used for request cancellation. If
4198// the context is nil a panic will occur. In the future the SDK may create
4199// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4200// for more information on using Contexts.
4201func (c *S3) GetBucketRequestPaymentWithContext(ctx aws.Context, input *GetBucketRequestPaymentInput, opts ...request.Option) (*GetBucketRequestPaymentOutput, error) {
4202	req, out := c.GetBucketRequestPaymentRequest(input)
4203	req.SetContext(ctx)
4204	req.ApplyOptions(opts...)
4205	return out, req.Send()
4206}
4207
4208const opGetBucketTagging = "GetBucketTagging"
4209
4210// GetBucketTaggingRequest generates a "aws/request.Request" representing the
4211// client's request for the GetBucketTagging operation. The "output" return
4212// value will be populated with the request's response once the request completes
4213// successfully.
4214//
4215// Use "Send" method on the returned Request to send the API call to the service.
4216// the "output" return value is not valid until after Send returns without error.
4217//
4218// See GetBucketTagging for more information on using the GetBucketTagging
4219// API call, and error handling.
4220//
4221// This method is useful when you want to inject custom logic or configuration
4222// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4223//
4224//
4225//    // Example sending a request using the GetBucketTaggingRequest method.
4226//    req, resp := client.GetBucketTaggingRequest(params)
4227//
4228//    err := req.Send()
4229//    if err == nil { // resp is now filled
4230//        fmt.Println(resp)
4231//    }
4232//
4233// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
4234func (c *S3) GetBucketTaggingRequest(input *GetBucketTaggingInput) (req *request.Request, output *GetBucketTaggingOutput) {
4235	op := &request.Operation{
4236		Name:       opGetBucketTagging,
4237		HTTPMethod: "GET",
4238		HTTPPath:   "/{Bucket}?tagging",
4239	}
4240
4241	if input == nil {
4242		input = &GetBucketTaggingInput{}
4243	}
4244
4245	output = &GetBucketTaggingOutput{}
4246	req = c.newRequest(op, input, output)
4247	return
4248}
4249
4250// GetBucketTagging API operation for Amazon Simple Storage Service.
4251//
4252// Returns the tag set associated with the bucket.
4253//
4254// To use this operation, you must have permission to perform the s3:GetBucketTagging
4255// action. By default, the bucket owner has this permission and can grant this
4256// permission to others.
4257//
4258// GetBucketTagging has the following special error:
4259//
4260//    * Error code: NoSuchTagSetError Description: There is no tag set associated
4261//    with the bucket.
4262//
4263// The following operations are related to GetBucketTagging:
4264//
4265//    * PutBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketTagging.html)
4266//
4267//    * DeleteBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
4268//
4269// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4270// with awserr.Error's Code and Message methods to get detailed information about
4271// the error.
4272//
4273// See the AWS API reference guide for Amazon Simple Storage Service's
4274// API operation GetBucketTagging for usage and error information.
4275// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketTagging
4276func (c *S3) GetBucketTagging(input *GetBucketTaggingInput) (*GetBucketTaggingOutput, error) {
4277	req, out := c.GetBucketTaggingRequest(input)
4278	return out, req.Send()
4279}
4280
4281// GetBucketTaggingWithContext is the same as GetBucketTagging with the addition of
4282// the ability to pass a context and additional request options.
4283//
4284// See GetBucketTagging for details on how to use this API operation.
4285//
4286// The context must be non-nil and will be used for request cancellation. If
4287// the context is nil a panic will occur. In the future the SDK may create
4288// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4289// for more information on using Contexts.
4290func (c *S3) GetBucketTaggingWithContext(ctx aws.Context, input *GetBucketTaggingInput, opts ...request.Option) (*GetBucketTaggingOutput, error) {
4291	req, out := c.GetBucketTaggingRequest(input)
4292	req.SetContext(ctx)
4293	req.ApplyOptions(opts...)
4294	return out, req.Send()
4295}
4296
4297const opGetBucketVersioning = "GetBucketVersioning"
4298
4299// GetBucketVersioningRequest generates a "aws/request.Request" representing the
4300// client's request for the GetBucketVersioning operation. The "output" return
4301// value will be populated with the request's response once the request completes
4302// successfully.
4303//
4304// Use "Send" method on the returned Request to send the API call to the service.
4305// the "output" return value is not valid until after Send returns without error.
4306//
4307// See GetBucketVersioning for more information on using the GetBucketVersioning
4308// API call, and error handling.
4309//
4310// This method is useful when you want to inject custom logic or configuration
4311// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4312//
4313//
4314//    // Example sending a request using the GetBucketVersioningRequest method.
4315//    req, resp := client.GetBucketVersioningRequest(params)
4316//
4317//    err := req.Send()
4318//    if err == nil { // resp is now filled
4319//        fmt.Println(resp)
4320//    }
4321//
4322// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
4323func (c *S3) GetBucketVersioningRequest(input *GetBucketVersioningInput) (req *request.Request, output *GetBucketVersioningOutput) {
4324	op := &request.Operation{
4325		Name:       opGetBucketVersioning,
4326		HTTPMethod: "GET",
4327		HTTPPath:   "/{Bucket}?versioning",
4328	}
4329
4330	if input == nil {
4331		input = &GetBucketVersioningInput{}
4332	}
4333
4334	output = &GetBucketVersioningOutput{}
4335	req = c.newRequest(op, input, output)
4336	return
4337}
4338
4339// GetBucketVersioning API operation for Amazon Simple Storage Service.
4340//
4341// Returns the versioning state of a bucket.
4342//
4343// To retrieve the versioning state of a bucket, you must be the bucket owner.
4344//
4345// This implementation also returns the MFA Delete status of the versioning
4346// state. If the MFA Delete status is enabled, the bucket owner must use an
4347// authentication device to change the versioning state of the bucket.
4348//
4349// The following operations are related to GetBucketVersioning:
4350//
4351//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
4352//
4353//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
4354//
4355//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
4356//
4357// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4358// with awserr.Error's Code and Message methods to get detailed information about
4359// the error.
4360//
4361// See the AWS API reference guide for Amazon Simple Storage Service's
4362// API operation GetBucketVersioning for usage and error information.
4363// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketVersioning
4364func (c *S3) GetBucketVersioning(input *GetBucketVersioningInput) (*GetBucketVersioningOutput, error) {
4365	req, out := c.GetBucketVersioningRequest(input)
4366	return out, req.Send()
4367}
4368
4369// GetBucketVersioningWithContext is the same as GetBucketVersioning with the addition of
4370// the ability to pass a context and additional request options.
4371//
4372// See GetBucketVersioning for details on how to use this API operation.
4373//
4374// The context must be non-nil and will be used for request cancellation. If
4375// the context is nil a panic will occur. In the future the SDK may create
4376// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4377// for more information on using Contexts.
4378func (c *S3) GetBucketVersioningWithContext(ctx aws.Context, input *GetBucketVersioningInput, opts ...request.Option) (*GetBucketVersioningOutput, error) {
4379	req, out := c.GetBucketVersioningRequest(input)
4380	req.SetContext(ctx)
4381	req.ApplyOptions(opts...)
4382	return out, req.Send()
4383}
4384
4385const opGetBucketWebsite = "GetBucketWebsite"
4386
4387// GetBucketWebsiteRequest generates a "aws/request.Request" representing the
4388// client's request for the GetBucketWebsite operation. The "output" return
4389// value will be populated with the request's response once the request completes
4390// successfully.
4391//
4392// Use "Send" method on the returned Request to send the API call to the service.
4393// the "output" return value is not valid until after Send returns without error.
4394//
4395// See GetBucketWebsite for more information on using the GetBucketWebsite
4396// API call, and error handling.
4397//
4398// This method is useful when you want to inject custom logic or configuration
4399// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4400//
4401//
4402//    // Example sending a request using the GetBucketWebsiteRequest method.
4403//    req, resp := client.GetBucketWebsiteRequest(params)
4404//
4405//    err := req.Send()
4406//    if err == nil { // resp is now filled
4407//        fmt.Println(resp)
4408//    }
4409//
4410// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4411func (c *S3) GetBucketWebsiteRequest(input *GetBucketWebsiteInput) (req *request.Request, output *GetBucketWebsiteOutput) {
4412	op := &request.Operation{
4413		Name:       opGetBucketWebsite,
4414		HTTPMethod: "GET",
4415		HTTPPath:   "/{Bucket}?website",
4416	}
4417
4418	if input == nil {
4419		input = &GetBucketWebsiteInput{}
4420	}
4421
4422	output = &GetBucketWebsiteOutput{}
4423	req = c.newRequest(op, input, output)
4424	return
4425}
4426
4427// GetBucketWebsite API operation for Amazon Simple Storage Service.
4428//
4429// Returns the website configuration for a bucket. To host website on Amazon
4430// S3, you can configure a bucket as website by adding a website configuration.
4431// For more information about hosting websites, see Hosting Websites on Amazon
4432// S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
4433//
4434// This GET action requires the S3:GetBucketWebsite permission. By default,
4435// only the bucket owner can read the bucket website configuration. However,
4436// bucket owners can allow other users to read the website configuration by
4437// writing a bucket policy granting them the S3:GetBucketWebsite permission.
4438//
4439// The following operations are related to DeleteBucketWebsite:
4440//
4441//    * DeleteBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketWebsite.html)
4442//
4443//    * PutBucketWebsite (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketWebsite.html)
4444//
4445// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4446// with awserr.Error's Code and Message methods to get detailed information about
4447// the error.
4448//
4449// See the AWS API reference guide for Amazon Simple Storage Service's
4450// API operation GetBucketWebsite for usage and error information.
4451// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketWebsite
4452func (c *S3) GetBucketWebsite(input *GetBucketWebsiteInput) (*GetBucketWebsiteOutput, error) {
4453	req, out := c.GetBucketWebsiteRequest(input)
4454	return out, req.Send()
4455}
4456
4457// GetBucketWebsiteWithContext is the same as GetBucketWebsite with the addition of
4458// the ability to pass a context and additional request options.
4459//
4460// See GetBucketWebsite for details on how to use this API operation.
4461//
4462// The context must be non-nil and will be used for request cancellation. If
4463// the context is nil a panic will occur. In the future the SDK may create
4464// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4465// for more information on using Contexts.
4466func (c *S3) GetBucketWebsiteWithContext(ctx aws.Context, input *GetBucketWebsiteInput, opts ...request.Option) (*GetBucketWebsiteOutput, error) {
4467	req, out := c.GetBucketWebsiteRequest(input)
4468	req.SetContext(ctx)
4469	req.ApplyOptions(opts...)
4470	return out, req.Send()
4471}
4472
4473const opGetObject = "GetObject"
4474
4475// GetObjectRequest generates a "aws/request.Request" representing the
4476// client's request for the GetObject operation. The "output" return
4477// value will be populated with the request's response once the request completes
4478// successfully.
4479//
4480// Use "Send" method on the returned Request to send the API call to the service.
4481// the "output" return value is not valid until after Send returns without error.
4482//
4483// See GetObject for more information on using the GetObject
4484// API call, and error handling.
4485//
4486// This method is useful when you want to inject custom logic or configuration
4487// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4488//
4489//
4490//    // Example sending a request using the GetObjectRequest method.
4491//    req, resp := client.GetObjectRequest(params)
4492//
4493//    err := req.Send()
4494//    if err == nil { // resp is now filled
4495//        fmt.Println(resp)
4496//    }
4497//
4498// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4499func (c *S3) GetObjectRequest(input *GetObjectInput) (req *request.Request, output *GetObjectOutput) {
4500	op := &request.Operation{
4501		Name:       opGetObject,
4502		HTTPMethod: "GET",
4503		HTTPPath:   "/{Bucket}/{Key+}",
4504	}
4505
4506	if input == nil {
4507		input = &GetObjectInput{}
4508	}
4509
4510	output = &GetObjectOutput{}
4511	req = c.newRequest(op, input, output)
4512	return
4513}
4514
4515// GetObject API operation for Amazon Simple Storage Service.
4516//
4517// Retrieves objects from Amazon S3. To use GET, you must have READ access to
4518// the object. If you grant READ access to the anonymous user, you can return
4519// the object without using an authorization header.
4520//
4521// An Amazon S3 bucket has no directory hierarchy such as you would find in
4522// a typical computer file system. You can, however, create a logical hierarchy
4523// by using object key names that imply a folder structure. For example, instead
4524// of naming an object sample.jpg, you can name it photos/2006/February/sample.jpg.
4525//
4526// To get an object from such a logical hierarchy, specify the full key name
4527// for the object in the GET operation. For a virtual hosted-style request example,
4528// if you have the object photos/2006/February/sample.jpg, specify the resource
4529// as /photos/2006/February/sample.jpg. For a path-style request example, if
4530// you have the object photos/2006/February/sample.jpg in the bucket named examplebucket,
4531// specify the resource as /examplebucket/photos/2006/February/sample.jpg. For
4532// more information about request types, see HTTP Host Header Bucket Specification
4533// (https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html#VirtualHostingSpecifyBucket).
4534//
4535// To distribute large files to many people, you can save bandwidth costs by
4536// using BitTorrent. For more information, see Amazon S3 Torrent (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
4537// For more information about returning the ACL of an object, see GetObjectAcl
4538// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html).
4539//
4540// If the object you are retrieving is stored in the S3 Glacier or S3 Glacier
4541// Deep Archive storage class, or S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering
4542// Deep Archive tiers, before you can retrieve the object you must first restore
4543// a copy using RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html).
4544// Otherwise, this action returns an InvalidObjectStateError error. For information
4545// about restoring archived objects, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html).
4546//
4547// Encryption request headers, like x-amz-server-side-encryption, should not
4548// be sent for GET requests if your object uses server-side encryption with
4549// KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed encryption
4550// keys (SSE-S3). If your object does use these types of keys, you’ll get
4551// an HTTP 400 BadRequest error.
4552//
4553// If you encrypt an object by using server-side encryption with customer-provided
4554// encryption keys (SSE-C) when you store the object in Amazon S3, then when
4555// you GET the object, you must use the following headers:
4556//
4557//    * x-amz-server-side-encryption-customer-algorithm
4558//
4559//    * x-amz-server-side-encryption-customer-key
4560//
4561//    * x-amz-server-side-encryption-customer-key-MD5
4562//
4563// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
4564// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
4565//
4566// Assuming you have the relevant permission to read object tags, the response
4567// also returns the x-amz-tagging-count header that provides the count of number
4568// of tags associated with the object. You can use GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
4569// to retrieve the tag set associated with an object.
4570//
4571// Permissions
4572//
4573// You need the relevant read object (or version) permission for this operation.
4574// For more information, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
4575// If the object you request does not exist, the error Amazon S3 returns depends
4576// on whether you also have the s3:ListBucket permission.
4577//
4578//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 will
4579//    return an HTTP status code 404 ("no such key") error.
4580//
4581//    * If you don’t have the s3:ListBucket permission, Amazon S3 will return
4582//    an HTTP status code 403 ("access denied") error.
4583//
4584// Versioning
4585//
4586// By default, the GET action returns the current version of an object. To return
4587// a different version, use the versionId subresource.
4588//
4589//    * You need the s3:GetObjectVersion permission to access a specific version
4590//    of an object.
4591//
4592//    * If the current version of the object is a delete marker, Amazon S3 behaves
4593//    as if the object was deleted and includes x-amz-delete-marker: true in
4594//    the response.
4595//
4596// For more information about versioning, see PutBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html).
4597//
4598// Overriding Response Header Values
4599//
4600// There are times when you want to override certain response header values
4601// in a GET response. For example, you might override the Content-Disposition
4602// response header value in your GET request.
4603//
4604// You can override values for a set of response headers using the following
4605// query parameters. These response header values are sent only on a successful
4606// request, that is, when status code 200 OK is returned. The set of headers
4607// you can override using these parameters is a subset of the headers that Amazon
4608// S3 accepts when you create an object. The response headers that you can override
4609// for the GET response are Content-Type, Content-Language, Expires, Cache-Control,
4610// Content-Disposition, and Content-Encoding. To override these header values
4611// in the GET response, you use the following request parameters.
4612//
4613// You must sign the request, either using an Authorization header or a presigned
4614// URL, when using these parameters. They cannot be used with an unsigned (anonymous)
4615// request.
4616//
4617//    * response-content-type
4618//
4619//    * response-content-language
4620//
4621//    * response-expires
4622//
4623//    * response-cache-control
4624//
4625//    * response-content-disposition
4626//
4627//    * response-content-encoding
4628//
4629// Additional Considerations about Request Headers
4630//
4631// If both of the If-Match and If-Unmodified-Since headers are present in the
4632// request as follows: If-Match condition evaluates to true, and; If-Unmodified-Since
4633// condition evaluates to false; then, S3 returns 200 OK and the data requested.
4634//
4635// If both of the If-None-Match and If-Modified-Since headers are present in
4636// the request as follows:If-None-Match condition evaluates to false, and; If-Modified-Since
4637// condition evaluates to true; then, S3 returns 304 Not Modified response code.
4638//
4639// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
4640//
4641// The following operations are related to GetObject:
4642//
4643//    * ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
4644//
4645//    * GetObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
4646//
4647// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4648// with awserr.Error's Code and Message methods to get detailed information about
4649// the error.
4650//
4651// See the AWS API reference guide for Amazon Simple Storage Service's
4652// API operation GetObject for usage and error information.
4653//
4654// Returned Error Codes:
4655//   * ErrCodeNoSuchKey "NoSuchKey"
4656//   The specified key does not exist.
4657//
4658//   * ErrCodeInvalidObjectState "InvalidObjectState"
4659//   Object is archived and inaccessible until restored.
4660//
4661// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObject
4662func (c *S3) GetObject(input *GetObjectInput) (*GetObjectOutput, error) {
4663	req, out := c.GetObjectRequest(input)
4664	return out, req.Send()
4665}
4666
4667// GetObjectWithContext is the same as GetObject with the addition of
4668// the ability to pass a context and additional request options.
4669//
4670// See GetObject for details on how to use this API operation.
4671//
4672// The context must be non-nil and will be used for request cancellation. If
4673// the context is nil a panic will occur. In the future the SDK may create
4674// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4675// for more information on using Contexts.
4676func (c *S3) GetObjectWithContext(ctx aws.Context, input *GetObjectInput, opts ...request.Option) (*GetObjectOutput, error) {
4677	req, out := c.GetObjectRequest(input)
4678	req.SetContext(ctx)
4679	req.ApplyOptions(opts...)
4680	return out, req.Send()
4681}
4682
4683const opGetObjectAcl = "GetObjectAcl"
4684
4685// GetObjectAclRequest generates a "aws/request.Request" representing the
4686// client's request for the GetObjectAcl operation. The "output" return
4687// value will be populated with the request's response once the request completes
4688// successfully.
4689//
4690// Use "Send" method on the returned Request to send the API call to the service.
4691// the "output" return value is not valid until after Send returns without error.
4692//
4693// See GetObjectAcl for more information on using the GetObjectAcl
4694// API call, and error handling.
4695//
4696// This method is useful when you want to inject custom logic or configuration
4697// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4698//
4699//
4700//    // Example sending a request using the GetObjectAclRequest method.
4701//    req, resp := client.GetObjectAclRequest(params)
4702//
4703//    err := req.Send()
4704//    if err == nil { // resp is now filled
4705//        fmt.Println(resp)
4706//    }
4707//
4708// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4709func (c *S3) GetObjectAclRequest(input *GetObjectAclInput) (req *request.Request, output *GetObjectAclOutput) {
4710	op := &request.Operation{
4711		Name:       opGetObjectAcl,
4712		HTTPMethod: "GET",
4713		HTTPPath:   "/{Bucket}/{Key+}?acl",
4714	}
4715
4716	if input == nil {
4717		input = &GetObjectAclInput{}
4718	}
4719
4720	output = &GetObjectAclOutput{}
4721	req = c.newRequest(op, input, output)
4722	return
4723}
4724
4725// GetObjectAcl API operation for Amazon Simple Storage Service.
4726//
4727// Returns the access control list (ACL) of an object. To use this operation,
4728// you must have READ_ACP access to the object.
4729//
4730// This action is not supported by Amazon S3 on Outposts.
4731//
4732// Versioning
4733//
4734// By default, GET returns ACL information about the current version of an object.
4735// To return ACL information about a different version, use the versionId subresource.
4736//
4737// The following operations are related to GetObjectAcl:
4738//
4739//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
4740//
4741//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
4742//
4743//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
4744//
4745// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4746// with awserr.Error's Code and Message methods to get detailed information about
4747// the error.
4748//
4749// See the AWS API reference guide for Amazon Simple Storage Service's
4750// API operation GetObjectAcl for usage and error information.
4751//
4752// Returned Error Codes:
4753//   * ErrCodeNoSuchKey "NoSuchKey"
4754//   The specified key does not exist.
4755//
4756// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectAcl
4757func (c *S3) GetObjectAcl(input *GetObjectAclInput) (*GetObjectAclOutput, error) {
4758	req, out := c.GetObjectAclRequest(input)
4759	return out, req.Send()
4760}
4761
4762// GetObjectAclWithContext is the same as GetObjectAcl with the addition of
4763// the ability to pass a context and additional request options.
4764//
4765// See GetObjectAcl for details on how to use this API operation.
4766//
4767// The context must be non-nil and will be used for request cancellation. If
4768// the context is nil a panic will occur. In the future the SDK may create
4769// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4770// for more information on using Contexts.
4771func (c *S3) GetObjectAclWithContext(ctx aws.Context, input *GetObjectAclInput, opts ...request.Option) (*GetObjectAclOutput, error) {
4772	req, out := c.GetObjectAclRequest(input)
4773	req.SetContext(ctx)
4774	req.ApplyOptions(opts...)
4775	return out, req.Send()
4776}
4777
4778const opGetObjectLegalHold = "GetObjectLegalHold"
4779
4780// GetObjectLegalHoldRequest generates a "aws/request.Request" representing the
4781// client's request for the GetObjectLegalHold operation. The "output" return
4782// value will be populated with the request's response once the request completes
4783// successfully.
4784//
4785// Use "Send" method on the returned Request to send the API call to the service.
4786// the "output" return value is not valid until after Send returns without error.
4787//
4788// See GetObjectLegalHold for more information on using the GetObjectLegalHold
4789// API call, and error handling.
4790//
4791// This method is useful when you want to inject custom logic or configuration
4792// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4793//
4794//
4795//    // Example sending a request using the GetObjectLegalHoldRequest method.
4796//    req, resp := client.GetObjectLegalHoldRequest(params)
4797//
4798//    err := req.Send()
4799//    if err == nil { // resp is now filled
4800//        fmt.Println(resp)
4801//    }
4802//
4803// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4804func (c *S3) GetObjectLegalHoldRequest(input *GetObjectLegalHoldInput) (req *request.Request, output *GetObjectLegalHoldOutput) {
4805	op := &request.Operation{
4806		Name:       opGetObjectLegalHold,
4807		HTTPMethod: "GET",
4808		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
4809	}
4810
4811	if input == nil {
4812		input = &GetObjectLegalHoldInput{}
4813	}
4814
4815	output = &GetObjectLegalHoldOutput{}
4816	req = c.newRequest(op, input, output)
4817	return
4818}
4819
4820// GetObjectLegalHold API operation for Amazon Simple Storage Service.
4821//
4822// Gets an object's current Legal Hold status. For more information, see Locking
4823// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4824//
4825// This action is not supported by Amazon S3 on Outposts.
4826//
4827// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4828// with awserr.Error's Code and Message methods to get detailed information about
4829// the error.
4830//
4831// See the AWS API reference guide for Amazon Simple Storage Service's
4832// API operation GetObjectLegalHold for usage and error information.
4833// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLegalHold
4834func (c *S3) GetObjectLegalHold(input *GetObjectLegalHoldInput) (*GetObjectLegalHoldOutput, error) {
4835	req, out := c.GetObjectLegalHoldRequest(input)
4836	return out, req.Send()
4837}
4838
4839// GetObjectLegalHoldWithContext is the same as GetObjectLegalHold with the addition of
4840// the ability to pass a context and additional request options.
4841//
4842// See GetObjectLegalHold for details on how to use this API operation.
4843//
4844// The context must be non-nil and will be used for request cancellation. If
4845// the context is nil a panic will occur. In the future the SDK may create
4846// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4847// for more information on using Contexts.
4848func (c *S3) GetObjectLegalHoldWithContext(ctx aws.Context, input *GetObjectLegalHoldInput, opts ...request.Option) (*GetObjectLegalHoldOutput, error) {
4849	req, out := c.GetObjectLegalHoldRequest(input)
4850	req.SetContext(ctx)
4851	req.ApplyOptions(opts...)
4852	return out, req.Send()
4853}
4854
4855const opGetObjectLockConfiguration = "GetObjectLockConfiguration"
4856
4857// GetObjectLockConfigurationRequest generates a "aws/request.Request" representing the
4858// client's request for the GetObjectLockConfiguration operation. The "output" return
4859// value will be populated with the request's response once the request completes
4860// successfully.
4861//
4862// Use "Send" method on the returned Request to send the API call to the service.
4863// the "output" return value is not valid until after Send returns without error.
4864//
4865// See GetObjectLockConfiguration for more information on using the GetObjectLockConfiguration
4866// API call, and error handling.
4867//
4868// This method is useful when you want to inject custom logic or configuration
4869// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4870//
4871//
4872//    // Example sending a request using the GetObjectLockConfigurationRequest method.
4873//    req, resp := client.GetObjectLockConfigurationRequest(params)
4874//
4875//    err := req.Send()
4876//    if err == nil { // resp is now filled
4877//        fmt.Println(resp)
4878//    }
4879//
4880// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4881func (c *S3) GetObjectLockConfigurationRequest(input *GetObjectLockConfigurationInput) (req *request.Request, output *GetObjectLockConfigurationOutput) {
4882	op := &request.Operation{
4883		Name:       opGetObjectLockConfiguration,
4884		HTTPMethod: "GET",
4885		HTTPPath:   "/{Bucket}?object-lock",
4886	}
4887
4888	if input == nil {
4889		input = &GetObjectLockConfigurationInput{}
4890	}
4891
4892	output = &GetObjectLockConfigurationOutput{}
4893	req = c.newRequest(op, input, output)
4894	return
4895}
4896
4897// GetObjectLockConfiguration API operation for Amazon Simple Storage Service.
4898//
4899// Gets the Object Lock configuration for a bucket. The rule specified in the
4900// Object Lock configuration will be applied by default to every new object
4901// placed in the specified bucket. For more information, see Locking Objects
4902// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4903//
4904// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4905// with awserr.Error's Code and Message methods to get detailed information about
4906// the error.
4907//
4908// See the AWS API reference guide for Amazon Simple Storage Service's
4909// API operation GetObjectLockConfiguration for usage and error information.
4910// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectLockConfiguration
4911func (c *S3) GetObjectLockConfiguration(input *GetObjectLockConfigurationInput) (*GetObjectLockConfigurationOutput, error) {
4912	req, out := c.GetObjectLockConfigurationRequest(input)
4913	return out, req.Send()
4914}
4915
4916// GetObjectLockConfigurationWithContext is the same as GetObjectLockConfiguration with the addition of
4917// the ability to pass a context and additional request options.
4918//
4919// See GetObjectLockConfiguration for details on how to use this API operation.
4920//
4921// The context must be non-nil and will be used for request cancellation. If
4922// the context is nil a panic will occur. In the future the SDK may create
4923// sub-contexts for http.Requests. See https://golang.org/pkg/context/
4924// for more information on using Contexts.
4925func (c *S3) GetObjectLockConfigurationWithContext(ctx aws.Context, input *GetObjectLockConfigurationInput, opts ...request.Option) (*GetObjectLockConfigurationOutput, error) {
4926	req, out := c.GetObjectLockConfigurationRequest(input)
4927	req.SetContext(ctx)
4928	req.ApplyOptions(opts...)
4929	return out, req.Send()
4930}
4931
4932const opGetObjectRetention = "GetObjectRetention"
4933
4934// GetObjectRetentionRequest generates a "aws/request.Request" representing the
4935// client's request for the GetObjectRetention operation. The "output" return
4936// value will be populated with the request's response once the request completes
4937// successfully.
4938//
4939// Use "Send" method on the returned Request to send the API call to the service.
4940// the "output" return value is not valid until after Send returns without error.
4941//
4942// See GetObjectRetention for more information on using the GetObjectRetention
4943// API call, and error handling.
4944//
4945// This method is useful when you want to inject custom logic or configuration
4946// into the SDK's request lifecycle. Such as custom headers, or retry logic.
4947//
4948//
4949//    // Example sending a request using the GetObjectRetentionRequest method.
4950//    req, resp := client.GetObjectRetentionRequest(params)
4951//
4952//    err := req.Send()
4953//    if err == nil { // resp is now filled
4954//        fmt.Println(resp)
4955//    }
4956//
4957// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4958func (c *S3) GetObjectRetentionRequest(input *GetObjectRetentionInput) (req *request.Request, output *GetObjectRetentionOutput) {
4959	op := &request.Operation{
4960		Name:       opGetObjectRetention,
4961		HTTPMethod: "GET",
4962		HTTPPath:   "/{Bucket}/{Key+}?retention",
4963	}
4964
4965	if input == nil {
4966		input = &GetObjectRetentionInput{}
4967	}
4968
4969	output = &GetObjectRetentionOutput{}
4970	req = c.newRequest(op, input, output)
4971	return
4972}
4973
4974// GetObjectRetention API operation for Amazon Simple Storage Service.
4975//
4976// Retrieves an object's retention settings. For more information, see Locking
4977// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
4978//
4979// This action is not supported by Amazon S3 on Outposts.
4980//
4981// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
4982// with awserr.Error's Code and Message methods to get detailed information about
4983// the error.
4984//
4985// See the AWS API reference guide for Amazon Simple Storage Service's
4986// API operation GetObjectRetention for usage and error information.
4987// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectRetention
4988func (c *S3) GetObjectRetention(input *GetObjectRetentionInput) (*GetObjectRetentionOutput, error) {
4989	req, out := c.GetObjectRetentionRequest(input)
4990	return out, req.Send()
4991}
4992
4993// GetObjectRetentionWithContext is the same as GetObjectRetention with the addition of
4994// the ability to pass a context and additional request options.
4995//
4996// See GetObjectRetention for details on how to use this API operation.
4997//
4998// The context must be non-nil and will be used for request cancellation. If
4999// the context is nil a panic will occur. In the future the SDK may create
5000// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5001// for more information on using Contexts.
5002func (c *S3) GetObjectRetentionWithContext(ctx aws.Context, input *GetObjectRetentionInput, opts ...request.Option) (*GetObjectRetentionOutput, error) {
5003	req, out := c.GetObjectRetentionRequest(input)
5004	req.SetContext(ctx)
5005	req.ApplyOptions(opts...)
5006	return out, req.Send()
5007}
5008
5009const opGetObjectTagging = "GetObjectTagging"
5010
5011// GetObjectTaggingRequest generates a "aws/request.Request" representing the
5012// client's request for the GetObjectTagging operation. The "output" return
5013// value will be populated with the request's response once the request completes
5014// successfully.
5015//
5016// Use "Send" method on the returned Request to send the API call to the service.
5017// the "output" return value is not valid until after Send returns without error.
5018//
5019// See GetObjectTagging for more information on using the GetObjectTagging
5020// API call, and error handling.
5021//
5022// This method is useful when you want to inject custom logic or configuration
5023// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5024//
5025//
5026//    // Example sending a request using the GetObjectTaggingRequest method.
5027//    req, resp := client.GetObjectTaggingRequest(params)
5028//
5029//    err := req.Send()
5030//    if err == nil { // resp is now filled
5031//        fmt.Println(resp)
5032//    }
5033//
5034// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
5035func (c *S3) GetObjectTaggingRequest(input *GetObjectTaggingInput) (req *request.Request, output *GetObjectTaggingOutput) {
5036	op := &request.Operation{
5037		Name:       opGetObjectTagging,
5038		HTTPMethod: "GET",
5039		HTTPPath:   "/{Bucket}/{Key+}?tagging",
5040	}
5041
5042	if input == nil {
5043		input = &GetObjectTaggingInput{}
5044	}
5045
5046	output = &GetObjectTaggingOutput{}
5047	req = c.newRequest(op, input, output)
5048	return
5049}
5050
5051// GetObjectTagging API operation for Amazon Simple Storage Service.
5052//
5053// Returns the tag-set of an object. You send the GET request against the tagging
5054// subresource associated with the object.
5055//
5056// To use this operation, you must have permission to perform the s3:GetObjectTagging
5057// action. By default, the GET action returns information about current version
5058// of an object. For a versioned bucket, you can have multiple versions of an
5059// object in your bucket. To retrieve tags of any other version, use the versionId
5060// query parameter. You also need permission for the s3:GetObjectVersionTagging
5061// action.
5062//
5063// By default, the bucket owner has this permission and can grant this permission
5064// to others.
5065//
5066// For information about the Amazon S3 object tagging feature, see Object Tagging
5067// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
5068//
5069// The following action is related to GetObjectTagging:
5070//
5071//    * PutObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)
5072//
5073//    * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
5074//
5075// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5076// with awserr.Error's Code and Message methods to get detailed information about
5077// the error.
5078//
5079// See the AWS API reference guide for Amazon Simple Storage Service's
5080// API operation GetObjectTagging for usage and error information.
5081// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTagging
5082func (c *S3) GetObjectTagging(input *GetObjectTaggingInput) (*GetObjectTaggingOutput, error) {
5083	req, out := c.GetObjectTaggingRequest(input)
5084	return out, req.Send()
5085}
5086
5087// GetObjectTaggingWithContext is the same as GetObjectTagging with the addition of
5088// the ability to pass a context and additional request options.
5089//
5090// See GetObjectTagging for details on how to use this API operation.
5091//
5092// The context must be non-nil and will be used for request cancellation. If
5093// the context is nil a panic will occur. In the future the SDK may create
5094// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5095// for more information on using Contexts.
5096func (c *S3) GetObjectTaggingWithContext(ctx aws.Context, input *GetObjectTaggingInput, opts ...request.Option) (*GetObjectTaggingOutput, error) {
5097	req, out := c.GetObjectTaggingRequest(input)
5098	req.SetContext(ctx)
5099	req.ApplyOptions(opts...)
5100	return out, req.Send()
5101}
5102
5103const opGetObjectTorrent = "GetObjectTorrent"
5104
5105// GetObjectTorrentRequest generates a "aws/request.Request" representing the
5106// client's request for the GetObjectTorrent operation. The "output" return
5107// value will be populated with the request's response once the request completes
5108// successfully.
5109//
5110// Use "Send" method on the returned Request to send the API call to the service.
5111// the "output" return value is not valid until after Send returns without error.
5112//
5113// See GetObjectTorrent for more information on using the GetObjectTorrent
5114// API call, and error handling.
5115//
5116// This method is useful when you want to inject custom logic or configuration
5117// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5118//
5119//
5120//    // Example sending a request using the GetObjectTorrentRequest method.
5121//    req, resp := client.GetObjectTorrentRequest(params)
5122//
5123//    err := req.Send()
5124//    if err == nil { // resp is now filled
5125//        fmt.Println(resp)
5126//    }
5127//
5128// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
5129func (c *S3) GetObjectTorrentRequest(input *GetObjectTorrentInput) (req *request.Request, output *GetObjectTorrentOutput) {
5130	op := &request.Operation{
5131		Name:       opGetObjectTorrent,
5132		HTTPMethod: "GET",
5133		HTTPPath:   "/{Bucket}/{Key+}?torrent",
5134	}
5135
5136	if input == nil {
5137		input = &GetObjectTorrentInput{}
5138	}
5139
5140	output = &GetObjectTorrentOutput{}
5141	req = c.newRequest(op, input, output)
5142	return
5143}
5144
5145// GetObjectTorrent API operation for Amazon Simple Storage Service.
5146//
5147// Returns torrent files from a bucket. BitTorrent can save you bandwidth when
5148// you're distributing large files. For more information about BitTorrent, see
5149// Using BitTorrent with Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3Torrent.html).
5150//
5151// You can get torrent only for objects that are less than 5 GB in size, and
5152// that are not encrypted using server-side encryption with a customer-provided
5153// encryption key.
5154//
5155// To use GET, you must have READ access to the object.
5156//
5157// This action is not supported by Amazon S3 on Outposts.
5158//
5159// The following action is related to GetObjectTorrent:
5160//
5161//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
5162//
5163// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5164// with awserr.Error's Code and Message methods to get detailed information about
5165// the error.
5166//
5167// See the AWS API reference guide for Amazon Simple Storage Service's
5168// API operation GetObjectTorrent for usage and error information.
5169// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetObjectTorrent
5170func (c *S3) GetObjectTorrent(input *GetObjectTorrentInput) (*GetObjectTorrentOutput, error) {
5171	req, out := c.GetObjectTorrentRequest(input)
5172	return out, req.Send()
5173}
5174
5175// GetObjectTorrentWithContext is the same as GetObjectTorrent with the addition of
5176// the ability to pass a context and additional request options.
5177//
5178// See GetObjectTorrent for details on how to use this API operation.
5179//
5180// The context must be non-nil and will be used for request cancellation. If
5181// the context is nil a panic will occur. In the future the SDK may create
5182// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5183// for more information on using Contexts.
5184func (c *S3) GetObjectTorrentWithContext(ctx aws.Context, input *GetObjectTorrentInput, opts ...request.Option) (*GetObjectTorrentOutput, error) {
5185	req, out := c.GetObjectTorrentRequest(input)
5186	req.SetContext(ctx)
5187	req.ApplyOptions(opts...)
5188	return out, req.Send()
5189}
5190
5191const opGetPublicAccessBlock = "GetPublicAccessBlock"
5192
5193// GetPublicAccessBlockRequest generates a "aws/request.Request" representing the
5194// client's request for the GetPublicAccessBlock operation. The "output" return
5195// value will be populated with the request's response once the request completes
5196// successfully.
5197//
5198// Use "Send" method on the returned Request to send the API call to the service.
5199// the "output" return value is not valid until after Send returns without error.
5200//
5201// See GetPublicAccessBlock for more information on using the GetPublicAccessBlock
5202// API call, and error handling.
5203//
5204// This method is useful when you want to inject custom logic or configuration
5205// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5206//
5207//
5208//    // Example sending a request using the GetPublicAccessBlockRequest method.
5209//    req, resp := client.GetPublicAccessBlockRequest(params)
5210//
5211//    err := req.Send()
5212//    if err == nil { // resp is now filled
5213//        fmt.Println(resp)
5214//    }
5215//
5216// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
5217func (c *S3) GetPublicAccessBlockRequest(input *GetPublicAccessBlockInput) (req *request.Request, output *GetPublicAccessBlockOutput) {
5218	op := &request.Operation{
5219		Name:       opGetPublicAccessBlock,
5220		HTTPMethod: "GET",
5221		HTTPPath:   "/{Bucket}?publicAccessBlock",
5222	}
5223
5224	if input == nil {
5225		input = &GetPublicAccessBlockInput{}
5226	}
5227
5228	output = &GetPublicAccessBlockOutput{}
5229	req = c.newRequest(op, input, output)
5230	return
5231}
5232
5233// GetPublicAccessBlock API operation for Amazon Simple Storage Service.
5234//
5235// Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. To
5236// use this operation, you must have the s3:GetBucketPublicAccessBlock permission.
5237// For more information about Amazon S3 permissions, see Specifying Permissions
5238// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
5239//
5240// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
5241// or an object, it checks the PublicAccessBlock configuration for both the
5242// bucket (or the bucket that contains the object) and the bucket owner's account.
5243// If the PublicAccessBlock settings are different between the bucket and the
5244// account, Amazon S3 uses the most restrictive combination of the bucket-level
5245// and account-level settings.
5246//
5247// For more information about when Amazon S3 considers a bucket or an object
5248// 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).
5249//
5250// The following operations are related to GetPublicAccessBlock:
5251//
5252//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
5253//
5254//    * PutPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutPublicAccessBlock.html)
5255//
5256//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
5257//
5258//    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
5259//
5260// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5261// with awserr.Error's Code and Message methods to get detailed information about
5262// the error.
5263//
5264// See the AWS API reference guide for Amazon Simple Storage Service's
5265// API operation GetPublicAccessBlock for usage and error information.
5266// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetPublicAccessBlock
5267func (c *S3) GetPublicAccessBlock(input *GetPublicAccessBlockInput) (*GetPublicAccessBlockOutput, error) {
5268	req, out := c.GetPublicAccessBlockRequest(input)
5269	return out, req.Send()
5270}
5271
5272// GetPublicAccessBlockWithContext is the same as GetPublicAccessBlock with the addition of
5273// the ability to pass a context and additional request options.
5274//
5275// See GetPublicAccessBlock for details on how to use this API operation.
5276//
5277// The context must be non-nil and will be used for request cancellation. If
5278// the context is nil a panic will occur. In the future the SDK may create
5279// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5280// for more information on using Contexts.
5281func (c *S3) GetPublicAccessBlockWithContext(ctx aws.Context, input *GetPublicAccessBlockInput, opts ...request.Option) (*GetPublicAccessBlockOutput, error) {
5282	req, out := c.GetPublicAccessBlockRequest(input)
5283	req.SetContext(ctx)
5284	req.ApplyOptions(opts...)
5285	return out, req.Send()
5286}
5287
5288const opHeadBucket = "HeadBucket"
5289
5290// HeadBucketRequest generates a "aws/request.Request" representing the
5291// client's request for the HeadBucket operation. The "output" return
5292// value will be populated with the request's response once the request completes
5293// successfully.
5294//
5295// Use "Send" method on the returned Request to send the API call to the service.
5296// the "output" return value is not valid until after Send returns without error.
5297//
5298// See HeadBucket for more information on using the HeadBucket
5299// API call, and error handling.
5300//
5301// This method is useful when you want to inject custom logic or configuration
5302// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5303//
5304//
5305//    // Example sending a request using the HeadBucketRequest method.
5306//    req, resp := client.HeadBucketRequest(params)
5307//
5308//    err := req.Send()
5309//    if err == nil { // resp is now filled
5310//        fmt.Println(resp)
5311//    }
5312//
5313// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
5314func (c *S3) HeadBucketRequest(input *HeadBucketInput) (req *request.Request, output *HeadBucketOutput) {
5315	op := &request.Operation{
5316		Name:       opHeadBucket,
5317		HTTPMethod: "HEAD",
5318		HTTPPath:   "/{Bucket}",
5319	}
5320
5321	if input == nil {
5322		input = &HeadBucketInput{}
5323	}
5324
5325	output = &HeadBucketOutput{}
5326	req = c.newRequest(op, input, output)
5327	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
5328	return
5329}
5330
5331// HeadBucket API operation for Amazon Simple Storage Service.
5332//
5333// This action is useful to determine if a bucket exists and you have permission
5334// to access it. The action returns a 200 OK if the bucket exists and you have
5335// permission to access it.
5336//
5337// If the bucket does not exist or you do not have permission to access it,
5338// the HEAD request returns a generic 404 Not Found or 403 Forbidden code. A
5339// message body is not included, so you cannot determine the exception beyond
5340// these error codes.
5341//
5342// To use this operation, you must have permissions to perform the s3:ListBucket
5343// action. The bucket owner has this permission by default and can grant this
5344// permission to others. For more information about permissions, see Permissions
5345// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5346// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5347//
5348// To use this API against an access point, you must provide the alias of the
5349// access point in place of the bucket name or specify the access point ARN.
5350// When using the access point ARN, you must direct requests to the access point
5351// hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
5352// When using the Amazon Web Services SDKs, you provide the ARN in place of
5353// the bucket name. For more information see, Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html).
5354//
5355// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5356// with awserr.Error's Code and Message methods to get detailed information about
5357// the error.
5358//
5359// See the AWS API reference guide for Amazon Simple Storage Service's
5360// API operation HeadBucket for usage and error information.
5361//
5362// Returned Error Codes:
5363//   * ErrCodeNoSuchBucket "NoSuchBucket"
5364//   The specified bucket does not exist.
5365//
5366// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadBucket
5367func (c *S3) HeadBucket(input *HeadBucketInput) (*HeadBucketOutput, error) {
5368	req, out := c.HeadBucketRequest(input)
5369	return out, req.Send()
5370}
5371
5372// HeadBucketWithContext is the same as HeadBucket with the addition of
5373// the ability to pass a context and additional request options.
5374//
5375// See HeadBucket for details on how to use this API operation.
5376//
5377// The context must be non-nil and will be used for request cancellation. If
5378// the context is nil a panic will occur. In the future the SDK may create
5379// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5380// for more information on using Contexts.
5381func (c *S3) HeadBucketWithContext(ctx aws.Context, input *HeadBucketInput, opts ...request.Option) (*HeadBucketOutput, error) {
5382	req, out := c.HeadBucketRequest(input)
5383	req.SetContext(ctx)
5384	req.ApplyOptions(opts...)
5385	return out, req.Send()
5386}
5387
5388const opHeadObject = "HeadObject"
5389
5390// HeadObjectRequest generates a "aws/request.Request" representing the
5391// client's request for the HeadObject operation. The "output" return
5392// value will be populated with the request's response once the request completes
5393// successfully.
5394//
5395// Use "Send" method on the returned Request to send the API call to the service.
5396// the "output" return value is not valid until after Send returns without error.
5397//
5398// See HeadObject for more information on using the HeadObject
5399// API call, and error handling.
5400//
5401// This method is useful when you want to inject custom logic or configuration
5402// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5403//
5404//
5405//    // Example sending a request using the HeadObjectRequest method.
5406//    req, resp := client.HeadObjectRequest(params)
5407//
5408//    err := req.Send()
5409//    if err == nil { // resp is now filled
5410//        fmt.Println(resp)
5411//    }
5412//
5413// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5414func (c *S3) HeadObjectRequest(input *HeadObjectInput) (req *request.Request, output *HeadObjectOutput) {
5415	op := &request.Operation{
5416		Name:       opHeadObject,
5417		HTTPMethod: "HEAD",
5418		HTTPPath:   "/{Bucket}/{Key+}",
5419	}
5420
5421	if input == nil {
5422		input = &HeadObjectInput{}
5423	}
5424
5425	output = &HeadObjectOutput{}
5426	req = c.newRequest(op, input, output)
5427	return
5428}
5429
5430// HeadObject API operation for Amazon Simple Storage Service.
5431//
5432// The HEAD action retrieves metadata from an object without returning the object
5433// itself. This action is useful if you're only interested in an object's metadata.
5434// To use HEAD, you must have READ access to the object.
5435//
5436// A HEAD request has the same options as a GET action on an object. The response
5437// is identical to the GET response except that there is no response body. Because
5438// of this, if the HEAD request generates an error, it returns a generic 404
5439// Not Found or 403 Forbidden code. It is not possible to retrieve the exact
5440// exception beyond these error codes.
5441//
5442// If you encrypt an object by using server-side encryption with customer-provided
5443// encryption keys (SSE-C) when you store the object in Amazon S3, then when
5444// you retrieve the metadata from the object, you must use the following headers:
5445//
5446//    * x-amz-server-side-encryption-customer-algorithm
5447//
5448//    * x-amz-server-side-encryption-customer-key
5449//
5450//    * x-amz-server-side-encryption-customer-key-MD5
5451//
5452// For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
5453// Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
5454//
5455//    * Encryption request headers, like x-amz-server-side-encryption, should
5456//    not be sent for GET requests if your object uses server-side encryption
5457//    with KMS keys (SSE-KMS) or server-side encryption with Amazon S3–managed
5458//    encryption keys (SSE-S3). If your object does use these types of keys,
5459//    you’ll get an HTTP 400 BadRequest error.
5460//
5461//    * The last modified property in this case is the creation date of the
5462//    object.
5463//
5464// Request headers are limited to 8 KB in size. For more information, see Common
5465// Request Headers (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html).
5466//
5467// Consider the following when using request headers:
5468//
5469//    * Consideration 1 – If both of the If-Match and If-Unmodified-Since
5470//    headers are present in the request as follows: If-Match condition evaluates
5471//    to true, and; If-Unmodified-Since condition evaluates to false; Then Amazon
5472//    S3 returns 200 OK and the data requested.
5473//
5474//    * Consideration 2 – If both of the If-None-Match and If-Modified-Since
5475//    headers are present in the request as follows: If-None-Match condition
5476//    evaluates to false, and; If-Modified-Since condition evaluates to true;
5477//    Then Amazon S3 returns the 304 Not Modified response code.
5478//
5479// For more information about conditional requests, see RFC 7232 (https://tools.ietf.org/html/rfc7232).
5480//
5481// Permissions
5482//
5483// You need the relevant read object (or version) permission for this operation.
5484// For more information, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
5485// If the object you request does not exist, the error Amazon S3 returns depends
5486// on whether you also have the s3:ListBucket permission.
5487//
5488//    * If you have the s3:ListBucket permission on the bucket, Amazon S3 returns
5489//    an HTTP status code 404 ("no such key") error.
5490//
5491//    * If you don’t have the s3:ListBucket permission, Amazon S3 returns
5492//    an HTTP status code 403 ("access denied") error.
5493//
5494// The following action is related to HeadObject:
5495//
5496//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
5497//
5498// See http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#RESTErrorResponses
5499// for more information on returned errors.
5500//
5501// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5502// with awserr.Error's Code and Message methods to get detailed information about
5503// the error.
5504//
5505// See the AWS API reference guide for Amazon Simple Storage Service's
5506// API operation HeadObject for usage and error information.
5507// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/HeadObject
5508func (c *S3) HeadObject(input *HeadObjectInput) (*HeadObjectOutput, error) {
5509	req, out := c.HeadObjectRequest(input)
5510	return out, req.Send()
5511}
5512
5513// HeadObjectWithContext is the same as HeadObject with the addition of
5514// the ability to pass a context and additional request options.
5515//
5516// See HeadObject for details on how to use this API operation.
5517//
5518// The context must be non-nil and will be used for request cancellation. If
5519// the context is nil a panic will occur. In the future the SDK may create
5520// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5521// for more information on using Contexts.
5522func (c *S3) HeadObjectWithContext(ctx aws.Context, input *HeadObjectInput, opts ...request.Option) (*HeadObjectOutput, error) {
5523	req, out := c.HeadObjectRequest(input)
5524	req.SetContext(ctx)
5525	req.ApplyOptions(opts...)
5526	return out, req.Send()
5527}
5528
5529const opListBucketAnalyticsConfigurations = "ListBucketAnalyticsConfigurations"
5530
5531// ListBucketAnalyticsConfigurationsRequest generates a "aws/request.Request" representing the
5532// client's request for the ListBucketAnalyticsConfigurations operation. The "output" return
5533// value will be populated with the request's response once the request completes
5534// successfully.
5535//
5536// Use "Send" method on the returned Request to send the API call to the service.
5537// the "output" return value is not valid until after Send returns without error.
5538//
5539// See ListBucketAnalyticsConfigurations for more information on using the ListBucketAnalyticsConfigurations
5540// API call, and error handling.
5541//
5542// This method is useful when you want to inject custom logic or configuration
5543// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5544//
5545//
5546//    // Example sending a request using the ListBucketAnalyticsConfigurationsRequest method.
5547//    req, resp := client.ListBucketAnalyticsConfigurationsRequest(params)
5548//
5549//    err := req.Send()
5550//    if err == nil { // resp is now filled
5551//        fmt.Println(resp)
5552//    }
5553//
5554// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5555func (c *S3) ListBucketAnalyticsConfigurationsRequest(input *ListBucketAnalyticsConfigurationsInput) (req *request.Request, output *ListBucketAnalyticsConfigurationsOutput) {
5556	op := &request.Operation{
5557		Name:       opListBucketAnalyticsConfigurations,
5558		HTTPMethod: "GET",
5559		HTTPPath:   "/{Bucket}?analytics",
5560	}
5561
5562	if input == nil {
5563		input = &ListBucketAnalyticsConfigurationsInput{}
5564	}
5565
5566	output = &ListBucketAnalyticsConfigurationsOutput{}
5567	req = c.newRequest(op, input, output)
5568	return
5569}
5570
5571// ListBucketAnalyticsConfigurations API operation for Amazon Simple Storage Service.
5572//
5573// Lists the analytics configurations for the bucket. You can have up to 1,000
5574// analytics configurations per bucket.
5575//
5576// This action supports list pagination and does not return more than 100 configurations
5577// at a time. You should always check the IsTruncated element in the response.
5578// If there are no more configurations to list, IsTruncated is set to false.
5579// If there are more configurations to list, IsTruncated is set to true, and
5580// there will be a value in NextContinuationToken. You use the NextContinuationToken
5581// value to continue the pagination of the list by passing the value in continuation-token
5582// in the request to GET the next page.
5583//
5584// To use this operation, you must have permissions to perform the s3:GetAnalyticsConfiguration
5585// action. The bucket owner has this permission by default. The bucket owner
5586// can grant this permission to others. For more information about permissions,
5587// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5588// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5589//
5590// For information about Amazon S3 analytics feature, see Amazon S3 Analytics
5591// – Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
5592//
5593// The following operations are related to ListBucketAnalyticsConfigurations:
5594//
5595//    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
5596//
5597//    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
5598//
5599//    * PutBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAnalyticsConfiguration.html)
5600//
5601// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5602// with awserr.Error's Code and Message methods to get detailed information about
5603// the error.
5604//
5605// See the AWS API reference guide for Amazon Simple Storage Service's
5606// API operation ListBucketAnalyticsConfigurations for usage and error information.
5607// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketAnalyticsConfigurations
5608func (c *S3) ListBucketAnalyticsConfigurations(input *ListBucketAnalyticsConfigurationsInput) (*ListBucketAnalyticsConfigurationsOutput, error) {
5609	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5610	return out, req.Send()
5611}
5612
5613// ListBucketAnalyticsConfigurationsWithContext is the same as ListBucketAnalyticsConfigurations with the addition of
5614// the ability to pass a context and additional request options.
5615//
5616// See ListBucketAnalyticsConfigurations for details on how to use this API operation.
5617//
5618// The context must be non-nil and will be used for request cancellation. If
5619// the context is nil a panic will occur. In the future the SDK may create
5620// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5621// for more information on using Contexts.
5622func (c *S3) ListBucketAnalyticsConfigurationsWithContext(ctx aws.Context, input *ListBucketAnalyticsConfigurationsInput, opts ...request.Option) (*ListBucketAnalyticsConfigurationsOutput, error) {
5623	req, out := c.ListBucketAnalyticsConfigurationsRequest(input)
5624	req.SetContext(ctx)
5625	req.ApplyOptions(opts...)
5626	return out, req.Send()
5627}
5628
5629const opListBucketIntelligentTieringConfigurations = "ListBucketIntelligentTieringConfigurations"
5630
5631// ListBucketIntelligentTieringConfigurationsRequest generates a "aws/request.Request" representing the
5632// client's request for the ListBucketIntelligentTieringConfigurations operation. The "output" return
5633// value will be populated with the request's response once the request completes
5634// successfully.
5635//
5636// Use "Send" method on the returned Request to send the API call to the service.
5637// the "output" return value is not valid until after Send returns without error.
5638//
5639// See ListBucketIntelligentTieringConfigurations for more information on using the ListBucketIntelligentTieringConfigurations
5640// API call, and error handling.
5641//
5642// This method is useful when you want to inject custom logic or configuration
5643// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5644//
5645//
5646//    // Example sending a request using the ListBucketIntelligentTieringConfigurationsRequest method.
5647//    req, resp := client.ListBucketIntelligentTieringConfigurationsRequest(params)
5648//
5649//    err := req.Send()
5650//    if err == nil { // resp is now filled
5651//        fmt.Println(resp)
5652//    }
5653//
5654// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
5655func (c *S3) ListBucketIntelligentTieringConfigurationsRequest(input *ListBucketIntelligentTieringConfigurationsInput) (req *request.Request, output *ListBucketIntelligentTieringConfigurationsOutput) {
5656	op := &request.Operation{
5657		Name:       opListBucketIntelligentTieringConfigurations,
5658		HTTPMethod: "GET",
5659		HTTPPath:   "/{Bucket}?intelligent-tiering",
5660	}
5661
5662	if input == nil {
5663		input = &ListBucketIntelligentTieringConfigurationsInput{}
5664	}
5665
5666	output = &ListBucketIntelligentTieringConfigurationsOutput{}
5667	req = c.newRequest(op, input, output)
5668	return
5669}
5670
5671// ListBucketIntelligentTieringConfigurations API operation for Amazon Simple Storage Service.
5672//
5673// Lists the S3 Intelligent-Tiering configuration from the specified bucket.
5674//
5675// The S3 Intelligent-Tiering storage class is designed to optimize storage
5676// costs by automatically moving data to the most cost-effective storage access
5677// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
5678// delivers automatic cost savings in two low latency and high throughput access
5679// tiers. For data that can be accessed asynchronously, you can choose to activate
5680// automatic archiving capabilities within the S3 Intelligent-Tiering storage
5681// class.
5682//
5683// The S3 Intelligent-Tiering storage class is the ideal storage class for data
5684// with unknown, changing, or unpredictable access patterns, independent of
5685// object size or retention period. If the size of an object is less than 128
5686// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
5687// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
5688// storage class.
5689//
5690// For more information, see Storage class for automatically optimizing frequently
5691// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
5692//
5693// Operations related to ListBucketIntelligentTieringConfigurations include:
5694//
5695//    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
5696//
5697//    * PutBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketIntelligentTieringConfiguration.html)
5698//
5699//    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
5700//
5701// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5702// with awserr.Error's Code and Message methods to get detailed information about
5703// the error.
5704//
5705// See the AWS API reference guide for Amazon Simple Storage Service's
5706// API operation ListBucketIntelligentTieringConfigurations for usage and error information.
5707// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketIntelligentTieringConfigurations
5708func (c *S3) ListBucketIntelligentTieringConfigurations(input *ListBucketIntelligentTieringConfigurationsInput) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
5709	req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
5710	return out, req.Send()
5711}
5712
5713// ListBucketIntelligentTieringConfigurationsWithContext is the same as ListBucketIntelligentTieringConfigurations with the addition of
5714// the ability to pass a context and additional request options.
5715//
5716// See ListBucketIntelligentTieringConfigurations for details on how to use this API operation.
5717//
5718// The context must be non-nil and will be used for request cancellation. If
5719// the context is nil a panic will occur. In the future the SDK may create
5720// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5721// for more information on using Contexts.
5722func (c *S3) ListBucketIntelligentTieringConfigurationsWithContext(ctx aws.Context, input *ListBucketIntelligentTieringConfigurationsInput, opts ...request.Option) (*ListBucketIntelligentTieringConfigurationsOutput, error) {
5723	req, out := c.ListBucketIntelligentTieringConfigurationsRequest(input)
5724	req.SetContext(ctx)
5725	req.ApplyOptions(opts...)
5726	return out, req.Send()
5727}
5728
5729const opListBucketInventoryConfigurations = "ListBucketInventoryConfigurations"
5730
5731// ListBucketInventoryConfigurationsRequest generates a "aws/request.Request" representing the
5732// client's request for the ListBucketInventoryConfigurations operation. The "output" return
5733// value will be populated with the request's response once the request completes
5734// successfully.
5735//
5736// Use "Send" method on the returned Request to send the API call to the service.
5737// the "output" return value is not valid until after Send returns without error.
5738//
5739// See ListBucketInventoryConfigurations for more information on using the ListBucketInventoryConfigurations
5740// API call, and error handling.
5741//
5742// This method is useful when you want to inject custom logic or configuration
5743// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5744//
5745//
5746//    // Example sending a request using the ListBucketInventoryConfigurationsRequest method.
5747//    req, resp := client.ListBucketInventoryConfigurationsRequest(params)
5748//
5749//    err := req.Send()
5750//    if err == nil { // resp is now filled
5751//        fmt.Println(resp)
5752//    }
5753//
5754// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5755func (c *S3) ListBucketInventoryConfigurationsRequest(input *ListBucketInventoryConfigurationsInput) (req *request.Request, output *ListBucketInventoryConfigurationsOutput) {
5756	op := &request.Operation{
5757		Name:       opListBucketInventoryConfigurations,
5758		HTTPMethod: "GET",
5759		HTTPPath:   "/{Bucket}?inventory",
5760	}
5761
5762	if input == nil {
5763		input = &ListBucketInventoryConfigurationsInput{}
5764	}
5765
5766	output = &ListBucketInventoryConfigurationsOutput{}
5767	req = c.newRequest(op, input, output)
5768	return
5769}
5770
5771// ListBucketInventoryConfigurations API operation for Amazon Simple Storage Service.
5772//
5773// Returns a list of inventory configurations for the bucket. You can have up
5774// to 1,000 analytics configurations per bucket.
5775//
5776// This action supports list pagination and does not return more than 100 configurations
5777// at a time. Always check the IsTruncated element in the response. If there
5778// are no more configurations to list, IsTruncated is set to false. If there
5779// are more configurations to list, IsTruncated is set to true, and there is
5780// a value in NextContinuationToken. You use the NextContinuationToken value
5781// to continue the pagination of the list by passing the value in continuation-token
5782// in the request to GET the next page.
5783//
5784// To use this operation, you must have permissions to perform the s3:GetInventoryConfiguration
5785// action. The bucket owner has this permission by default. The bucket owner
5786// can grant this permission to others. For more information about permissions,
5787// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5788// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5789//
5790// For information about the Amazon S3 inventory feature, see Amazon S3 Inventory
5791// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
5792//
5793// The following operations are related to ListBucketInventoryConfigurations:
5794//
5795//    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
5796//
5797//    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
5798//
5799//    * PutBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html)
5800//
5801// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5802// with awserr.Error's Code and Message methods to get detailed information about
5803// the error.
5804//
5805// See the AWS API reference guide for Amazon Simple Storage Service's
5806// API operation ListBucketInventoryConfigurations for usage and error information.
5807// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketInventoryConfigurations
5808func (c *S3) ListBucketInventoryConfigurations(input *ListBucketInventoryConfigurationsInput) (*ListBucketInventoryConfigurationsOutput, error) {
5809	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5810	return out, req.Send()
5811}
5812
5813// ListBucketInventoryConfigurationsWithContext is the same as ListBucketInventoryConfigurations with the addition of
5814// the ability to pass a context and additional request options.
5815//
5816// See ListBucketInventoryConfigurations for details on how to use this API operation.
5817//
5818// The context must be non-nil and will be used for request cancellation. If
5819// the context is nil a panic will occur. In the future the SDK may create
5820// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5821// for more information on using Contexts.
5822func (c *S3) ListBucketInventoryConfigurationsWithContext(ctx aws.Context, input *ListBucketInventoryConfigurationsInput, opts ...request.Option) (*ListBucketInventoryConfigurationsOutput, error) {
5823	req, out := c.ListBucketInventoryConfigurationsRequest(input)
5824	req.SetContext(ctx)
5825	req.ApplyOptions(opts...)
5826	return out, req.Send()
5827}
5828
5829const opListBucketMetricsConfigurations = "ListBucketMetricsConfigurations"
5830
5831// ListBucketMetricsConfigurationsRequest generates a "aws/request.Request" representing the
5832// client's request for the ListBucketMetricsConfigurations operation. The "output" return
5833// value will be populated with the request's response once the request completes
5834// successfully.
5835//
5836// Use "Send" method on the returned Request to send the API call to the service.
5837// the "output" return value is not valid until after Send returns without error.
5838//
5839// See ListBucketMetricsConfigurations for more information on using the ListBucketMetricsConfigurations
5840// API call, and error handling.
5841//
5842// This method is useful when you want to inject custom logic or configuration
5843// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5844//
5845//
5846//    // Example sending a request using the ListBucketMetricsConfigurationsRequest method.
5847//    req, resp := client.ListBucketMetricsConfigurationsRequest(params)
5848//
5849//    err := req.Send()
5850//    if err == nil { // resp is now filled
5851//        fmt.Println(resp)
5852//    }
5853//
5854// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5855func (c *S3) ListBucketMetricsConfigurationsRequest(input *ListBucketMetricsConfigurationsInput) (req *request.Request, output *ListBucketMetricsConfigurationsOutput) {
5856	op := &request.Operation{
5857		Name:       opListBucketMetricsConfigurations,
5858		HTTPMethod: "GET",
5859		HTTPPath:   "/{Bucket}?metrics",
5860	}
5861
5862	if input == nil {
5863		input = &ListBucketMetricsConfigurationsInput{}
5864	}
5865
5866	output = &ListBucketMetricsConfigurationsOutput{}
5867	req = c.newRequest(op, input, output)
5868	return
5869}
5870
5871// ListBucketMetricsConfigurations API operation for Amazon Simple Storage Service.
5872//
5873// Lists the metrics configurations for the bucket. The metrics configurations
5874// are only for the request metrics of the bucket and do not provide information
5875// on daily storage metrics. You can have up to 1,000 configurations per bucket.
5876//
5877// This action supports list pagination and does not return more than 100 configurations
5878// at a time. Always check the IsTruncated element in the response. If there
5879// are no more configurations to list, IsTruncated is set to false. If there
5880// are more configurations to list, IsTruncated is set to true, and there is
5881// a value in NextContinuationToken. You use the NextContinuationToken value
5882// to continue the pagination of the list by passing the value in continuation-token
5883// in the request to GET the next page.
5884//
5885// To use this operation, you must have permissions to perform the s3:GetMetricsConfiguration
5886// action. The bucket owner has this permission by default. The bucket owner
5887// can grant this permission to others. For more information about permissions,
5888// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
5889// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
5890//
5891// For more information about metrics configurations and CloudWatch request
5892// metrics, see Monitoring Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
5893//
5894// The following operations are related to ListBucketMetricsConfigurations:
5895//
5896//    * PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html)
5897//
5898//    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
5899//
5900//    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
5901//
5902// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5903// with awserr.Error's Code and Message methods to get detailed information about
5904// the error.
5905//
5906// See the AWS API reference guide for Amazon Simple Storage Service's
5907// API operation ListBucketMetricsConfigurations for usage and error information.
5908// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBucketMetricsConfigurations
5909func (c *S3) ListBucketMetricsConfigurations(input *ListBucketMetricsConfigurationsInput) (*ListBucketMetricsConfigurationsOutput, error) {
5910	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5911	return out, req.Send()
5912}
5913
5914// ListBucketMetricsConfigurationsWithContext is the same as ListBucketMetricsConfigurations with the addition of
5915// the ability to pass a context and additional request options.
5916//
5917// See ListBucketMetricsConfigurations for details on how to use this API operation.
5918//
5919// The context must be non-nil and will be used for request cancellation. If
5920// the context is nil a panic will occur. In the future the SDK may create
5921// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5922// for more information on using Contexts.
5923func (c *S3) ListBucketMetricsConfigurationsWithContext(ctx aws.Context, input *ListBucketMetricsConfigurationsInput, opts ...request.Option) (*ListBucketMetricsConfigurationsOutput, error) {
5924	req, out := c.ListBucketMetricsConfigurationsRequest(input)
5925	req.SetContext(ctx)
5926	req.ApplyOptions(opts...)
5927	return out, req.Send()
5928}
5929
5930const opListBuckets = "ListBuckets"
5931
5932// ListBucketsRequest generates a "aws/request.Request" representing the
5933// client's request for the ListBuckets operation. The "output" return
5934// value will be populated with the request's response once the request completes
5935// successfully.
5936//
5937// Use "Send" method on the returned Request to send the API call to the service.
5938// the "output" return value is not valid until after Send returns without error.
5939//
5940// See ListBuckets for more information on using the ListBuckets
5941// API call, and error handling.
5942//
5943// This method is useful when you want to inject custom logic or configuration
5944// into the SDK's request lifecycle. Such as custom headers, or retry logic.
5945//
5946//
5947//    // Example sending a request using the ListBucketsRequest method.
5948//    req, resp := client.ListBucketsRequest(params)
5949//
5950//    err := req.Send()
5951//    if err == nil { // resp is now filled
5952//        fmt.Println(resp)
5953//    }
5954//
5955// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5956func (c *S3) ListBucketsRequest(input *ListBucketsInput) (req *request.Request, output *ListBucketsOutput) {
5957	op := &request.Operation{
5958		Name:       opListBuckets,
5959		HTTPMethod: "GET",
5960		HTTPPath:   "/",
5961	}
5962
5963	if input == nil {
5964		input = &ListBucketsInput{}
5965	}
5966
5967	output = &ListBucketsOutput{}
5968	req = c.newRequest(op, input, output)
5969	return
5970}
5971
5972// ListBuckets API operation for Amazon Simple Storage Service.
5973//
5974// Returns a list of all buckets owned by the authenticated sender of the request.
5975//
5976// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
5977// with awserr.Error's Code and Message methods to get detailed information about
5978// the error.
5979//
5980// See the AWS API reference guide for Amazon Simple Storage Service's
5981// API operation ListBuckets for usage and error information.
5982// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets
5983func (c *S3) ListBuckets(input *ListBucketsInput) (*ListBucketsOutput, error) {
5984	req, out := c.ListBucketsRequest(input)
5985	return out, req.Send()
5986}
5987
5988// ListBucketsWithContext is the same as ListBuckets with the addition of
5989// the ability to pass a context and additional request options.
5990//
5991// See ListBuckets for details on how to use this API operation.
5992//
5993// The context must be non-nil and will be used for request cancellation. If
5994// the context is nil a panic will occur. In the future the SDK may create
5995// sub-contexts for http.Requests. See https://golang.org/pkg/context/
5996// for more information on using Contexts.
5997func (c *S3) ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput, opts ...request.Option) (*ListBucketsOutput, error) {
5998	req, out := c.ListBucketsRequest(input)
5999	req.SetContext(ctx)
6000	req.ApplyOptions(opts...)
6001	return out, req.Send()
6002}
6003
6004const opListMultipartUploads = "ListMultipartUploads"
6005
6006// ListMultipartUploadsRequest generates a "aws/request.Request" representing the
6007// client's request for the ListMultipartUploads operation. The "output" return
6008// value will be populated with the request's response once the request completes
6009// successfully.
6010//
6011// Use "Send" method on the returned Request to send the API call to the service.
6012// the "output" return value is not valid until after Send returns without error.
6013//
6014// See ListMultipartUploads for more information on using the ListMultipartUploads
6015// API call, and error handling.
6016//
6017// This method is useful when you want to inject custom logic or configuration
6018// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6019//
6020//
6021//    // Example sending a request using the ListMultipartUploadsRequest method.
6022//    req, resp := client.ListMultipartUploadsRequest(params)
6023//
6024//    err := req.Send()
6025//    if err == nil { // resp is now filled
6026//        fmt.Println(resp)
6027//    }
6028//
6029// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
6030func (c *S3) ListMultipartUploadsRequest(input *ListMultipartUploadsInput) (req *request.Request, output *ListMultipartUploadsOutput) {
6031	op := &request.Operation{
6032		Name:       opListMultipartUploads,
6033		HTTPMethod: "GET",
6034		HTTPPath:   "/{Bucket}?uploads",
6035		Paginator: &request.Paginator{
6036			InputTokens:     []string{"KeyMarker", "UploadIdMarker"},
6037			OutputTokens:    []string{"NextKeyMarker", "NextUploadIdMarker"},
6038			LimitToken:      "MaxUploads",
6039			TruncationToken: "IsTruncated",
6040		},
6041	}
6042
6043	if input == nil {
6044		input = &ListMultipartUploadsInput{}
6045	}
6046
6047	output = &ListMultipartUploadsOutput{}
6048	req = c.newRequest(op, input, output)
6049	return
6050}
6051
6052// ListMultipartUploads API operation for Amazon Simple Storage Service.
6053//
6054// This action lists in-progress multipart uploads. An in-progress multipart
6055// upload is a multipart upload that has been initiated using the Initiate Multipart
6056// Upload request, but has not yet been completed or aborted.
6057//
6058// This action returns at most 1,000 multipart uploads in the response. 1,000
6059// multipart uploads is the maximum number of uploads a response can include,
6060// which is also the default value. You can further limit the number of uploads
6061// in a response by specifying the max-uploads parameter in the response. If
6062// additional multipart uploads satisfy the list criteria, the response will
6063// contain an IsTruncated element with the value true. To list the additional
6064// multipart uploads, use the key-marker and upload-id-marker request parameters.
6065//
6066// In the response, the uploads are sorted by key. If your application has initiated
6067// more than one multipart upload using the same object key, then uploads in
6068// the response are first sorted by key. Additionally, uploads are sorted in
6069// ascending order within each key by the upload initiation time.
6070//
6071// For more information on multipart uploads, see Uploading Objects Using Multipart
6072// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
6073//
6074// For information on permissions required to use the multipart upload API,
6075// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
6076//
6077// The following operations are related to ListMultipartUploads:
6078//
6079//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
6080//
6081//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
6082//
6083//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
6084//
6085//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
6086//
6087//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
6088//
6089// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6090// with awserr.Error's Code and Message methods to get detailed information about
6091// the error.
6092//
6093// See the AWS API reference guide for Amazon Simple Storage Service's
6094// API operation ListMultipartUploads for usage and error information.
6095// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListMultipartUploads
6096func (c *S3) ListMultipartUploads(input *ListMultipartUploadsInput) (*ListMultipartUploadsOutput, error) {
6097	req, out := c.ListMultipartUploadsRequest(input)
6098	return out, req.Send()
6099}
6100
6101// ListMultipartUploadsWithContext is the same as ListMultipartUploads with the addition of
6102// the ability to pass a context and additional request options.
6103//
6104// See ListMultipartUploads for details on how to use this API operation.
6105//
6106// The context must be non-nil and will be used for request cancellation. If
6107// the context is nil a panic will occur. In the future the SDK may create
6108// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6109// for more information on using Contexts.
6110func (c *S3) ListMultipartUploadsWithContext(ctx aws.Context, input *ListMultipartUploadsInput, opts ...request.Option) (*ListMultipartUploadsOutput, error) {
6111	req, out := c.ListMultipartUploadsRequest(input)
6112	req.SetContext(ctx)
6113	req.ApplyOptions(opts...)
6114	return out, req.Send()
6115}
6116
6117// ListMultipartUploadsPages iterates over the pages of a ListMultipartUploads operation,
6118// calling the "fn" function with the response data for each page. To stop
6119// iterating, return false from the fn function.
6120//
6121// See ListMultipartUploads method for more information on how to use this operation.
6122//
6123// Note: This operation can generate multiple requests to a service.
6124//
6125//    // Example iterating over at most 3 pages of a ListMultipartUploads operation.
6126//    pageNum := 0
6127//    err := client.ListMultipartUploadsPages(params,
6128//        func(page *s3.ListMultipartUploadsOutput, lastPage bool) bool {
6129//            pageNum++
6130//            fmt.Println(page)
6131//            return pageNum <= 3
6132//        })
6133//
6134func (c *S3) ListMultipartUploadsPages(input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool) error {
6135	return c.ListMultipartUploadsPagesWithContext(aws.BackgroundContext(), input, fn)
6136}
6137
6138// ListMultipartUploadsPagesWithContext same as ListMultipartUploadsPages except
6139// it takes a Context and allows setting request options on the pages.
6140//
6141// The context must be non-nil and will be used for request cancellation. If
6142// the context is nil a panic will occur. In the future the SDK may create
6143// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6144// for more information on using Contexts.
6145func (c *S3) ListMultipartUploadsPagesWithContext(ctx aws.Context, input *ListMultipartUploadsInput, fn func(*ListMultipartUploadsOutput, bool) bool, opts ...request.Option) error {
6146	p := request.Pagination{
6147		NewRequest: func() (*request.Request, error) {
6148			var inCpy *ListMultipartUploadsInput
6149			if input != nil {
6150				tmp := *input
6151				inCpy = &tmp
6152			}
6153			req, _ := c.ListMultipartUploadsRequest(inCpy)
6154			req.SetContext(ctx)
6155			req.ApplyOptions(opts...)
6156			return req, nil
6157		},
6158	}
6159
6160	for p.Next() {
6161		if !fn(p.Page().(*ListMultipartUploadsOutput), !p.HasNextPage()) {
6162			break
6163		}
6164	}
6165
6166	return p.Err()
6167}
6168
6169const opListObjectVersions = "ListObjectVersions"
6170
6171// ListObjectVersionsRequest generates a "aws/request.Request" representing the
6172// client's request for the ListObjectVersions operation. The "output" return
6173// value will be populated with the request's response once the request completes
6174// successfully.
6175//
6176// Use "Send" method on the returned Request to send the API call to the service.
6177// the "output" return value is not valid until after Send returns without error.
6178//
6179// See ListObjectVersions for more information on using the ListObjectVersions
6180// API call, and error handling.
6181//
6182// This method is useful when you want to inject custom logic or configuration
6183// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6184//
6185//
6186//    // Example sending a request using the ListObjectVersionsRequest method.
6187//    req, resp := client.ListObjectVersionsRequest(params)
6188//
6189//    err := req.Send()
6190//    if err == nil { // resp is now filled
6191//        fmt.Println(resp)
6192//    }
6193//
6194// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
6195func (c *S3) ListObjectVersionsRequest(input *ListObjectVersionsInput) (req *request.Request, output *ListObjectVersionsOutput) {
6196	op := &request.Operation{
6197		Name:       opListObjectVersions,
6198		HTTPMethod: "GET",
6199		HTTPPath:   "/{Bucket}?versions",
6200		Paginator: &request.Paginator{
6201			InputTokens:     []string{"KeyMarker", "VersionIdMarker"},
6202			OutputTokens:    []string{"NextKeyMarker", "NextVersionIdMarker"},
6203			LimitToken:      "MaxKeys",
6204			TruncationToken: "IsTruncated",
6205		},
6206	}
6207
6208	if input == nil {
6209		input = &ListObjectVersionsInput{}
6210	}
6211
6212	output = &ListObjectVersionsOutput{}
6213	req = c.newRequest(op, input, output)
6214	return
6215}
6216
6217// ListObjectVersions API operation for Amazon Simple Storage Service.
6218//
6219// Returns metadata about all versions of the objects in a bucket. You can also
6220// use request parameters as selection criteria to return metadata about a subset
6221// of all the object versions.
6222//
6223// To use this operation, you must have permissions to perform the s3:ListBucketVersions
6224// action. Be aware of the name difference.
6225//
6226// A 200 OK response can contain valid or invalid XML. Make sure to design your
6227// application to parse the contents of the response and handle it appropriately.
6228//
6229// To use this operation, you must have READ access to the bucket.
6230//
6231// This action is not supported by Amazon S3 on Outposts.
6232//
6233// The following operations are related to ListObjectVersions:
6234//
6235//    * ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
6236//
6237//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
6238//
6239//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
6240//
6241//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
6242//
6243// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6244// with awserr.Error's Code and Message methods to get detailed information about
6245// the error.
6246//
6247// See the AWS API reference guide for Amazon Simple Storage Service's
6248// API operation ListObjectVersions for usage and error information.
6249// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectVersions
6250func (c *S3) ListObjectVersions(input *ListObjectVersionsInput) (*ListObjectVersionsOutput, error) {
6251	req, out := c.ListObjectVersionsRequest(input)
6252	return out, req.Send()
6253}
6254
6255// ListObjectVersionsWithContext is the same as ListObjectVersions with the addition of
6256// the ability to pass a context and additional request options.
6257//
6258// See ListObjectVersions for details on how to use this API operation.
6259//
6260// The context must be non-nil and will be used for request cancellation. If
6261// the context is nil a panic will occur. In the future the SDK may create
6262// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6263// for more information on using Contexts.
6264func (c *S3) ListObjectVersionsWithContext(ctx aws.Context, input *ListObjectVersionsInput, opts ...request.Option) (*ListObjectVersionsOutput, error) {
6265	req, out := c.ListObjectVersionsRequest(input)
6266	req.SetContext(ctx)
6267	req.ApplyOptions(opts...)
6268	return out, req.Send()
6269}
6270
6271// ListObjectVersionsPages iterates over the pages of a ListObjectVersions operation,
6272// calling the "fn" function with the response data for each page. To stop
6273// iterating, return false from the fn function.
6274//
6275// See ListObjectVersions method for more information on how to use this operation.
6276//
6277// Note: This operation can generate multiple requests to a service.
6278//
6279//    // Example iterating over at most 3 pages of a ListObjectVersions operation.
6280//    pageNum := 0
6281//    err := client.ListObjectVersionsPages(params,
6282//        func(page *s3.ListObjectVersionsOutput, lastPage bool) bool {
6283//            pageNum++
6284//            fmt.Println(page)
6285//            return pageNum <= 3
6286//        })
6287//
6288func (c *S3) ListObjectVersionsPages(input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool) error {
6289	return c.ListObjectVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
6290}
6291
6292// ListObjectVersionsPagesWithContext same as ListObjectVersionsPages except
6293// it takes a Context and allows setting request options on the pages.
6294//
6295// The context must be non-nil and will be used for request cancellation. If
6296// the context is nil a panic will occur. In the future the SDK may create
6297// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6298// for more information on using Contexts.
6299func (c *S3) ListObjectVersionsPagesWithContext(ctx aws.Context, input *ListObjectVersionsInput, fn func(*ListObjectVersionsOutput, bool) bool, opts ...request.Option) error {
6300	p := request.Pagination{
6301		NewRequest: func() (*request.Request, error) {
6302			var inCpy *ListObjectVersionsInput
6303			if input != nil {
6304				tmp := *input
6305				inCpy = &tmp
6306			}
6307			req, _ := c.ListObjectVersionsRequest(inCpy)
6308			req.SetContext(ctx)
6309			req.ApplyOptions(opts...)
6310			return req, nil
6311		},
6312	}
6313
6314	for p.Next() {
6315		if !fn(p.Page().(*ListObjectVersionsOutput), !p.HasNextPage()) {
6316			break
6317		}
6318	}
6319
6320	return p.Err()
6321}
6322
6323const opListObjects = "ListObjects"
6324
6325// ListObjectsRequest generates a "aws/request.Request" representing the
6326// client's request for the ListObjects operation. The "output" return
6327// value will be populated with the request's response once the request completes
6328// successfully.
6329//
6330// Use "Send" method on the returned Request to send the API call to the service.
6331// the "output" return value is not valid until after Send returns without error.
6332//
6333// See ListObjects for more information on using the ListObjects
6334// API call, and error handling.
6335//
6336// This method is useful when you want to inject custom logic or configuration
6337// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6338//
6339//
6340//    // Example sending a request using the ListObjectsRequest method.
6341//    req, resp := client.ListObjectsRequest(params)
6342//
6343//    err := req.Send()
6344//    if err == nil { // resp is now filled
6345//        fmt.Println(resp)
6346//    }
6347//
6348// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
6349func (c *S3) ListObjectsRequest(input *ListObjectsInput) (req *request.Request, output *ListObjectsOutput) {
6350	op := &request.Operation{
6351		Name:       opListObjects,
6352		HTTPMethod: "GET",
6353		HTTPPath:   "/{Bucket}",
6354		Paginator: &request.Paginator{
6355			InputTokens:     []string{"Marker"},
6356			OutputTokens:    []string{"NextMarker || Contents[-1].Key"},
6357			LimitToken:      "MaxKeys",
6358			TruncationToken: "IsTruncated",
6359		},
6360	}
6361
6362	if input == nil {
6363		input = &ListObjectsInput{}
6364	}
6365
6366	output = &ListObjectsOutput{}
6367	req = c.newRequest(op, input, output)
6368	return
6369}
6370
6371// ListObjects API operation for Amazon Simple Storage Service.
6372//
6373// Returns some or all (up to 1,000) of the objects in a bucket. You can use
6374// the request parameters as selection criteria to return a subset of the objects
6375// in a bucket. A 200 OK response can contain valid or invalid XML. Be sure
6376// to design your application to parse the contents of the response and handle
6377// it appropriately.
6378//
6379// This action has been revised. We recommend that you use the newer version,
6380// ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html),
6381// when developing applications. For backward compatibility, Amazon S3 continues
6382// to support ListObjects.
6383//
6384// The following operations are related to ListObjects:
6385//
6386//    * ListObjectsV2 (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)
6387//
6388//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
6389//
6390//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
6391//
6392//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
6393//
6394//    * ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html)
6395//
6396// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6397// with awserr.Error's Code and Message methods to get detailed information about
6398// the error.
6399//
6400// See the AWS API reference guide for Amazon Simple Storage Service's
6401// API operation ListObjects for usage and error information.
6402//
6403// Returned Error Codes:
6404//   * ErrCodeNoSuchBucket "NoSuchBucket"
6405//   The specified bucket does not exist.
6406//
6407// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjects
6408func (c *S3) ListObjects(input *ListObjectsInput) (*ListObjectsOutput, error) {
6409	req, out := c.ListObjectsRequest(input)
6410	return out, req.Send()
6411}
6412
6413// ListObjectsWithContext is the same as ListObjects with the addition of
6414// the ability to pass a context and additional request options.
6415//
6416// See ListObjects for details on how to use this API operation.
6417//
6418// The context must be non-nil and will be used for request cancellation. If
6419// the context is nil a panic will occur. In the future the SDK may create
6420// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6421// for more information on using Contexts.
6422func (c *S3) ListObjectsWithContext(ctx aws.Context, input *ListObjectsInput, opts ...request.Option) (*ListObjectsOutput, error) {
6423	req, out := c.ListObjectsRequest(input)
6424	req.SetContext(ctx)
6425	req.ApplyOptions(opts...)
6426	return out, req.Send()
6427}
6428
6429// ListObjectsPages iterates over the pages of a ListObjects operation,
6430// calling the "fn" function with the response data for each page. To stop
6431// iterating, return false from the fn function.
6432//
6433// See ListObjects method for more information on how to use this operation.
6434//
6435// Note: This operation can generate multiple requests to a service.
6436//
6437//    // Example iterating over at most 3 pages of a ListObjects operation.
6438//    pageNum := 0
6439//    err := client.ListObjectsPages(params,
6440//        func(page *s3.ListObjectsOutput, lastPage bool) bool {
6441//            pageNum++
6442//            fmt.Println(page)
6443//            return pageNum <= 3
6444//        })
6445//
6446func (c *S3) ListObjectsPages(input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool) error {
6447	return c.ListObjectsPagesWithContext(aws.BackgroundContext(), input, fn)
6448}
6449
6450// ListObjectsPagesWithContext same as ListObjectsPages except
6451// it takes a Context and allows setting request options on the pages.
6452//
6453// The context must be non-nil and will be used for request cancellation. If
6454// the context is nil a panic will occur. In the future the SDK may create
6455// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6456// for more information on using Contexts.
6457func (c *S3) ListObjectsPagesWithContext(ctx aws.Context, input *ListObjectsInput, fn func(*ListObjectsOutput, bool) bool, opts ...request.Option) error {
6458	p := request.Pagination{
6459		NewRequest: func() (*request.Request, error) {
6460			var inCpy *ListObjectsInput
6461			if input != nil {
6462				tmp := *input
6463				inCpy = &tmp
6464			}
6465			req, _ := c.ListObjectsRequest(inCpy)
6466			req.SetContext(ctx)
6467			req.ApplyOptions(opts...)
6468			return req, nil
6469		},
6470	}
6471
6472	for p.Next() {
6473		if !fn(p.Page().(*ListObjectsOutput), !p.HasNextPage()) {
6474			break
6475		}
6476	}
6477
6478	return p.Err()
6479}
6480
6481const opListObjectsV2 = "ListObjectsV2"
6482
6483// ListObjectsV2Request generates a "aws/request.Request" representing the
6484// client's request for the ListObjectsV2 operation. The "output" return
6485// value will be populated with the request's response once the request completes
6486// successfully.
6487//
6488// Use "Send" method on the returned Request to send the API call to the service.
6489// the "output" return value is not valid until after Send returns without error.
6490//
6491// See ListObjectsV2 for more information on using the ListObjectsV2
6492// API call, and error handling.
6493//
6494// This method is useful when you want to inject custom logic or configuration
6495// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6496//
6497//
6498//    // Example sending a request using the ListObjectsV2Request method.
6499//    req, resp := client.ListObjectsV2Request(params)
6500//
6501//    err := req.Send()
6502//    if err == nil { // resp is now filled
6503//        fmt.Println(resp)
6504//    }
6505//
6506// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
6507func (c *S3) ListObjectsV2Request(input *ListObjectsV2Input) (req *request.Request, output *ListObjectsV2Output) {
6508	op := &request.Operation{
6509		Name:       opListObjectsV2,
6510		HTTPMethod: "GET",
6511		HTTPPath:   "/{Bucket}?list-type=2",
6512		Paginator: &request.Paginator{
6513			InputTokens:     []string{"ContinuationToken"},
6514			OutputTokens:    []string{"NextContinuationToken"},
6515			LimitToken:      "MaxKeys",
6516			TruncationToken: "",
6517		},
6518	}
6519
6520	if input == nil {
6521		input = &ListObjectsV2Input{}
6522	}
6523
6524	output = &ListObjectsV2Output{}
6525	req = c.newRequest(op, input, output)
6526	return
6527}
6528
6529// ListObjectsV2 API operation for Amazon Simple Storage Service.
6530//
6531// Returns some or all (up to 1,000) of the objects in a bucket with each request.
6532// You can use the request parameters as selection criteria to return a subset
6533// of the objects in a bucket. A 200 OK response can contain valid or invalid
6534// XML. Make sure to design your application to parse the contents of the response
6535// and handle it appropriately. Objects are returned sorted in an ascending
6536// order of the respective key names in the list. For more information about
6537// listing objects, see Listing object keys programmatically (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ListingKeysUsingAPIs.html)
6538//
6539// To use this operation, you must have READ access to the bucket.
6540//
6541// To use this action in an Identity and Access Management (IAM) policy, you
6542// must have permissions to perform the s3:ListBucket action. The bucket owner
6543// has this permission by default and can grant this permission to others. For
6544// more information about permissions, see Permissions Related to Bucket Subresource
6545// Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6546// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
6547//
6548// This section describes the latest revision of this action. We recommend that
6549// you use this revised API for application development. For backward compatibility,
6550// Amazon S3 continues to support the prior version of this API, ListObjects
6551// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html).
6552//
6553// To get a list of your buckets, see ListBuckets (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html).
6554//
6555// The following operations are related to ListObjectsV2:
6556//
6557//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
6558//
6559//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
6560//
6561//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
6562//
6563// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6564// with awserr.Error's Code and Message methods to get detailed information about
6565// the error.
6566//
6567// See the AWS API reference guide for Amazon Simple Storage Service's
6568// API operation ListObjectsV2 for usage and error information.
6569//
6570// Returned Error Codes:
6571//   * ErrCodeNoSuchBucket "NoSuchBucket"
6572//   The specified bucket does not exist.
6573//
6574// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListObjectsV2
6575func (c *S3) ListObjectsV2(input *ListObjectsV2Input) (*ListObjectsV2Output, error) {
6576	req, out := c.ListObjectsV2Request(input)
6577	return out, req.Send()
6578}
6579
6580// ListObjectsV2WithContext is the same as ListObjectsV2 with the addition of
6581// the ability to pass a context and additional request options.
6582//
6583// See ListObjectsV2 for details on how to use this API operation.
6584//
6585// The context must be non-nil and will be used for request cancellation. If
6586// the context is nil a panic will occur. In the future the SDK may create
6587// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6588// for more information on using Contexts.
6589func (c *S3) ListObjectsV2WithContext(ctx aws.Context, input *ListObjectsV2Input, opts ...request.Option) (*ListObjectsV2Output, error) {
6590	req, out := c.ListObjectsV2Request(input)
6591	req.SetContext(ctx)
6592	req.ApplyOptions(opts...)
6593	return out, req.Send()
6594}
6595
6596// ListObjectsV2Pages iterates over the pages of a ListObjectsV2 operation,
6597// calling the "fn" function with the response data for each page. To stop
6598// iterating, return false from the fn function.
6599//
6600// See ListObjectsV2 method for more information on how to use this operation.
6601//
6602// Note: This operation can generate multiple requests to a service.
6603//
6604//    // Example iterating over at most 3 pages of a ListObjectsV2 operation.
6605//    pageNum := 0
6606//    err := client.ListObjectsV2Pages(params,
6607//        func(page *s3.ListObjectsV2Output, lastPage bool) bool {
6608//            pageNum++
6609//            fmt.Println(page)
6610//            return pageNum <= 3
6611//        })
6612//
6613func (c *S3) ListObjectsV2Pages(input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool) error {
6614	return c.ListObjectsV2PagesWithContext(aws.BackgroundContext(), input, fn)
6615}
6616
6617// ListObjectsV2PagesWithContext same as ListObjectsV2Pages except
6618// it takes a Context and allows setting request options on the pages.
6619//
6620// The context must be non-nil and will be used for request cancellation. If
6621// the context is nil a panic will occur. In the future the SDK may create
6622// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6623// for more information on using Contexts.
6624func (c *S3) ListObjectsV2PagesWithContext(ctx aws.Context, input *ListObjectsV2Input, fn func(*ListObjectsV2Output, bool) bool, opts ...request.Option) error {
6625	p := request.Pagination{
6626		NewRequest: func() (*request.Request, error) {
6627			var inCpy *ListObjectsV2Input
6628			if input != nil {
6629				tmp := *input
6630				inCpy = &tmp
6631			}
6632			req, _ := c.ListObjectsV2Request(inCpy)
6633			req.SetContext(ctx)
6634			req.ApplyOptions(opts...)
6635			return req, nil
6636		},
6637	}
6638
6639	for p.Next() {
6640		if !fn(p.Page().(*ListObjectsV2Output), !p.HasNextPage()) {
6641			break
6642		}
6643	}
6644
6645	return p.Err()
6646}
6647
6648const opListParts = "ListParts"
6649
6650// ListPartsRequest generates a "aws/request.Request" representing the
6651// client's request for the ListParts operation. The "output" return
6652// value will be populated with the request's response once the request completes
6653// successfully.
6654//
6655// Use "Send" method on the returned Request to send the API call to the service.
6656// the "output" return value is not valid until after Send returns without error.
6657//
6658// See ListParts for more information on using the ListParts
6659// API call, and error handling.
6660//
6661// This method is useful when you want to inject custom logic or configuration
6662// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6663//
6664//
6665//    // Example sending a request using the ListPartsRequest method.
6666//    req, resp := client.ListPartsRequest(params)
6667//
6668//    err := req.Send()
6669//    if err == nil { // resp is now filled
6670//        fmt.Println(resp)
6671//    }
6672//
6673// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6674func (c *S3) ListPartsRequest(input *ListPartsInput) (req *request.Request, output *ListPartsOutput) {
6675	op := &request.Operation{
6676		Name:       opListParts,
6677		HTTPMethod: "GET",
6678		HTTPPath:   "/{Bucket}/{Key+}",
6679		Paginator: &request.Paginator{
6680			InputTokens:     []string{"PartNumberMarker"},
6681			OutputTokens:    []string{"NextPartNumberMarker"},
6682			LimitToken:      "MaxParts",
6683			TruncationToken: "IsTruncated",
6684		},
6685	}
6686
6687	if input == nil {
6688		input = &ListPartsInput{}
6689	}
6690
6691	output = &ListPartsOutput{}
6692	req = c.newRequest(op, input, output)
6693	return
6694}
6695
6696// ListParts API operation for Amazon Simple Storage Service.
6697//
6698// Lists the parts that have been uploaded for a specific multipart upload.
6699// This operation must include the upload ID, which you obtain by sending the
6700// initiate multipart upload request (see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)).
6701// This request returns a maximum of 1,000 uploaded parts. The default number
6702// of parts returned is 1,000 parts. You can restrict the number of parts returned
6703// by specifying the max-parts request parameter. If your multipart upload consists
6704// of more than 1,000 parts, the response returns an IsTruncated field with
6705// the value of true, and a NextPartNumberMarker element. In subsequent ListParts
6706// requests you can include the part-number-marker query string parameter and
6707// set its value to the NextPartNumberMarker field value from the previous response.
6708//
6709// For more information on multipart uploads, see Uploading Objects Using Multipart
6710// Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html).
6711//
6712// For information on permissions required to use the multipart upload API,
6713// see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html).
6714//
6715// The following operations are related to ListParts:
6716//
6717//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
6718//
6719//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
6720//
6721//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
6722//
6723//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
6724//
6725//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
6726//
6727// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6728// with awserr.Error's Code and Message methods to get detailed information about
6729// the error.
6730//
6731// See the AWS API reference guide for Amazon Simple Storage Service's
6732// API operation ListParts for usage and error information.
6733// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListParts
6734func (c *S3) ListParts(input *ListPartsInput) (*ListPartsOutput, error) {
6735	req, out := c.ListPartsRequest(input)
6736	return out, req.Send()
6737}
6738
6739// ListPartsWithContext is the same as ListParts with the addition of
6740// the ability to pass a context and additional request options.
6741//
6742// See ListParts for details on how to use this API operation.
6743//
6744// The context must be non-nil and will be used for request cancellation. If
6745// the context is nil a panic will occur. In the future the SDK may create
6746// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6747// for more information on using Contexts.
6748func (c *S3) ListPartsWithContext(ctx aws.Context, input *ListPartsInput, opts ...request.Option) (*ListPartsOutput, error) {
6749	req, out := c.ListPartsRequest(input)
6750	req.SetContext(ctx)
6751	req.ApplyOptions(opts...)
6752	return out, req.Send()
6753}
6754
6755// ListPartsPages iterates over the pages of a ListParts operation,
6756// calling the "fn" function with the response data for each page. To stop
6757// iterating, return false from the fn function.
6758//
6759// See ListParts method for more information on how to use this operation.
6760//
6761// Note: This operation can generate multiple requests to a service.
6762//
6763//    // Example iterating over at most 3 pages of a ListParts operation.
6764//    pageNum := 0
6765//    err := client.ListPartsPages(params,
6766//        func(page *s3.ListPartsOutput, lastPage bool) bool {
6767//            pageNum++
6768//            fmt.Println(page)
6769//            return pageNum <= 3
6770//        })
6771//
6772func (c *S3) ListPartsPages(input *ListPartsInput, fn func(*ListPartsOutput, bool) bool) error {
6773	return c.ListPartsPagesWithContext(aws.BackgroundContext(), input, fn)
6774}
6775
6776// ListPartsPagesWithContext same as ListPartsPages except
6777// it takes a Context and allows setting request options on the pages.
6778//
6779// The context must be non-nil and will be used for request cancellation. If
6780// the context is nil a panic will occur. In the future the SDK may create
6781// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6782// for more information on using Contexts.
6783func (c *S3) ListPartsPagesWithContext(ctx aws.Context, input *ListPartsInput, fn func(*ListPartsOutput, bool) bool, opts ...request.Option) error {
6784	p := request.Pagination{
6785		NewRequest: func() (*request.Request, error) {
6786			var inCpy *ListPartsInput
6787			if input != nil {
6788				tmp := *input
6789				inCpy = &tmp
6790			}
6791			req, _ := c.ListPartsRequest(inCpy)
6792			req.SetContext(ctx)
6793			req.ApplyOptions(opts...)
6794			return req, nil
6795		},
6796	}
6797
6798	for p.Next() {
6799		if !fn(p.Page().(*ListPartsOutput), !p.HasNextPage()) {
6800			break
6801		}
6802	}
6803
6804	return p.Err()
6805}
6806
6807const opPutBucketAccelerateConfiguration = "PutBucketAccelerateConfiguration"
6808
6809// PutBucketAccelerateConfigurationRequest generates a "aws/request.Request" representing the
6810// client's request for the PutBucketAccelerateConfiguration operation. The "output" return
6811// value will be populated with the request's response once the request completes
6812// successfully.
6813//
6814// Use "Send" method on the returned Request to send the API call to the service.
6815// the "output" return value is not valid until after Send returns without error.
6816//
6817// See PutBucketAccelerateConfiguration for more information on using the PutBucketAccelerateConfiguration
6818// API call, and error handling.
6819//
6820// This method is useful when you want to inject custom logic or configuration
6821// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6822//
6823//
6824//    // Example sending a request using the PutBucketAccelerateConfigurationRequest method.
6825//    req, resp := client.PutBucketAccelerateConfigurationRequest(params)
6826//
6827//    err := req.Send()
6828//    if err == nil { // resp is now filled
6829//        fmt.Println(resp)
6830//    }
6831//
6832// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6833func (c *S3) PutBucketAccelerateConfigurationRequest(input *PutBucketAccelerateConfigurationInput) (req *request.Request, output *PutBucketAccelerateConfigurationOutput) {
6834	op := &request.Operation{
6835		Name:       opPutBucketAccelerateConfiguration,
6836		HTTPMethod: "PUT",
6837		HTTPPath:   "/{Bucket}?accelerate",
6838	}
6839
6840	if input == nil {
6841		input = &PutBucketAccelerateConfigurationInput{}
6842	}
6843
6844	output = &PutBucketAccelerateConfigurationOutput{}
6845	req = c.newRequest(op, input, output)
6846	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6847	return
6848}
6849
6850// PutBucketAccelerateConfiguration API operation for Amazon Simple Storage Service.
6851//
6852// Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer
6853// Acceleration is a bucket-level feature that enables you to perform faster
6854// data transfers to Amazon S3.
6855//
6856// To use this operation, you must have permission to perform the s3:PutAccelerateConfiguration
6857// action. The bucket owner has this permission by default. The bucket owner
6858// can grant this permission to others. For more information about permissions,
6859// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
6860// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
6861//
6862// The Transfer Acceleration state of a bucket can be set to one of the following
6863// two values:
6864//
6865//    * Enabled – Enables accelerated data transfers to the bucket.
6866//
6867//    * Suspended – Disables accelerated data transfers to the bucket.
6868//
6869// The GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
6870// action returns the transfer acceleration state of a bucket.
6871//
6872// After setting the Transfer Acceleration state of a bucket to Enabled, it
6873// might take up to thirty minutes before the data transfer rates to the bucket
6874// increase.
6875//
6876// The name of the bucket used for Transfer Acceleration must be DNS-compliant
6877// and must not contain periods (".").
6878//
6879// For more information about transfer acceleration, see Transfer Acceleration
6880// (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html).
6881//
6882// The following operations are related to PutBucketAccelerateConfiguration:
6883//
6884//    * GetBucketAccelerateConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAccelerateConfiguration.html)
6885//
6886//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
6887//
6888// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
6889// with awserr.Error's Code and Message methods to get detailed information about
6890// the error.
6891//
6892// See the AWS API reference guide for Amazon Simple Storage Service's
6893// API operation PutBucketAccelerateConfiguration for usage and error information.
6894// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAccelerateConfiguration
6895func (c *S3) PutBucketAccelerateConfiguration(input *PutBucketAccelerateConfigurationInput) (*PutBucketAccelerateConfigurationOutput, error) {
6896	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6897	return out, req.Send()
6898}
6899
6900// PutBucketAccelerateConfigurationWithContext is the same as PutBucketAccelerateConfiguration with the addition of
6901// the ability to pass a context and additional request options.
6902//
6903// See PutBucketAccelerateConfiguration for details on how to use this API operation.
6904//
6905// The context must be non-nil and will be used for request cancellation. If
6906// the context is nil a panic will occur. In the future the SDK may create
6907// sub-contexts for http.Requests. See https://golang.org/pkg/context/
6908// for more information on using Contexts.
6909func (c *S3) PutBucketAccelerateConfigurationWithContext(ctx aws.Context, input *PutBucketAccelerateConfigurationInput, opts ...request.Option) (*PutBucketAccelerateConfigurationOutput, error) {
6910	req, out := c.PutBucketAccelerateConfigurationRequest(input)
6911	req.SetContext(ctx)
6912	req.ApplyOptions(opts...)
6913	return out, req.Send()
6914}
6915
6916const opPutBucketAcl = "PutBucketAcl"
6917
6918// PutBucketAclRequest generates a "aws/request.Request" representing the
6919// client's request for the PutBucketAcl operation. The "output" return
6920// value will be populated with the request's response once the request completes
6921// successfully.
6922//
6923// Use "Send" method on the returned Request to send the API call to the service.
6924// the "output" return value is not valid until after Send returns without error.
6925//
6926// See PutBucketAcl for more information on using the PutBucketAcl
6927// API call, and error handling.
6928//
6929// This method is useful when you want to inject custom logic or configuration
6930// into the SDK's request lifecycle. Such as custom headers, or retry logic.
6931//
6932//
6933//    // Example sending a request using the PutBucketAclRequest method.
6934//    req, resp := client.PutBucketAclRequest(params)
6935//
6936//    err := req.Send()
6937//    if err == nil { // resp is now filled
6938//        fmt.Println(resp)
6939//    }
6940//
6941// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
6942func (c *S3) PutBucketAclRequest(input *PutBucketAclInput) (req *request.Request, output *PutBucketAclOutput) {
6943	op := &request.Operation{
6944		Name:       opPutBucketAcl,
6945		HTTPMethod: "PUT",
6946		HTTPPath:   "/{Bucket}?acl",
6947	}
6948
6949	if input == nil {
6950		input = &PutBucketAclInput{}
6951	}
6952
6953	output = &PutBucketAclOutput{}
6954	req = c.newRequest(op, input, output)
6955	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
6956	req.Handlers.Build.PushBackNamed(request.NamedHandler{
6957		Name: "contentMd5Handler",
6958		Fn:   checksum.AddBodyContentMD5Handler,
6959	})
6960	return
6961}
6962
6963// PutBucketAcl API operation for Amazon Simple Storage Service.
6964//
6965// Sets the permissions on an existing bucket using access control lists (ACL).
6966// For more information, see Using ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html).
6967// To set the ACL of a bucket, you must have WRITE_ACP permission.
6968//
6969// You can use one of the following two ways to set a bucket's permissions:
6970//
6971//    * Specify the ACL in the request body
6972//
6973//    * Specify permissions using request headers
6974//
6975// You cannot specify access permission using both the body and the request
6976// headers.
6977//
6978// Depending on your application needs, you may choose to set the ACL on a bucket
6979// using either the request body or the headers. For example, if you have an
6980// existing application that updates a bucket ACL using the request body, then
6981// you can continue to use that approach.
6982//
6983// Access Permissions
6984//
6985// You can set access permissions using one of the following methods:
6986//
6987//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
6988//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
6989//    predefined set of grantees and permissions. Specify the canned ACL name
6990//    as the value of x-amz-acl. If you use this header, you cannot use other
6991//    access control-specific headers in your request. For more information,
6992//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
6993//
6994//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
6995//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
6996//    these headers, you specify explicit access permissions and grantees (Amazon
6997//    Web Services accounts or Amazon S3 groups) who will receive the permission.
6998//    If you use these ACL-specific headers, you cannot use the x-amz-acl header
6999//    to set a canned ACL. These parameters map to the set of permissions that
7000//    Amazon S3 supports in an ACL. For more information, see Access Control
7001//    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
7002//    You specify each grantee as a type=value pair, where the type is one of
7003//    the following: id – if the value specified is the canonical user ID
7004//    of an Amazon Web Services account uri – if you are granting permissions
7005//    to a predefined group emailAddress – if the value specified is the email
7006//    address of an Amazon Web Services account Using email addresses to specify
7007//    a grantee is only supported in the following Amazon Web Services Regions:
7008//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
7009//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
7010//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
7011//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
7012//    in the Amazon Web Services General Reference. For example, the following
7013//    x-amz-grant-write header grants create, overwrite, and delete objects
7014//    permission to LogDelivery group predefined by Amazon S3 and two Amazon
7015//    Web Services accounts identified by their email addresses. x-amz-grant-write:
7016//    uri="http://acs.amazonaws.com/groups/s3/LogDelivery", id="111122223333",
7017//    id="555566667777"
7018//
7019// You can use either a canned ACL or specify access permissions explicitly.
7020// You cannot do both.
7021//
7022// Grantee Values
7023//
7024// You can specify the person (grantee) to whom you're assigning access rights
7025// (using request elements) in the following ways:
7026//
7027//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7028//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
7029//    </Grantee> DisplayName is optional and ignored in the request
7030//
7031//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7032//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
7033//
7034//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7035//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
7036//    The grantee is resolved to the CanonicalUser and, in a response to a GET
7037//    Object acl request, appears as the CanonicalUser. Using email addresses
7038//    to specify a grantee is only supported in the following Amazon Web Services
7039//    Regions: US East (N. Virginia) US West (N. California) US West (Oregon)
7040//    Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe
7041//    (Ireland) South America (São Paulo) For a list of all the Amazon S3 supported
7042//    Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
7043//    in the Amazon Web Services General Reference.
7044//
7045// Related Resources
7046//
7047//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
7048//
7049//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
7050//
7051//    * GetObjectAcl (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html)
7052//
7053// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7054// with awserr.Error's Code and Message methods to get detailed information about
7055// the error.
7056//
7057// See the AWS API reference guide for Amazon Simple Storage Service's
7058// API operation PutBucketAcl for usage and error information.
7059// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAcl
7060func (c *S3) PutBucketAcl(input *PutBucketAclInput) (*PutBucketAclOutput, error) {
7061	req, out := c.PutBucketAclRequest(input)
7062	return out, req.Send()
7063}
7064
7065// PutBucketAclWithContext is the same as PutBucketAcl with the addition of
7066// the ability to pass a context and additional request options.
7067//
7068// See PutBucketAcl for details on how to use this API operation.
7069//
7070// The context must be non-nil and will be used for request cancellation. If
7071// the context is nil a panic will occur. In the future the SDK may create
7072// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7073// for more information on using Contexts.
7074func (c *S3) PutBucketAclWithContext(ctx aws.Context, input *PutBucketAclInput, opts ...request.Option) (*PutBucketAclOutput, error) {
7075	req, out := c.PutBucketAclRequest(input)
7076	req.SetContext(ctx)
7077	req.ApplyOptions(opts...)
7078	return out, req.Send()
7079}
7080
7081const opPutBucketAnalyticsConfiguration = "PutBucketAnalyticsConfiguration"
7082
7083// PutBucketAnalyticsConfigurationRequest generates a "aws/request.Request" representing the
7084// client's request for the PutBucketAnalyticsConfiguration operation. The "output" return
7085// value will be populated with the request's response once the request completes
7086// successfully.
7087//
7088// Use "Send" method on the returned Request to send the API call to the service.
7089// the "output" return value is not valid until after Send returns without error.
7090//
7091// See PutBucketAnalyticsConfiguration for more information on using the PutBucketAnalyticsConfiguration
7092// API call, and error handling.
7093//
7094// This method is useful when you want to inject custom logic or configuration
7095// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7096//
7097//
7098//    // Example sending a request using the PutBucketAnalyticsConfigurationRequest method.
7099//    req, resp := client.PutBucketAnalyticsConfigurationRequest(params)
7100//
7101//    err := req.Send()
7102//    if err == nil { // resp is now filled
7103//        fmt.Println(resp)
7104//    }
7105//
7106// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
7107func (c *S3) PutBucketAnalyticsConfigurationRequest(input *PutBucketAnalyticsConfigurationInput) (req *request.Request, output *PutBucketAnalyticsConfigurationOutput) {
7108	op := &request.Operation{
7109		Name:       opPutBucketAnalyticsConfiguration,
7110		HTTPMethod: "PUT",
7111		HTTPPath:   "/{Bucket}?analytics",
7112	}
7113
7114	if input == nil {
7115		input = &PutBucketAnalyticsConfigurationInput{}
7116	}
7117
7118	output = &PutBucketAnalyticsConfigurationOutput{}
7119	req = c.newRequest(op, input, output)
7120	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7121	return
7122}
7123
7124// PutBucketAnalyticsConfiguration API operation for Amazon Simple Storage Service.
7125//
7126// Sets an analytics configuration for the bucket (specified by the analytics
7127// configuration ID). You can have up to 1,000 analytics configurations per
7128// bucket.
7129//
7130// You can choose to have storage class analysis export analysis reports sent
7131// to a comma-separated values (CSV) flat file. See the DataExport request element.
7132// Reports are updated daily and are based on the object filters that you configure.
7133// When selecting data export, you specify a destination bucket and an optional
7134// destination prefix where the file is written. You can export the data to
7135// a destination bucket in a different account. However, the destination bucket
7136// must be in the same Region as the bucket that you are making the PUT analytics
7137// configuration to. For more information, see Amazon S3 Analytics – Storage
7138// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html).
7139//
7140// You must create a bucket policy on the destination bucket where the exported
7141// file is written to grant permissions to Amazon S3 to write objects to the
7142// bucket. For an example policy, see Granting Permissions for Amazon S3 Inventory
7143// and Storage Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
7144//
7145// To use this operation, you must have permissions to perform the s3:PutAnalyticsConfiguration
7146// action. The bucket owner has this permission by default. The bucket owner
7147// can grant this permission to others. For more information about permissions,
7148// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
7149// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
7150//
7151// Special Errors
7152//
7153//    * HTTP Error: HTTP 400 Bad Request Code: InvalidArgument Cause: Invalid
7154//    argument.
7155//
7156//    * HTTP Error: HTTP 400 Bad Request Code: TooManyConfigurations Cause:
7157//    You are attempting to create a new configuration but have already reached
7158//    the 1,000-configuration limit.
7159//
7160//    * HTTP Error: HTTP 403 Forbidden Code: AccessDenied Cause: You are not
7161//    the owner of the specified bucket, or you do not have the s3:PutAnalyticsConfiguration
7162//    bucket permission to set the configuration on the bucket.
7163//
7164// Related Resources
7165//
7166//    * GetBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketAnalyticsConfiguration.html)
7167//
7168//    * DeleteBucketAnalyticsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketAnalyticsConfiguration.html)
7169//
7170//    * ListBucketAnalyticsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketAnalyticsConfigurations.html)
7171//
7172// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7173// with awserr.Error's Code and Message methods to get detailed information about
7174// the error.
7175//
7176// See the AWS API reference guide for Amazon Simple Storage Service's
7177// API operation PutBucketAnalyticsConfiguration for usage and error information.
7178// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketAnalyticsConfiguration
7179func (c *S3) PutBucketAnalyticsConfiguration(input *PutBucketAnalyticsConfigurationInput) (*PutBucketAnalyticsConfigurationOutput, error) {
7180	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
7181	return out, req.Send()
7182}
7183
7184// PutBucketAnalyticsConfigurationWithContext is the same as PutBucketAnalyticsConfiguration with the addition of
7185// the ability to pass a context and additional request options.
7186//
7187// See PutBucketAnalyticsConfiguration for details on how to use this API operation.
7188//
7189// The context must be non-nil and will be used for request cancellation. If
7190// the context is nil a panic will occur. In the future the SDK may create
7191// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7192// for more information on using Contexts.
7193func (c *S3) PutBucketAnalyticsConfigurationWithContext(ctx aws.Context, input *PutBucketAnalyticsConfigurationInput, opts ...request.Option) (*PutBucketAnalyticsConfigurationOutput, error) {
7194	req, out := c.PutBucketAnalyticsConfigurationRequest(input)
7195	req.SetContext(ctx)
7196	req.ApplyOptions(opts...)
7197	return out, req.Send()
7198}
7199
7200const opPutBucketCors = "PutBucketCors"
7201
7202// PutBucketCorsRequest generates a "aws/request.Request" representing the
7203// client's request for the PutBucketCors operation. The "output" return
7204// value will be populated with the request's response once the request completes
7205// successfully.
7206//
7207// Use "Send" method on the returned Request to send the API call to the service.
7208// the "output" return value is not valid until after Send returns without error.
7209//
7210// See PutBucketCors for more information on using the PutBucketCors
7211// API call, and error handling.
7212//
7213// This method is useful when you want to inject custom logic or configuration
7214// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7215//
7216//
7217//    // Example sending a request using the PutBucketCorsRequest method.
7218//    req, resp := client.PutBucketCorsRequest(params)
7219//
7220//    err := req.Send()
7221//    if err == nil { // resp is now filled
7222//        fmt.Println(resp)
7223//    }
7224//
7225// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
7226func (c *S3) PutBucketCorsRequest(input *PutBucketCorsInput) (req *request.Request, output *PutBucketCorsOutput) {
7227	op := &request.Operation{
7228		Name:       opPutBucketCors,
7229		HTTPMethod: "PUT",
7230		HTTPPath:   "/{Bucket}?cors",
7231	}
7232
7233	if input == nil {
7234		input = &PutBucketCorsInput{}
7235	}
7236
7237	output = &PutBucketCorsOutput{}
7238	req = c.newRequest(op, input, output)
7239	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7240	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7241		Name: "contentMd5Handler",
7242		Fn:   checksum.AddBodyContentMD5Handler,
7243	})
7244	return
7245}
7246
7247// PutBucketCors API operation for Amazon Simple Storage Service.
7248//
7249// Sets the cors configuration for your bucket. If the configuration exists,
7250// Amazon S3 replaces it.
7251//
7252// To use this operation, you must be allowed to perform the s3:PutBucketCORS
7253// action. By default, the bucket owner has this permission and can grant it
7254// to others.
7255//
7256// You set this configuration on a bucket so that the bucket can service cross-origin
7257// requests. For example, you might want to enable a request whose origin is
7258// http://www.example.com to access your Amazon S3 bucket at my.example.bucket.com
7259// by using the browser's XMLHttpRequest capability.
7260//
7261// To enable cross-origin resource sharing (CORS) on a bucket, you add the cors
7262// subresource to the bucket. The cors subresource is an XML document in which
7263// you configure rules that identify origins and the HTTP methods that can be
7264// executed on your bucket. The document is limited to 64 KB in size.
7265//
7266// When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request)
7267// against a bucket, it evaluates the cors configuration on the bucket and uses
7268// the first CORSRule rule that matches the incoming browser request to enable
7269// a cross-origin request. For a rule to match, the following conditions must
7270// be met:
7271//
7272//    * The request's Origin header must match AllowedOrigin elements.
7273//
7274//    * The request method (for example, GET, PUT, HEAD, and so on) or the Access-Control-Request-Method
7275//    header in case of a pre-flight OPTIONS request must be one of the AllowedMethod
7276//    elements.
7277//
7278//    * Every header specified in the Access-Control-Request-Headers request
7279//    header of a pre-flight request must match an AllowedHeader element.
7280//
7281// For more information about CORS, go to Enabling Cross-Origin Resource Sharing
7282// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
7283// S3 User Guide.
7284//
7285// Related Resources
7286//
7287//    * GetBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketCors.html)
7288//
7289//    * DeleteBucketCors (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketCors.html)
7290//
7291//    * RESTOPTIONSobject (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTOPTIONSobject.html)
7292//
7293// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7294// with awserr.Error's Code and Message methods to get detailed information about
7295// the error.
7296//
7297// See the AWS API reference guide for Amazon Simple Storage Service's
7298// API operation PutBucketCors for usage and error information.
7299// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketCors
7300func (c *S3) PutBucketCors(input *PutBucketCorsInput) (*PutBucketCorsOutput, error) {
7301	req, out := c.PutBucketCorsRequest(input)
7302	return out, req.Send()
7303}
7304
7305// PutBucketCorsWithContext is the same as PutBucketCors with the addition of
7306// the ability to pass a context and additional request options.
7307//
7308// See PutBucketCors for details on how to use this API operation.
7309//
7310// The context must be non-nil and will be used for request cancellation. If
7311// the context is nil a panic will occur. In the future the SDK may create
7312// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7313// for more information on using Contexts.
7314func (c *S3) PutBucketCorsWithContext(ctx aws.Context, input *PutBucketCorsInput, opts ...request.Option) (*PutBucketCorsOutput, error) {
7315	req, out := c.PutBucketCorsRequest(input)
7316	req.SetContext(ctx)
7317	req.ApplyOptions(opts...)
7318	return out, req.Send()
7319}
7320
7321const opPutBucketEncryption = "PutBucketEncryption"
7322
7323// PutBucketEncryptionRequest generates a "aws/request.Request" representing the
7324// client's request for the PutBucketEncryption operation. The "output" return
7325// value will be populated with the request's response once the request completes
7326// successfully.
7327//
7328// Use "Send" method on the returned Request to send the API call to the service.
7329// the "output" return value is not valid until after Send returns without error.
7330//
7331// See PutBucketEncryption for more information on using the PutBucketEncryption
7332// API call, and error handling.
7333//
7334// This method is useful when you want to inject custom logic or configuration
7335// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7336//
7337//
7338//    // Example sending a request using the PutBucketEncryptionRequest method.
7339//    req, resp := client.PutBucketEncryptionRequest(params)
7340//
7341//    err := req.Send()
7342//    if err == nil { // resp is now filled
7343//        fmt.Println(resp)
7344//    }
7345//
7346// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
7347func (c *S3) PutBucketEncryptionRequest(input *PutBucketEncryptionInput) (req *request.Request, output *PutBucketEncryptionOutput) {
7348	op := &request.Operation{
7349		Name:       opPutBucketEncryption,
7350		HTTPMethod: "PUT",
7351		HTTPPath:   "/{Bucket}?encryption",
7352	}
7353
7354	if input == nil {
7355		input = &PutBucketEncryptionInput{}
7356	}
7357
7358	output = &PutBucketEncryptionOutput{}
7359	req = c.newRequest(op, input, output)
7360	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7361	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7362		Name: "contentMd5Handler",
7363		Fn:   checksum.AddBodyContentMD5Handler,
7364	})
7365	return
7366}
7367
7368// PutBucketEncryption API operation for Amazon Simple Storage Service.
7369//
7370// This action uses the encryption subresource to configure default encryption
7371// and Amazon S3 Bucket Key for an existing bucket.
7372//
7373// Default encryption for a bucket can use server-side encryption with Amazon
7374// S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). If you specify
7375// default encryption using SSE-KMS, you can also configure Amazon S3 Bucket
7376// Key. For information about default encryption, see Amazon S3 default bucket
7377// encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
7378// in the Amazon S3 User Guide. For more information about S3 Bucket Keys, see
7379// Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
7380// in the Amazon S3 User Guide.
7381//
7382// This action requires Amazon Web Services Signature Version 4. For more information,
7383// see Authenticating Requests (Amazon Web Services Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html).
7384//
7385// To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration
7386// action. The bucket owner has this permission by default. The bucket owner
7387// can grant this permission to others. For more information about permissions,
7388// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
7389// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7390// in the Amazon S3 User Guide.
7391//
7392// Related Resources
7393//
7394//    * GetBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html)
7395//
7396//    * DeleteBucketEncryption (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html)
7397//
7398// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7399// with awserr.Error's Code and Message methods to get detailed information about
7400// the error.
7401//
7402// See the AWS API reference guide for Amazon Simple Storage Service's
7403// API operation PutBucketEncryption for usage and error information.
7404// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketEncryption
7405func (c *S3) PutBucketEncryption(input *PutBucketEncryptionInput) (*PutBucketEncryptionOutput, error) {
7406	req, out := c.PutBucketEncryptionRequest(input)
7407	return out, req.Send()
7408}
7409
7410// PutBucketEncryptionWithContext is the same as PutBucketEncryption with the addition of
7411// the ability to pass a context and additional request options.
7412//
7413// See PutBucketEncryption for details on how to use this API operation.
7414//
7415// The context must be non-nil and will be used for request cancellation. If
7416// the context is nil a panic will occur. In the future the SDK may create
7417// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7418// for more information on using Contexts.
7419func (c *S3) PutBucketEncryptionWithContext(ctx aws.Context, input *PutBucketEncryptionInput, opts ...request.Option) (*PutBucketEncryptionOutput, error) {
7420	req, out := c.PutBucketEncryptionRequest(input)
7421	req.SetContext(ctx)
7422	req.ApplyOptions(opts...)
7423	return out, req.Send()
7424}
7425
7426const opPutBucketIntelligentTieringConfiguration = "PutBucketIntelligentTieringConfiguration"
7427
7428// PutBucketIntelligentTieringConfigurationRequest generates a "aws/request.Request" representing the
7429// client's request for the PutBucketIntelligentTieringConfiguration operation. The "output" return
7430// value will be populated with the request's response once the request completes
7431// successfully.
7432//
7433// Use "Send" method on the returned Request to send the API call to the service.
7434// the "output" return value is not valid until after Send returns without error.
7435//
7436// See PutBucketIntelligentTieringConfiguration for more information on using the PutBucketIntelligentTieringConfiguration
7437// API call, and error handling.
7438//
7439// This method is useful when you want to inject custom logic or configuration
7440// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7441//
7442//
7443//    // Example sending a request using the PutBucketIntelligentTieringConfigurationRequest method.
7444//    req, resp := client.PutBucketIntelligentTieringConfigurationRequest(params)
7445//
7446//    err := req.Send()
7447//    if err == nil { // resp is now filled
7448//        fmt.Println(resp)
7449//    }
7450//
7451// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
7452func (c *S3) PutBucketIntelligentTieringConfigurationRequest(input *PutBucketIntelligentTieringConfigurationInput) (req *request.Request, output *PutBucketIntelligentTieringConfigurationOutput) {
7453	op := &request.Operation{
7454		Name:       opPutBucketIntelligentTieringConfiguration,
7455		HTTPMethod: "PUT",
7456		HTTPPath:   "/{Bucket}?intelligent-tiering",
7457	}
7458
7459	if input == nil {
7460		input = &PutBucketIntelligentTieringConfigurationInput{}
7461	}
7462
7463	output = &PutBucketIntelligentTieringConfigurationOutput{}
7464	req = c.newRequest(op, input, output)
7465	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7466	return
7467}
7468
7469// PutBucketIntelligentTieringConfiguration API operation for Amazon Simple Storage Service.
7470//
7471// Puts a S3 Intelligent-Tiering configuration to the specified bucket. You
7472// can have up to 1,000 S3 Intelligent-Tiering configurations per bucket.
7473//
7474// The S3 Intelligent-Tiering storage class is designed to optimize storage
7475// costs by automatically moving data to the most cost-effective storage access
7476// tier, without performance impact or operational overhead. S3 Intelligent-Tiering
7477// delivers automatic cost savings in two low latency and high throughput access
7478// tiers. For data that can be accessed asynchronously, you can choose to activate
7479// automatic archiving capabilities within the S3 Intelligent-Tiering storage
7480// class.
7481//
7482// The S3 Intelligent-Tiering storage class is the ideal storage class for data
7483// with unknown, changing, or unpredictable access patterns, independent of
7484// object size or retention period. If the size of an object is less than 128
7485// KB, it is not eligible for auto-tiering. Smaller objects can be stored, but
7486// they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering
7487// storage class.
7488//
7489// For more information, see Storage class for automatically optimizing frequently
7490// and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
7491//
7492// Operations related to PutBucketIntelligentTieringConfiguration include:
7493//
7494//    * DeleteBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketIntelligentTieringConfiguration.html)
7495//
7496//    * GetBucketIntelligentTieringConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketIntelligentTieringConfiguration.html)
7497//
7498//    * ListBucketIntelligentTieringConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketIntelligentTieringConfigurations.html)
7499//
7500// You only need S3 Intelligent-Tiering enabled on a bucket if you want to automatically
7501// move objects stored in the S3 Intelligent-Tiering storage class to the Archive
7502// Access or Deep Archive Access tier.
7503//
7504// Special Errors
7505//
7506//    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
7507//
7508//    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
7509//    attempting to create a new configuration but have already reached the
7510//    1,000-configuration limit.
7511//
7512//    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
7513//    of the specified bucket, or you do not have the s3:PutIntelligentTieringConfiguration
7514//    bucket permission to set the configuration on the bucket.
7515//
7516// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7517// with awserr.Error's Code and Message methods to get detailed information about
7518// the error.
7519//
7520// See the AWS API reference guide for Amazon Simple Storage Service's
7521// API operation PutBucketIntelligentTieringConfiguration for usage and error information.
7522// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketIntelligentTieringConfiguration
7523func (c *S3) PutBucketIntelligentTieringConfiguration(input *PutBucketIntelligentTieringConfigurationInput) (*PutBucketIntelligentTieringConfigurationOutput, error) {
7524	req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
7525	return out, req.Send()
7526}
7527
7528// PutBucketIntelligentTieringConfigurationWithContext is the same as PutBucketIntelligentTieringConfiguration with the addition of
7529// the ability to pass a context and additional request options.
7530//
7531// See PutBucketIntelligentTieringConfiguration for details on how to use this API operation.
7532//
7533// The context must be non-nil and will be used for request cancellation. If
7534// the context is nil a panic will occur. In the future the SDK may create
7535// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7536// for more information on using Contexts.
7537func (c *S3) PutBucketIntelligentTieringConfigurationWithContext(ctx aws.Context, input *PutBucketIntelligentTieringConfigurationInput, opts ...request.Option) (*PutBucketIntelligentTieringConfigurationOutput, error) {
7538	req, out := c.PutBucketIntelligentTieringConfigurationRequest(input)
7539	req.SetContext(ctx)
7540	req.ApplyOptions(opts...)
7541	return out, req.Send()
7542}
7543
7544const opPutBucketInventoryConfiguration = "PutBucketInventoryConfiguration"
7545
7546// PutBucketInventoryConfigurationRequest generates a "aws/request.Request" representing the
7547// client's request for the PutBucketInventoryConfiguration operation. The "output" return
7548// value will be populated with the request's response once the request completes
7549// successfully.
7550//
7551// Use "Send" method on the returned Request to send the API call to the service.
7552// the "output" return value is not valid until after Send returns without error.
7553//
7554// See PutBucketInventoryConfiguration for more information on using the PutBucketInventoryConfiguration
7555// API call, and error handling.
7556//
7557// This method is useful when you want to inject custom logic or configuration
7558// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7559//
7560//
7561//    // Example sending a request using the PutBucketInventoryConfigurationRequest method.
7562//    req, resp := client.PutBucketInventoryConfigurationRequest(params)
7563//
7564//    err := req.Send()
7565//    if err == nil { // resp is now filled
7566//        fmt.Println(resp)
7567//    }
7568//
7569// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
7570func (c *S3) PutBucketInventoryConfigurationRequest(input *PutBucketInventoryConfigurationInput) (req *request.Request, output *PutBucketInventoryConfigurationOutput) {
7571	op := &request.Operation{
7572		Name:       opPutBucketInventoryConfiguration,
7573		HTTPMethod: "PUT",
7574		HTTPPath:   "/{Bucket}?inventory",
7575	}
7576
7577	if input == nil {
7578		input = &PutBucketInventoryConfigurationInput{}
7579	}
7580
7581	output = &PutBucketInventoryConfigurationOutput{}
7582	req = c.newRequest(op, input, output)
7583	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7584	return
7585}
7586
7587// PutBucketInventoryConfiguration API operation for Amazon Simple Storage Service.
7588//
7589// This implementation of the PUT action adds an inventory configuration (identified
7590// by the inventory ID) to the bucket. You can have up to 1,000 inventory configurations
7591// per bucket.
7592//
7593// Amazon S3 inventory generates inventories of the objects in the bucket on
7594// a daily or weekly basis, and the results are published to a flat file. The
7595// bucket that is inventoried is called the source bucket, and the bucket where
7596// the inventory flat file is stored is called the destination bucket. The destination
7597// bucket must be in the same Amazon Web Services Region as the source bucket.
7598//
7599// When you configure an inventory for a source bucket, you specify the destination
7600// bucket where you want the inventory to be stored, and whether to generate
7601// the inventory daily or weekly. You can also configure what object metadata
7602// to include and whether to inventory all object versions or only current versions.
7603// For more information, see Amazon S3 Inventory (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html)
7604// in the Amazon S3 User Guide.
7605//
7606// You must create a bucket policy on the destination bucket to grant permissions
7607// to Amazon S3 to write objects to the bucket in the defined location. For
7608// an example policy, see Granting Permissions for Amazon S3 Inventory and Storage
7609// Class Analysis (https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-9).
7610//
7611// To use this operation, you must have permissions to perform the s3:PutInventoryConfiguration
7612// action. The bucket owner has this permission by default and can grant this
7613// permission to others. For more information about permissions, see Permissions
7614// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
7615// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7616// in the Amazon S3 User Guide.
7617//
7618// Special Errors
7619//
7620//    * HTTP 400 Bad Request Error Code: InvalidArgument Cause: Invalid Argument
7621//
7622//    * HTTP 400 Bad Request Error Code: TooManyConfigurations Cause: You are
7623//    attempting to create a new configuration but have already reached the
7624//    1,000-configuration limit.
7625//
7626//    * HTTP 403 Forbidden Error Code: AccessDenied Cause: You are not the owner
7627//    of the specified bucket, or you do not have the s3:PutInventoryConfiguration
7628//    bucket permission to set the configuration on the bucket.
7629//
7630// Related Resources
7631//
7632//    * GetBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketInventoryConfiguration.html)
7633//
7634//    * DeleteBucketInventoryConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketInventoryConfiguration.html)
7635//
7636//    * ListBucketInventoryConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketInventoryConfigurations.html)
7637//
7638// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7639// with awserr.Error's Code and Message methods to get detailed information about
7640// the error.
7641//
7642// See the AWS API reference guide for Amazon Simple Storage Service's
7643// API operation PutBucketInventoryConfiguration for usage and error information.
7644// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketInventoryConfiguration
7645func (c *S3) PutBucketInventoryConfiguration(input *PutBucketInventoryConfigurationInput) (*PutBucketInventoryConfigurationOutput, error) {
7646	req, out := c.PutBucketInventoryConfigurationRequest(input)
7647	return out, req.Send()
7648}
7649
7650// PutBucketInventoryConfigurationWithContext is the same as PutBucketInventoryConfiguration with the addition of
7651// the ability to pass a context and additional request options.
7652//
7653// See PutBucketInventoryConfiguration for details on how to use this API operation.
7654//
7655// The context must be non-nil and will be used for request cancellation. If
7656// the context is nil a panic will occur. In the future the SDK may create
7657// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7658// for more information on using Contexts.
7659func (c *S3) PutBucketInventoryConfigurationWithContext(ctx aws.Context, input *PutBucketInventoryConfigurationInput, opts ...request.Option) (*PutBucketInventoryConfigurationOutput, error) {
7660	req, out := c.PutBucketInventoryConfigurationRequest(input)
7661	req.SetContext(ctx)
7662	req.ApplyOptions(opts...)
7663	return out, req.Send()
7664}
7665
7666const opPutBucketLifecycle = "PutBucketLifecycle"
7667
7668// PutBucketLifecycleRequest generates a "aws/request.Request" representing the
7669// client's request for the PutBucketLifecycle operation. The "output" return
7670// value will be populated with the request's response once the request completes
7671// successfully.
7672//
7673// Use "Send" method on the returned Request to send the API call to the service.
7674// the "output" return value is not valid until after Send returns without error.
7675//
7676// See PutBucketLifecycle for more information on using the PutBucketLifecycle
7677// API call, and error handling.
7678//
7679// This method is useful when you want to inject custom logic or configuration
7680// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7681//
7682//
7683//    // Example sending a request using the PutBucketLifecycleRequest method.
7684//    req, resp := client.PutBucketLifecycleRequest(params)
7685//
7686//    err := req.Send()
7687//    if err == nil { // resp is now filled
7688//        fmt.Println(resp)
7689//    }
7690//
7691// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7692//
7693// Deprecated: PutBucketLifecycle has been deprecated
7694func (c *S3) PutBucketLifecycleRequest(input *PutBucketLifecycleInput) (req *request.Request, output *PutBucketLifecycleOutput) {
7695	if c.Client.Config.Logger != nil {
7696		c.Client.Config.Logger.Log("This operation, PutBucketLifecycle, has been deprecated")
7697	}
7698	op := &request.Operation{
7699		Name:       opPutBucketLifecycle,
7700		HTTPMethod: "PUT",
7701		HTTPPath:   "/{Bucket}?lifecycle",
7702	}
7703
7704	if input == nil {
7705		input = &PutBucketLifecycleInput{}
7706	}
7707
7708	output = &PutBucketLifecycleOutput{}
7709	req = c.newRequest(op, input, output)
7710	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7711	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7712		Name: "contentMd5Handler",
7713		Fn:   checksum.AddBodyContentMD5Handler,
7714	})
7715	return
7716}
7717
7718// PutBucketLifecycle API operation for Amazon Simple Storage Service.
7719//
7720//
7721// For an updated version of this API, see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html).
7722// This version has been deprecated. Existing lifecycle configurations will
7723// work. For new lifecycle configurations, use the updated API.
7724//
7725// Creates a new lifecycle configuration for the bucket or replaces an existing
7726// lifecycle configuration. For information about lifecycle configuration, see
7727// Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7728// in the Amazon S3 User Guide.
7729//
7730// By default, all Amazon S3 resources, including buckets, objects, and related
7731// subresources (for example, lifecycle configuration and website configuration)
7732// are private. Only the resource owner, the Amazon Web Services account that
7733// created the resource, can access it. The resource owner can optionally grant
7734// access permissions to others by writing an access policy. For this operation,
7735// users must get the s3:PutLifecycleConfiguration permission.
7736//
7737// You can also explicitly deny permissions. Explicit denial also supersedes
7738// any other permissions. If you want to prevent users or accounts from removing
7739// or deleting objects from your bucket, you must deny them permissions for
7740// the following actions:
7741//
7742//    * s3:DeleteObject
7743//
7744//    * s3:DeleteObjectVersion
7745//
7746//    * s3:PutLifecycleConfiguration
7747//
7748// For more information about permissions, see Managing Access Permissions to
7749// your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7750// in the Amazon S3 User Guide.
7751//
7752// For more examples of transitioning objects to storage classes such as STANDARD_IA
7753// or ONEZONE_IA, see Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#lifecycle-configuration-examples).
7754//
7755// Related Resources
7756//
7757//    * GetBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycle.html)(Deprecated)
7758//
7759//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
7760//
7761//    * RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
7762//
7763//    * By default, a resource owner—in this case, a bucket owner, which is
7764//    the Amazon Web Services account that created the bucket—can perform
7765//    any of the operations. A resource owner can also grant others permission
7766//    to perform the operation. For more information, see the following topics
7767//    in the Amazon S3 User Guide: Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
7768//    Managing Access Permissions to your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
7769//
7770// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7771// with awserr.Error's Code and Message methods to get detailed information about
7772// the error.
7773//
7774// See the AWS API reference guide for Amazon Simple Storage Service's
7775// API operation PutBucketLifecycle for usage and error information.
7776// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycle
7777//
7778// Deprecated: PutBucketLifecycle has been deprecated
7779func (c *S3) PutBucketLifecycle(input *PutBucketLifecycleInput) (*PutBucketLifecycleOutput, error) {
7780	req, out := c.PutBucketLifecycleRequest(input)
7781	return out, req.Send()
7782}
7783
7784// PutBucketLifecycleWithContext is the same as PutBucketLifecycle with the addition of
7785// the ability to pass a context and additional request options.
7786//
7787// See PutBucketLifecycle for details on how to use this API operation.
7788//
7789// The context must be non-nil and will be used for request cancellation. If
7790// the context is nil a panic will occur. In the future the SDK may create
7791// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7792// for more information on using Contexts.
7793//
7794// Deprecated: PutBucketLifecycleWithContext has been deprecated
7795func (c *S3) PutBucketLifecycleWithContext(ctx aws.Context, input *PutBucketLifecycleInput, opts ...request.Option) (*PutBucketLifecycleOutput, error) {
7796	req, out := c.PutBucketLifecycleRequest(input)
7797	req.SetContext(ctx)
7798	req.ApplyOptions(opts...)
7799	return out, req.Send()
7800}
7801
7802const opPutBucketLifecycleConfiguration = "PutBucketLifecycleConfiguration"
7803
7804// PutBucketLifecycleConfigurationRequest generates a "aws/request.Request" representing the
7805// client's request for the PutBucketLifecycleConfiguration operation. The "output" return
7806// value will be populated with the request's response once the request completes
7807// successfully.
7808//
7809// Use "Send" method on the returned Request to send the API call to the service.
7810// the "output" return value is not valid until after Send returns without error.
7811//
7812// See PutBucketLifecycleConfiguration for more information on using the PutBucketLifecycleConfiguration
7813// API call, and error handling.
7814//
7815// This method is useful when you want to inject custom logic or configuration
7816// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7817//
7818//
7819//    // Example sending a request using the PutBucketLifecycleConfigurationRequest method.
7820//    req, resp := client.PutBucketLifecycleConfigurationRequest(params)
7821//
7822//    err := req.Send()
7823//    if err == nil { // resp is now filled
7824//        fmt.Println(resp)
7825//    }
7826//
7827// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7828func (c *S3) PutBucketLifecycleConfigurationRequest(input *PutBucketLifecycleConfigurationInput) (req *request.Request, output *PutBucketLifecycleConfigurationOutput) {
7829	op := &request.Operation{
7830		Name:       opPutBucketLifecycleConfiguration,
7831		HTTPMethod: "PUT",
7832		HTTPPath:   "/{Bucket}?lifecycle",
7833	}
7834
7835	if input == nil {
7836		input = &PutBucketLifecycleConfigurationInput{}
7837	}
7838
7839	output = &PutBucketLifecycleConfigurationOutput{}
7840	req = c.newRequest(op, input, output)
7841	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7842	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7843		Name: "contentMd5Handler",
7844		Fn:   checksum.AddBodyContentMD5Handler,
7845	})
7846	return
7847}
7848
7849// PutBucketLifecycleConfiguration API operation for Amazon Simple Storage Service.
7850//
7851// Creates a new lifecycle configuration for the bucket or replaces an existing
7852// lifecycle configuration. For information about lifecycle configuration, see
7853// Managing your storage lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html).
7854//
7855// Bucket lifecycle configuration now supports specifying a lifecycle rule using
7856// an object key name prefix, one or more object tags, or a combination of both.
7857// Accordingly, this section describes the latest API. The previous version
7858// of the API supported filtering based only on an object key name prefix, which
7859// is supported for backward compatibility. For the related API description,
7860// see PutBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html).
7861//
7862// Rules
7863//
7864// You specify the lifecycle configuration in your request body. The lifecycle
7865// configuration is specified as XML consisting of one or more rules. Each rule
7866// consists of the following:
7867//
7868//    * Filter identifying a subset of objects to which the rule applies. The
7869//    filter can be based on a key name prefix, object tags, or a combination
7870//    of both.
7871//
7872//    * Status whether the rule is in effect.
7873//
7874//    * One or more lifecycle transition and expiration actions that you want
7875//    Amazon S3 to perform on the objects identified by the filter. If the state
7876//    of your bucket is versioning-enabled or versioning-suspended, you can
7877//    have many versions of the same object (one current version and zero or
7878//    more noncurrent versions). Amazon S3 provides predefined actions that
7879//    you can specify for current and noncurrent object versions.
7880//
7881// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
7882// and Lifecycle Configuration Elements (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html).
7883//
7884// Permissions
7885//
7886// By default, all Amazon S3 resources are private, including buckets, objects,
7887// and related subresources (for example, lifecycle configuration and website
7888// configuration). Only the resource owner (that is, the Amazon Web Services
7889// account that created it) can access the resource. The resource owner can
7890// optionally grant access permissions to others by writing an access policy.
7891// For this operation, a user must get the s3:PutLifecycleConfiguration permission.
7892//
7893// You can also explicitly deny permissions. Explicit deny also supersedes any
7894// other permissions. If you want to block users or accounts from removing or
7895// deleting objects from your bucket, you must deny them permissions for the
7896// following actions:
7897//
7898//    * s3:DeleteObject
7899//
7900//    * s3:DeleteObjectVersion
7901//
7902//    * s3:PutLifecycleConfiguration
7903//
7904// For more information about permissions, see Managing Access Permissions to
7905// Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
7906//
7907// The following are related to PutBucketLifecycleConfiguration:
7908//
7909//    * Examples of Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html)
7910//
7911//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
7912//
7913//    * DeleteBucketLifecycle (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketLifecycle.html)
7914//
7915// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
7916// with awserr.Error's Code and Message methods to get detailed information about
7917// the error.
7918//
7919// See the AWS API reference guide for Amazon Simple Storage Service's
7920// API operation PutBucketLifecycleConfiguration for usage and error information.
7921// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration
7922func (c *S3) PutBucketLifecycleConfiguration(input *PutBucketLifecycleConfigurationInput) (*PutBucketLifecycleConfigurationOutput, error) {
7923	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7924	return out, req.Send()
7925}
7926
7927// PutBucketLifecycleConfigurationWithContext is the same as PutBucketLifecycleConfiguration with the addition of
7928// the ability to pass a context and additional request options.
7929//
7930// See PutBucketLifecycleConfiguration for details on how to use this API operation.
7931//
7932// The context must be non-nil and will be used for request cancellation. If
7933// the context is nil a panic will occur. In the future the SDK may create
7934// sub-contexts for http.Requests. See https://golang.org/pkg/context/
7935// for more information on using Contexts.
7936func (c *S3) PutBucketLifecycleConfigurationWithContext(ctx aws.Context, input *PutBucketLifecycleConfigurationInput, opts ...request.Option) (*PutBucketLifecycleConfigurationOutput, error) {
7937	req, out := c.PutBucketLifecycleConfigurationRequest(input)
7938	req.SetContext(ctx)
7939	req.ApplyOptions(opts...)
7940	return out, req.Send()
7941}
7942
7943const opPutBucketLogging = "PutBucketLogging"
7944
7945// PutBucketLoggingRequest generates a "aws/request.Request" representing the
7946// client's request for the PutBucketLogging operation. The "output" return
7947// value will be populated with the request's response once the request completes
7948// successfully.
7949//
7950// Use "Send" method on the returned Request to send the API call to the service.
7951// the "output" return value is not valid until after Send returns without error.
7952//
7953// See PutBucketLogging for more information on using the PutBucketLogging
7954// API call, and error handling.
7955//
7956// This method is useful when you want to inject custom logic or configuration
7957// into the SDK's request lifecycle. Such as custom headers, or retry logic.
7958//
7959//
7960//    // Example sending a request using the PutBucketLoggingRequest method.
7961//    req, resp := client.PutBucketLoggingRequest(params)
7962//
7963//    err := req.Send()
7964//    if err == nil { // resp is now filled
7965//        fmt.Println(resp)
7966//    }
7967//
7968// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
7969func (c *S3) PutBucketLoggingRequest(input *PutBucketLoggingInput) (req *request.Request, output *PutBucketLoggingOutput) {
7970	op := &request.Operation{
7971		Name:       opPutBucketLogging,
7972		HTTPMethod: "PUT",
7973		HTTPPath:   "/{Bucket}?logging",
7974	}
7975
7976	if input == nil {
7977		input = &PutBucketLoggingInput{}
7978	}
7979
7980	output = &PutBucketLoggingOutput{}
7981	req = c.newRequest(op, input, output)
7982	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
7983	req.Handlers.Build.PushBackNamed(request.NamedHandler{
7984		Name: "contentMd5Handler",
7985		Fn:   checksum.AddBodyContentMD5Handler,
7986	})
7987	return
7988}
7989
7990// PutBucketLogging API operation for Amazon Simple Storage Service.
7991//
7992// Set the logging parameters for a bucket and to specify permissions for who
7993// can view and modify the logging parameters. All logs are saved to buckets
7994// in the same Amazon Web Services Region as the source bucket. To set the logging
7995// status of a bucket, you must be the bucket owner.
7996//
7997// The bucket owner is automatically granted FULL_CONTROL to all logs. You use
7998// the Grantee request element to grant access to other people. The Permissions
7999// request element specifies the kind of access the grantee has to the logs.
8000//
8001// Grantee Values
8002//
8003// You can specify the person (grantee) to whom you're assigning access rights
8004// (using request elements) in the following ways:
8005//
8006//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8007//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
8008//    </Grantee> DisplayName is optional and ignored in the request.
8009//
8010//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8011//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress></Grantee>
8012//    The grantee is resolved to the CanonicalUser and, in a response to a GET
8013//    Object acl request, appears as the CanonicalUser.
8014//
8015//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
8016//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
8017//
8018// To enable logging, you use LoggingEnabled and its children request elements.
8019// To disable logging, you use an empty BucketLoggingStatus request element:
8020//
8021// <BucketLoggingStatus xmlns="http://doc.s3.amazonaws.com/2006-03-01" />
8022//
8023// For more information about server access logging, see Server Access Logging
8024// (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerLogs.html).
8025//
8026// For more information about creating a bucket, see CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html).
8027// For more information about returning the logging status of a bucket, see
8028// GetBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html).
8029//
8030// The following operations are related to PutBucketLogging:
8031//
8032//    * PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
8033//
8034//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
8035//
8036//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
8037//
8038//    * GetBucketLogging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLogging.html)
8039//
8040// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8041// with awserr.Error's Code and Message methods to get detailed information about
8042// the error.
8043//
8044// See the AWS API reference guide for Amazon Simple Storage Service's
8045// API operation PutBucketLogging for usage and error information.
8046// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLogging
8047func (c *S3) PutBucketLogging(input *PutBucketLoggingInput) (*PutBucketLoggingOutput, error) {
8048	req, out := c.PutBucketLoggingRequest(input)
8049	return out, req.Send()
8050}
8051
8052// PutBucketLoggingWithContext is the same as PutBucketLogging with the addition of
8053// the ability to pass a context and additional request options.
8054//
8055// See PutBucketLogging for details on how to use this API operation.
8056//
8057// The context must be non-nil and will be used for request cancellation. If
8058// the context is nil a panic will occur. In the future the SDK may create
8059// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8060// for more information on using Contexts.
8061func (c *S3) PutBucketLoggingWithContext(ctx aws.Context, input *PutBucketLoggingInput, opts ...request.Option) (*PutBucketLoggingOutput, error) {
8062	req, out := c.PutBucketLoggingRequest(input)
8063	req.SetContext(ctx)
8064	req.ApplyOptions(opts...)
8065	return out, req.Send()
8066}
8067
8068const opPutBucketMetricsConfiguration = "PutBucketMetricsConfiguration"
8069
8070// PutBucketMetricsConfigurationRequest generates a "aws/request.Request" representing the
8071// client's request for the PutBucketMetricsConfiguration operation. The "output" return
8072// value will be populated with the request's response once the request completes
8073// successfully.
8074//
8075// Use "Send" method on the returned Request to send the API call to the service.
8076// the "output" return value is not valid until after Send returns without error.
8077//
8078// See PutBucketMetricsConfiguration for more information on using the PutBucketMetricsConfiguration
8079// API call, and error handling.
8080//
8081// This method is useful when you want to inject custom logic or configuration
8082// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8083//
8084//
8085//    // Example sending a request using the PutBucketMetricsConfigurationRequest method.
8086//    req, resp := client.PutBucketMetricsConfigurationRequest(params)
8087//
8088//    err := req.Send()
8089//    if err == nil { // resp is now filled
8090//        fmt.Println(resp)
8091//    }
8092//
8093// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
8094func (c *S3) PutBucketMetricsConfigurationRequest(input *PutBucketMetricsConfigurationInput) (req *request.Request, output *PutBucketMetricsConfigurationOutput) {
8095	op := &request.Operation{
8096		Name:       opPutBucketMetricsConfiguration,
8097		HTTPMethod: "PUT",
8098		HTTPPath:   "/{Bucket}?metrics",
8099	}
8100
8101	if input == nil {
8102		input = &PutBucketMetricsConfigurationInput{}
8103	}
8104
8105	output = &PutBucketMetricsConfigurationOutput{}
8106	req = c.newRequest(op, input, output)
8107	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8108	return
8109}
8110
8111// PutBucketMetricsConfiguration API operation for Amazon Simple Storage Service.
8112//
8113// Sets a metrics configuration (specified by the metrics configuration ID)
8114// for the bucket. You can have up to 1,000 metrics configurations per bucket.
8115// If you're updating an existing metrics configuration, note that this is a
8116// full replacement of the existing metrics configuration. If you don't include
8117// the elements you want to keep, they are erased.
8118//
8119// To use this operation, you must have permissions to perform the s3:PutMetricsConfiguration
8120// action. The bucket owner has this permission by default. The bucket owner
8121// can grant this permission to others. For more information about permissions,
8122// see Permissions Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
8123// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
8124//
8125// For information about CloudWatch request metrics for Amazon S3, see Monitoring
8126// Metrics with Amazon CloudWatch (https://docs.aws.amazon.com/AmazonS3/latest/dev/cloudwatch-monitoring.html).
8127//
8128// The following operations are related to PutBucketMetricsConfiguration:
8129//
8130//    * DeleteBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketMetricsConfiguration.html)
8131//
8132//    * GetBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketMetricsConfiguration.html)
8133//
8134//    * ListBucketMetricsConfigurations (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBucketMetricsConfigurations.html)
8135//
8136// GetBucketLifecycle has the following special error:
8137//
8138//    * Error code: TooManyConfigurations Description: You are attempting to
8139//    create a new configuration but have already reached the 1,000-configuration
8140//    limit. HTTP Status Code: HTTP 400 Bad Request
8141//
8142// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8143// with awserr.Error's Code and Message methods to get detailed information about
8144// the error.
8145//
8146// See the AWS API reference guide for Amazon Simple Storage Service's
8147// API operation PutBucketMetricsConfiguration for usage and error information.
8148// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketMetricsConfiguration
8149func (c *S3) PutBucketMetricsConfiguration(input *PutBucketMetricsConfigurationInput) (*PutBucketMetricsConfigurationOutput, error) {
8150	req, out := c.PutBucketMetricsConfigurationRequest(input)
8151	return out, req.Send()
8152}
8153
8154// PutBucketMetricsConfigurationWithContext is the same as PutBucketMetricsConfiguration with the addition of
8155// the ability to pass a context and additional request options.
8156//
8157// See PutBucketMetricsConfiguration for details on how to use this API operation.
8158//
8159// The context must be non-nil and will be used for request cancellation. If
8160// the context is nil a panic will occur. In the future the SDK may create
8161// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8162// for more information on using Contexts.
8163func (c *S3) PutBucketMetricsConfigurationWithContext(ctx aws.Context, input *PutBucketMetricsConfigurationInput, opts ...request.Option) (*PutBucketMetricsConfigurationOutput, error) {
8164	req, out := c.PutBucketMetricsConfigurationRequest(input)
8165	req.SetContext(ctx)
8166	req.ApplyOptions(opts...)
8167	return out, req.Send()
8168}
8169
8170const opPutBucketNotification = "PutBucketNotification"
8171
8172// PutBucketNotificationRequest generates a "aws/request.Request" representing the
8173// client's request for the PutBucketNotification operation. The "output" return
8174// value will be populated with the request's response once the request completes
8175// successfully.
8176//
8177// Use "Send" method on the returned Request to send the API call to the service.
8178// the "output" return value is not valid until after Send returns without error.
8179//
8180// See PutBucketNotification for more information on using the PutBucketNotification
8181// API call, and error handling.
8182//
8183// This method is useful when you want to inject custom logic or configuration
8184// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8185//
8186//
8187//    // Example sending a request using the PutBucketNotificationRequest method.
8188//    req, resp := client.PutBucketNotificationRequest(params)
8189//
8190//    err := req.Send()
8191//    if err == nil { // resp is now filled
8192//        fmt.Println(resp)
8193//    }
8194//
8195// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
8196//
8197// Deprecated: PutBucketNotification has been deprecated
8198func (c *S3) PutBucketNotificationRequest(input *PutBucketNotificationInput) (req *request.Request, output *PutBucketNotificationOutput) {
8199	if c.Client.Config.Logger != nil {
8200		c.Client.Config.Logger.Log("This operation, PutBucketNotification, has been deprecated")
8201	}
8202	op := &request.Operation{
8203		Name:       opPutBucketNotification,
8204		HTTPMethod: "PUT",
8205		HTTPPath:   "/{Bucket}?notification",
8206	}
8207
8208	if input == nil {
8209		input = &PutBucketNotificationInput{}
8210	}
8211
8212	output = &PutBucketNotificationOutput{}
8213	req = c.newRequest(op, input, output)
8214	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8215	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8216		Name: "contentMd5Handler",
8217		Fn:   checksum.AddBodyContentMD5Handler,
8218	})
8219	return
8220}
8221
8222// PutBucketNotification API operation for Amazon Simple Storage Service.
8223//
8224// No longer used, see the PutBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html)
8225// operation.
8226//
8227// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8228// with awserr.Error's Code and Message methods to get detailed information about
8229// the error.
8230//
8231// See the AWS API reference guide for Amazon Simple Storage Service's
8232// API operation PutBucketNotification for usage and error information.
8233// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotification
8234//
8235// Deprecated: PutBucketNotification has been deprecated
8236func (c *S3) PutBucketNotification(input *PutBucketNotificationInput) (*PutBucketNotificationOutput, error) {
8237	req, out := c.PutBucketNotificationRequest(input)
8238	return out, req.Send()
8239}
8240
8241// PutBucketNotificationWithContext is the same as PutBucketNotification with the addition of
8242// the ability to pass a context and additional request options.
8243//
8244// See PutBucketNotification for details on how to use this API operation.
8245//
8246// The context must be non-nil and will be used for request cancellation. If
8247// the context is nil a panic will occur. In the future the SDK may create
8248// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8249// for more information on using Contexts.
8250//
8251// Deprecated: PutBucketNotificationWithContext has been deprecated
8252func (c *S3) PutBucketNotificationWithContext(ctx aws.Context, input *PutBucketNotificationInput, opts ...request.Option) (*PutBucketNotificationOutput, error) {
8253	req, out := c.PutBucketNotificationRequest(input)
8254	req.SetContext(ctx)
8255	req.ApplyOptions(opts...)
8256	return out, req.Send()
8257}
8258
8259const opPutBucketNotificationConfiguration = "PutBucketNotificationConfiguration"
8260
8261// PutBucketNotificationConfigurationRequest generates a "aws/request.Request" representing the
8262// client's request for the PutBucketNotificationConfiguration operation. The "output" return
8263// value will be populated with the request's response once the request completes
8264// successfully.
8265//
8266// Use "Send" method on the returned Request to send the API call to the service.
8267// the "output" return value is not valid until after Send returns without error.
8268//
8269// See PutBucketNotificationConfiguration for more information on using the PutBucketNotificationConfiguration
8270// API call, and error handling.
8271//
8272// This method is useful when you want to inject custom logic or configuration
8273// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8274//
8275//
8276//    // Example sending a request using the PutBucketNotificationConfigurationRequest method.
8277//    req, resp := client.PutBucketNotificationConfigurationRequest(params)
8278//
8279//    err := req.Send()
8280//    if err == nil { // resp is now filled
8281//        fmt.Println(resp)
8282//    }
8283//
8284// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
8285func (c *S3) PutBucketNotificationConfigurationRequest(input *PutBucketNotificationConfigurationInput) (req *request.Request, output *PutBucketNotificationConfigurationOutput) {
8286	op := &request.Operation{
8287		Name:       opPutBucketNotificationConfiguration,
8288		HTTPMethod: "PUT",
8289		HTTPPath:   "/{Bucket}?notification",
8290	}
8291
8292	if input == nil {
8293		input = &PutBucketNotificationConfigurationInput{}
8294	}
8295
8296	output = &PutBucketNotificationConfigurationOutput{}
8297	req = c.newRequest(op, input, output)
8298	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8299	return
8300}
8301
8302// PutBucketNotificationConfiguration API operation for Amazon Simple Storage Service.
8303//
8304// Enables notifications of specified events for a bucket. For more information
8305// about event notifications, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
8306//
8307// Using this API, you can replace an existing notification configuration. The
8308// configuration is an XML file that defines the event types that you want Amazon
8309// S3 to publish and the destination where you want Amazon S3 to publish an
8310// event notification when it detects an event of the specified type.
8311//
8312// By default, your bucket has no event notifications configured. That is, the
8313// notification configuration will be an empty NotificationConfiguration.
8314//
8315// <NotificationConfiguration>
8316//
8317// </NotificationConfiguration>
8318//
8319// This action replaces the existing notification configuration with the configuration
8320// you include in the request body.
8321//
8322// After Amazon S3 receives this request, it first verifies that any Amazon
8323// Simple Notification Service (Amazon SNS) or Amazon Simple Queue Service (Amazon
8324// SQS) destination exists, and that the bucket owner has permission to publish
8325// to it by sending a test notification. In the case of Lambda destinations,
8326// Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission
8327// to invoke the function from the Amazon S3 bucket. For more information, see
8328// Configuring Notifications for Amazon S3 Events (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
8329//
8330// You can disable notifications by adding the empty NotificationConfiguration
8331// element.
8332//
8333// By default, only the bucket owner can configure notifications on a bucket.
8334// However, bucket owners can use a bucket policy to grant permission to other
8335// users to set this configuration with s3:PutBucketNotification permission.
8336//
8337// The PUT notification is an atomic operation. For example, suppose your notification
8338// configuration includes SNS topic, SQS queue, and Lambda function configurations.
8339// When you send a PUT request with this configuration, Amazon S3 sends test
8340// messages to your SNS topic. If the message fails, the entire PUT action will
8341// fail, and Amazon S3 will not add the configuration to your bucket.
8342//
8343// Responses
8344//
8345// If the configuration in the request body includes only one TopicConfiguration
8346// specifying only the s3:ReducedRedundancyLostObject event type, the response
8347// will also include the x-amz-sns-test-message-id header containing the message
8348// ID of the test notification sent to the topic.
8349//
8350// The following action is related to PutBucketNotificationConfiguration:
8351//
8352//    * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
8353//
8354// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8355// with awserr.Error's Code and Message methods to get detailed information about
8356// the error.
8357//
8358// See the AWS API reference guide for Amazon Simple Storage Service's
8359// API operation PutBucketNotificationConfiguration for usage and error information.
8360// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketNotificationConfiguration
8361func (c *S3) PutBucketNotificationConfiguration(input *PutBucketNotificationConfigurationInput) (*PutBucketNotificationConfigurationOutput, error) {
8362	req, out := c.PutBucketNotificationConfigurationRequest(input)
8363	return out, req.Send()
8364}
8365
8366// PutBucketNotificationConfigurationWithContext is the same as PutBucketNotificationConfiguration with the addition of
8367// the ability to pass a context and additional request options.
8368//
8369// See PutBucketNotificationConfiguration for details on how to use this API operation.
8370//
8371// The context must be non-nil and will be used for request cancellation. If
8372// the context is nil a panic will occur. In the future the SDK may create
8373// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8374// for more information on using Contexts.
8375func (c *S3) PutBucketNotificationConfigurationWithContext(ctx aws.Context, input *PutBucketNotificationConfigurationInput, opts ...request.Option) (*PutBucketNotificationConfigurationOutput, error) {
8376	req, out := c.PutBucketNotificationConfigurationRequest(input)
8377	req.SetContext(ctx)
8378	req.ApplyOptions(opts...)
8379	return out, req.Send()
8380}
8381
8382const opPutBucketOwnershipControls = "PutBucketOwnershipControls"
8383
8384// PutBucketOwnershipControlsRequest generates a "aws/request.Request" representing the
8385// client's request for the PutBucketOwnershipControls operation. The "output" return
8386// value will be populated with the request's response once the request completes
8387// successfully.
8388//
8389// Use "Send" method on the returned Request to send the API call to the service.
8390// the "output" return value is not valid until after Send returns without error.
8391//
8392// See PutBucketOwnershipControls for more information on using the PutBucketOwnershipControls
8393// API call, and error handling.
8394//
8395// This method is useful when you want to inject custom logic or configuration
8396// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8397//
8398//
8399//    // Example sending a request using the PutBucketOwnershipControlsRequest method.
8400//    req, resp := client.PutBucketOwnershipControlsRequest(params)
8401//
8402//    err := req.Send()
8403//    if err == nil { // resp is now filled
8404//        fmt.Println(resp)
8405//    }
8406//
8407// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls
8408func (c *S3) PutBucketOwnershipControlsRequest(input *PutBucketOwnershipControlsInput) (req *request.Request, output *PutBucketOwnershipControlsOutput) {
8409	op := &request.Operation{
8410		Name:       opPutBucketOwnershipControls,
8411		HTTPMethod: "PUT",
8412		HTTPPath:   "/{Bucket}?ownershipControls",
8413	}
8414
8415	if input == nil {
8416		input = &PutBucketOwnershipControlsInput{}
8417	}
8418
8419	output = &PutBucketOwnershipControlsOutput{}
8420	req = c.newRequest(op, input, output)
8421	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8422	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8423		Name: "contentMd5Handler",
8424		Fn:   checksum.AddBodyContentMD5Handler,
8425	})
8426	return
8427}
8428
8429// PutBucketOwnershipControls API operation for Amazon Simple Storage Service.
8430//
8431// Creates or modifies OwnershipControls for an Amazon S3 bucket. To use this
8432// operation, you must have the s3:PutBucketOwnershipControls permission. For
8433// more information about Amazon S3 permissions, see Specifying Permissions
8434// in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
8435//
8436// For information about Amazon S3 Object Ownership, see Using Object Ownership
8437// (https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html).
8438//
8439// The following operations are related to PutBucketOwnershipControls:
8440//
8441//    * GetBucketOwnershipControls
8442//
8443//    * DeleteBucketOwnershipControls
8444//
8445// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8446// with awserr.Error's Code and Message methods to get detailed information about
8447// the error.
8448//
8449// See the AWS API reference guide for Amazon Simple Storage Service's
8450// API operation PutBucketOwnershipControls for usage and error information.
8451// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketOwnershipControls
8452func (c *S3) PutBucketOwnershipControls(input *PutBucketOwnershipControlsInput) (*PutBucketOwnershipControlsOutput, error) {
8453	req, out := c.PutBucketOwnershipControlsRequest(input)
8454	return out, req.Send()
8455}
8456
8457// PutBucketOwnershipControlsWithContext is the same as PutBucketOwnershipControls with the addition of
8458// the ability to pass a context and additional request options.
8459//
8460// See PutBucketOwnershipControls for details on how to use this API operation.
8461//
8462// The context must be non-nil and will be used for request cancellation. If
8463// the context is nil a panic will occur. In the future the SDK may create
8464// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8465// for more information on using Contexts.
8466func (c *S3) PutBucketOwnershipControlsWithContext(ctx aws.Context, input *PutBucketOwnershipControlsInput, opts ...request.Option) (*PutBucketOwnershipControlsOutput, error) {
8467	req, out := c.PutBucketOwnershipControlsRequest(input)
8468	req.SetContext(ctx)
8469	req.ApplyOptions(opts...)
8470	return out, req.Send()
8471}
8472
8473const opPutBucketPolicy = "PutBucketPolicy"
8474
8475// PutBucketPolicyRequest generates a "aws/request.Request" representing the
8476// client's request for the PutBucketPolicy operation. The "output" return
8477// value will be populated with the request's response once the request completes
8478// successfully.
8479//
8480// Use "Send" method on the returned Request to send the API call to the service.
8481// the "output" return value is not valid until after Send returns without error.
8482//
8483// See PutBucketPolicy for more information on using the PutBucketPolicy
8484// API call, and error handling.
8485//
8486// This method is useful when you want to inject custom logic or configuration
8487// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8488//
8489//
8490//    // Example sending a request using the PutBucketPolicyRequest method.
8491//    req, resp := client.PutBucketPolicyRequest(params)
8492//
8493//    err := req.Send()
8494//    if err == nil { // resp is now filled
8495//        fmt.Println(resp)
8496//    }
8497//
8498// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
8499func (c *S3) PutBucketPolicyRequest(input *PutBucketPolicyInput) (req *request.Request, output *PutBucketPolicyOutput) {
8500	op := &request.Operation{
8501		Name:       opPutBucketPolicy,
8502		HTTPMethod: "PUT",
8503		HTTPPath:   "/{Bucket}?policy",
8504	}
8505
8506	if input == nil {
8507		input = &PutBucketPolicyInput{}
8508	}
8509
8510	output = &PutBucketPolicyOutput{}
8511	req = c.newRequest(op, input, output)
8512	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8513	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8514		Name: "contentMd5Handler",
8515		Fn:   checksum.AddBodyContentMD5Handler,
8516	})
8517	return
8518}
8519
8520// PutBucketPolicy API operation for Amazon Simple Storage Service.
8521//
8522// Applies an Amazon S3 bucket policy to an Amazon S3 bucket. If you are using
8523// an identity other than the root user of the Amazon Web Services account that
8524// owns the bucket, the calling identity must have the PutBucketPolicy permissions
8525// on the specified bucket and belong to the bucket owner's account in order
8526// to use this operation.
8527//
8528// If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access
8529// Denied error. If you have the correct permissions, but you're not using an
8530// identity that belongs to the bucket owner's account, Amazon S3 returns a
8531// 405 Method Not Allowed error.
8532//
8533// As a security precaution, the root user of the Amazon Web Services account
8534// that owns a bucket can always use this operation, even if the policy explicitly
8535// denies the root user the ability to perform this action.
8536//
8537// For more information, see Bucket policy examples (https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html).
8538//
8539// The following operations are related to PutBucketPolicy:
8540//
8541//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
8542//
8543//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
8544//
8545// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8546// with awserr.Error's Code and Message methods to get detailed information about
8547// the error.
8548//
8549// See the AWS API reference guide for Amazon Simple Storage Service's
8550// API operation PutBucketPolicy for usage and error information.
8551// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketPolicy
8552func (c *S3) PutBucketPolicy(input *PutBucketPolicyInput) (*PutBucketPolicyOutput, error) {
8553	req, out := c.PutBucketPolicyRequest(input)
8554	return out, req.Send()
8555}
8556
8557// PutBucketPolicyWithContext is the same as PutBucketPolicy with the addition of
8558// the ability to pass a context and additional request options.
8559//
8560// See PutBucketPolicy for details on how to use this API operation.
8561//
8562// The context must be non-nil and will be used for request cancellation. If
8563// the context is nil a panic will occur. In the future the SDK may create
8564// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8565// for more information on using Contexts.
8566func (c *S3) PutBucketPolicyWithContext(ctx aws.Context, input *PutBucketPolicyInput, opts ...request.Option) (*PutBucketPolicyOutput, error) {
8567	req, out := c.PutBucketPolicyRequest(input)
8568	req.SetContext(ctx)
8569	req.ApplyOptions(opts...)
8570	return out, req.Send()
8571}
8572
8573const opPutBucketReplication = "PutBucketReplication"
8574
8575// PutBucketReplicationRequest generates a "aws/request.Request" representing the
8576// client's request for the PutBucketReplication operation. The "output" return
8577// value will be populated with the request's response once the request completes
8578// successfully.
8579//
8580// Use "Send" method on the returned Request to send the API call to the service.
8581// the "output" return value is not valid until after Send returns without error.
8582//
8583// See PutBucketReplication for more information on using the PutBucketReplication
8584// API call, and error handling.
8585//
8586// This method is useful when you want to inject custom logic or configuration
8587// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8588//
8589//
8590//    // Example sending a request using the PutBucketReplicationRequest method.
8591//    req, resp := client.PutBucketReplicationRequest(params)
8592//
8593//    err := req.Send()
8594//    if err == nil { // resp is now filled
8595//        fmt.Println(resp)
8596//    }
8597//
8598// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
8599func (c *S3) PutBucketReplicationRequest(input *PutBucketReplicationInput) (req *request.Request, output *PutBucketReplicationOutput) {
8600	op := &request.Operation{
8601		Name:       opPutBucketReplication,
8602		HTTPMethod: "PUT",
8603		HTTPPath:   "/{Bucket}?replication",
8604	}
8605
8606	if input == nil {
8607		input = &PutBucketReplicationInput{}
8608	}
8609
8610	output = &PutBucketReplicationOutput{}
8611	req = c.newRequest(op, input, output)
8612	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8613	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8614		Name: "contentMd5Handler",
8615		Fn:   checksum.AddBodyContentMD5Handler,
8616	})
8617	return
8618}
8619
8620// PutBucketReplication API operation for Amazon Simple Storage Service.
8621//
8622// Creates a replication configuration or replaces an existing one. For more
8623// information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
8624// in the Amazon S3 User Guide.
8625//
8626// Specify the replication configuration in the request body. In the replication
8627// configuration, you provide the name of the destination bucket or buckets
8628// where you want Amazon S3 to replicate objects, the IAM role that Amazon S3
8629// can assume to replicate objects on your behalf, and other relevant information.
8630//
8631// A replication configuration must include at least one rule, and can contain
8632// a maximum of 1,000. Each rule identifies a subset of objects to replicate
8633// by filtering the objects in the source bucket. To choose additional subsets
8634// of objects to replicate, add a rule for each subset.
8635//
8636// To specify a subset of the objects in the source bucket to apply a replication
8637// rule to, add the Filter element as a child of the Rule element. You can filter
8638// objects based on an object key prefix, one or more object tags, or both.
8639// When you add the Filter element in the configuration, you must also add the
8640// following elements: DeleteMarkerReplication, Status, and Priority.
8641//
8642// If you are using an earlier version of the replication configuration, Amazon
8643// S3 handles replication of delete markers differently. For more information,
8644// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
8645//
8646// For information about enabling versioning on a bucket, see Using Versioning
8647// (https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).
8648//
8649// Handling Replication of Encrypted Objects
8650//
8651// By default, Amazon S3 doesn't replicate objects that are stored at rest using
8652// server-side encryption with KMS keys. To replicate Amazon Web Services KMS-encrypted
8653// objects, add the following: SourceSelectionCriteria, SseKmsEncryptedObjects,
8654// Status, EncryptionConfiguration, and ReplicaKmsKeyID. For information about
8655// replication configuration, see Replicating Objects Created with SSE Using
8656// KMS keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-config-for-kms-objects.html).
8657//
8658// For information on PutBucketReplication errors, see List of replication-related
8659// error codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#ReplicationErrorCodeList)
8660//
8661// Permissions
8662//
8663// To create a PutBucketReplication request, you must have s3:PutReplicationConfiguration
8664// permissions for the bucket.
8665//
8666// By default, a resource owner, in this case the Amazon Web Services account
8667// that created the bucket, can perform this operation. The resource owner can
8668// also grant others permissions to perform the operation. For more information
8669// about permissions, see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
8670// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
8671//
8672// To perform this operation, the user or role performing the action must have
8673// the iam:PassRole (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)
8674// permission.
8675//
8676// The following operations are related to PutBucketReplication:
8677//
8678//    * GetBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)
8679//
8680//    * DeleteBucketReplication (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html)
8681//
8682// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8683// with awserr.Error's Code and Message methods to get detailed information about
8684// the error.
8685//
8686// See the AWS API reference guide for Amazon Simple Storage Service's
8687// API operation PutBucketReplication for usage and error information.
8688// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketReplication
8689func (c *S3) PutBucketReplication(input *PutBucketReplicationInput) (*PutBucketReplicationOutput, error) {
8690	req, out := c.PutBucketReplicationRequest(input)
8691	return out, req.Send()
8692}
8693
8694// PutBucketReplicationWithContext is the same as PutBucketReplication with the addition of
8695// the ability to pass a context and additional request options.
8696//
8697// See PutBucketReplication for details on how to use this API operation.
8698//
8699// The context must be non-nil and will be used for request cancellation. If
8700// the context is nil a panic will occur. In the future the SDK may create
8701// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8702// for more information on using Contexts.
8703func (c *S3) PutBucketReplicationWithContext(ctx aws.Context, input *PutBucketReplicationInput, opts ...request.Option) (*PutBucketReplicationOutput, error) {
8704	req, out := c.PutBucketReplicationRequest(input)
8705	req.SetContext(ctx)
8706	req.ApplyOptions(opts...)
8707	return out, req.Send()
8708}
8709
8710const opPutBucketRequestPayment = "PutBucketRequestPayment"
8711
8712// PutBucketRequestPaymentRequest generates a "aws/request.Request" representing the
8713// client's request for the PutBucketRequestPayment operation. The "output" return
8714// value will be populated with the request's response once the request completes
8715// successfully.
8716//
8717// Use "Send" method on the returned Request to send the API call to the service.
8718// the "output" return value is not valid until after Send returns without error.
8719//
8720// See PutBucketRequestPayment for more information on using the PutBucketRequestPayment
8721// API call, and error handling.
8722//
8723// This method is useful when you want to inject custom logic or configuration
8724// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8725//
8726//
8727//    // Example sending a request using the PutBucketRequestPaymentRequest method.
8728//    req, resp := client.PutBucketRequestPaymentRequest(params)
8729//
8730//    err := req.Send()
8731//    if err == nil { // resp is now filled
8732//        fmt.Println(resp)
8733//    }
8734//
8735// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
8736func (c *S3) PutBucketRequestPaymentRequest(input *PutBucketRequestPaymentInput) (req *request.Request, output *PutBucketRequestPaymentOutput) {
8737	op := &request.Operation{
8738		Name:       opPutBucketRequestPayment,
8739		HTTPMethod: "PUT",
8740		HTTPPath:   "/{Bucket}?requestPayment",
8741	}
8742
8743	if input == nil {
8744		input = &PutBucketRequestPaymentInput{}
8745	}
8746
8747	output = &PutBucketRequestPaymentOutput{}
8748	req = c.newRequest(op, input, output)
8749	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8750	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8751		Name: "contentMd5Handler",
8752		Fn:   checksum.AddBodyContentMD5Handler,
8753	})
8754	return
8755}
8756
8757// PutBucketRequestPayment API operation for Amazon Simple Storage Service.
8758//
8759// Sets the request payment configuration for a bucket. By default, the bucket
8760// owner pays for downloads from the bucket. This configuration parameter enables
8761// the bucket owner (only) to specify that the person requesting the download
8762// will be charged for the download. For more information, see Requester Pays
8763// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html).
8764//
8765// The following operations are related to PutBucketRequestPayment:
8766//
8767//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
8768//
8769//    * GetBucketRequestPayment (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketRequestPayment.html)
8770//
8771// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8772// with awserr.Error's Code and Message methods to get detailed information about
8773// the error.
8774//
8775// See the AWS API reference guide for Amazon Simple Storage Service's
8776// API operation PutBucketRequestPayment for usage and error information.
8777// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketRequestPayment
8778func (c *S3) PutBucketRequestPayment(input *PutBucketRequestPaymentInput) (*PutBucketRequestPaymentOutput, error) {
8779	req, out := c.PutBucketRequestPaymentRequest(input)
8780	return out, req.Send()
8781}
8782
8783// PutBucketRequestPaymentWithContext is the same as PutBucketRequestPayment with the addition of
8784// the ability to pass a context and additional request options.
8785//
8786// See PutBucketRequestPayment for details on how to use this API operation.
8787//
8788// The context must be non-nil and will be used for request cancellation. If
8789// the context is nil a panic will occur. In the future the SDK may create
8790// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8791// for more information on using Contexts.
8792func (c *S3) PutBucketRequestPaymentWithContext(ctx aws.Context, input *PutBucketRequestPaymentInput, opts ...request.Option) (*PutBucketRequestPaymentOutput, error) {
8793	req, out := c.PutBucketRequestPaymentRequest(input)
8794	req.SetContext(ctx)
8795	req.ApplyOptions(opts...)
8796	return out, req.Send()
8797}
8798
8799const opPutBucketTagging = "PutBucketTagging"
8800
8801// PutBucketTaggingRequest generates a "aws/request.Request" representing the
8802// client's request for the PutBucketTagging operation. The "output" return
8803// value will be populated with the request's response once the request completes
8804// successfully.
8805//
8806// Use "Send" method on the returned Request to send the API call to the service.
8807// the "output" return value is not valid until after Send returns without error.
8808//
8809// See PutBucketTagging for more information on using the PutBucketTagging
8810// API call, and error handling.
8811//
8812// This method is useful when you want to inject custom logic or configuration
8813// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8814//
8815//
8816//    // Example sending a request using the PutBucketTaggingRequest method.
8817//    req, resp := client.PutBucketTaggingRequest(params)
8818//
8819//    err := req.Send()
8820//    if err == nil { // resp is now filled
8821//        fmt.Println(resp)
8822//    }
8823//
8824// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8825func (c *S3) PutBucketTaggingRequest(input *PutBucketTaggingInput) (req *request.Request, output *PutBucketTaggingOutput) {
8826	op := &request.Operation{
8827		Name:       opPutBucketTagging,
8828		HTTPMethod: "PUT",
8829		HTTPPath:   "/{Bucket}?tagging",
8830	}
8831
8832	if input == nil {
8833		input = &PutBucketTaggingInput{}
8834	}
8835
8836	output = &PutBucketTaggingOutput{}
8837	req = c.newRequest(op, input, output)
8838	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8839	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8840		Name: "contentMd5Handler",
8841		Fn:   checksum.AddBodyContentMD5Handler,
8842	})
8843	return
8844}
8845
8846// PutBucketTagging API operation for Amazon Simple Storage Service.
8847//
8848// Sets the tags for a bucket.
8849//
8850// Use tags to organize your Amazon Web Services bill to reflect your own cost
8851// structure. To do this, sign up to get your Amazon Web Services account bill
8852// with tag key values included. Then, to see the cost of combined resources,
8853// organize your billing information according to resources with the same tag
8854// key values. For example, you can tag several resources with a specific application
8855// name, and then organize your billing information to see the total cost of
8856// that application across several services. For more information, see Cost
8857// Allocation and Tagging (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)
8858// and Using Cost Allocation in Amazon S3 Bucket Tags (https://docs.aws.amazon.com/AmazonS3/latest/dev/CostAllocTagging.html).
8859//
8860// When this operation sets the tags for a bucket, it will overwrite any current
8861// tags the bucket already has. You cannot use this operation to add tags to
8862// an existing list of tags.
8863//
8864// To use this operation, you must have permissions to perform the s3:PutBucketTagging
8865// action. The bucket owner has this permission by default and can grant this
8866// permission to others. For more information about permissions, see Permissions
8867// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
8868// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html).
8869//
8870// PutBucketTagging has the following special errors:
8871//
8872//    * Error code: InvalidTagError Description: The tag provided was not a
8873//    valid tag. This error can occur if the tag did not pass input validation.
8874//    For information about tag restrictions, see User-Defined Tag Restrictions
8875//    (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html)
8876//    and Amazon Web Services-Generated Cost Allocation Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/aws-tag-restrictions.html).
8877//
8878//    * Error code: MalformedXMLError Description: The XML provided does not
8879//    match the schema.
8880//
8881//    * Error code: OperationAbortedError Description: A conflicting conditional
8882//    action is currently in progress against this resource. Please try again.
8883//
8884//    * Error code: InternalError Description: The service was unable to apply
8885//    the provided tag to the bucket.
8886//
8887// The following operations are related to PutBucketTagging:
8888//
8889//    * GetBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketTagging.html)
8890//
8891//    * DeleteBucketTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketTagging.html)
8892//
8893// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
8894// with awserr.Error's Code and Message methods to get detailed information about
8895// the error.
8896//
8897// See the AWS API reference guide for Amazon Simple Storage Service's
8898// API operation PutBucketTagging for usage and error information.
8899// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketTagging
8900func (c *S3) PutBucketTagging(input *PutBucketTaggingInput) (*PutBucketTaggingOutput, error) {
8901	req, out := c.PutBucketTaggingRequest(input)
8902	return out, req.Send()
8903}
8904
8905// PutBucketTaggingWithContext is the same as PutBucketTagging with the addition of
8906// the ability to pass a context and additional request options.
8907//
8908// See PutBucketTagging for details on how to use this API operation.
8909//
8910// The context must be non-nil and will be used for request cancellation. If
8911// the context is nil a panic will occur. In the future the SDK may create
8912// sub-contexts for http.Requests. See https://golang.org/pkg/context/
8913// for more information on using Contexts.
8914func (c *S3) PutBucketTaggingWithContext(ctx aws.Context, input *PutBucketTaggingInput, opts ...request.Option) (*PutBucketTaggingOutput, error) {
8915	req, out := c.PutBucketTaggingRequest(input)
8916	req.SetContext(ctx)
8917	req.ApplyOptions(opts...)
8918	return out, req.Send()
8919}
8920
8921const opPutBucketVersioning = "PutBucketVersioning"
8922
8923// PutBucketVersioningRequest generates a "aws/request.Request" representing the
8924// client's request for the PutBucketVersioning operation. The "output" return
8925// value will be populated with the request's response once the request completes
8926// successfully.
8927//
8928// Use "Send" method on the returned Request to send the API call to the service.
8929// the "output" return value is not valid until after Send returns without error.
8930//
8931// See PutBucketVersioning for more information on using the PutBucketVersioning
8932// API call, and error handling.
8933//
8934// This method is useful when you want to inject custom logic or configuration
8935// into the SDK's request lifecycle. Such as custom headers, or retry logic.
8936//
8937//
8938//    // Example sending a request using the PutBucketVersioningRequest method.
8939//    req, resp := client.PutBucketVersioningRequest(params)
8940//
8941//    err := req.Send()
8942//    if err == nil { // resp is now filled
8943//        fmt.Println(resp)
8944//    }
8945//
8946// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
8947func (c *S3) PutBucketVersioningRequest(input *PutBucketVersioningInput) (req *request.Request, output *PutBucketVersioningOutput) {
8948	op := &request.Operation{
8949		Name:       opPutBucketVersioning,
8950		HTTPMethod: "PUT",
8951		HTTPPath:   "/{Bucket}?versioning",
8952	}
8953
8954	if input == nil {
8955		input = &PutBucketVersioningInput{}
8956	}
8957
8958	output = &PutBucketVersioningOutput{}
8959	req = c.newRequest(op, input, output)
8960	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
8961	req.Handlers.Build.PushBackNamed(request.NamedHandler{
8962		Name: "contentMd5Handler",
8963		Fn:   checksum.AddBodyContentMD5Handler,
8964	})
8965	return
8966}
8967
8968// PutBucketVersioning API operation for Amazon Simple Storage Service.
8969//
8970// Sets the versioning state of an existing bucket. To set the versioning state,
8971// you must be the bucket owner.
8972//
8973// You can set the versioning state with one of the following values:
8974//
8975// Enabled—Enables versioning for the objects in the bucket. All objects added
8976// to the bucket receive a unique version ID.
8977//
8978// Suspended—Disables versioning for the objects in the bucket. All objects
8979// added to the bucket receive the version ID null.
8980//
8981// If the versioning state has never been set on a bucket, it has no versioning
8982// state; a GetBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
8983// request does not return a versioning state value.
8984//
8985// If the bucket owner enables MFA Delete in the bucket versioning configuration,
8986// the bucket owner must include the x-amz-mfa request header and the Status
8987// and the MfaDelete request elements in a request to set the versioning state
8988// of the bucket.
8989//
8990// If you have an object expiration lifecycle policy in your non-versioned bucket
8991// and you want to maintain the same permanent delete behavior when you enable
8992// versioning, you must add a noncurrent expiration policy. The noncurrent expiration
8993// lifecycle policy will manage the deletes of the noncurrent object versions
8994// in the version-enabled bucket. (A version-enabled bucket maintains one current
8995// and zero or more noncurrent object versions.) For more information, see Lifecycle
8996// and Versioning (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-and-other-bucket-config).
8997//
8998// Related Resources
8999//
9000//    * CreateBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)
9001//
9002//    * DeleteBucket (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucket.html)
9003//
9004//    * GetBucketVersioning (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html)
9005//
9006// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9007// with awserr.Error's Code and Message methods to get detailed information about
9008// the error.
9009//
9010// See the AWS API reference guide for Amazon Simple Storage Service's
9011// API operation PutBucketVersioning for usage and error information.
9012// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketVersioning
9013func (c *S3) PutBucketVersioning(input *PutBucketVersioningInput) (*PutBucketVersioningOutput, error) {
9014	req, out := c.PutBucketVersioningRequest(input)
9015	return out, req.Send()
9016}
9017
9018// PutBucketVersioningWithContext is the same as PutBucketVersioning with the addition of
9019// the ability to pass a context and additional request options.
9020//
9021// See PutBucketVersioning for details on how to use this API operation.
9022//
9023// The context must be non-nil and will be used for request cancellation. If
9024// the context is nil a panic will occur. In the future the SDK may create
9025// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9026// for more information on using Contexts.
9027func (c *S3) PutBucketVersioningWithContext(ctx aws.Context, input *PutBucketVersioningInput, opts ...request.Option) (*PutBucketVersioningOutput, error) {
9028	req, out := c.PutBucketVersioningRequest(input)
9029	req.SetContext(ctx)
9030	req.ApplyOptions(opts...)
9031	return out, req.Send()
9032}
9033
9034const opPutBucketWebsite = "PutBucketWebsite"
9035
9036// PutBucketWebsiteRequest generates a "aws/request.Request" representing the
9037// client's request for the PutBucketWebsite operation. The "output" return
9038// value will be populated with the request's response once the request completes
9039// successfully.
9040//
9041// Use "Send" method on the returned Request to send the API call to the service.
9042// the "output" return value is not valid until after Send returns without error.
9043//
9044// See PutBucketWebsite for more information on using the PutBucketWebsite
9045// API call, and error handling.
9046//
9047// This method is useful when you want to inject custom logic or configuration
9048// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9049//
9050//
9051//    // Example sending a request using the PutBucketWebsiteRequest method.
9052//    req, resp := client.PutBucketWebsiteRequest(params)
9053//
9054//    err := req.Send()
9055//    if err == nil { // resp is now filled
9056//        fmt.Println(resp)
9057//    }
9058//
9059// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
9060func (c *S3) PutBucketWebsiteRequest(input *PutBucketWebsiteInput) (req *request.Request, output *PutBucketWebsiteOutput) {
9061	op := &request.Operation{
9062		Name:       opPutBucketWebsite,
9063		HTTPMethod: "PUT",
9064		HTTPPath:   "/{Bucket}?website",
9065	}
9066
9067	if input == nil {
9068		input = &PutBucketWebsiteInput{}
9069	}
9070
9071	output = &PutBucketWebsiteOutput{}
9072	req = c.newRequest(op, input, output)
9073	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
9074	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9075		Name: "contentMd5Handler",
9076		Fn:   checksum.AddBodyContentMD5Handler,
9077	})
9078	return
9079}
9080
9081// PutBucketWebsite API operation for Amazon Simple Storage Service.
9082//
9083// Sets the configuration of the website that is specified in the website subresource.
9084// To configure a bucket as a website, you can add this subresource on the bucket
9085// with website configuration information such as the file name of the index
9086// document and any redirect rules. For more information, see Hosting Websites
9087// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html).
9088//
9089// This PUT action requires the S3:PutBucketWebsite permission. By default,
9090// only the bucket owner can configure the website attached to a bucket; however,
9091// bucket owners can allow other users to set the website configuration by writing
9092// a bucket policy that grants them the S3:PutBucketWebsite permission.
9093//
9094// To redirect all website requests sent to the bucket's website endpoint, you
9095// add a website configuration with the following elements. Because all requests
9096// are sent to another website, you don't need to provide index document name
9097// for the bucket.
9098//
9099//    * WebsiteConfiguration
9100//
9101//    * RedirectAllRequestsTo
9102//
9103//    * HostName
9104//
9105//    * Protocol
9106//
9107// If you want granular control over redirects, you can use the following elements
9108// to add routing rules that describe conditions for redirecting requests and
9109// information about the redirect destination. In this case, the website configuration
9110// must provide an index document for the bucket, because some requests might
9111// not be redirected.
9112//
9113//    * WebsiteConfiguration
9114//
9115//    * IndexDocument
9116//
9117//    * Suffix
9118//
9119//    * ErrorDocument
9120//
9121//    * Key
9122//
9123//    * RoutingRules
9124//
9125//    * RoutingRule
9126//
9127//    * Condition
9128//
9129//    * HttpErrorCodeReturnedEquals
9130//
9131//    * KeyPrefixEquals
9132//
9133//    * Redirect
9134//
9135//    * Protocol
9136//
9137//    * HostName
9138//
9139//    * ReplaceKeyPrefixWith
9140//
9141//    * ReplaceKeyWith
9142//
9143//    * HttpRedirectCode
9144//
9145// Amazon S3 has a limitation of 50 routing rules per website configuration.
9146// If you require more than 50 routing rules, you can use object redirect. For
9147// more information, see Configuring an Object Redirect (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html)
9148// in the Amazon S3 User Guide.
9149//
9150// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9151// with awserr.Error's Code and Message methods to get detailed information about
9152// the error.
9153//
9154// See the AWS API reference guide for Amazon Simple Storage Service's
9155// API operation PutBucketWebsite for usage and error information.
9156// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketWebsite
9157func (c *S3) PutBucketWebsite(input *PutBucketWebsiteInput) (*PutBucketWebsiteOutput, error) {
9158	req, out := c.PutBucketWebsiteRequest(input)
9159	return out, req.Send()
9160}
9161
9162// PutBucketWebsiteWithContext is the same as PutBucketWebsite with the addition of
9163// the ability to pass a context and additional request options.
9164//
9165// See PutBucketWebsite for details on how to use this API operation.
9166//
9167// The context must be non-nil and will be used for request cancellation. If
9168// the context is nil a panic will occur. In the future the SDK may create
9169// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9170// for more information on using Contexts.
9171func (c *S3) PutBucketWebsiteWithContext(ctx aws.Context, input *PutBucketWebsiteInput, opts ...request.Option) (*PutBucketWebsiteOutput, error) {
9172	req, out := c.PutBucketWebsiteRequest(input)
9173	req.SetContext(ctx)
9174	req.ApplyOptions(opts...)
9175	return out, req.Send()
9176}
9177
9178const opPutObject = "PutObject"
9179
9180// PutObjectRequest generates a "aws/request.Request" representing the
9181// client's request for the PutObject operation. The "output" return
9182// value will be populated with the request's response once the request completes
9183// successfully.
9184//
9185// Use "Send" method on the returned Request to send the API call to the service.
9186// the "output" return value is not valid until after Send returns without error.
9187//
9188// See PutObject for more information on using the PutObject
9189// API call, and error handling.
9190//
9191// This method is useful when you want to inject custom logic or configuration
9192// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9193//
9194//
9195//    // Example sending a request using the PutObjectRequest method.
9196//    req, resp := client.PutObjectRequest(params)
9197//
9198//    err := req.Send()
9199//    if err == nil { // resp is now filled
9200//        fmt.Println(resp)
9201//    }
9202//
9203// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
9204func (c *S3) PutObjectRequest(input *PutObjectInput) (req *request.Request, output *PutObjectOutput) {
9205	op := &request.Operation{
9206		Name:       opPutObject,
9207		HTTPMethod: "PUT",
9208		HTTPPath:   "/{Bucket}/{Key+}",
9209	}
9210
9211	if input == nil {
9212		input = &PutObjectInput{}
9213	}
9214
9215	output = &PutObjectOutput{}
9216	req = c.newRequest(op, input, output)
9217	return
9218}
9219
9220// PutObject API operation for Amazon Simple Storage Service.
9221//
9222// Adds an object to a bucket. You must have WRITE permissions on a bucket to
9223// add an object to it.
9224//
9225// Amazon S3 never adds partial objects; if you receive a success response,
9226// Amazon S3 added the entire object to the bucket.
9227//
9228// Amazon S3 is a distributed system. If it receives multiple write requests
9229// for the same object simultaneously, it overwrites all but the last object
9230// written. Amazon S3 does not provide object locking; if you need this, make
9231// sure to build it into your application layer or use versioning instead.
9232//
9233// To ensure that data is not corrupted traversing the network, use the Content-MD5
9234// header. When you use this header, Amazon S3 checks the object against the
9235// provided MD5 value and, if they do not match, returns an error. Additionally,
9236// you can calculate the MD5 while putting an object to Amazon S3 and compare
9237// the returned ETag to the calculated MD5 value.
9238//
9239//    * To successfully complete the PutObject request, you must have the s3:PutObject
9240//    in your IAM permissions.
9241//
9242//    * To successfully change the objects acl of your PutObject request, you
9243//    must have the s3:PutObjectAcl in your IAM permissions.
9244//
9245//    * The Content-MD5 header is required for any request to upload an object
9246//    with a retention period configured using Amazon S3 Object Lock. For more
9247//    information about Amazon S3 Object Lock, see Amazon S3 Object Lock Overview
9248//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)
9249//    in the Amazon S3 User Guide.
9250//
9251// Server-side Encryption
9252//
9253// You can optionally request server-side encryption. With server-side encryption,
9254// Amazon S3 encrypts your data as it writes it to disks in its data centers
9255// and decrypts the data when you access it. You have the option to provide
9256// your own encryption key or use Amazon Web Services managed encryption keys
9257// (SSE-S3 or SSE-KMS). For more information, see Using Server-Side Encryption
9258// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html).
9259//
9260// If you request server-side encryption using Amazon Web Services Key Management
9261// Service (SSE-KMS), you can enable an S3 Bucket Key at the object-level. For
9262// more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
9263// in the Amazon S3 User Guide.
9264//
9265// Access Control List (ACL)-Specific Request Headers
9266//
9267// You can use headers to grant ACL- based permissions. By default, all objects
9268// are private. Only the owner has full access control. When adding a new object,
9269// you can grant permissions to individual Amazon Web Services accounts or to
9270// predefined groups defined by Amazon S3. These permissions are then added
9271// to the ACL on the object. For more information, see Access Control List (ACL)
9272// Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
9273// and Managing ACLs Using the REST API (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html).
9274//
9275// Storage Class Options
9276//
9277// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
9278// objects. The STANDARD storage class provides high durability and high availability.
9279// Depending on performance needs, you can specify a different Storage Class.
9280// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
9281// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
9282// in the Amazon S3 User Guide.
9283//
9284// Versioning
9285//
9286// If you enable versioning for a bucket, Amazon S3 automatically generates
9287// a unique version ID for the object being stored. Amazon S3 returns this ID
9288// in the response. When you enable versioning for a bucket, if Amazon S3 receives
9289// multiple write requests for the same object simultaneously, it stores all
9290// of the objects.
9291//
9292// For more information about versioning, see Adding Objects to Versioning Enabled
9293// Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/AddingObjectstoVersioningEnabledBuckets.html).
9294// For information about returning the versioning state of a bucket, see GetBucketVersioning
9295// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketVersioning.html).
9296//
9297// Related Resources
9298//
9299//    * CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
9300//
9301//    * DeleteObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html)
9302//
9303// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9304// with awserr.Error's Code and Message methods to get detailed information about
9305// the error.
9306//
9307// See the AWS API reference guide for Amazon Simple Storage Service's
9308// API operation PutObject for usage and error information.
9309// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObject
9310func (c *S3) PutObject(input *PutObjectInput) (*PutObjectOutput, error) {
9311	req, out := c.PutObjectRequest(input)
9312	return out, req.Send()
9313}
9314
9315// PutObjectWithContext is the same as PutObject with the addition of
9316// the ability to pass a context and additional request options.
9317//
9318// See PutObject for details on how to use this API operation.
9319//
9320// The context must be non-nil and will be used for request cancellation. If
9321// the context is nil a panic will occur. In the future the SDK may create
9322// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9323// for more information on using Contexts.
9324func (c *S3) PutObjectWithContext(ctx aws.Context, input *PutObjectInput, opts ...request.Option) (*PutObjectOutput, error) {
9325	req, out := c.PutObjectRequest(input)
9326	req.SetContext(ctx)
9327	req.ApplyOptions(opts...)
9328	return out, req.Send()
9329}
9330
9331const opPutObjectAcl = "PutObjectAcl"
9332
9333// PutObjectAclRequest generates a "aws/request.Request" representing the
9334// client's request for the PutObjectAcl operation. The "output" return
9335// value will be populated with the request's response once the request completes
9336// successfully.
9337//
9338// Use "Send" method on the returned Request to send the API call to the service.
9339// the "output" return value is not valid until after Send returns without error.
9340//
9341// See PutObjectAcl for more information on using the PutObjectAcl
9342// API call, and error handling.
9343//
9344// This method is useful when you want to inject custom logic or configuration
9345// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9346//
9347//
9348//    // Example sending a request using the PutObjectAclRequest method.
9349//    req, resp := client.PutObjectAclRequest(params)
9350//
9351//    err := req.Send()
9352//    if err == nil { // resp is now filled
9353//        fmt.Println(resp)
9354//    }
9355//
9356// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
9357func (c *S3) PutObjectAclRequest(input *PutObjectAclInput) (req *request.Request, output *PutObjectAclOutput) {
9358	op := &request.Operation{
9359		Name:       opPutObjectAcl,
9360		HTTPMethod: "PUT",
9361		HTTPPath:   "/{Bucket}/{Key+}?acl",
9362	}
9363
9364	if input == nil {
9365		input = &PutObjectAclInput{}
9366	}
9367
9368	output = &PutObjectAclOutput{}
9369	req = c.newRequest(op, input, output)
9370	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9371		Name: "contentMd5Handler",
9372		Fn:   checksum.AddBodyContentMD5Handler,
9373	})
9374	return
9375}
9376
9377// PutObjectAcl API operation for Amazon Simple Storage Service.
9378//
9379// Uses the acl subresource to set the access control list (ACL) permissions
9380// for a new or existing object in an S3 bucket. You must have WRITE_ACP permission
9381// to set the ACL of an object. For more information, see What permissions can
9382// I grant? (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#permissions)
9383// in the Amazon S3 User Guide.
9384//
9385// This action is not supported by Amazon S3 on Outposts.
9386//
9387// Depending on your application needs, you can choose to set the ACL on an
9388// object using either the request body or the headers. For example, if you
9389// have an existing application that updates a bucket ACL using the request
9390// body, you can continue to use that approach. For more information, see Access
9391// Control List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html)
9392// in the Amazon S3 User Guide.
9393//
9394// Access Permissions
9395//
9396// You can set access permissions using one of the following methods:
9397//
9398//    * Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports
9399//    a set of predefined ACLs, known as canned ACLs. Each canned ACL has a
9400//    predefined set of grantees and permissions. Specify the canned ACL name
9401//    as the value of x-amz-acl. If you use this header, you cannot use other
9402//    access control-specific headers in your request. For more information,
9403//    see Canned ACL (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
9404//
9405//    * Specify access permissions explicitly with the x-amz-grant-read, x-amz-grant-read-acp,
9406//    x-amz-grant-write-acp, and x-amz-grant-full-control headers. When using
9407//    these headers, you specify explicit access permissions and grantees (Amazon
9408//    Web Services accounts or Amazon S3 groups) who will receive the permission.
9409//    If you use these ACL-specific headers, you cannot use x-amz-acl header
9410//    to set a canned ACL. These parameters map to the set of permissions that
9411//    Amazon S3 supports in an ACL. For more information, see Access Control
9412//    List (ACL) Overview (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html).
9413//    You specify each grantee as a type=value pair, where the type is one of
9414//    the following: id – if the value specified is the canonical user ID
9415//    of an Amazon Web Services account uri – if you are granting permissions
9416//    to a predefined group emailAddress – if the value specified is the email
9417//    address of an Amazon Web Services account Using email addresses to specify
9418//    a grantee is only supported in the following Amazon Web Services Regions:
9419//    US East (N. Virginia) US West (N. California) US West (Oregon) Asia Pacific
9420//    (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe (Ireland)
9421//    South America (São Paulo) For a list of all the Amazon S3 supported Regions
9422//    and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
9423//    in the Amazon Web Services General Reference. For example, the following
9424//    x-amz-grant-read header grants list objects permission to the two Amazon
9425//    Web Services accounts identified by their email addresses. x-amz-grant-read:
9426//    emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com"
9427//
9428// You can use either a canned ACL or specify access permissions explicitly.
9429// You cannot do both.
9430//
9431// Grantee Values
9432//
9433// You can specify the person (grantee) to whom you're assigning access rights
9434// (using request elements) in the following ways:
9435//
9436//    * By the person's ID: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9437//    xsi:type="CanonicalUser"><ID><>ID<></ID><DisplayName><>GranteesEmail<></DisplayName>
9438//    </Grantee> DisplayName is optional and ignored in the request.
9439//
9440//    * By URI: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9441//    xsi:type="Group"><URI><>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<></URI></Grantee>
9442//
9443//    * By Email address: <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9444//    xsi:type="AmazonCustomerByEmail"><EmailAddress><>Grantees@email.com<></EmailAddress>lt;/Grantee>
9445//    The grantee is resolved to the CanonicalUser and, in a response to a GET
9446//    Object acl request, appears as the CanonicalUser. Using email addresses
9447//    to specify a grantee is only supported in the following Amazon Web Services
9448//    Regions: US East (N. Virginia) US West (N. California) US West (Oregon)
9449//    Asia Pacific (Singapore) Asia Pacific (Sydney) Asia Pacific (Tokyo) Europe
9450//    (Ireland) South America (São Paulo) For a list of all the Amazon S3 supported
9451//    Regions and endpoints, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
9452//    in the Amazon Web Services General Reference.
9453//
9454// Versioning
9455//
9456// The ACL of an object is set at the object version level. By default, PUT
9457// sets the ACL of the current version of an object. To set the ACL of a different
9458// version, use the versionId subresource.
9459//
9460// Related Resources
9461//
9462//    * CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
9463//
9464//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
9465//
9466// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9467// with awserr.Error's Code and Message methods to get detailed information about
9468// the error.
9469//
9470// See the AWS API reference guide for Amazon Simple Storage Service's
9471// API operation PutObjectAcl for usage and error information.
9472//
9473// Returned Error Codes:
9474//   * ErrCodeNoSuchKey "NoSuchKey"
9475//   The specified key does not exist.
9476//
9477// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectAcl
9478func (c *S3) PutObjectAcl(input *PutObjectAclInput) (*PutObjectAclOutput, error) {
9479	req, out := c.PutObjectAclRequest(input)
9480	return out, req.Send()
9481}
9482
9483// PutObjectAclWithContext is the same as PutObjectAcl with the addition of
9484// the ability to pass a context and additional request options.
9485//
9486// See PutObjectAcl for details on how to use this API operation.
9487//
9488// The context must be non-nil and will be used for request cancellation. If
9489// the context is nil a panic will occur. In the future the SDK may create
9490// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9491// for more information on using Contexts.
9492func (c *S3) PutObjectAclWithContext(ctx aws.Context, input *PutObjectAclInput, opts ...request.Option) (*PutObjectAclOutput, error) {
9493	req, out := c.PutObjectAclRequest(input)
9494	req.SetContext(ctx)
9495	req.ApplyOptions(opts...)
9496	return out, req.Send()
9497}
9498
9499const opPutObjectLegalHold = "PutObjectLegalHold"
9500
9501// PutObjectLegalHoldRequest generates a "aws/request.Request" representing the
9502// client's request for the PutObjectLegalHold operation. The "output" return
9503// value will be populated with the request's response once the request completes
9504// successfully.
9505//
9506// Use "Send" method on the returned Request to send the API call to the service.
9507// the "output" return value is not valid until after Send returns without error.
9508//
9509// See PutObjectLegalHold for more information on using the PutObjectLegalHold
9510// API call, and error handling.
9511//
9512// This method is useful when you want to inject custom logic or configuration
9513// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9514//
9515//
9516//    // Example sending a request using the PutObjectLegalHoldRequest method.
9517//    req, resp := client.PutObjectLegalHoldRequest(params)
9518//
9519//    err := req.Send()
9520//    if err == nil { // resp is now filled
9521//        fmt.Println(resp)
9522//    }
9523//
9524// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
9525func (c *S3) PutObjectLegalHoldRequest(input *PutObjectLegalHoldInput) (req *request.Request, output *PutObjectLegalHoldOutput) {
9526	op := &request.Operation{
9527		Name:       opPutObjectLegalHold,
9528		HTTPMethod: "PUT",
9529		HTTPPath:   "/{Bucket}/{Key+}?legal-hold",
9530	}
9531
9532	if input == nil {
9533		input = &PutObjectLegalHoldInput{}
9534	}
9535
9536	output = &PutObjectLegalHoldOutput{}
9537	req = c.newRequest(op, input, output)
9538	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9539		Name: "contentMd5Handler",
9540		Fn:   checksum.AddBodyContentMD5Handler,
9541	})
9542	return
9543}
9544
9545// PutObjectLegalHold API operation for Amazon Simple Storage Service.
9546//
9547// Applies a Legal Hold configuration to the specified object. For more information,
9548// see Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
9549//
9550// This action is not supported by Amazon S3 on Outposts.
9551//
9552// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9553// with awserr.Error's Code and Message methods to get detailed information about
9554// the error.
9555//
9556// See the AWS API reference guide for Amazon Simple Storage Service's
9557// API operation PutObjectLegalHold for usage and error information.
9558// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLegalHold
9559func (c *S3) PutObjectLegalHold(input *PutObjectLegalHoldInput) (*PutObjectLegalHoldOutput, error) {
9560	req, out := c.PutObjectLegalHoldRequest(input)
9561	return out, req.Send()
9562}
9563
9564// PutObjectLegalHoldWithContext is the same as PutObjectLegalHold with the addition of
9565// the ability to pass a context and additional request options.
9566//
9567// See PutObjectLegalHold for details on how to use this API operation.
9568//
9569// The context must be non-nil and will be used for request cancellation. If
9570// the context is nil a panic will occur. In the future the SDK may create
9571// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9572// for more information on using Contexts.
9573func (c *S3) PutObjectLegalHoldWithContext(ctx aws.Context, input *PutObjectLegalHoldInput, opts ...request.Option) (*PutObjectLegalHoldOutput, error) {
9574	req, out := c.PutObjectLegalHoldRequest(input)
9575	req.SetContext(ctx)
9576	req.ApplyOptions(opts...)
9577	return out, req.Send()
9578}
9579
9580const opPutObjectLockConfiguration = "PutObjectLockConfiguration"
9581
9582// PutObjectLockConfigurationRequest generates a "aws/request.Request" representing the
9583// client's request for the PutObjectLockConfiguration operation. The "output" return
9584// value will be populated with the request's response once the request completes
9585// successfully.
9586//
9587// Use "Send" method on the returned Request to send the API call to the service.
9588// the "output" return value is not valid until after Send returns without error.
9589//
9590// See PutObjectLockConfiguration for more information on using the PutObjectLockConfiguration
9591// API call, and error handling.
9592//
9593// This method is useful when you want to inject custom logic or configuration
9594// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9595//
9596//
9597//    // Example sending a request using the PutObjectLockConfigurationRequest method.
9598//    req, resp := client.PutObjectLockConfigurationRequest(params)
9599//
9600//    err := req.Send()
9601//    if err == nil { // resp is now filled
9602//        fmt.Println(resp)
9603//    }
9604//
9605// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
9606func (c *S3) PutObjectLockConfigurationRequest(input *PutObjectLockConfigurationInput) (req *request.Request, output *PutObjectLockConfigurationOutput) {
9607	op := &request.Operation{
9608		Name:       opPutObjectLockConfiguration,
9609		HTTPMethod: "PUT",
9610		HTTPPath:   "/{Bucket}?object-lock",
9611	}
9612
9613	if input == nil {
9614		input = &PutObjectLockConfigurationInput{}
9615	}
9616
9617	output = &PutObjectLockConfigurationOutput{}
9618	req = c.newRequest(op, input, output)
9619	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9620		Name: "contentMd5Handler",
9621		Fn:   checksum.AddBodyContentMD5Handler,
9622	})
9623	return
9624}
9625
9626// PutObjectLockConfiguration API operation for Amazon Simple Storage Service.
9627//
9628// Places an Object Lock configuration on the specified bucket. The rule specified
9629// in the Object Lock configuration will be applied by default to every new
9630// object placed in the specified bucket. For more information, see Locking
9631// Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
9632//
9633//    * The DefaultRetention settings require both a mode and a period.
9634//
9635//    * The DefaultRetention period can be either Days or Years but you must
9636//    select one. You cannot specify Days and Years at the same time.
9637//
9638//    * You can only enable Object Lock for new buckets. If you want to turn
9639//    on Object Lock for an existing bucket, contact Amazon Web Services Support.
9640//
9641// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9642// with awserr.Error's Code and Message methods to get detailed information about
9643// the error.
9644//
9645// See the AWS API reference guide for Amazon Simple Storage Service's
9646// API operation PutObjectLockConfiguration for usage and error information.
9647// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectLockConfiguration
9648func (c *S3) PutObjectLockConfiguration(input *PutObjectLockConfigurationInput) (*PutObjectLockConfigurationOutput, error) {
9649	req, out := c.PutObjectLockConfigurationRequest(input)
9650	return out, req.Send()
9651}
9652
9653// PutObjectLockConfigurationWithContext is the same as PutObjectLockConfiguration with the addition of
9654// the ability to pass a context and additional request options.
9655//
9656// See PutObjectLockConfiguration for details on how to use this API operation.
9657//
9658// The context must be non-nil and will be used for request cancellation. If
9659// the context is nil a panic will occur. In the future the SDK may create
9660// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9661// for more information on using Contexts.
9662func (c *S3) PutObjectLockConfigurationWithContext(ctx aws.Context, input *PutObjectLockConfigurationInput, opts ...request.Option) (*PutObjectLockConfigurationOutput, error) {
9663	req, out := c.PutObjectLockConfigurationRequest(input)
9664	req.SetContext(ctx)
9665	req.ApplyOptions(opts...)
9666	return out, req.Send()
9667}
9668
9669const opPutObjectRetention = "PutObjectRetention"
9670
9671// PutObjectRetentionRequest generates a "aws/request.Request" representing the
9672// client's request for the PutObjectRetention operation. The "output" return
9673// value will be populated with the request's response once the request completes
9674// successfully.
9675//
9676// Use "Send" method on the returned Request to send the API call to the service.
9677// the "output" return value is not valid until after Send returns without error.
9678//
9679// See PutObjectRetention for more information on using the PutObjectRetention
9680// API call, and error handling.
9681//
9682// This method is useful when you want to inject custom logic or configuration
9683// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9684//
9685//
9686//    // Example sending a request using the PutObjectRetentionRequest method.
9687//    req, resp := client.PutObjectRetentionRequest(params)
9688//
9689//    err := req.Send()
9690//    if err == nil { // resp is now filled
9691//        fmt.Println(resp)
9692//    }
9693//
9694// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
9695func (c *S3) PutObjectRetentionRequest(input *PutObjectRetentionInput) (req *request.Request, output *PutObjectRetentionOutput) {
9696	op := &request.Operation{
9697		Name:       opPutObjectRetention,
9698		HTTPMethod: "PUT",
9699		HTTPPath:   "/{Bucket}/{Key+}?retention",
9700	}
9701
9702	if input == nil {
9703		input = &PutObjectRetentionInput{}
9704	}
9705
9706	output = &PutObjectRetentionOutput{}
9707	req = c.newRequest(op, input, output)
9708	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9709		Name: "contentMd5Handler",
9710		Fn:   checksum.AddBodyContentMD5Handler,
9711	})
9712	return
9713}
9714
9715// PutObjectRetention API operation for Amazon Simple Storage Service.
9716//
9717// Places an Object Retention configuration on an object. For more information,
9718// see Locking Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
9719// Users or accounts require the s3:PutObjectRetention permission in order to
9720// place an Object Retention configuration on objects. Bypassing a Governance
9721// Retention configuration requires the s3:BypassGovernanceRetention permission.
9722//
9723// This action is not supported by Amazon S3 on Outposts.
9724//
9725// Permissions
9726//
9727// When the Object Lock retention mode is set to compliance, you need s3:PutObjectRetention
9728// and s3:BypassGovernanceRetention permissions. For other requests to PutObjectRetention,
9729// only s3:PutObjectRetention permissions are required.
9730//
9731// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9732// with awserr.Error's Code and Message methods to get detailed information about
9733// the error.
9734//
9735// See the AWS API reference guide for Amazon Simple Storage Service's
9736// API operation PutObjectRetention for usage and error information.
9737// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectRetention
9738func (c *S3) PutObjectRetention(input *PutObjectRetentionInput) (*PutObjectRetentionOutput, error) {
9739	req, out := c.PutObjectRetentionRequest(input)
9740	return out, req.Send()
9741}
9742
9743// PutObjectRetentionWithContext is the same as PutObjectRetention with the addition of
9744// the ability to pass a context and additional request options.
9745//
9746// See PutObjectRetention for details on how to use this API operation.
9747//
9748// The context must be non-nil and will be used for request cancellation. If
9749// the context is nil a panic will occur. In the future the SDK may create
9750// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9751// for more information on using Contexts.
9752func (c *S3) PutObjectRetentionWithContext(ctx aws.Context, input *PutObjectRetentionInput, opts ...request.Option) (*PutObjectRetentionOutput, error) {
9753	req, out := c.PutObjectRetentionRequest(input)
9754	req.SetContext(ctx)
9755	req.ApplyOptions(opts...)
9756	return out, req.Send()
9757}
9758
9759const opPutObjectTagging = "PutObjectTagging"
9760
9761// PutObjectTaggingRequest generates a "aws/request.Request" representing the
9762// client's request for the PutObjectTagging operation. The "output" return
9763// value will be populated with the request's response once the request completes
9764// successfully.
9765//
9766// Use "Send" method on the returned Request to send the API call to the service.
9767// the "output" return value is not valid until after Send returns without error.
9768//
9769// See PutObjectTagging for more information on using the PutObjectTagging
9770// API call, and error handling.
9771//
9772// This method is useful when you want to inject custom logic or configuration
9773// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9774//
9775//
9776//    // Example sending a request using the PutObjectTaggingRequest method.
9777//    req, resp := client.PutObjectTaggingRequest(params)
9778//
9779//    err := req.Send()
9780//    if err == nil { // resp is now filled
9781//        fmt.Println(resp)
9782//    }
9783//
9784// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
9785func (c *S3) PutObjectTaggingRequest(input *PutObjectTaggingInput) (req *request.Request, output *PutObjectTaggingOutput) {
9786	op := &request.Operation{
9787		Name:       opPutObjectTagging,
9788		HTTPMethod: "PUT",
9789		HTTPPath:   "/{Bucket}/{Key+}?tagging",
9790	}
9791
9792	if input == nil {
9793		input = &PutObjectTaggingInput{}
9794	}
9795
9796	output = &PutObjectTaggingOutput{}
9797	req = c.newRequest(op, input, output)
9798	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9799		Name: "contentMd5Handler",
9800		Fn:   checksum.AddBodyContentMD5Handler,
9801	})
9802	return
9803}
9804
9805// PutObjectTagging API operation for Amazon Simple Storage Service.
9806//
9807// Sets the supplied tag-set to an object that already exists in a bucket.
9808//
9809// A tag is a key-value pair. You can associate tags with an object by sending
9810// a PUT request against the tagging subresource that is associated with the
9811// object. You can retrieve tags by sending a GET request. For more information,
9812// see GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html).
9813//
9814// For tagging-related restrictions related to characters and encodings, see
9815// Tag Restrictions (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/allocation-tag-restrictions.html).
9816// Note that Amazon S3 limits the maximum number of tags to 10 tags per object.
9817//
9818// To use this operation, you must have permission to perform the s3:PutObjectTagging
9819// action. By default, the bucket owner has this permission and can grant this
9820// permission to others.
9821//
9822// To put tags of any other version, use the versionId query parameter. You
9823// also need permission for the s3:PutObjectVersionTagging action.
9824//
9825// For information about the Amazon S3 object tagging feature, see Object Tagging
9826// (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9827//
9828// Special Errors
9829//
9830//    * Code: InvalidTagError Cause: The tag provided was not a valid tag. This
9831//    error can occur if the tag did not pass input validation. For more information,
9832//    see Object Tagging (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-tagging.html).
9833//
9834//    * Code: MalformedXMLError Cause: The XML provided does not match the schema.
9835//
9836//    * Code: OperationAbortedError Cause: A conflicting conditional action
9837//    is currently in progress against this resource. Please try again.
9838//
9839//    * Code: InternalError Cause: The service was unable to apply the provided
9840//    tag to the object.
9841//
9842// Related Resources
9843//
9844//    * GetObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html)
9845//
9846//    * DeleteObjectTagging (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)
9847//
9848// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9849// with awserr.Error's Code and Message methods to get detailed information about
9850// the error.
9851//
9852// See the AWS API reference guide for Amazon Simple Storage Service's
9853// API operation PutObjectTagging for usage and error information.
9854// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutObjectTagging
9855func (c *S3) PutObjectTagging(input *PutObjectTaggingInput) (*PutObjectTaggingOutput, error) {
9856	req, out := c.PutObjectTaggingRequest(input)
9857	return out, req.Send()
9858}
9859
9860// PutObjectTaggingWithContext is the same as PutObjectTagging with the addition of
9861// the ability to pass a context and additional request options.
9862//
9863// See PutObjectTagging for details on how to use this API operation.
9864//
9865// The context must be non-nil and will be used for request cancellation. If
9866// the context is nil a panic will occur. In the future the SDK may create
9867// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9868// for more information on using Contexts.
9869func (c *S3) PutObjectTaggingWithContext(ctx aws.Context, input *PutObjectTaggingInput, opts ...request.Option) (*PutObjectTaggingOutput, error) {
9870	req, out := c.PutObjectTaggingRequest(input)
9871	req.SetContext(ctx)
9872	req.ApplyOptions(opts...)
9873	return out, req.Send()
9874}
9875
9876const opPutPublicAccessBlock = "PutPublicAccessBlock"
9877
9878// PutPublicAccessBlockRequest generates a "aws/request.Request" representing the
9879// client's request for the PutPublicAccessBlock operation. The "output" return
9880// value will be populated with the request's response once the request completes
9881// successfully.
9882//
9883// Use "Send" method on the returned Request to send the API call to the service.
9884// the "output" return value is not valid until after Send returns without error.
9885//
9886// See PutPublicAccessBlock for more information on using the PutPublicAccessBlock
9887// API call, and error handling.
9888//
9889// This method is useful when you want to inject custom logic or configuration
9890// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9891//
9892//
9893//    // Example sending a request using the PutPublicAccessBlockRequest method.
9894//    req, resp := client.PutPublicAccessBlockRequest(params)
9895//
9896//    err := req.Send()
9897//    if err == nil { // resp is now filled
9898//        fmt.Println(resp)
9899//    }
9900//
9901// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9902func (c *S3) PutPublicAccessBlockRequest(input *PutPublicAccessBlockInput) (req *request.Request, output *PutPublicAccessBlockOutput) {
9903	op := &request.Operation{
9904		Name:       opPutPublicAccessBlock,
9905		HTTPMethod: "PUT",
9906		HTTPPath:   "/{Bucket}?publicAccessBlock",
9907	}
9908
9909	if input == nil {
9910		input = &PutPublicAccessBlockInput{}
9911	}
9912
9913	output = &PutPublicAccessBlockOutput{}
9914	req = c.newRequest(op, input, output)
9915	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
9916	req.Handlers.Build.PushBackNamed(request.NamedHandler{
9917		Name: "contentMd5Handler",
9918		Fn:   checksum.AddBodyContentMD5Handler,
9919	})
9920	return
9921}
9922
9923// PutPublicAccessBlock API operation for Amazon Simple Storage Service.
9924//
9925// Creates or modifies the PublicAccessBlock configuration for an Amazon S3
9926// bucket. To use this operation, you must have the s3:PutBucketPublicAccessBlock
9927// permission. For more information about Amazon S3 permissions, see Specifying
9928// Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html).
9929//
9930// When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket
9931// or an object, it checks the PublicAccessBlock configuration for both the
9932// bucket (or the bucket that contains the object) and the bucket owner's account.
9933// If the PublicAccessBlock configurations are different between the bucket
9934// and the account, Amazon S3 uses the most restrictive combination of the bucket-level
9935// and account-level settings.
9936//
9937// For more information about when Amazon S3 considers a bucket or an object
9938// 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).
9939//
9940// Related Resources
9941//
9942//    * GetPublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetPublicAccessBlock.html)
9943//
9944//    * DeletePublicAccessBlock (https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeletePublicAccessBlock.html)
9945//
9946//    * GetBucketPolicyStatus (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketPolicyStatus.html)
9947//
9948//    * Using Amazon S3 Block Public Access (https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html)
9949//
9950// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
9951// with awserr.Error's Code and Message methods to get detailed information about
9952// the error.
9953//
9954// See the AWS API reference guide for Amazon Simple Storage Service's
9955// API operation PutPublicAccessBlock for usage and error information.
9956// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutPublicAccessBlock
9957func (c *S3) PutPublicAccessBlock(input *PutPublicAccessBlockInput) (*PutPublicAccessBlockOutput, error) {
9958	req, out := c.PutPublicAccessBlockRequest(input)
9959	return out, req.Send()
9960}
9961
9962// PutPublicAccessBlockWithContext is the same as PutPublicAccessBlock with the addition of
9963// the ability to pass a context and additional request options.
9964//
9965// See PutPublicAccessBlock for details on how to use this API operation.
9966//
9967// The context must be non-nil and will be used for request cancellation. If
9968// the context is nil a panic will occur. In the future the SDK may create
9969// sub-contexts for http.Requests. See https://golang.org/pkg/context/
9970// for more information on using Contexts.
9971func (c *S3) PutPublicAccessBlockWithContext(ctx aws.Context, input *PutPublicAccessBlockInput, opts ...request.Option) (*PutPublicAccessBlockOutput, error) {
9972	req, out := c.PutPublicAccessBlockRequest(input)
9973	req.SetContext(ctx)
9974	req.ApplyOptions(opts...)
9975	return out, req.Send()
9976}
9977
9978const opRestoreObject = "RestoreObject"
9979
9980// RestoreObjectRequest generates a "aws/request.Request" representing the
9981// client's request for the RestoreObject operation. The "output" return
9982// value will be populated with the request's response once the request completes
9983// successfully.
9984//
9985// Use "Send" method on the returned Request to send the API call to the service.
9986// the "output" return value is not valid until after Send returns without error.
9987//
9988// See RestoreObject for more information on using the RestoreObject
9989// API call, and error handling.
9990//
9991// This method is useful when you want to inject custom logic or configuration
9992// into the SDK's request lifecycle. Such as custom headers, or retry logic.
9993//
9994//
9995//    // Example sending a request using the RestoreObjectRequest method.
9996//    req, resp := client.RestoreObjectRequest(params)
9997//
9998//    err := req.Send()
9999//    if err == nil { // resp is now filled
10000//        fmt.Println(resp)
10001//    }
10002//
10003// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
10004func (c *S3) RestoreObjectRequest(input *RestoreObjectInput) (req *request.Request, output *RestoreObjectOutput) {
10005	op := &request.Operation{
10006		Name:       opRestoreObject,
10007		HTTPMethod: "POST",
10008		HTTPPath:   "/{Bucket}/{Key+}?restore",
10009	}
10010
10011	if input == nil {
10012		input = &RestoreObjectInput{}
10013	}
10014
10015	output = &RestoreObjectOutput{}
10016	req = c.newRequest(op, input, output)
10017	return
10018}
10019
10020// RestoreObject API operation for Amazon Simple Storage Service.
10021//
10022// Restores an archived copy of an object back into Amazon S3
10023//
10024// This action is not supported by Amazon S3 on Outposts.
10025//
10026// This action performs the following types of requests:
10027//
10028//    * select - Perform a select query on an archived object
10029//
10030//    * restore an archive - Restore an archived object
10031//
10032// To use this operation, you must have permissions to perform the s3:RestoreObject
10033// action. The bucket owner has this permission by default and can grant this
10034// permission to others. For more information about permissions, see Permissions
10035// Related to Bucket Subresource Operations (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources)
10036// and Managing Access Permissions to Your Amazon S3 Resources (https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)
10037// in the Amazon S3 User Guide.
10038//
10039// Querying Archives with Select Requests
10040//
10041// You use a select type of request to perform SQL queries on archived objects.
10042// The archived objects that are being queried by the select request must be
10043// formatted as uncompressed comma-separated values (CSV) files. You can run
10044// queries and custom analytics on your archived data without having to restore
10045// your data to a hotter Amazon S3 tier. For an overview about select requests,
10046// see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
10047// in the Amazon S3 User Guide.
10048//
10049// When making a select request, do the following:
10050//
10051//    * Define an output location for the select query's output. This must be
10052//    an Amazon S3 bucket in the same Amazon Web Services Region as the bucket
10053//    that contains the archive object that is being queried. The Amazon Web
10054//    Services account that initiates the job must have permissions to write
10055//    to the S3 bucket. You can specify the storage class and encryption for
10056//    the output objects stored in the bucket. For more information about output,
10057//    see Querying Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/querying-glacier-archives.html)
10058//    in the Amazon S3 User Guide. For more information about the S3 structure
10059//    in the request body, see the following: PutObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)
10060//    Managing Access with ACLs (https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html)
10061//    in the Amazon S3 User Guide Protecting Data Using Server-Side Encryption
10062//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
10063//    in the Amazon S3 User Guide
10064//
10065//    * Define the SQL expression for the SELECT type of restoration for your
10066//    query in the request body's SelectParameters structure. You can use expressions
10067//    like the following examples. The following expression returns all records
10068//    from the specified object. SELECT * FROM Object Assuming that you are
10069//    not using any headers for data stored in the object, you can specify columns
10070//    with positional headers. SELECT s._1, s._2 FROM Object s WHERE s._3 >
10071//    100 If you have headers and you set the fileHeaderInfo in the CSV structure
10072//    in the request body to USE, you can specify headers in the query. (If
10073//    you set the fileHeaderInfo field to IGNORE, the first row is skipped for
10074//    the query.) You cannot mix ordinal positions with header column names.
10075//    SELECT s.Id, s.FirstName, s.SSN FROM S3Object s
10076//
10077// For more information about using SQL with S3 Glacier Select restore, see
10078// SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
10079// in the Amazon S3 User Guide.
10080//
10081// When making a select request, you can also do the following:
10082//
10083//    * To expedite your queries, specify the Expedited tier. For more information
10084//    about tiers, see "Restoring Archives," later in this topic.
10085//
10086//    * Specify details about the data serialization format of both the input
10087//    object that is being queried and the serialization of the CSV-encoded
10088//    query results.
10089//
10090// The following are additional important facts about the select feature:
10091//
10092//    * The output results are new Amazon S3 objects. Unlike archive retrievals,
10093//    they are stored until explicitly deleted-manually or through a lifecycle
10094//    policy.
10095//
10096//    * You can issue more than one select request on the same Amazon S3 object.
10097//    Amazon S3 doesn't deduplicate requests, so avoid issuing duplicate requests.
10098//
10099//    * Amazon S3 accepts a select request even if the object has already been
10100//    restored. A select request doesn’t return error response 409.
10101//
10102// Restoring objects
10103//
10104// Objects that you archive to the S3 Glacier or S3 Glacier Deep Archive storage
10105// class, and S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering Deep
10106// Archive tiers are not accessible in real time. For objects in Archive Access
10107// or Deep Archive Access tiers you must first initiate a restore request, and
10108// then wait until the object is moved into the Frequent Access tier. For objects
10109// in S3 Glacier or S3 Glacier Deep Archive storage classes you must first initiate
10110// a restore request, and then wait until a temporary copy of the object is
10111// available. To access an archived object, you must restore the object for
10112// the duration (number of days) that you specify.
10113//
10114// To restore a specific object version, you can provide a version ID. If you
10115// don't provide a version ID, Amazon S3 restores the current version.
10116//
10117// When restoring an archived object (or using a select request), you can specify
10118// one of the following data access tier options in the Tier element of the
10119// request body:
10120//
10121//    * Expedited - Expedited retrievals allow you to quickly access your data
10122//    stored in the S3 Glacier storage class or S3 Intelligent-Tiering Archive
10123//    tier when occasional urgent requests for a subset of archives are required.
10124//    For all but the largest archived objects (250 MB+), data accessed using
10125//    Expedited retrievals is typically made available within 1–5 minutes.
10126//    Provisioned capacity ensures that retrieval capacity for Expedited retrievals
10127//    is available when you need it. Expedited retrievals and provisioned capacity
10128//    are not available for objects stored in the S3 Glacier Deep Archive storage
10129//    class or S3 Intelligent-Tiering Deep Archive tier.
10130//
10131//    * Standard - Standard retrievals allow you to access any of your archived
10132//    objects within several hours. This is the default option for retrieval
10133//    requests that do not specify the retrieval option. Standard retrievals
10134//    typically finish within 3–5 hours for objects stored in the S3 Glacier
10135//    storage class or S3 Intelligent-Tiering Archive tier. They typically finish
10136//    within 12 hours for objects stored in the S3 Glacier Deep Archive storage
10137//    class or S3 Intelligent-Tiering Deep Archive tier. Standard retrievals
10138//    are free for objects stored in S3 Intelligent-Tiering.
10139//
10140//    * Bulk - Bulk retrievals are the lowest-cost retrieval option in S3 Glacier,
10141//    enabling you to retrieve large amounts, even petabytes, of data inexpensively.
10142//    Bulk retrievals typically finish within 5–12 hours for objects stored
10143//    in the S3 Glacier storage class or S3 Intelligent-Tiering Archive tier.
10144//    They typically finish within 48 hours for objects stored in the S3 Glacier
10145//    Deep Archive storage class or S3 Intelligent-Tiering Deep Archive tier.
10146//    Bulk retrievals are free for objects stored in S3 Intelligent-Tiering.
10147//
10148// For more information about archive retrieval options and provisioned capacity
10149// for Expedited data access, see Restoring Archived Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html)
10150// in the Amazon S3 User Guide.
10151//
10152// You can use Amazon S3 restore speed upgrade to change the restore speed to
10153// a faster speed while it is in progress. For more information, see Upgrading
10154// the speed of an in-progress restore (https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html)
10155// in the Amazon S3 User Guide.
10156//
10157// To get the status of object restoration, you can send a HEAD request. Operations
10158// return the x-amz-restore header, which provides information about the restoration
10159// status, in the response. You can use Amazon S3 event notifications to notify
10160// you when a restore is initiated or completed. For more information, see Configuring
10161// Amazon S3 Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
10162// in the Amazon S3 User Guide.
10163//
10164// After restoring an archived object, you can update the restoration period
10165// by reissuing the request with a new period. Amazon S3 updates the restoration
10166// period relative to the current time and charges only for the request-there
10167// are no data transfer charges. You cannot update the restoration period when
10168// Amazon S3 is actively processing your current restore request for the object.
10169//
10170// If your bucket has a lifecycle configuration with a rule that includes an
10171// expiration action, the object expiration overrides the life span that you
10172// specify in a restore request. For example, if you restore an object copy
10173// for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 deletes
10174// the object in 3 days. For more information about lifecycle configuration,
10175// see PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
10176// and Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
10177// in Amazon S3 User Guide.
10178//
10179// Responses
10180//
10181// A successful action returns either the 200 OK or 202 Accepted status code.
10182//
10183//    * If the object is not previously restored, then Amazon S3 returns 202
10184//    Accepted in the response.
10185//
10186//    * If the object is previously restored, Amazon S3 returns 200 OK in the
10187//    response.
10188//
10189// Special Errors
10190//
10191//    * Code: RestoreAlreadyInProgress Cause: Object restore is already in progress.
10192//    (This error does not apply to SELECT type requests.) HTTP Status Code:
10193//    409 Conflict SOAP Fault Code Prefix: Client
10194//
10195//    * Code: GlacierExpeditedRetrievalNotAvailable Cause: expedited retrievals
10196//    are currently not available. Try again later. (Returned if there is insufficient
10197//    capacity to process the Expedited request. This error applies only to
10198//    Expedited retrievals and not to S3 Standard or Bulk retrievals.) HTTP
10199//    Status Code: 503 SOAP Fault Code Prefix: N/A
10200//
10201// Related Resources
10202//
10203//    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
10204//
10205//    * GetBucketNotificationConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html)
10206//
10207//    * SQL Reference for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
10208//    in the Amazon S3 User Guide
10209//
10210// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10211// with awserr.Error's Code and Message methods to get detailed information about
10212// the error.
10213//
10214// See the AWS API reference guide for Amazon Simple Storage Service's
10215// API operation RestoreObject for usage and error information.
10216//
10217// Returned Error Codes:
10218//   * ErrCodeObjectAlreadyInActiveTierError "ObjectAlreadyInActiveTierError"
10219//   This action is not allowed against this storage tier.
10220//
10221// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/RestoreObject
10222func (c *S3) RestoreObject(input *RestoreObjectInput) (*RestoreObjectOutput, error) {
10223	req, out := c.RestoreObjectRequest(input)
10224	return out, req.Send()
10225}
10226
10227// RestoreObjectWithContext is the same as RestoreObject with the addition of
10228// the ability to pass a context and additional request options.
10229//
10230// See RestoreObject for details on how to use this API operation.
10231//
10232// The context must be non-nil and will be used for request cancellation. If
10233// the context is nil a panic will occur. In the future the SDK may create
10234// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10235// for more information on using Contexts.
10236func (c *S3) RestoreObjectWithContext(ctx aws.Context, input *RestoreObjectInput, opts ...request.Option) (*RestoreObjectOutput, error) {
10237	req, out := c.RestoreObjectRequest(input)
10238	req.SetContext(ctx)
10239	req.ApplyOptions(opts...)
10240	return out, req.Send()
10241}
10242
10243const opSelectObjectContent = "SelectObjectContent"
10244
10245// SelectObjectContentRequest generates a "aws/request.Request" representing the
10246// client's request for the SelectObjectContent operation. The "output" return
10247// value will be populated with the request's response once the request completes
10248// successfully.
10249//
10250// Use "Send" method on the returned Request to send the API call to the service.
10251// the "output" return value is not valid until after Send returns without error.
10252//
10253// See SelectObjectContent for more information on using the SelectObjectContent
10254// API call, and error handling.
10255//
10256// This method is useful when you want to inject custom logic or configuration
10257// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10258//
10259//
10260//    // Example sending a request using the SelectObjectContentRequest method.
10261//    req, resp := client.SelectObjectContentRequest(params)
10262//
10263//    err := req.Send()
10264//    if err == nil { // resp is now filled
10265//        fmt.Println(resp)
10266//    }
10267//
10268// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
10269func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *request.Request, output *SelectObjectContentOutput) {
10270	op := &request.Operation{
10271		Name:       opSelectObjectContent,
10272		HTTPMethod: "POST",
10273		HTTPPath:   "/{Bucket}/{Key+}?select&select-type=2",
10274	}
10275
10276	if input == nil {
10277		input = &SelectObjectContentInput{}
10278	}
10279
10280	output = &SelectObjectContentOutput{}
10281	req = c.newRequest(op, input, output)
10282
10283	es := NewSelectObjectContentEventStream()
10284	req.Handlers.Unmarshal.PushBack(es.setStreamCloser)
10285	output.EventStream = es
10286
10287	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
10288	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
10289	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
10290	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
10291	return
10292}
10293
10294// SelectObjectContent API operation for Amazon Simple Storage Service.
10295//
10296// This action filters the contents of an Amazon S3 object based on a simple
10297// structured query language (SQL) statement. In the request, along with the
10298// SQL expression, you must also specify a data serialization format (JSON,
10299// CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse
10300// object data into records, and returns only records that match the specified
10301// SQL expression. You must also specify the data serialization format for the
10302// response.
10303//
10304// This action is not supported by Amazon S3 on Outposts.
10305//
10306// For more information about Amazon S3 Select, see Selecting Content from Objects
10307// (https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html)
10308// in the Amazon S3 User Guide.
10309//
10310// For more information about using SQL with Amazon S3 Select, see SQL Reference
10311// for Amazon S3 Select and S3 Glacier Select (https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html)
10312// in the Amazon S3 User Guide.
10313//
10314// Permissions
10315//
10316// You must have s3:GetObject permission for this operation. Amazon S3 Select
10317// does not support anonymous access. For more information about permissions,
10318// see Specifying Permissions in a Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html)
10319// in the Amazon S3 User Guide.
10320//
10321// Object Data Formats
10322//
10323// You can use Amazon S3 Select to query objects that have the following format
10324// properties:
10325//
10326//    * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet format.
10327//
10328//    * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports.
10329//
10330//    * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or BZIP2.
10331//    GZIP and BZIP2 are the only compression formats that Amazon S3 Select
10332//    supports for CSV and JSON files. Amazon S3 Select supports columnar compression
10333//    for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object
10334//    compression for Parquet objects.
10335//
10336//    * Server-side encryption - Amazon S3 Select supports querying objects
10337//    that are protected with server-side encryption. For objects that are encrypted
10338//    with customer-provided encryption keys (SSE-C), you must use HTTPS, and
10339//    you must use the headers that are documented in the GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
10340//    For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided
10341//    Encryption Keys) (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html)
10342//    in the Amazon S3 User Guide. For objects that are encrypted with Amazon
10343//    S3 managed encryption keys (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS),
10344//    server-side encryption is handled transparently, so you don't need to
10345//    specify anything. For more information about server-side encryption, including
10346//    SSE-S3 and SSE-KMS, see Protecting Data Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)
10347//    in the Amazon S3 User Guide.
10348//
10349// Working with the Response Body
10350//
10351// Given the response size is unknown, Amazon S3 Select streams the response
10352// as a series of messages and includes a Transfer-Encoding header with chunked
10353// as its value in the response. For more information, see Appendix: SelectObjectContent
10354// Response (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html).
10355//
10356// GetObject Support
10357//
10358// The SelectObjectContent action does not support the following GetObject functionality.
10359// For more information, see GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html).
10360//
10361//    * Range: Although you can specify a scan range for an Amazon S3 Select
10362//    request (see SelectObjectContentRequest - ScanRange (https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange)
10363//    in the request parameters), you cannot specify the range of bytes of an
10364//    object to return.
10365//
10366//    * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot
10367//    specify the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY storage classes.
10368//    For more information, about storage classes see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro)
10369//    in the Amazon S3 User Guide.
10370//
10371// Special Errors
10372//
10373// For a list of special errors for this operation, see List of SELECT Object
10374// Content Error Codes (https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList)
10375//
10376// Related Resources
10377//
10378//    * GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html)
10379//
10380//    * GetBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html)
10381//
10382//    * PutBucketLifecycleConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)
10383//
10384// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10385// with awserr.Error's Code and Message methods to get detailed information about
10386// the error.
10387//
10388// See the AWS API reference guide for Amazon Simple Storage Service's
10389// API operation SelectObjectContent for usage and error information.
10390// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/SelectObjectContent
10391func (c *S3) SelectObjectContent(input *SelectObjectContentInput) (*SelectObjectContentOutput, error) {
10392	req, out := c.SelectObjectContentRequest(input)
10393	return out, req.Send()
10394}
10395
10396// SelectObjectContentWithContext is the same as SelectObjectContent with the addition of
10397// the ability to pass a context and additional request options.
10398//
10399// See SelectObjectContent for details on how to use this API operation.
10400//
10401// The context must be non-nil and will be used for request cancellation. If
10402// the context is nil a panic will occur. In the future the SDK may create
10403// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10404// for more information on using Contexts.
10405func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObjectContentInput, opts ...request.Option) (*SelectObjectContentOutput, error) {
10406	req, out := c.SelectObjectContentRequest(input)
10407	req.SetContext(ctx)
10408	req.ApplyOptions(opts...)
10409	return out, req.Send()
10410}
10411
10412var _ awserr.Error
10413
10414// SelectObjectContentEventStream provides the event stream handling for the SelectObjectContent.
10415//
10416// For testing and mocking the event stream this type should be initialized via
10417// the NewSelectObjectContentEventStream constructor function. Using the functional options
10418// to pass in nested mock behavior.
10419type SelectObjectContentEventStream struct {
10420
10421	// Reader is the EventStream reader for the SelectObjectContentEventStream
10422	// events. This value is automatically set by the SDK when the API call is made
10423	// Use this member when unit testing your code with the SDK to mock out the
10424	// EventStream Reader.
10425	//
10426	// Must not be nil.
10427	Reader SelectObjectContentEventStreamReader
10428
10429	outputReader io.ReadCloser
10430
10431	// StreamCloser is the io.Closer for the EventStream connection. For HTTP
10432	// EventStream this is the response Body. The stream will be closed when
10433	// the Close method of the EventStream is called.
10434	StreamCloser io.Closer
10435
10436	done      chan struct{}
10437	closeOnce sync.Once
10438	err       *eventstreamapi.OnceError
10439}
10440
10441// NewSelectObjectContentEventStream initializes an SelectObjectContentEventStream.
10442// This function should only be used for testing and mocking the SelectObjectContentEventStream
10443// stream within your application.
10444//
10445// The Reader member must be set before reading events from the stream.
10446//
10447// The StreamCloser member should be set to the underlying io.Closer,
10448// (e.g. http.Response.Body), that will be closed when the stream Close method
10449// is called.
10450//
10451//   es := NewSelectObjectContentEventStream(func(o *SelectObjectContentEventStream{
10452//       es.Reader = myMockStreamReader
10453//       es.StreamCloser = myMockStreamCloser
10454//   })
10455func NewSelectObjectContentEventStream(opts ...func(*SelectObjectContentEventStream)) *SelectObjectContentEventStream {
10456	es := &SelectObjectContentEventStream{
10457		done: make(chan struct{}),
10458		err:  eventstreamapi.NewOnceError(),
10459	}
10460
10461	for _, fn := range opts {
10462		fn(es)
10463	}
10464
10465	return es
10466}
10467
10468func (es *SelectObjectContentEventStream) setStreamCloser(r *request.Request) {
10469	es.StreamCloser = r.HTTPResponse.Body
10470}
10471
10472func (es *SelectObjectContentEventStream) runOnStreamPartClose(r *request.Request) {
10473	if es.done == nil {
10474		return
10475	}
10476	go es.waitStreamPartClose()
10477
10478}
10479
10480func (es *SelectObjectContentEventStream) waitStreamPartClose() {
10481	var outputErrCh <-chan struct{}
10482	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
10483		outputErrCh = v.ErrorSet()
10484	}
10485	var outputClosedCh <-chan struct{}
10486	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
10487		outputClosedCh = v.Closed()
10488	}
10489
10490	select {
10491	case <-es.done:
10492	case <-outputErrCh:
10493		es.err.SetError(es.Reader.Err())
10494		es.Close()
10495	case <-outputClosedCh:
10496		if err := es.Reader.Err(); err != nil {
10497			es.err.SetError(es.Reader.Err())
10498		}
10499		es.Close()
10500	}
10501}
10502
10503// Events returns a channel to read events from.
10504//
10505// These events are:
10506//
10507//     * ContinuationEvent
10508//     * EndEvent
10509//     * ProgressEvent
10510//     * RecordsEvent
10511//     * StatsEvent
10512//     * SelectObjectContentEventStreamUnknownEvent
10513func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
10514	return es.Reader.Events()
10515}
10516
10517func (es *SelectObjectContentEventStream) runOutputStream(r *request.Request) {
10518	var opts []func(*eventstream.Decoder)
10519	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
10520		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
10521	}
10522
10523	unmarshalerForEvent := unmarshalerForSelectObjectContentEventStreamEvent{
10524		metadata: protocol.ResponseMetadata{
10525			StatusCode: r.HTTPResponse.StatusCode,
10526			RequestID:  r.RequestID,
10527		},
10528	}.UnmarshalerForEventName
10529
10530	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
10531	eventReader := eventstreamapi.NewEventReader(decoder,
10532		protocol.HandlerPayloadUnmarshal{
10533			Unmarshalers: r.Handlers.UnmarshalStream,
10534		},
10535		unmarshalerForEvent,
10536	)
10537
10538	es.outputReader = r.HTTPResponse.Body
10539	es.Reader = newReadSelectObjectContentEventStream(eventReader)
10540}
10541
10542// Close closes the stream. This will also cause the stream to be closed.
10543// Close must be called when done using the stream API. Not calling Close
10544// may result in resource leaks.
10545//
10546// You can use the closing of the Reader's Events channel to terminate your
10547// application's read from the API's stream.
10548//
10549func (es *SelectObjectContentEventStream) Close() (err error) {
10550	es.closeOnce.Do(es.safeClose)
10551	return es.Err()
10552}
10553
10554func (es *SelectObjectContentEventStream) safeClose() {
10555	if es.done != nil {
10556		close(es.done)
10557	}
10558
10559	es.Reader.Close()
10560	if es.outputReader != nil {
10561		es.outputReader.Close()
10562	}
10563
10564	es.StreamCloser.Close()
10565}
10566
10567// Err returns any error that occurred while reading or writing EventStream
10568// Events from the service API's response. Returns nil if there were no errors.
10569func (es *SelectObjectContentEventStream) Err() error {
10570	if err := es.err.Err(); err != nil {
10571		return err
10572	}
10573	if err := es.Reader.Err(); err != nil {
10574		return err
10575	}
10576
10577	return nil
10578}
10579
10580const opUploadPart = "UploadPart"
10581
10582// UploadPartRequest generates a "aws/request.Request" representing the
10583// client's request for the UploadPart operation. The "output" return
10584// value will be populated with the request's response once the request completes
10585// successfully.
10586//
10587// Use "Send" method on the returned Request to send the API call to the service.
10588// the "output" return value is not valid until after Send returns without error.
10589//
10590// See UploadPart for more information on using the UploadPart
10591// API call, and error handling.
10592//
10593// This method is useful when you want to inject custom logic or configuration
10594// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10595//
10596//
10597//    // Example sending a request using the UploadPartRequest method.
10598//    req, resp := client.UploadPartRequest(params)
10599//
10600//    err := req.Send()
10601//    if err == nil { // resp is now filled
10602//        fmt.Println(resp)
10603//    }
10604//
10605// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
10606func (c *S3) UploadPartRequest(input *UploadPartInput) (req *request.Request, output *UploadPartOutput) {
10607	op := &request.Operation{
10608		Name:       opUploadPart,
10609		HTTPMethod: "PUT",
10610		HTTPPath:   "/{Bucket}/{Key+}",
10611	}
10612
10613	if input == nil {
10614		input = &UploadPartInput{}
10615	}
10616
10617	output = &UploadPartOutput{}
10618	req = c.newRequest(op, input, output)
10619	return
10620}
10621
10622// UploadPart API operation for Amazon Simple Storage Service.
10623//
10624// Uploads a part in a multipart upload.
10625//
10626// In this operation, you provide part data in your request. However, you have
10627// an option to specify your existing Amazon S3 object as a data source for
10628// the part you are uploading. To upload a part from an existing object, you
10629// use the UploadPartCopy (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)
10630// operation.
10631//
10632// You must initiate a multipart upload (see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html))
10633// before you can upload any part. In response to your initiate request, Amazon
10634// S3 returns an upload ID, a unique identifier, that you must include in your
10635// upload part request.
10636//
10637// Part numbers can be any number from 1 to 10,000, inclusive. A part number
10638// uniquely identifies a part and also defines its position within the object
10639// being created. If you upload a new part using the same part number that was
10640// used with a previous part, the previously uploaded part is overwritten. Each
10641// part must be at least 5 MB in size, except the last part. There is no size
10642// limit on the last part of your multipart upload.
10643//
10644// To ensure that data is not corrupted when traversing the network, specify
10645// the Content-MD5 header in the upload part request. Amazon S3 checks the part
10646// data against the provided MD5 value. If they do not match, Amazon S3 returns
10647// an error.
10648//
10649// If the upload request is signed with Signature Version 4, then Amazon Web
10650// Services S3 uses the x-amz-content-sha256 header as a checksum instead of
10651// Content-MD5. For more information see Authenticating Requests: Using the
10652// Authorization Header (Amazon Web Services Signature Version 4) (https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html).
10653//
10654// Note: After you initiate multipart upload and upload one or more parts, you
10655// must either complete or abort multipart upload in order to stop getting charged
10656// for storage of the uploaded parts. Only after you either complete or abort
10657// multipart upload, Amazon S3 frees up the parts storage and stops charging
10658// you for the parts storage.
10659//
10660// For more information on multipart uploads, go to Multipart Upload Overview
10661// (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html) in the
10662// Amazon S3 User Guide .
10663//
10664// For information on the permissions required to use the multipart upload API,
10665// go to Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
10666// in the Amazon S3 User Guide.
10667//
10668// You can optionally request server-side encryption where Amazon S3 encrypts
10669// your data as it writes it to disks in its data centers and decrypts it for
10670// you when you access it. You have the option of providing your own encryption
10671// key, or you can use the Amazon Web Services managed encryption keys. If you
10672// choose to provide your own encryption key, the request headers you provide
10673// in the request must match the headers you used in the request to initiate
10674// the upload by using CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
10675// For more information, go to Using Server-Side Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)
10676// in the Amazon S3 User Guide.
10677//
10678// Server-side encryption is supported by the S3 Multipart Upload actions. Unless
10679// you are using a customer-provided encryption key, you don't need to specify
10680// the encryption parameters in each UploadPart request. Instead, you only need
10681// to specify the server-side encryption parameters in the initial Initiate
10682// Multipart request. For more information, see CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html).
10683//
10684// If you requested server-side encryption using a customer-provided encryption
10685// key in your initiate multipart upload request, you must provide identical
10686// encryption information in each part upload using the following headers.
10687//
10688//    * x-amz-server-side-encryption-customer-algorithm
10689//
10690//    * x-amz-server-side-encryption-customer-key
10691//
10692//    * x-amz-server-side-encryption-customer-key-MD5
10693//
10694// Special Errors
10695//
10696//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
10697//    The upload ID might be invalid, or the multipart upload might have been
10698//    aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault Code
10699//    Prefix: Client
10700//
10701// Related Resources
10702//
10703//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
10704//
10705//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
10706//
10707//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
10708//
10709//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
10710//
10711//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
10712//
10713// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10714// with awserr.Error's Code and Message methods to get detailed information about
10715// the error.
10716//
10717// See the AWS API reference guide for Amazon Simple Storage Service's
10718// API operation UploadPart for usage and error information.
10719// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPart
10720func (c *S3) UploadPart(input *UploadPartInput) (*UploadPartOutput, error) {
10721	req, out := c.UploadPartRequest(input)
10722	return out, req.Send()
10723}
10724
10725// UploadPartWithContext is the same as UploadPart with the addition of
10726// the ability to pass a context and additional request options.
10727//
10728// See UploadPart for details on how to use this API operation.
10729//
10730// The context must be non-nil and will be used for request cancellation. If
10731// the context is nil a panic will occur. In the future the SDK may create
10732// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10733// for more information on using Contexts.
10734func (c *S3) UploadPartWithContext(ctx aws.Context, input *UploadPartInput, opts ...request.Option) (*UploadPartOutput, error) {
10735	req, out := c.UploadPartRequest(input)
10736	req.SetContext(ctx)
10737	req.ApplyOptions(opts...)
10738	return out, req.Send()
10739}
10740
10741const opUploadPartCopy = "UploadPartCopy"
10742
10743// UploadPartCopyRequest generates a "aws/request.Request" representing the
10744// client's request for the UploadPartCopy operation. The "output" return
10745// value will be populated with the request's response once the request completes
10746// successfully.
10747//
10748// Use "Send" method on the returned Request to send the API call to the service.
10749// the "output" return value is not valid until after Send returns without error.
10750//
10751// See UploadPartCopy for more information on using the UploadPartCopy
10752// API call, and error handling.
10753//
10754// This method is useful when you want to inject custom logic or configuration
10755// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10756//
10757//
10758//    // Example sending a request using the UploadPartCopyRequest method.
10759//    req, resp := client.UploadPartCopyRequest(params)
10760//
10761//    err := req.Send()
10762//    if err == nil { // resp is now filled
10763//        fmt.Println(resp)
10764//    }
10765//
10766// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
10767func (c *S3) UploadPartCopyRequest(input *UploadPartCopyInput) (req *request.Request, output *UploadPartCopyOutput) {
10768	op := &request.Operation{
10769		Name:       opUploadPartCopy,
10770		HTTPMethod: "PUT",
10771		HTTPPath:   "/{Bucket}/{Key+}",
10772	}
10773
10774	if input == nil {
10775		input = &UploadPartCopyInput{}
10776	}
10777
10778	output = &UploadPartCopyOutput{}
10779	req = c.newRequest(op, input, output)
10780	return
10781}
10782
10783// UploadPartCopy API operation for Amazon Simple Storage Service.
10784//
10785// Uploads a part by copying data from an existing object as data source. You
10786// specify the data source by adding the request header x-amz-copy-source in
10787// your request and a byte range by adding the request header x-amz-copy-source-range
10788// in your request.
10789//
10790// The minimum allowable part size for a multipart upload is 5 MB. For more
10791// information about multipart upload limits, go to Quick Facts (https://docs.aws.amazon.com/AmazonS3/latest/dev/qfacts.html)
10792// in the Amazon S3 User Guide.
10793//
10794// Instead of using an existing object as part data, you might use the UploadPart
10795// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html) action
10796// and provide data in your request.
10797//
10798// You must initiate a multipart upload before you can upload any part. In response
10799// to your initiate request. Amazon S3 returns a unique identifier, the upload
10800// ID, that you must include in your upload part request.
10801//
10802// For more information about using the UploadPartCopy operation, see the following:
10803//
10804//    * For conceptual information about multipart uploads, see Uploading Objects
10805//    Using Multipart Upload (https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)
10806//    in the Amazon S3 User Guide.
10807//
10808//    * For information about permissions required to use the multipart upload
10809//    API, see Multipart Upload and Permissions (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html)
10810//    in the Amazon S3 User Guide.
10811//
10812//    * For information about copying objects using a single atomic action vs.
10813//    the multipart upload, see Operations on Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html)
10814//    in the Amazon S3 User Guide.
10815//
10816//    * For information about using server-side encryption with customer-provided
10817//    encryption keys with the UploadPartCopy operation, see CopyObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)
10818//    and UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html).
10819//
10820// Note the following additional considerations about the request headers x-amz-copy-source-if-match,
10821// x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, and
10822// x-amz-copy-source-if-modified-since:
10823//
10824//    * Consideration 1 - If both of the x-amz-copy-source-if-match and x-amz-copy-source-if-unmodified-since
10825//    headers are present in the request as follows: x-amz-copy-source-if-match
10826//    condition evaluates to true, and; x-amz-copy-source-if-unmodified-since
10827//    condition evaluates to false; Amazon S3 returns 200 OK and copies the
10828//    data.
10829//
10830//    * Consideration 2 - If both of the x-amz-copy-source-if-none-match and
10831//    x-amz-copy-source-if-modified-since headers are present in the request
10832//    as follows: x-amz-copy-source-if-none-match condition evaluates to false,
10833//    and; x-amz-copy-source-if-modified-since condition evaluates to true;
10834//    Amazon S3 returns 412 Precondition Failed response code.
10835//
10836// Versioning
10837//
10838// If your bucket has versioning enabled, you could have multiple versions of
10839// the same object. By default, x-amz-copy-source identifies the current version
10840// of the object to copy. If the current version is a delete marker and you
10841// don't specify a versionId in the x-amz-copy-source, Amazon S3 returns a 404
10842// error, because the object does not exist. If you specify versionId in the
10843// x-amz-copy-source and the versionId is a delete marker, Amazon S3 returns
10844// an HTTP 400 error, because you are not allowed to specify a delete marker
10845// as a version for the x-amz-copy-source.
10846//
10847// You can optionally specify a specific version of the source object to copy
10848// by adding the versionId subresource as shown in the following example:
10849//
10850// x-amz-copy-source: /bucket/object?versionId=version id
10851//
10852// Special Errors
10853//
10854//    * Code: NoSuchUpload Cause: The specified multipart upload does not exist.
10855//    The upload ID might be invalid, or the multipart upload might have been
10856//    aborted or completed. HTTP Status Code: 404 Not Found
10857//
10858//    * Code: InvalidRequest Cause: The specified copy source is not supported
10859//    as a byte-range copy source. HTTP Status Code: 400 Bad Request
10860//
10861// Related Resources
10862//
10863//    * CreateMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html)
10864//
10865//    * UploadPart (https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html)
10866//
10867//    * CompleteMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)
10868//
10869//    * AbortMultipartUpload (https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html)
10870//
10871//    * ListParts (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html)
10872//
10873//    * ListMultipartUploads (https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html)
10874//
10875// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10876// with awserr.Error's Code and Message methods to get detailed information about
10877// the error.
10878//
10879// See the AWS API reference guide for Amazon Simple Storage Service's
10880// API operation UploadPartCopy for usage and error information.
10881// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/UploadPartCopy
10882func (c *S3) UploadPartCopy(input *UploadPartCopyInput) (*UploadPartCopyOutput, error) {
10883	req, out := c.UploadPartCopyRequest(input)
10884	return out, req.Send()
10885}
10886
10887// UploadPartCopyWithContext is the same as UploadPartCopy with the addition of
10888// the ability to pass a context and additional request options.
10889//
10890// See UploadPartCopy for details on how to use this API operation.
10891//
10892// The context must be non-nil and will be used for request cancellation. If
10893// the context is nil a panic will occur. In the future the SDK may create
10894// sub-contexts for http.Requests. See https://golang.org/pkg/context/
10895// for more information on using Contexts.
10896func (c *S3) UploadPartCopyWithContext(ctx aws.Context, input *UploadPartCopyInput, opts ...request.Option) (*UploadPartCopyOutput, error) {
10897	req, out := c.UploadPartCopyRequest(input)
10898	req.SetContext(ctx)
10899	req.ApplyOptions(opts...)
10900	return out, req.Send()
10901}
10902
10903const opWriteGetObjectResponse = "WriteGetObjectResponse"
10904
10905// WriteGetObjectResponseRequest generates a "aws/request.Request" representing the
10906// client's request for the WriteGetObjectResponse operation. The "output" return
10907// value will be populated with the request's response once the request completes
10908// successfully.
10909//
10910// Use "Send" method on the returned Request to send the API call to the service.
10911// the "output" return value is not valid until after Send returns without error.
10912//
10913// See WriteGetObjectResponse for more information on using the WriteGetObjectResponse
10914// API call, and error handling.
10915//
10916// This method is useful when you want to inject custom logic or configuration
10917// into the SDK's request lifecycle. Such as custom headers, or retry logic.
10918//
10919//
10920//    // Example sending a request using the WriteGetObjectResponseRequest method.
10921//    req, resp := client.WriteGetObjectResponseRequest(params)
10922//
10923//    err := req.Send()
10924//    if err == nil { // resp is now filled
10925//        fmt.Println(resp)
10926//    }
10927//
10928// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse
10929func (c *S3) WriteGetObjectResponseRequest(input *WriteGetObjectResponseInput) (req *request.Request, output *WriteGetObjectResponseOutput) {
10930	op := &request.Operation{
10931		Name:       opWriteGetObjectResponse,
10932		HTTPMethod: "POST",
10933		HTTPPath:   "/WriteGetObjectResponse",
10934	}
10935
10936	if input == nil {
10937		input = &WriteGetObjectResponseInput{}
10938	}
10939
10940	output = &WriteGetObjectResponseOutput{}
10941	req = c.newRequest(op, input, output)
10942	req.Handlers.Sign.Remove(v4.SignRequestHandler)
10943	handler := v4.BuildNamedHandler("v4.CustomSignerHandler", v4.WithUnsignedPayload)
10944	req.Handlers.Sign.PushFrontNamed(handler)
10945	req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
10946	req.Handlers.Build.PushBackNamed(protocol.NewHostPrefixHandler("{RequestRoute}.", input.hostLabels))
10947	req.Handlers.Build.PushBackNamed(protocol.ValidateEndpointHostHandler)
10948	return
10949}
10950
10951// WriteGetObjectResponse API operation for Amazon Simple Storage Service.
10952//
10953// Passes transformed objects to a GetObject operation when using Object Lambda
10954// access points. For information about Object Lambda access points, see Transforming
10955// objects with Object Lambda access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/transforming-objects.html)
10956// in the Amazon S3 User Guide.
10957//
10958// This operation supports metadata that can be returned by GetObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html),
10959// in addition to RequestRoute, RequestToken, StatusCode, ErrorCode, and ErrorMessage.
10960// The GetObject response metadata is supported so that the WriteGetObjectResponse
10961// caller, typically an Lambda function, can provide the same metadata when
10962// it internally invokes GetObject. When WriteGetObjectResponse is called by
10963// a customer-owned Lambda function, the metadata returned to the end user GetObject
10964// call might differ from what Amazon S3 would normally return.
10965//
10966// You can include any number of metadata headers. When including a metadata
10967// header, it should be prefaced with x-amz-meta. For example, x-amz-meta-my-custom-header:
10968// MyCustomValue. The primary use case for this is to forward GetObject metadata.
10969//
10970// Amazon Web Services provides some prebuilt Lambda functions that you can
10971// use with S3 Object Lambda to detect and redact personally identifiable information
10972// (PII) and decompress S3 objects. These Lambda functions are available in
10973// the Amazon Web Services Serverless Application Repository, and can be selected
10974// through the Amazon Web Services Management Console when you create your Object
10975// Lambda access point.
10976//
10977// Example 1: PII Access Control - This Lambda function uses Amazon Comprehend,
10978// a natural language processing (NLP) service using machine learning to find
10979// insights and relationships in text. It automatically detects personally identifiable
10980// information (PII) such as names, addresses, dates, credit card numbers, and
10981// social security numbers from documents in your Amazon S3 bucket.
10982//
10983// Example 2: PII Redaction - This Lambda function uses Amazon Comprehend, a
10984// natural language processing (NLP) service using machine learning to find
10985// insights and relationships in text. It automatically redacts personally identifiable
10986// information (PII) such as names, addresses, dates, credit card numbers, and
10987// social security numbers from documents in your Amazon S3 bucket.
10988//
10989// Example 3: Decompression - The Lambda function S3ObjectLambdaDecompression,
10990// is equipped to decompress objects stored in S3 in one of six compressed file
10991// formats including bzip2, gzip, snappy, zlib, zstandard and ZIP.
10992//
10993// For information on how to view and use these functions, see Using Amazon
10994// Web Services built Lambda functions (https://docs.aws.amazon.com/AmazonS3/latest/userguide/olap-examples.html)
10995// in the Amazon S3 User Guide.
10996//
10997// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
10998// with awserr.Error's Code and Message methods to get detailed information about
10999// the error.
11000//
11001// See the AWS API reference guide for Amazon Simple Storage Service's
11002// API operation WriteGetObjectResponse for usage and error information.
11003// See also, https://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/WriteGetObjectResponse
11004func (c *S3) WriteGetObjectResponse(input *WriteGetObjectResponseInput) (*WriteGetObjectResponseOutput, error) {
11005	req, out := c.WriteGetObjectResponseRequest(input)
11006	return out, req.Send()
11007}
11008
11009// WriteGetObjectResponseWithContext is the same as WriteGetObjectResponse with the addition of
11010// the ability to pass a context and additional request options.
11011//
11012// See WriteGetObjectResponse for details on how to use this API operation.
11013//
11014// The context must be non-nil and will be used for request cancellation. If
11015// the context is nil a panic will occur. In the future the SDK may create
11016// sub-contexts for http.Requests. See https://golang.org/pkg/context/
11017// for more information on using Contexts.
11018func (c *S3) WriteGetObjectResponseWithContext(ctx aws.Context, input *WriteGetObjectResponseInput, opts ...request.Option) (*WriteGetObjectResponseOutput, error) {
11019	req, out := c.WriteGetObjectResponseRequest(input)
11020	req.SetContext(ctx)
11021	req.ApplyOptions(opts...)
11022	return out, req.Send()
11023}
11024
11025// Specifies the days since the initiation of an incomplete multipart upload
11026// that Amazon S3 will wait before permanently removing all parts of the upload.
11027// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
11028// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
11029// in the Amazon S3 User Guide.
11030type AbortIncompleteMultipartUpload struct {
11031	_ struct{} `type:"structure"`
11032
11033	// Specifies the number of days after which Amazon S3 aborts an incomplete multipart
11034	// upload.
11035	DaysAfterInitiation *int64 `type:"integer"`
11036}
11037
11038// String returns the string representation.
11039//
11040// API parameter values that are decorated as "sensitive" in the API will not
11041// be included in the string output. The member name will be present, but the
11042// value will be replaced with "sensitive".
11043func (s AbortIncompleteMultipartUpload) String() string {
11044	return awsutil.Prettify(s)
11045}
11046
11047// GoString returns the string representation.
11048//
11049// API parameter values that are decorated as "sensitive" in the API will not
11050// be included in the string output. The member name will be present, but the
11051// value will be replaced with "sensitive".
11052func (s AbortIncompleteMultipartUpload) GoString() string {
11053	return s.String()
11054}
11055
11056// SetDaysAfterInitiation sets the DaysAfterInitiation field's value.
11057func (s *AbortIncompleteMultipartUpload) SetDaysAfterInitiation(v int64) *AbortIncompleteMultipartUpload {
11058	s.DaysAfterInitiation = &v
11059	return s
11060}
11061
11062type AbortMultipartUploadInput struct {
11063	_ struct{} `locationName:"AbortMultipartUploadRequest" type:"structure"`
11064
11065	// The bucket name to which the upload was taking place.
11066	//
11067	// When using this action with an access point, you must direct requests to
11068	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
11069	// When using this action with an access point through the Amazon Web Services
11070	// SDKs, you provide the access point ARN in place of the bucket name. For more
11071	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
11072	// in the Amazon S3 User Guide.
11073	//
11074	// When using this action with Amazon S3 on Outposts, you must direct requests
11075	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
11076	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
11077	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
11078	// you provide the Outposts bucket ARN in place of the bucket name. For more
11079	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
11080	// in the Amazon S3 User Guide.
11081	//
11082	// Bucket is a required field
11083	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
11084
11085	// The account ID of the expected bucket owner. If the bucket is owned by a
11086	// different account, the request will fail with an HTTP 403 (Access Denied)
11087	// error.
11088	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
11089
11090	// Key of the object for which the multipart upload was initiated.
11091	//
11092	// Key is a required field
11093	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
11094
11095	// Confirms that the requester knows that they will be charged for the request.
11096	// Bucket owners need not specify this parameter in their requests. For information
11097	// about downloading objects from requester pays buckets, see Downloading Objects
11098	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
11099	// in the Amazon S3 User Guide.
11100	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
11101
11102	// Upload ID that identifies the multipart upload.
11103	//
11104	// UploadId is a required field
11105	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
11106}
11107
11108// String returns the string representation.
11109//
11110// API parameter values that are decorated as "sensitive" in the API will not
11111// be included in the string output. The member name will be present, but the
11112// value will be replaced with "sensitive".
11113func (s AbortMultipartUploadInput) String() string {
11114	return awsutil.Prettify(s)
11115}
11116
11117// GoString returns the string representation.
11118//
11119// API parameter values that are decorated as "sensitive" in the API will not
11120// be included in the string output. The member name will be present, but the
11121// value will be replaced with "sensitive".
11122func (s AbortMultipartUploadInput) GoString() string {
11123	return s.String()
11124}
11125
11126// Validate inspects the fields of the type to determine if they are valid.
11127func (s *AbortMultipartUploadInput) Validate() error {
11128	invalidParams := request.ErrInvalidParams{Context: "AbortMultipartUploadInput"}
11129	if s.Bucket == nil {
11130		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11131	}
11132	if s.Bucket != nil && len(*s.Bucket) < 1 {
11133		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
11134	}
11135	if s.Key == nil {
11136		invalidParams.Add(request.NewErrParamRequired("Key"))
11137	}
11138	if s.Key != nil && len(*s.Key) < 1 {
11139		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
11140	}
11141	if s.UploadId == nil {
11142		invalidParams.Add(request.NewErrParamRequired("UploadId"))
11143	}
11144
11145	if invalidParams.Len() > 0 {
11146		return invalidParams
11147	}
11148	return nil
11149}
11150
11151// SetBucket sets the Bucket field's value.
11152func (s *AbortMultipartUploadInput) SetBucket(v string) *AbortMultipartUploadInput {
11153	s.Bucket = &v
11154	return s
11155}
11156
11157func (s *AbortMultipartUploadInput) getBucket() (v string) {
11158	if s.Bucket == nil {
11159		return v
11160	}
11161	return *s.Bucket
11162}
11163
11164// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
11165func (s *AbortMultipartUploadInput) SetExpectedBucketOwner(v string) *AbortMultipartUploadInput {
11166	s.ExpectedBucketOwner = &v
11167	return s
11168}
11169
11170// SetKey sets the Key field's value.
11171func (s *AbortMultipartUploadInput) SetKey(v string) *AbortMultipartUploadInput {
11172	s.Key = &v
11173	return s
11174}
11175
11176// SetRequestPayer sets the RequestPayer field's value.
11177func (s *AbortMultipartUploadInput) SetRequestPayer(v string) *AbortMultipartUploadInput {
11178	s.RequestPayer = &v
11179	return s
11180}
11181
11182// SetUploadId sets the UploadId field's value.
11183func (s *AbortMultipartUploadInput) SetUploadId(v string) *AbortMultipartUploadInput {
11184	s.UploadId = &v
11185	return s
11186}
11187
11188func (s *AbortMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
11189	if s.Bucket == nil {
11190		return nil, fmt.Errorf("member Bucket is nil")
11191	}
11192	return parseEndpointARN(*s.Bucket)
11193}
11194
11195func (s *AbortMultipartUploadInput) hasEndpointARN() bool {
11196	if s.Bucket == nil {
11197		return false
11198	}
11199	return arn.IsARN(*s.Bucket)
11200}
11201
11202// updateArnableField updates the value of the input field that
11203// takes an ARN as an input. This method is useful to backfill
11204// the parsed resource name from ARN into the input member.
11205// It returns a pointer to a modified copy of input and an error.
11206// Note that original input is not modified.
11207func (s AbortMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
11208	if s.Bucket == nil {
11209		return nil, fmt.Errorf("member Bucket is nil")
11210	}
11211	s.Bucket = aws.String(v)
11212	return &s, nil
11213}
11214
11215type AbortMultipartUploadOutput struct {
11216	_ struct{} `type:"structure"`
11217
11218	// If present, indicates that the requester was successfully charged for the
11219	// request.
11220	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
11221}
11222
11223// String returns the string representation.
11224//
11225// API parameter values that are decorated as "sensitive" in the API will not
11226// be included in the string output. The member name will be present, but the
11227// value will be replaced with "sensitive".
11228func (s AbortMultipartUploadOutput) String() string {
11229	return awsutil.Prettify(s)
11230}
11231
11232// GoString returns the string representation.
11233//
11234// API parameter values that are decorated as "sensitive" in the API will not
11235// be included in the string output. The member name will be present, but the
11236// value will be replaced with "sensitive".
11237func (s AbortMultipartUploadOutput) GoString() string {
11238	return s.String()
11239}
11240
11241// SetRequestCharged sets the RequestCharged field's value.
11242func (s *AbortMultipartUploadOutput) SetRequestCharged(v string) *AbortMultipartUploadOutput {
11243	s.RequestCharged = &v
11244	return s
11245}
11246
11247// Configures the transfer acceleration state for an Amazon S3 bucket. For more
11248// information, see Amazon S3 Transfer Acceleration (https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
11249// in the Amazon S3 User Guide.
11250type AccelerateConfiguration struct {
11251	_ struct{} `type:"structure"`
11252
11253	// Specifies the transfer acceleration status of the bucket.
11254	Status *string `type:"string" enum:"BucketAccelerateStatus"`
11255}
11256
11257// String returns the string representation.
11258//
11259// API parameter values that are decorated as "sensitive" in the API will not
11260// be included in the string output. The member name will be present, but the
11261// value will be replaced with "sensitive".
11262func (s AccelerateConfiguration) String() string {
11263	return awsutil.Prettify(s)
11264}
11265
11266// GoString returns the string representation.
11267//
11268// API parameter values that are decorated as "sensitive" in the API will not
11269// be included in the string output. The member name will be present, but the
11270// value will be replaced with "sensitive".
11271func (s AccelerateConfiguration) GoString() string {
11272	return s.String()
11273}
11274
11275// SetStatus sets the Status field's value.
11276func (s *AccelerateConfiguration) SetStatus(v string) *AccelerateConfiguration {
11277	s.Status = &v
11278	return s
11279}
11280
11281// Contains the elements that set the ACL permissions for an object per grantee.
11282type AccessControlPolicy struct {
11283	_ struct{} `type:"structure"`
11284
11285	// A list of grants.
11286	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
11287
11288	// Container for the bucket owner's display name and ID.
11289	Owner *Owner `type:"structure"`
11290}
11291
11292// String returns the string representation.
11293//
11294// API parameter values that are decorated as "sensitive" in the API will not
11295// be included in the string output. The member name will be present, but the
11296// value will be replaced with "sensitive".
11297func (s AccessControlPolicy) String() string {
11298	return awsutil.Prettify(s)
11299}
11300
11301// GoString returns the string representation.
11302//
11303// API parameter values that are decorated as "sensitive" in the API will not
11304// be included in the string output. The member name will be present, but the
11305// value will be replaced with "sensitive".
11306func (s AccessControlPolicy) GoString() string {
11307	return s.String()
11308}
11309
11310// Validate inspects the fields of the type to determine if they are valid.
11311func (s *AccessControlPolicy) Validate() error {
11312	invalidParams := request.ErrInvalidParams{Context: "AccessControlPolicy"}
11313	if s.Grants != nil {
11314		for i, v := range s.Grants {
11315			if v == nil {
11316				continue
11317			}
11318			if err := v.Validate(); err != nil {
11319				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Grants", i), err.(request.ErrInvalidParams))
11320			}
11321		}
11322	}
11323
11324	if invalidParams.Len() > 0 {
11325		return invalidParams
11326	}
11327	return nil
11328}
11329
11330// SetGrants sets the Grants field's value.
11331func (s *AccessControlPolicy) SetGrants(v []*Grant) *AccessControlPolicy {
11332	s.Grants = v
11333	return s
11334}
11335
11336// SetOwner sets the Owner field's value.
11337func (s *AccessControlPolicy) SetOwner(v *Owner) *AccessControlPolicy {
11338	s.Owner = v
11339	return s
11340}
11341
11342// A container for information about access control for replicas.
11343type AccessControlTranslation struct {
11344	_ struct{} `type:"structure"`
11345
11346	// Specifies the replica ownership. For default and valid values, see PUT bucket
11347	// replication (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
11348	// in the Amazon S3 API Reference.
11349	//
11350	// Owner is a required field
11351	Owner *string `type:"string" required:"true" enum:"OwnerOverride"`
11352}
11353
11354// String returns the string representation.
11355//
11356// API parameter values that are decorated as "sensitive" in the API will not
11357// be included in the string output. The member name will be present, but the
11358// value will be replaced with "sensitive".
11359func (s AccessControlTranslation) String() string {
11360	return awsutil.Prettify(s)
11361}
11362
11363// GoString returns the string representation.
11364//
11365// API parameter values that are decorated as "sensitive" in the API will not
11366// be included in the string output. The member name will be present, but the
11367// value will be replaced with "sensitive".
11368func (s AccessControlTranslation) GoString() string {
11369	return s.String()
11370}
11371
11372// Validate inspects the fields of the type to determine if they are valid.
11373func (s *AccessControlTranslation) Validate() error {
11374	invalidParams := request.ErrInvalidParams{Context: "AccessControlTranslation"}
11375	if s.Owner == nil {
11376		invalidParams.Add(request.NewErrParamRequired("Owner"))
11377	}
11378
11379	if invalidParams.Len() > 0 {
11380		return invalidParams
11381	}
11382	return nil
11383}
11384
11385// SetOwner sets the Owner field's value.
11386func (s *AccessControlTranslation) SetOwner(v string) *AccessControlTranslation {
11387	s.Owner = &v
11388	return s
11389}
11390
11391// A conjunction (logical AND) of predicates, which is used in evaluating a
11392// metrics filter. The operator must have at least two predicates in any combination,
11393// and an object must match all of the predicates for the filter to apply.
11394type AnalyticsAndOperator struct {
11395	_ struct{} `type:"structure"`
11396
11397	// The prefix to use when evaluating an AND predicate: The prefix that an object
11398	// must have to be included in the metrics results.
11399	Prefix *string `type:"string"`
11400
11401	// The list of tags to use when evaluating an AND predicate.
11402	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
11403}
11404
11405// String returns the string representation.
11406//
11407// API parameter values that are decorated as "sensitive" in the API will not
11408// be included in the string output. The member name will be present, but the
11409// value will be replaced with "sensitive".
11410func (s AnalyticsAndOperator) String() string {
11411	return awsutil.Prettify(s)
11412}
11413
11414// GoString returns the string representation.
11415//
11416// API parameter values that are decorated as "sensitive" in the API will not
11417// be included in the string output. The member name will be present, but the
11418// value will be replaced with "sensitive".
11419func (s AnalyticsAndOperator) GoString() string {
11420	return s.String()
11421}
11422
11423// Validate inspects the fields of the type to determine if they are valid.
11424func (s *AnalyticsAndOperator) Validate() error {
11425	invalidParams := request.ErrInvalidParams{Context: "AnalyticsAndOperator"}
11426	if s.Tags != nil {
11427		for i, v := range s.Tags {
11428			if v == nil {
11429				continue
11430			}
11431			if err := v.Validate(); err != nil {
11432				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
11433			}
11434		}
11435	}
11436
11437	if invalidParams.Len() > 0 {
11438		return invalidParams
11439	}
11440	return nil
11441}
11442
11443// SetPrefix sets the Prefix field's value.
11444func (s *AnalyticsAndOperator) SetPrefix(v string) *AnalyticsAndOperator {
11445	s.Prefix = &v
11446	return s
11447}
11448
11449// SetTags sets the Tags field's value.
11450func (s *AnalyticsAndOperator) SetTags(v []*Tag) *AnalyticsAndOperator {
11451	s.Tags = v
11452	return s
11453}
11454
11455// Specifies the configuration and any analyses for the analytics filter of
11456// an Amazon S3 bucket.
11457type AnalyticsConfiguration struct {
11458	_ struct{} `type:"structure"`
11459
11460	// The filter used to describe a set of objects for analyses. A filter must
11461	// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
11462	// If no filter is provided, all objects will be considered in any analysis.
11463	Filter *AnalyticsFilter `type:"structure"`
11464
11465	// The ID that identifies the analytics configuration.
11466	//
11467	// Id is a required field
11468	Id *string `type:"string" required:"true"`
11469
11470	// Contains data related to access patterns to be collected and made available
11471	// to analyze the tradeoffs between different storage classes.
11472	//
11473	// StorageClassAnalysis is a required field
11474	StorageClassAnalysis *StorageClassAnalysis `type:"structure" required:"true"`
11475}
11476
11477// String returns the string representation.
11478//
11479// API parameter values that are decorated as "sensitive" in the API will not
11480// be included in the string output. The member name will be present, but the
11481// value will be replaced with "sensitive".
11482func (s AnalyticsConfiguration) String() string {
11483	return awsutil.Prettify(s)
11484}
11485
11486// GoString returns the string representation.
11487//
11488// API parameter values that are decorated as "sensitive" in the API will not
11489// be included in the string output. The member name will be present, but the
11490// value will be replaced with "sensitive".
11491func (s AnalyticsConfiguration) GoString() string {
11492	return s.String()
11493}
11494
11495// Validate inspects the fields of the type to determine if they are valid.
11496func (s *AnalyticsConfiguration) Validate() error {
11497	invalidParams := request.ErrInvalidParams{Context: "AnalyticsConfiguration"}
11498	if s.Id == nil {
11499		invalidParams.Add(request.NewErrParamRequired("Id"))
11500	}
11501	if s.StorageClassAnalysis == nil {
11502		invalidParams.Add(request.NewErrParamRequired("StorageClassAnalysis"))
11503	}
11504	if s.Filter != nil {
11505		if err := s.Filter.Validate(); err != nil {
11506			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
11507		}
11508	}
11509	if s.StorageClassAnalysis != nil {
11510		if err := s.StorageClassAnalysis.Validate(); err != nil {
11511			invalidParams.AddNested("StorageClassAnalysis", err.(request.ErrInvalidParams))
11512		}
11513	}
11514
11515	if invalidParams.Len() > 0 {
11516		return invalidParams
11517	}
11518	return nil
11519}
11520
11521// SetFilter sets the Filter field's value.
11522func (s *AnalyticsConfiguration) SetFilter(v *AnalyticsFilter) *AnalyticsConfiguration {
11523	s.Filter = v
11524	return s
11525}
11526
11527// SetId sets the Id field's value.
11528func (s *AnalyticsConfiguration) SetId(v string) *AnalyticsConfiguration {
11529	s.Id = &v
11530	return s
11531}
11532
11533// SetStorageClassAnalysis sets the StorageClassAnalysis field's value.
11534func (s *AnalyticsConfiguration) SetStorageClassAnalysis(v *StorageClassAnalysis) *AnalyticsConfiguration {
11535	s.StorageClassAnalysis = v
11536	return s
11537}
11538
11539// Where to publish the analytics results.
11540type AnalyticsExportDestination struct {
11541	_ struct{} `type:"structure"`
11542
11543	// A destination signifying output to an S3 bucket.
11544	//
11545	// S3BucketDestination is a required field
11546	S3BucketDestination *AnalyticsS3BucketDestination `type:"structure" required:"true"`
11547}
11548
11549// String returns the string representation.
11550//
11551// API parameter values that are decorated as "sensitive" in the API will not
11552// be included in the string output. The member name will be present, but the
11553// value will be replaced with "sensitive".
11554func (s AnalyticsExportDestination) String() string {
11555	return awsutil.Prettify(s)
11556}
11557
11558// GoString returns the string representation.
11559//
11560// API parameter values that are decorated as "sensitive" in the API will not
11561// be included in the string output. The member name will be present, but the
11562// value will be replaced with "sensitive".
11563func (s AnalyticsExportDestination) GoString() string {
11564	return s.String()
11565}
11566
11567// Validate inspects the fields of the type to determine if they are valid.
11568func (s *AnalyticsExportDestination) Validate() error {
11569	invalidParams := request.ErrInvalidParams{Context: "AnalyticsExportDestination"}
11570	if s.S3BucketDestination == nil {
11571		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
11572	}
11573	if s.S3BucketDestination != nil {
11574		if err := s.S3BucketDestination.Validate(); err != nil {
11575			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
11576		}
11577	}
11578
11579	if invalidParams.Len() > 0 {
11580		return invalidParams
11581	}
11582	return nil
11583}
11584
11585// SetS3BucketDestination sets the S3BucketDestination field's value.
11586func (s *AnalyticsExportDestination) SetS3BucketDestination(v *AnalyticsS3BucketDestination) *AnalyticsExportDestination {
11587	s.S3BucketDestination = v
11588	return s
11589}
11590
11591// The filter used to describe a set of objects for analyses. A filter must
11592// have exactly one prefix, one tag, or one conjunction (AnalyticsAndOperator).
11593// If no filter is provided, all objects will be considered in any analysis.
11594type AnalyticsFilter struct {
11595	_ struct{} `type:"structure"`
11596
11597	// A conjunction (logical AND) of predicates, which is used in evaluating an
11598	// analytics filter. The operator must have at least two predicates.
11599	And *AnalyticsAndOperator `type:"structure"`
11600
11601	// The prefix to use when evaluating an analytics filter.
11602	Prefix *string `type:"string"`
11603
11604	// The tag to use when evaluating an analytics filter.
11605	Tag *Tag `type:"structure"`
11606}
11607
11608// String returns the string representation.
11609//
11610// API parameter values that are decorated as "sensitive" in the API will not
11611// be included in the string output. The member name will be present, but the
11612// value will be replaced with "sensitive".
11613func (s AnalyticsFilter) String() string {
11614	return awsutil.Prettify(s)
11615}
11616
11617// GoString returns the string representation.
11618//
11619// API parameter values that are decorated as "sensitive" in the API will not
11620// be included in the string output. The member name will be present, but the
11621// value will be replaced with "sensitive".
11622func (s AnalyticsFilter) GoString() string {
11623	return s.String()
11624}
11625
11626// Validate inspects the fields of the type to determine if they are valid.
11627func (s *AnalyticsFilter) Validate() error {
11628	invalidParams := request.ErrInvalidParams{Context: "AnalyticsFilter"}
11629	if s.And != nil {
11630		if err := s.And.Validate(); err != nil {
11631			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
11632		}
11633	}
11634	if s.Tag != nil {
11635		if err := s.Tag.Validate(); err != nil {
11636			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
11637		}
11638	}
11639
11640	if invalidParams.Len() > 0 {
11641		return invalidParams
11642	}
11643	return nil
11644}
11645
11646// SetAnd sets the And field's value.
11647func (s *AnalyticsFilter) SetAnd(v *AnalyticsAndOperator) *AnalyticsFilter {
11648	s.And = v
11649	return s
11650}
11651
11652// SetPrefix sets the Prefix field's value.
11653func (s *AnalyticsFilter) SetPrefix(v string) *AnalyticsFilter {
11654	s.Prefix = &v
11655	return s
11656}
11657
11658// SetTag sets the Tag field's value.
11659func (s *AnalyticsFilter) SetTag(v *Tag) *AnalyticsFilter {
11660	s.Tag = v
11661	return s
11662}
11663
11664// Contains information about where to publish the analytics results.
11665type AnalyticsS3BucketDestination struct {
11666	_ struct{} `type:"structure"`
11667
11668	// The Amazon Resource Name (ARN) of the bucket to which data is exported.
11669	//
11670	// Bucket is a required field
11671	Bucket *string `type:"string" required:"true"`
11672
11673	// The account ID that owns the destination S3 bucket. If no account ID is provided,
11674	// the owner is not validated before exporting data.
11675	//
11676	// Although this value is optional, we strongly recommend that you set it to
11677	// help prevent problems if the destination bucket ownership changes.
11678	BucketAccountId *string `type:"string"`
11679
11680	// Specifies the file format used when exporting data to Amazon S3.
11681	//
11682	// Format is a required field
11683	Format *string `type:"string" required:"true" enum:"AnalyticsS3ExportFileFormat"`
11684
11685	// The prefix to use when exporting data. The prefix is prepended to all results.
11686	Prefix *string `type:"string"`
11687}
11688
11689// String returns the string representation.
11690//
11691// API parameter values that are decorated as "sensitive" in the API will not
11692// be included in the string output. The member name will be present, but the
11693// value will be replaced with "sensitive".
11694func (s AnalyticsS3BucketDestination) String() string {
11695	return awsutil.Prettify(s)
11696}
11697
11698// GoString returns the string representation.
11699//
11700// API parameter values that are decorated as "sensitive" in the API will not
11701// be included in the string output. The member name will be present, but the
11702// value will be replaced with "sensitive".
11703func (s AnalyticsS3BucketDestination) GoString() string {
11704	return s.String()
11705}
11706
11707// Validate inspects the fields of the type to determine if they are valid.
11708func (s *AnalyticsS3BucketDestination) Validate() error {
11709	invalidParams := request.ErrInvalidParams{Context: "AnalyticsS3BucketDestination"}
11710	if s.Bucket == nil {
11711		invalidParams.Add(request.NewErrParamRequired("Bucket"))
11712	}
11713	if s.Format == nil {
11714		invalidParams.Add(request.NewErrParamRequired("Format"))
11715	}
11716
11717	if invalidParams.Len() > 0 {
11718		return invalidParams
11719	}
11720	return nil
11721}
11722
11723// SetBucket sets the Bucket field's value.
11724func (s *AnalyticsS3BucketDestination) SetBucket(v string) *AnalyticsS3BucketDestination {
11725	s.Bucket = &v
11726	return s
11727}
11728
11729func (s *AnalyticsS3BucketDestination) getBucket() (v string) {
11730	if s.Bucket == nil {
11731		return v
11732	}
11733	return *s.Bucket
11734}
11735
11736// SetBucketAccountId sets the BucketAccountId field's value.
11737func (s *AnalyticsS3BucketDestination) SetBucketAccountId(v string) *AnalyticsS3BucketDestination {
11738	s.BucketAccountId = &v
11739	return s
11740}
11741
11742// SetFormat sets the Format field's value.
11743func (s *AnalyticsS3BucketDestination) SetFormat(v string) *AnalyticsS3BucketDestination {
11744	s.Format = &v
11745	return s
11746}
11747
11748// SetPrefix sets the Prefix field's value.
11749func (s *AnalyticsS3BucketDestination) SetPrefix(v string) *AnalyticsS3BucketDestination {
11750	s.Prefix = &v
11751	return s
11752}
11753
11754// In terms of implementation, a Bucket is a resource. An Amazon S3 bucket name
11755// is globally unique, and the namespace is shared by all Amazon Web Services
11756// accounts.
11757type Bucket struct {
11758	_ struct{} `type:"structure"`
11759
11760	// Date the bucket was created. This date can change when making changes to
11761	// your bucket, such as editing its bucket policy.
11762	CreationDate *time.Time `type:"timestamp"`
11763
11764	// The name of the bucket.
11765	Name *string `type:"string"`
11766}
11767
11768// String returns the string representation.
11769//
11770// API parameter values that are decorated as "sensitive" in the API will not
11771// be included in the string output. The member name will be present, but the
11772// value will be replaced with "sensitive".
11773func (s Bucket) String() string {
11774	return awsutil.Prettify(s)
11775}
11776
11777// GoString returns the string representation.
11778//
11779// API parameter values that are decorated as "sensitive" in the API will not
11780// be included in the string output. The member name will be present, but the
11781// value will be replaced with "sensitive".
11782func (s Bucket) GoString() string {
11783	return s.String()
11784}
11785
11786// SetCreationDate sets the CreationDate field's value.
11787func (s *Bucket) SetCreationDate(v time.Time) *Bucket {
11788	s.CreationDate = &v
11789	return s
11790}
11791
11792// SetName sets the Name field's value.
11793func (s *Bucket) SetName(v string) *Bucket {
11794	s.Name = &v
11795	return s
11796}
11797
11798// Specifies the lifecycle configuration for objects in an Amazon S3 bucket.
11799// For more information, see Object Lifecycle Management (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)
11800// in the Amazon S3 User Guide.
11801type BucketLifecycleConfiguration struct {
11802	_ struct{} `type:"structure"`
11803
11804	// A lifecycle rule for individual objects in an Amazon S3 bucket.
11805	//
11806	// Rules is a required field
11807	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
11808}
11809
11810// String returns the string representation.
11811//
11812// API parameter values that are decorated as "sensitive" in the API will not
11813// be included in the string output. The member name will be present, but the
11814// value will be replaced with "sensitive".
11815func (s BucketLifecycleConfiguration) String() string {
11816	return awsutil.Prettify(s)
11817}
11818
11819// GoString returns the string representation.
11820//
11821// API parameter values that are decorated as "sensitive" in the API will not
11822// be included in the string output. The member name will be present, but the
11823// value will be replaced with "sensitive".
11824func (s BucketLifecycleConfiguration) GoString() string {
11825	return s.String()
11826}
11827
11828// Validate inspects the fields of the type to determine if they are valid.
11829func (s *BucketLifecycleConfiguration) Validate() error {
11830	invalidParams := request.ErrInvalidParams{Context: "BucketLifecycleConfiguration"}
11831	if s.Rules == nil {
11832		invalidParams.Add(request.NewErrParamRequired("Rules"))
11833	}
11834	if s.Rules != nil {
11835		for i, v := range s.Rules {
11836			if v == nil {
11837				continue
11838			}
11839			if err := v.Validate(); err != nil {
11840				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
11841			}
11842		}
11843	}
11844
11845	if invalidParams.Len() > 0 {
11846		return invalidParams
11847	}
11848	return nil
11849}
11850
11851// SetRules sets the Rules field's value.
11852func (s *BucketLifecycleConfiguration) SetRules(v []*LifecycleRule) *BucketLifecycleConfiguration {
11853	s.Rules = v
11854	return s
11855}
11856
11857// Container for logging status information.
11858type BucketLoggingStatus struct {
11859	_ struct{} `type:"structure"`
11860
11861	// Describes where logs are stored and the prefix that Amazon S3 assigns to
11862	// all log object keys for a bucket. For more information, see PUT Bucket logging
11863	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
11864	// in the Amazon S3 API Reference.
11865	LoggingEnabled *LoggingEnabled `type:"structure"`
11866}
11867
11868// String returns the string representation.
11869//
11870// API parameter values that are decorated as "sensitive" in the API will not
11871// be included in the string output. The member name will be present, but the
11872// value will be replaced with "sensitive".
11873func (s BucketLoggingStatus) String() string {
11874	return awsutil.Prettify(s)
11875}
11876
11877// GoString returns the string representation.
11878//
11879// API parameter values that are decorated as "sensitive" in the API will not
11880// be included in the string output. The member name will be present, but the
11881// value will be replaced with "sensitive".
11882func (s BucketLoggingStatus) GoString() string {
11883	return s.String()
11884}
11885
11886// Validate inspects the fields of the type to determine if they are valid.
11887func (s *BucketLoggingStatus) Validate() error {
11888	invalidParams := request.ErrInvalidParams{Context: "BucketLoggingStatus"}
11889	if s.LoggingEnabled != nil {
11890		if err := s.LoggingEnabled.Validate(); err != nil {
11891			invalidParams.AddNested("LoggingEnabled", err.(request.ErrInvalidParams))
11892		}
11893	}
11894
11895	if invalidParams.Len() > 0 {
11896		return invalidParams
11897	}
11898	return nil
11899}
11900
11901// SetLoggingEnabled sets the LoggingEnabled field's value.
11902func (s *BucketLoggingStatus) SetLoggingEnabled(v *LoggingEnabled) *BucketLoggingStatus {
11903	s.LoggingEnabled = v
11904	return s
11905}
11906
11907// Describes the cross-origin access configuration for objects in an Amazon
11908// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
11909// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
11910// S3 User Guide.
11911type CORSConfiguration struct {
11912	_ struct{} `type:"structure"`
11913
11914	// A set of origins and methods (cross-origin access that you want to allow).
11915	// You can add up to 100 rules to the configuration.
11916	//
11917	// CORSRules is a required field
11918	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true" required:"true"`
11919}
11920
11921// String returns the string representation.
11922//
11923// API parameter values that are decorated as "sensitive" in the API will not
11924// be included in the string output. The member name will be present, but the
11925// value will be replaced with "sensitive".
11926func (s CORSConfiguration) String() string {
11927	return awsutil.Prettify(s)
11928}
11929
11930// GoString returns the string representation.
11931//
11932// API parameter values that are decorated as "sensitive" in the API will not
11933// be included in the string output. The member name will be present, but the
11934// value will be replaced with "sensitive".
11935func (s CORSConfiguration) GoString() string {
11936	return s.String()
11937}
11938
11939// Validate inspects the fields of the type to determine if they are valid.
11940func (s *CORSConfiguration) Validate() error {
11941	invalidParams := request.ErrInvalidParams{Context: "CORSConfiguration"}
11942	if s.CORSRules == nil {
11943		invalidParams.Add(request.NewErrParamRequired("CORSRules"))
11944	}
11945	if s.CORSRules != nil {
11946		for i, v := range s.CORSRules {
11947			if v == nil {
11948				continue
11949			}
11950			if err := v.Validate(); err != nil {
11951				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CORSRules", i), err.(request.ErrInvalidParams))
11952			}
11953		}
11954	}
11955
11956	if invalidParams.Len() > 0 {
11957		return invalidParams
11958	}
11959	return nil
11960}
11961
11962// SetCORSRules sets the CORSRules field's value.
11963func (s *CORSConfiguration) SetCORSRules(v []*CORSRule) *CORSConfiguration {
11964	s.CORSRules = v
11965	return s
11966}
11967
11968// Specifies a cross-origin access rule for an Amazon S3 bucket.
11969type CORSRule struct {
11970	_ struct{} `type:"structure"`
11971
11972	// Headers that are specified in the Access-Control-Request-Headers header.
11973	// These headers are allowed in a preflight OPTIONS request. In response to
11974	// any preflight OPTIONS request, Amazon S3 returns any requested headers that
11975	// are allowed.
11976	AllowedHeaders []*string `locationName:"AllowedHeader" type:"list" flattened:"true"`
11977
11978	// An HTTP method that you allow the origin to execute. Valid values are GET,
11979	// PUT, HEAD, POST, and DELETE.
11980	//
11981	// AllowedMethods is a required field
11982	AllowedMethods []*string `locationName:"AllowedMethod" type:"list" flattened:"true" required:"true"`
11983
11984	// One or more origins you want customers to be able to access the bucket from.
11985	//
11986	// AllowedOrigins is a required field
11987	AllowedOrigins []*string `locationName:"AllowedOrigin" type:"list" flattened:"true" required:"true"`
11988
11989	// One or more headers in the response that you want customers to be able to
11990	// access from their applications (for example, from a JavaScript XMLHttpRequest
11991	// object).
11992	ExposeHeaders []*string `locationName:"ExposeHeader" type:"list" flattened:"true"`
11993
11994	// Unique identifier for the rule. The value cannot be longer than 255 characters.
11995	ID *string `type:"string"`
11996
11997	// The time in seconds that your browser is to cache the preflight response
11998	// for the specified resource.
11999	MaxAgeSeconds *int64 `type:"integer"`
12000}
12001
12002// String returns the string representation.
12003//
12004// API parameter values that are decorated as "sensitive" in the API will not
12005// be included in the string output. The member name will be present, but the
12006// value will be replaced with "sensitive".
12007func (s CORSRule) String() string {
12008	return awsutil.Prettify(s)
12009}
12010
12011// GoString returns the string representation.
12012//
12013// API parameter values that are decorated as "sensitive" in the API will not
12014// be included in the string output. The member name will be present, but the
12015// value will be replaced with "sensitive".
12016func (s CORSRule) GoString() string {
12017	return s.String()
12018}
12019
12020// Validate inspects the fields of the type to determine if they are valid.
12021func (s *CORSRule) Validate() error {
12022	invalidParams := request.ErrInvalidParams{Context: "CORSRule"}
12023	if s.AllowedMethods == nil {
12024		invalidParams.Add(request.NewErrParamRequired("AllowedMethods"))
12025	}
12026	if s.AllowedOrigins == nil {
12027		invalidParams.Add(request.NewErrParamRequired("AllowedOrigins"))
12028	}
12029
12030	if invalidParams.Len() > 0 {
12031		return invalidParams
12032	}
12033	return nil
12034}
12035
12036// SetAllowedHeaders sets the AllowedHeaders field's value.
12037func (s *CORSRule) SetAllowedHeaders(v []*string) *CORSRule {
12038	s.AllowedHeaders = v
12039	return s
12040}
12041
12042// SetAllowedMethods sets the AllowedMethods field's value.
12043func (s *CORSRule) SetAllowedMethods(v []*string) *CORSRule {
12044	s.AllowedMethods = v
12045	return s
12046}
12047
12048// SetAllowedOrigins sets the AllowedOrigins field's value.
12049func (s *CORSRule) SetAllowedOrigins(v []*string) *CORSRule {
12050	s.AllowedOrigins = v
12051	return s
12052}
12053
12054// SetExposeHeaders sets the ExposeHeaders field's value.
12055func (s *CORSRule) SetExposeHeaders(v []*string) *CORSRule {
12056	s.ExposeHeaders = v
12057	return s
12058}
12059
12060// SetID sets the ID field's value.
12061func (s *CORSRule) SetID(v string) *CORSRule {
12062	s.ID = &v
12063	return s
12064}
12065
12066// SetMaxAgeSeconds sets the MaxAgeSeconds field's value.
12067func (s *CORSRule) SetMaxAgeSeconds(v int64) *CORSRule {
12068	s.MaxAgeSeconds = &v
12069	return s
12070}
12071
12072// Describes how an uncompressed comma-separated values (CSV)-formatted input
12073// object is formatted.
12074type CSVInput struct {
12075	_ struct{} `type:"structure"`
12076
12077	// Specifies that CSV field values may contain quoted record delimiters and
12078	// such records should be allowed. Default value is FALSE. Setting this value
12079	// to TRUE may lower performance.
12080	AllowQuotedRecordDelimiter *bool `type:"boolean"`
12081
12082	// A single character used to indicate that a row should be ignored when the
12083	// character is present at the start of that row. You can specify any character
12084	// to indicate a comment line.
12085	Comments *string `type:"string"`
12086
12087	// A single character used to separate individual fields in a record. You can
12088	// specify an arbitrary delimiter.
12089	FieldDelimiter *string `type:"string"`
12090
12091	// Describes the first line of input. Valid values are:
12092	//
12093	//    * NONE: First line is not a header.
12094	//
12095	//    * IGNORE: First line is a header, but you can't use the header values
12096	//    to indicate the column in an expression. You can use column position (such
12097	//    as _1, _2, …) to indicate the column (SELECT s._1 FROM OBJECT s).
12098	//
12099	//    * Use: First line is a header, and you can use the header value to identify
12100	//    a column in an expression (SELECT "name" FROM OBJECT).
12101	FileHeaderInfo *string `type:"string" enum:"FileHeaderInfo"`
12102
12103	// A single character used for escaping when the field delimiter is part of
12104	// the value. For example, if the value is a, b, Amazon S3 wraps this field
12105	// value in quotation marks, as follows: " a , b ".
12106	//
12107	// Type: String
12108	//
12109	// Default: "
12110	//
12111	// Ancestors: CSV
12112	QuoteCharacter *string `type:"string"`
12113
12114	// A single character used for escaping the quotation mark character inside
12115	// an already escaped value. For example, the value """ a , b """ is parsed
12116	// as " a , b ".
12117	QuoteEscapeCharacter *string `type:"string"`
12118
12119	// A single character used to separate individual records in the input. Instead
12120	// of the default value, you can specify an arbitrary delimiter.
12121	RecordDelimiter *string `type:"string"`
12122}
12123
12124// String returns the string representation.
12125//
12126// API parameter values that are decorated as "sensitive" in the API will not
12127// be included in the string output. The member name will be present, but the
12128// value will be replaced with "sensitive".
12129func (s CSVInput) String() string {
12130	return awsutil.Prettify(s)
12131}
12132
12133// GoString returns the string representation.
12134//
12135// API parameter values that are decorated as "sensitive" in the API will not
12136// be included in the string output. The member name will be present, but the
12137// value will be replaced with "sensitive".
12138func (s CSVInput) GoString() string {
12139	return s.String()
12140}
12141
12142// SetAllowQuotedRecordDelimiter sets the AllowQuotedRecordDelimiter field's value.
12143func (s *CSVInput) SetAllowQuotedRecordDelimiter(v bool) *CSVInput {
12144	s.AllowQuotedRecordDelimiter = &v
12145	return s
12146}
12147
12148// SetComments sets the Comments field's value.
12149func (s *CSVInput) SetComments(v string) *CSVInput {
12150	s.Comments = &v
12151	return s
12152}
12153
12154// SetFieldDelimiter sets the FieldDelimiter field's value.
12155func (s *CSVInput) SetFieldDelimiter(v string) *CSVInput {
12156	s.FieldDelimiter = &v
12157	return s
12158}
12159
12160// SetFileHeaderInfo sets the FileHeaderInfo field's value.
12161func (s *CSVInput) SetFileHeaderInfo(v string) *CSVInput {
12162	s.FileHeaderInfo = &v
12163	return s
12164}
12165
12166// SetQuoteCharacter sets the QuoteCharacter field's value.
12167func (s *CSVInput) SetQuoteCharacter(v string) *CSVInput {
12168	s.QuoteCharacter = &v
12169	return s
12170}
12171
12172// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
12173func (s *CSVInput) SetQuoteEscapeCharacter(v string) *CSVInput {
12174	s.QuoteEscapeCharacter = &v
12175	return s
12176}
12177
12178// SetRecordDelimiter sets the RecordDelimiter field's value.
12179func (s *CSVInput) SetRecordDelimiter(v string) *CSVInput {
12180	s.RecordDelimiter = &v
12181	return s
12182}
12183
12184// Describes how uncompressed comma-separated values (CSV)-formatted results
12185// are formatted.
12186type CSVOutput struct {
12187	_ struct{} `type:"structure"`
12188
12189	// The value used to separate individual fields in a record. You can specify
12190	// an arbitrary delimiter.
12191	FieldDelimiter *string `type:"string"`
12192
12193	// A single character used for escaping when the field delimiter is part of
12194	// the value. For example, if the value is a, b, Amazon S3 wraps this field
12195	// value in quotation marks, as follows: " a , b ".
12196	QuoteCharacter *string `type:"string"`
12197
12198	// The single character used for escaping the quote character inside an already
12199	// escaped value.
12200	QuoteEscapeCharacter *string `type:"string"`
12201
12202	// Indicates whether to use quotation marks around output fields.
12203	//
12204	//    * ALWAYS: Always use quotation marks for output fields.
12205	//
12206	//    * ASNEEDED: Use quotation marks for output fields when needed.
12207	QuoteFields *string `type:"string" enum:"QuoteFields"`
12208
12209	// A single character used to separate individual records in the output. Instead
12210	// of the default value, you can specify an arbitrary delimiter.
12211	RecordDelimiter *string `type:"string"`
12212}
12213
12214// String returns the string representation.
12215//
12216// API parameter values that are decorated as "sensitive" in the API will not
12217// be included in the string output. The member name will be present, but the
12218// value will be replaced with "sensitive".
12219func (s CSVOutput) String() string {
12220	return awsutil.Prettify(s)
12221}
12222
12223// GoString returns the string representation.
12224//
12225// API parameter values that are decorated as "sensitive" in the API will not
12226// be included in the string output. The member name will be present, but the
12227// value will be replaced with "sensitive".
12228func (s CSVOutput) GoString() string {
12229	return s.String()
12230}
12231
12232// SetFieldDelimiter sets the FieldDelimiter field's value.
12233func (s *CSVOutput) SetFieldDelimiter(v string) *CSVOutput {
12234	s.FieldDelimiter = &v
12235	return s
12236}
12237
12238// SetQuoteCharacter sets the QuoteCharacter field's value.
12239func (s *CSVOutput) SetQuoteCharacter(v string) *CSVOutput {
12240	s.QuoteCharacter = &v
12241	return s
12242}
12243
12244// SetQuoteEscapeCharacter sets the QuoteEscapeCharacter field's value.
12245func (s *CSVOutput) SetQuoteEscapeCharacter(v string) *CSVOutput {
12246	s.QuoteEscapeCharacter = &v
12247	return s
12248}
12249
12250// SetQuoteFields sets the QuoteFields field's value.
12251func (s *CSVOutput) SetQuoteFields(v string) *CSVOutput {
12252	s.QuoteFields = &v
12253	return s
12254}
12255
12256// SetRecordDelimiter sets the RecordDelimiter field's value.
12257func (s *CSVOutput) SetRecordDelimiter(v string) *CSVOutput {
12258	s.RecordDelimiter = &v
12259	return s
12260}
12261
12262// Container for specifying the Lambda notification configuration.
12263type CloudFunctionConfiguration struct {
12264	_ struct{} `type:"structure"`
12265
12266	// Lambda cloud function ARN that Amazon S3 can invoke when it detects events
12267	// of the specified type.
12268	CloudFunction *string `type:"string"`
12269
12270	// The bucket event for which to send notifications.
12271	//
12272	// Deprecated: Event has been deprecated
12273	Event *string `deprecated:"true" type:"string" enum:"Event"`
12274
12275	// Bucket events for which to send notifications.
12276	Events []*string `locationName:"Event" type:"list" flattened:"true"`
12277
12278	// An optional unique identifier for configurations in a notification configuration.
12279	// If you don't provide one, Amazon S3 will assign an ID.
12280	Id *string `type:"string"`
12281
12282	// The role supporting the invocation of the Lambda function
12283	InvocationRole *string `type:"string"`
12284}
12285
12286// String returns the string representation.
12287//
12288// API parameter values that are decorated as "sensitive" in the API will not
12289// be included in the string output. The member name will be present, but the
12290// value will be replaced with "sensitive".
12291func (s CloudFunctionConfiguration) String() string {
12292	return awsutil.Prettify(s)
12293}
12294
12295// GoString returns the string representation.
12296//
12297// API parameter values that are decorated as "sensitive" in the API will not
12298// be included in the string output. The member name will be present, but the
12299// value will be replaced with "sensitive".
12300func (s CloudFunctionConfiguration) GoString() string {
12301	return s.String()
12302}
12303
12304// SetCloudFunction sets the CloudFunction field's value.
12305func (s *CloudFunctionConfiguration) SetCloudFunction(v string) *CloudFunctionConfiguration {
12306	s.CloudFunction = &v
12307	return s
12308}
12309
12310// SetEvent sets the Event field's value.
12311func (s *CloudFunctionConfiguration) SetEvent(v string) *CloudFunctionConfiguration {
12312	s.Event = &v
12313	return s
12314}
12315
12316// SetEvents sets the Events field's value.
12317func (s *CloudFunctionConfiguration) SetEvents(v []*string) *CloudFunctionConfiguration {
12318	s.Events = v
12319	return s
12320}
12321
12322// SetId sets the Id field's value.
12323func (s *CloudFunctionConfiguration) SetId(v string) *CloudFunctionConfiguration {
12324	s.Id = &v
12325	return s
12326}
12327
12328// SetInvocationRole sets the InvocationRole field's value.
12329func (s *CloudFunctionConfiguration) SetInvocationRole(v string) *CloudFunctionConfiguration {
12330	s.InvocationRole = &v
12331	return s
12332}
12333
12334// Container for all (if there are any) keys between Prefix and the next occurrence
12335// of the string specified by a delimiter. CommonPrefixes lists keys that act
12336// like subdirectories in the directory specified by Prefix. For example, if
12337// the prefix is notes/ and the delimiter is a slash (/) as in notes/summer/july,
12338// the common prefix is notes/summer/.
12339type CommonPrefix struct {
12340	_ struct{} `type:"structure"`
12341
12342	// Container for the specified common prefix.
12343	Prefix *string `type:"string"`
12344}
12345
12346// String returns the string representation.
12347//
12348// API parameter values that are decorated as "sensitive" in the API will not
12349// be included in the string output. The member name will be present, but the
12350// value will be replaced with "sensitive".
12351func (s CommonPrefix) String() string {
12352	return awsutil.Prettify(s)
12353}
12354
12355// GoString returns the string representation.
12356//
12357// API parameter values that are decorated as "sensitive" in the API will not
12358// be included in the string output. The member name will be present, but the
12359// value will be replaced with "sensitive".
12360func (s CommonPrefix) GoString() string {
12361	return s.String()
12362}
12363
12364// SetPrefix sets the Prefix field's value.
12365func (s *CommonPrefix) SetPrefix(v string) *CommonPrefix {
12366	s.Prefix = &v
12367	return s
12368}
12369
12370type CompleteMultipartUploadInput struct {
12371	_ struct{} `locationName:"CompleteMultipartUploadRequest" type:"structure" payload:"MultipartUpload"`
12372
12373	// Name of the bucket to which the multipart upload was initiated.
12374	//
12375	// When using this action with an access point, you must direct requests to
12376	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12377	// When using this action with an access point through the Amazon Web Services
12378	// SDKs, you provide the access point ARN in place of the bucket name. For more
12379	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
12380	// in the Amazon S3 User Guide.
12381	//
12382	// When using this action with Amazon S3 on Outposts, you must direct requests
12383	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
12384	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
12385	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
12386	// you provide the Outposts bucket ARN in place of the bucket name. For more
12387	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
12388	// in the Amazon S3 User Guide.
12389	//
12390	// Bucket is a required field
12391	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12392
12393	// The account ID of the expected bucket owner. If the bucket is owned by a
12394	// different account, the request will fail with an HTTP 403 (Access Denied)
12395	// error.
12396	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
12397
12398	// Object key for which the multipart upload was initiated.
12399	//
12400	// Key is a required field
12401	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
12402
12403	// The container for the multipart upload request information.
12404	MultipartUpload *CompletedMultipartUpload `locationName:"CompleteMultipartUpload" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
12405
12406	// Confirms that the requester knows that they will be charged for the request.
12407	// Bucket owners need not specify this parameter in their requests. For information
12408	// about downloading objects from requester pays buckets, see Downloading Objects
12409	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
12410	// in the Amazon S3 User Guide.
12411	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
12412
12413	// ID for the initiated multipart upload.
12414	//
12415	// UploadId is a required field
12416	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
12417}
12418
12419// String returns the string representation.
12420//
12421// API parameter values that are decorated as "sensitive" in the API will not
12422// be included in the string output. The member name will be present, but the
12423// value will be replaced with "sensitive".
12424func (s CompleteMultipartUploadInput) String() string {
12425	return awsutil.Prettify(s)
12426}
12427
12428// GoString returns the string representation.
12429//
12430// API parameter values that are decorated as "sensitive" in the API will not
12431// be included in the string output. The member name will be present, but the
12432// value will be replaced with "sensitive".
12433func (s CompleteMultipartUploadInput) GoString() string {
12434	return s.String()
12435}
12436
12437// Validate inspects the fields of the type to determine if they are valid.
12438func (s *CompleteMultipartUploadInput) Validate() error {
12439	invalidParams := request.ErrInvalidParams{Context: "CompleteMultipartUploadInput"}
12440	if s.Bucket == nil {
12441		invalidParams.Add(request.NewErrParamRequired("Bucket"))
12442	}
12443	if s.Bucket != nil && len(*s.Bucket) < 1 {
12444		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
12445	}
12446	if s.Key == nil {
12447		invalidParams.Add(request.NewErrParamRequired("Key"))
12448	}
12449	if s.Key != nil && len(*s.Key) < 1 {
12450		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
12451	}
12452	if s.UploadId == nil {
12453		invalidParams.Add(request.NewErrParamRequired("UploadId"))
12454	}
12455
12456	if invalidParams.Len() > 0 {
12457		return invalidParams
12458	}
12459	return nil
12460}
12461
12462// SetBucket sets the Bucket field's value.
12463func (s *CompleteMultipartUploadInput) SetBucket(v string) *CompleteMultipartUploadInput {
12464	s.Bucket = &v
12465	return s
12466}
12467
12468func (s *CompleteMultipartUploadInput) getBucket() (v string) {
12469	if s.Bucket == nil {
12470		return v
12471	}
12472	return *s.Bucket
12473}
12474
12475// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
12476func (s *CompleteMultipartUploadInput) SetExpectedBucketOwner(v string) *CompleteMultipartUploadInput {
12477	s.ExpectedBucketOwner = &v
12478	return s
12479}
12480
12481// SetKey sets the Key field's value.
12482func (s *CompleteMultipartUploadInput) SetKey(v string) *CompleteMultipartUploadInput {
12483	s.Key = &v
12484	return s
12485}
12486
12487// SetMultipartUpload sets the MultipartUpload field's value.
12488func (s *CompleteMultipartUploadInput) SetMultipartUpload(v *CompletedMultipartUpload) *CompleteMultipartUploadInput {
12489	s.MultipartUpload = v
12490	return s
12491}
12492
12493// SetRequestPayer sets the RequestPayer field's value.
12494func (s *CompleteMultipartUploadInput) SetRequestPayer(v string) *CompleteMultipartUploadInput {
12495	s.RequestPayer = &v
12496	return s
12497}
12498
12499// SetUploadId sets the UploadId field's value.
12500func (s *CompleteMultipartUploadInput) SetUploadId(v string) *CompleteMultipartUploadInput {
12501	s.UploadId = &v
12502	return s
12503}
12504
12505func (s *CompleteMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
12506	if s.Bucket == nil {
12507		return nil, fmt.Errorf("member Bucket is nil")
12508	}
12509	return parseEndpointARN(*s.Bucket)
12510}
12511
12512func (s *CompleteMultipartUploadInput) hasEndpointARN() bool {
12513	if s.Bucket == nil {
12514		return false
12515	}
12516	return arn.IsARN(*s.Bucket)
12517}
12518
12519// updateArnableField updates the value of the input field that
12520// takes an ARN as an input. This method is useful to backfill
12521// the parsed resource name from ARN into the input member.
12522// It returns a pointer to a modified copy of input and an error.
12523// Note that original input is not modified.
12524func (s CompleteMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
12525	if s.Bucket == nil {
12526		return nil, fmt.Errorf("member Bucket is nil")
12527	}
12528	s.Bucket = aws.String(v)
12529	return &s, nil
12530}
12531
12532type CompleteMultipartUploadOutput struct {
12533	_ struct{} `type:"structure"`
12534
12535	// The name of the bucket that contains the newly created object. Does not return
12536	// the access point ARN or access point alias if used.
12537	//
12538	// When using this action with an access point, you must direct requests to
12539	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12540	// When using this action with an access point through the Amazon Web Services
12541	// SDKs, you provide the access point ARN in place of the bucket name. For more
12542	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
12543	// in the Amazon S3 User Guide.
12544	//
12545	// When using this action with Amazon S3 on Outposts, you must direct requests
12546	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
12547	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
12548	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
12549	// you provide the Outposts bucket ARN in place of the bucket name. For more
12550	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
12551	// in the Amazon S3 User Guide.
12552	Bucket *string `type:"string"`
12553
12554	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
12555	// encryption with Amazon Web Services KMS (SSE-KMS).
12556	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
12557
12558	// Entity tag that identifies the newly created object's data. Objects with
12559	// different object data will have different entity tags. The entity tag is
12560	// an opaque string. The entity tag may or may not be an MD5 digest of the object
12561	// data. If the entity tag is not an MD5 digest of the object data, it will
12562	// contain one or more nonhexadecimal characters and/or will consist of less
12563	// than 32 or more than 32 hexadecimal digits.
12564	ETag *string `type:"string"`
12565
12566	// If the object expiration is configured, this will contain the expiration
12567	// date (expiry-date) and rule ID (rule-id). The value of rule-id is URL encoded.
12568	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
12569
12570	// The object key of the newly created object.
12571	Key *string `min:"1" type:"string"`
12572
12573	// The URI that identifies the newly created object.
12574	Location *string `type:"string"`
12575
12576	// If present, indicates that the requester was successfully charged for the
12577	// request.
12578	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
12579
12580	// If present, specifies the ID of the Amazon Web Services Key Management Service
12581	// (Amazon Web Services KMS) symmetric customer managed key that was used for
12582	// the object.
12583	//
12584	// SSEKMSKeyId is a sensitive parameter and its value will be
12585	// replaced with "sensitive" in string returned by CompleteMultipartUploadOutput's
12586	// String and GoString methods.
12587	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
12588
12589	// If you specified server-side encryption either with an Amazon S3-managed
12590	// encryption key or an Amazon Web Services KMS key in your initiate multipart
12591	// upload request, the response includes this header. It confirms the encryption
12592	// algorithm that Amazon S3 used to encrypt the object.
12593	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
12594
12595	// Version ID of the newly created object, in case the bucket has versioning
12596	// turned on.
12597	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
12598}
12599
12600// String returns the string representation.
12601//
12602// API parameter values that are decorated as "sensitive" in the API will not
12603// be included in the string output. The member name will be present, but the
12604// value will be replaced with "sensitive".
12605func (s CompleteMultipartUploadOutput) String() string {
12606	return awsutil.Prettify(s)
12607}
12608
12609// GoString returns the string representation.
12610//
12611// API parameter values that are decorated as "sensitive" in the API will not
12612// be included in the string output. The member name will be present, but the
12613// value will be replaced with "sensitive".
12614func (s CompleteMultipartUploadOutput) GoString() string {
12615	return s.String()
12616}
12617
12618// SetBucket sets the Bucket field's value.
12619func (s *CompleteMultipartUploadOutput) SetBucket(v string) *CompleteMultipartUploadOutput {
12620	s.Bucket = &v
12621	return s
12622}
12623
12624func (s *CompleteMultipartUploadOutput) getBucket() (v string) {
12625	if s.Bucket == nil {
12626		return v
12627	}
12628	return *s.Bucket
12629}
12630
12631// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
12632func (s *CompleteMultipartUploadOutput) SetBucketKeyEnabled(v bool) *CompleteMultipartUploadOutput {
12633	s.BucketKeyEnabled = &v
12634	return s
12635}
12636
12637// SetETag sets the ETag field's value.
12638func (s *CompleteMultipartUploadOutput) SetETag(v string) *CompleteMultipartUploadOutput {
12639	s.ETag = &v
12640	return s
12641}
12642
12643// SetExpiration sets the Expiration field's value.
12644func (s *CompleteMultipartUploadOutput) SetExpiration(v string) *CompleteMultipartUploadOutput {
12645	s.Expiration = &v
12646	return s
12647}
12648
12649// SetKey sets the Key field's value.
12650func (s *CompleteMultipartUploadOutput) SetKey(v string) *CompleteMultipartUploadOutput {
12651	s.Key = &v
12652	return s
12653}
12654
12655// SetLocation sets the Location field's value.
12656func (s *CompleteMultipartUploadOutput) SetLocation(v string) *CompleteMultipartUploadOutput {
12657	s.Location = &v
12658	return s
12659}
12660
12661// SetRequestCharged sets the RequestCharged field's value.
12662func (s *CompleteMultipartUploadOutput) SetRequestCharged(v string) *CompleteMultipartUploadOutput {
12663	s.RequestCharged = &v
12664	return s
12665}
12666
12667// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
12668func (s *CompleteMultipartUploadOutput) SetSSEKMSKeyId(v string) *CompleteMultipartUploadOutput {
12669	s.SSEKMSKeyId = &v
12670	return s
12671}
12672
12673// SetServerSideEncryption sets the ServerSideEncryption field's value.
12674func (s *CompleteMultipartUploadOutput) SetServerSideEncryption(v string) *CompleteMultipartUploadOutput {
12675	s.ServerSideEncryption = &v
12676	return s
12677}
12678
12679// SetVersionId sets the VersionId field's value.
12680func (s *CompleteMultipartUploadOutput) SetVersionId(v string) *CompleteMultipartUploadOutput {
12681	s.VersionId = &v
12682	return s
12683}
12684
12685// The container for the completed multipart upload details.
12686type CompletedMultipartUpload struct {
12687	_ struct{} `type:"structure"`
12688
12689	// Array of CompletedPart data types.
12690	Parts []*CompletedPart `locationName:"Part" type:"list" flattened:"true"`
12691}
12692
12693// String returns the string representation.
12694//
12695// API parameter values that are decorated as "sensitive" in the API will not
12696// be included in the string output. The member name will be present, but the
12697// value will be replaced with "sensitive".
12698func (s CompletedMultipartUpload) String() string {
12699	return awsutil.Prettify(s)
12700}
12701
12702// GoString returns the string representation.
12703//
12704// API parameter values that are decorated as "sensitive" in the API will not
12705// be included in the string output. The member name will be present, but the
12706// value will be replaced with "sensitive".
12707func (s CompletedMultipartUpload) GoString() string {
12708	return s.String()
12709}
12710
12711// SetParts sets the Parts field's value.
12712func (s *CompletedMultipartUpload) SetParts(v []*CompletedPart) *CompletedMultipartUpload {
12713	s.Parts = v
12714	return s
12715}
12716
12717// Details of the parts that were uploaded.
12718type CompletedPart struct {
12719	_ struct{} `type:"structure"`
12720
12721	// Entity tag returned when the part was uploaded.
12722	ETag *string `type:"string"`
12723
12724	// Part number that identifies the part. This is a positive integer between
12725	// 1 and 10,000.
12726	PartNumber *int64 `type:"integer"`
12727}
12728
12729// String returns the string representation.
12730//
12731// API parameter values that are decorated as "sensitive" in the API will not
12732// be included in the string output. The member name will be present, but the
12733// value will be replaced with "sensitive".
12734func (s CompletedPart) String() string {
12735	return awsutil.Prettify(s)
12736}
12737
12738// GoString returns the string representation.
12739//
12740// API parameter values that are decorated as "sensitive" in the API will not
12741// be included in the string output. The member name will be present, but the
12742// value will be replaced with "sensitive".
12743func (s CompletedPart) GoString() string {
12744	return s.String()
12745}
12746
12747// SetETag sets the ETag field's value.
12748func (s *CompletedPart) SetETag(v string) *CompletedPart {
12749	s.ETag = &v
12750	return s
12751}
12752
12753// SetPartNumber sets the PartNumber field's value.
12754func (s *CompletedPart) SetPartNumber(v int64) *CompletedPart {
12755	s.PartNumber = &v
12756	return s
12757}
12758
12759// A container for describing a condition that must be met for the specified
12760// redirect to apply. For example, 1. If request is for pages in the /docs folder,
12761// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
12762// redirect request to another host where you might process the error.
12763type Condition struct {
12764	_ struct{} `type:"structure"`
12765
12766	// The HTTP error code when the redirect is applied. In the event of an error,
12767	// if the error code equals this value, then the specified redirect is applied.
12768	// Required when parent element Condition is specified and sibling KeyPrefixEquals
12769	// is not specified. If both are specified, then both must be true for the redirect
12770	// to be applied.
12771	HttpErrorCodeReturnedEquals *string `type:"string"`
12772
12773	// The object key name prefix when the redirect is applied. For example, to
12774	// redirect requests for ExamplePage.html, the key prefix will be ExamplePage.html.
12775	// To redirect request for all pages with the prefix docs/, the key prefix will
12776	// be /docs, which identifies all objects in the docs/ folder. Required when
12777	// the parent element Condition is specified and sibling HttpErrorCodeReturnedEquals
12778	// is not specified. If both conditions are specified, both must be true for
12779	// the redirect to be applied.
12780	//
12781	// Replacement must be made for object keys containing special characters (such
12782	// as carriage returns) when using XML requests. For more information, see XML
12783	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
12784	KeyPrefixEquals *string `type:"string"`
12785}
12786
12787// String returns the string representation.
12788//
12789// API parameter values that are decorated as "sensitive" in the API will not
12790// be included in the string output. The member name will be present, but the
12791// value will be replaced with "sensitive".
12792func (s Condition) String() string {
12793	return awsutil.Prettify(s)
12794}
12795
12796// GoString returns the string representation.
12797//
12798// API parameter values that are decorated as "sensitive" in the API will not
12799// be included in the string output. The member name will be present, but the
12800// value will be replaced with "sensitive".
12801func (s Condition) GoString() string {
12802	return s.String()
12803}
12804
12805// SetHttpErrorCodeReturnedEquals sets the HttpErrorCodeReturnedEquals field's value.
12806func (s *Condition) SetHttpErrorCodeReturnedEquals(v string) *Condition {
12807	s.HttpErrorCodeReturnedEquals = &v
12808	return s
12809}
12810
12811// SetKeyPrefixEquals sets the KeyPrefixEquals field's value.
12812func (s *Condition) SetKeyPrefixEquals(v string) *Condition {
12813	s.KeyPrefixEquals = &v
12814	return s
12815}
12816
12817type ContinuationEvent struct {
12818	_ struct{} `locationName:"ContinuationEvent" type:"structure"`
12819}
12820
12821// String returns the string representation.
12822//
12823// API parameter values that are decorated as "sensitive" in the API will not
12824// be included in the string output. The member name will be present, but the
12825// value will be replaced with "sensitive".
12826func (s ContinuationEvent) String() string {
12827	return awsutil.Prettify(s)
12828}
12829
12830// GoString returns the string representation.
12831//
12832// API parameter values that are decorated as "sensitive" in the API will not
12833// be included in the string output. The member name will be present, but the
12834// value will be replaced with "sensitive".
12835func (s ContinuationEvent) GoString() string {
12836	return s.String()
12837}
12838
12839// The ContinuationEvent is and event in the SelectObjectContentEventStream group of events.
12840func (s *ContinuationEvent) eventSelectObjectContentEventStream() {}
12841
12842// UnmarshalEvent unmarshals the EventStream Message into the ContinuationEvent value.
12843// This method is only used internally within the SDK's EventStream handling.
12844func (s *ContinuationEvent) UnmarshalEvent(
12845	payloadUnmarshaler protocol.PayloadUnmarshaler,
12846	msg eventstream.Message,
12847) error {
12848	return nil
12849}
12850
12851// MarshalEvent marshals the type into an stream event value. This method
12852// should only used internally within the SDK's EventStream handling.
12853func (s *ContinuationEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
12854	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
12855	return msg, err
12856}
12857
12858type CopyObjectInput struct {
12859	_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
12860
12861	// The canned ACL to apply to the object.
12862	//
12863	// This action is not supported by Amazon S3 on Outposts.
12864	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
12865
12866	// The name of the destination bucket.
12867	//
12868	// When using this action with an access point, you must direct requests to
12869	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
12870	// When using this action with an access point through the Amazon Web Services
12871	// SDKs, you provide the access point ARN in place of the bucket name. For more
12872	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
12873	// in the Amazon S3 User Guide.
12874	//
12875	// When using this action with Amazon S3 on Outposts, you must direct requests
12876	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
12877	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
12878	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
12879	// you provide the Outposts bucket ARN in place of the bucket name. For more
12880	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
12881	// in the Amazon S3 User Guide.
12882	//
12883	// Bucket is a required field
12884	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
12885
12886	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
12887	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
12888	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
12889	// SSE-KMS.
12890	//
12891	// Specifying this header with a COPY action doesn’t affect bucket-level settings
12892	// for S3 Bucket Key.
12893	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
12894
12895	// Specifies caching behavior along the request/reply chain.
12896	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
12897
12898	// Specifies presentational information for the object.
12899	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
12900
12901	// Specifies what content encodings have been applied to the object and thus
12902	// what decoding mechanisms must be applied to obtain the media-type referenced
12903	// by the Content-Type header field.
12904	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
12905
12906	// The language the content is in.
12907	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
12908
12909	// A standard MIME type describing the format of the object data.
12910	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
12911
12912	// Specifies the source object for the copy operation. You specify the value
12913	// in one of two formats, depending on whether you want to access the source
12914	// object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html):
12915	//
12916	//    * For objects not accessed through an access point, specify the name of
12917	//    the source bucket and the key of the source object, separated by a slash
12918	//    (/). For example, to copy the object reports/january.pdf from the bucket
12919	//    awsexamplebucket, use awsexamplebucket/reports/january.pdf. The value
12920	//    must be URL encoded.
12921	//
12922	//    * For objects accessed through access points, specify the Amazon Resource
12923	//    Name (ARN) of the object as accessed through the access point, in the
12924	//    format arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>.
12925	//    For example, to copy the object reports/january.pdf through access point
12926	//    my-access-point owned by account 123456789012 in Region us-west-2, use
12927	//    the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf.
12928	//    The value must be URL encoded. Amazon S3 supports copy operations using
12929	//    access points only when the source and destination buckets are in the
12930	//    same Amazon Web Services Region. Alternatively, for objects accessed through
12931	//    Amazon S3 on Outposts, specify the ARN of the object as accessed in the
12932	//    format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/object/<key>.
12933	//    For example, to copy the object reports/january.pdf through outpost my-outpost
12934	//    owned by account 123456789012 in Region us-west-2, use the URL encoding
12935	//    of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf.
12936	//    The value must be URL encoded.
12937	//
12938	// To copy a specific version of an object, append ?versionId=<version-id> to
12939	// the value (for example, awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).
12940	// If you don't specify a version ID, Amazon S3 copies the latest version of
12941	// the source object.
12942	//
12943	// CopySource is a required field
12944	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
12945
12946	// Copies the object if its entity tag (ETag) matches the specified tag.
12947	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
12948
12949	// Copies the object if it has been modified since the specified time.
12950	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
12951
12952	// Copies the object if its entity tag (ETag) is different than the specified
12953	// ETag.
12954	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
12955
12956	// Copies the object if it hasn't been modified since the specified time.
12957	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
12958
12959	// Specifies the algorithm to use when decrypting the source object (for example,
12960	// AES256).
12961	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
12962
12963	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
12964	// the source object. The encryption key provided in this header must be one
12965	// that was used when the source object was created.
12966	//
12967	// CopySourceSSECustomerKey is a sensitive parameter and its value will be
12968	// replaced with "sensitive" in string returned by CopyObjectInput's
12969	// String and GoString methods.
12970	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
12971
12972	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
12973	// Amazon S3 uses this header for a message integrity check to ensure that the
12974	// encryption key was transmitted without error.
12975	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
12976
12977	// The account ID of the expected destination bucket owner. If the destination
12978	// bucket is owned by a different account, the request will fail with an HTTP
12979	// 403 (Access Denied) error.
12980	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
12981
12982	// The account ID of the expected source bucket owner. If the source bucket
12983	// is owned by a different account, the request will fail with an HTTP 403 (Access
12984	// Denied) error.
12985	ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"`
12986
12987	// The date and time at which the object is no longer cacheable.
12988	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
12989
12990	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
12991	//
12992	// This action is not supported by Amazon S3 on Outposts.
12993	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
12994
12995	// Allows grantee to read the object data and its metadata.
12996	//
12997	// This action is not supported by Amazon S3 on Outposts.
12998	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
12999
13000	// Allows grantee to read the object ACL.
13001	//
13002	// This action is not supported by Amazon S3 on Outposts.
13003	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
13004
13005	// Allows grantee to write the ACL for the applicable object.
13006	//
13007	// This action is not supported by Amazon S3 on Outposts.
13008	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
13009
13010	// The key of the destination object.
13011	//
13012	// Key is a required field
13013	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13014
13015	// A map of metadata to store with the object in S3.
13016	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
13017
13018	// Specifies whether the metadata is copied from the source object or replaced
13019	// with metadata provided in the request.
13020	MetadataDirective *string `location:"header" locationName:"x-amz-metadata-directive" type:"string" enum:"MetadataDirective"`
13021
13022	// Specifies whether you want to apply a Legal Hold to the copied object.
13023	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
13024
13025	// The Object Lock mode that you want to apply to the copied object.
13026	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
13027
13028	// The date and time when you want the copied object's Object Lock to expire.
13029	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
13030
13031	// Confirms that the requester knows that they will be charged for the request.
13032	// Bucket owners need not specify this parameter in their requests. For information
13033	// about downloading objects from requester pays buckets, see Downloading Objects
13034	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
13035	// in the Amazon S3 User Guide.
13036	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13037
13038	// Specifies the algorithm to use to when encrypting the object (for example,
13039	// AES256).
13040	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13041
13042	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
13043	// data. This value is used to store the object and then it is discarded; Amazon
13044	// S3 does not store the encryption key. The key must be appropriate for use
13045	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
13046	// header.
13047	//
13048	// SSECustomerKey is a sensitive parameter and its value will be
13049	// replaced with "sensitive" in string returned by CopyObjectInput's
13050	// String and GoString methods.
13051	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
13052
13053	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
13054	// Amazon S3 uses this header for a message integrity check to ensure that the
13055	// encryption key was transmitted without error.
13056	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13057
13058	// Specifies the Amazon Web Services KMS Encryption Context to use for object
13059	// encryption. The value of this header is a base64-encoded UTF-8 string holding
13060	// JSON with the encryption context key-value pairs.
13061	//
13062	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
13063	// replaced with "sensitive" in string returned by CopyObjectInput's
13064	// String and GoString methods.
13065	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
13066
13067	// Specifies the Amazon Web Services KMS key ID to use for object encryption.
13068	// All GET and PUT requests for an object protected by Amazon Web Services KMS
13069	// will fail if not made via SSL or using SigV4. For information about configuring
13070	// using any of the officially supported Amazon Web Services SDKs and Amazon
13071	// Web Services CLI, see Specifying the Signature Version in Request Authentication
13072	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
13073	// in the Amazon S3 User Guide.
13074	//
13075	// SSEKMSKeyId is a sensitive parameter and its value will be
13076	// replaced with "sensitive" in string returned by CopyObjectInput's
13077	// String and GoString methods.
13078	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
13079
13080	// The server-side encryption algorithm used when storing this object in Amazon
13081	// S3 (for example, AES256, aws:kms).
13082	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
13083
13084	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
13085	// objects. The STANDARD storage class provides high durability and high availability.
13086	// Depending on performance needs, you can specify a different Storage Class.
13087	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
13088	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
13089	// in the Amazon S3 User Guide.
13090	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
13091
13092	// The tag-set for the object destination object this value must be used in
13093	// conjunction with the TaggingDirective. The tag-set must be encoded as URL
13094	// Query parameters.
13095	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
13096
13097	// Specifies whether the object tag-set are copied from the source object or
13098	// replaced with tag-set provided in the request.
13099	TaggingDirective *string `location:"header" locationName:"x-amz-tagging-directive" type:"string" enum:"TaggingDirective"`
13100
13101	// If the bucket is configured as a website, redirects requests for this object
13102	// to another object in the same bucket or to an external URL. Amazon S3 stores
13103	// the value of this header in the object metadata.
13104	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
13105}
13106
13107// String returns the string representation.
13108//
13109// API parameter values that are decorated as "sensitive" in the API will not
13110// be included in the string output. The member name will be present, but the
13111// value will be replaced with "sensitive".
13112func (s CopyObjectInput) String() string {
13113	return awsutil.Prettify(s)
13114}
13115
13116// GoString returns the string representation.
13117//
13118// API parameter values that are decorated as "sensitive" in the API will not
13119// be included in the string output. The member name will be present, but the
13120// value will be replaced with "sensitive".
13121func (s CopyObjectInput) GoString() string {
13122	return s.String()
13123}
13124
13125// Validate inspects the fields of the type to determine if they are valid.
13126func (s *CopyObjectInput) Validate() error {
13127	invalidParams := request.ErrInvalidParams{Context: "CopyObjectInput"}
13128	if s.Bucket == nil {
13129		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13130	}
13131	if s.Bucket != nil && len(*s.Bucket) < 1 {
13132		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13133	}
13134	if s.CopySource == nil {
13135		invalidParams.Add(request.NewErrParamRequired("CopySource"))
13136	}
13137	if s.Key == nil {
13138		invalidParams.Add(request.NewErrParamRequired("Key"))
13139	}
13140	if s.Key != nil && len(*s.Key) < 1 {
13141		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
13142	}
13143
13144	if invalidParams.Len() > 0 {
13145		return invalidParams
13146	}
13147	return nil
13148}
13149
13150// SetACL sets the ACL field's value.
13151func (s *CopyObjectInput) SetACL(v string) *CopyObjectInput {
13152	s.ACL = &v
13153	return s
13154}
13155
13156// SetBucket sets the Bucket field's value.
13157func (s *CopyObjectInput) SetBucket(v string) *CopyObjectInput {
13158	s.Bucket = &v
13159	return s
13160}
13161
13162func (s *CopyObjectInput) getBucket() (v string) {
13163	if s.Bucket == nil {
13164		return v
13165	}
13166	return *s.Bucket
13167}
13168
13169// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
13170func (s *CopyObjectInput) SetBucketKeyEnabled(v bool) *CopyObjectInput {
13171	s.BucketKeyEnabled = &v
13172	return s
13173}
13174
13175// SetCacheControl sets the CacheControl field's value.
13176func (s *CopyObjectInput) SetCacheControl(v string) *CopyObjectInput {
13177	s.CacheControl = &v
13178	return s
13179}
13180
13181// SetContentDisposition sets the ContentDisposition field's value.
13182func (s *CopyObjectInput) SetContentDisposition(v string) *CopyObjectInput {
13183	s.ContentDisposition = &v
13184	return s
13185}
13186
13187// SetContentEncoding sets the ContentEncoding field's value.
13188func (s *CopyObjectInput) SetContentEncoding(v string) *CopyObjectInput {
13189	s.ContentEncoding = &v
13190	return s
13191}
13192
13193// SetContentLanguage sets the ContentLanguage field's value.
13194func (s *CopyObjectInput) SetContentLanguage(v string) *CopyObjectInput {
13195	s.ContentLanguage = &v
13196	return s
13197}
13198
13199// SetContentType sets the ContentType field's value.
13200func (s *CopyObjectInput) SetContentType(v string) *CopyObjectInput {
13201	s.ContentType = &v
13202	return s
13203}
13204
13205// SetCopySource sets the CopySource field's value.
13206func (s *CopyObjectInput) SetCopySource(v string) *CopyObjectInput {
13207	s.CopySource = &v
13208	return s
13209}
13210
13211// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
13212func (s *CopyObjectInput) SetCopySourceIfMatch(v string) *CopyObjectInput {
13213	s.CopySourceIfMatch = &v
13214	return s
13215}
13216
13217// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
13218func (s *CopyObjectInput) SetCopySourceIfModifiedSince(v time.Time) *CopyObjectInput {
13219	s.CopySourceIfModifiedSince = &v
13220	return s
13221}
13222
13223// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
13224func (s *CopyObjectInput) SetCopySourceIfNoneMatch(v string) *CopyObjectInput {
13225	s.CopySourceIfNoneMatch = &v
13226	return s
13227}
13228
13229// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
13230func (s *CopyObjectInput) SetCopySourceIfUnmodifiedSince(v time.Time) *CopyObjectInput {
13231	s.CopySourceIfUnmodifiedSince = &v
13232	return s
13233}
13234
13235// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
13236func (s *CopyObjectInput) SetCopySourceSSECustomerAlgorithm(v string) *CopyObjectInput {
13237	s.CopySourceSSECustomerAlgorithm = &v
13238	return s
13239}
13240
13241// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
13242func (s *CopyObjectInput) SetCopySourceSSECustomerKey(v string) *CopyObjectInput {
13243	s.CopySourceSSECustomerKey = &v
13244	return s
13245}
13246
13247func (s *CopyObjectInput) getCopySourceSSECustomerKey() (v string) {
13248	if s.CopySourceSSECustomerKey == nil {
13249		return v
13250	}
13251	return *s.CopySourceSSECustomerKey
13252}
13253
13254// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
13255func (s *CopyObjectInput) SetCopySourceSSECustomerKeyMD5(v string) *CopyObjectInput {
13256	s.CopySourceSSECustomerKeyMD5 = &v
13257	return s
13258}
13259
13260// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
13261func (s *CopyObjectInput) SetExpectedBucketOwner(v string) *CopyObjectInput {
13262	s.ExpectedBucketOwner = &v
13263	return s
13264}
13265
13266// SetExpectedSourceBucketOwner sets the ExpectedSourceBucketOwner field's value.
13267func (s *CopyObjectInput) SetExpectedSourceBucketOwner(v string) *CopyObjectInput {
13268	s.ExpectedSourceBucketOwner = &v
13269	return s
13270}
13271
13272// SetExpires sets the Expires field's value.
13273func (s *CopyObjectInput) SetExpires(v time.Time) *CopyObjectInput {
13274	s.Expires = &v
13275	return s
13276}
13277
13278// SetGrantFullControl sets the GrantFullControl field's value.
13279func (s *CopyObjectInput) SetGrantFullControl(v string) *CopyObjectInput {
13280	s.GrantFullControl = &v
13281	return s
13282}
13283
13284// SetGrantRead sets the GrantRead field's value.
13285func (s *CopyObjectInput) SetGrantRead(v string) *CopyObjectInput {
13286	s.GrantRead = &v
13287	return s
13288}
13289
13290// SetGrantReadACP sets the GrantReadACP field's value.
13291func (s *CopyObjectInput) SetGrantReadACP(v string) *CopyObjectInput {
13292	s.GrantReadACP = &v
13293	return s
13294}
13295
13296// SetGrantWriteACP sets the GrantWriteACP field's value.
13297func (s *CopyObjectInput) SetGrantWriteACP(v string) *CopyObjectInput {
13298	s.GrantWriteACP = &v
13299	return s
13300}
13301
13302// SetKey sets the Key field's value.
13303func (s *CopyObjectInput) SetKey(v string) *CopyObjectInput {
13304	s.Key = &v
13305	return s
13306}
13307
13308// SetMetadata sets the Metadata field's value.
13309func (s *CopyObjectInput) SetMetadata(v map[string]*string) *CopyObjectInput {
13310	s.Metadata = v
13311	return s
13312}
13313
13314// SetMetadataDirective sets the MetadataDirective field's value.
13315func (s *CopyObjectInput) SetMetadataDirective(v string) *CopyObjectInput {
13316	s.MetadataDirective = &v
13317	return s
13318}
13319
13320// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
13321func (s *CopyObjectInput) SetObjectLockLegalHoldStatus(v string) *CopyObjectInput {
13322	s.ObjectLockLegalHoldStatus = &v
13323	return s
13324}
13325
13326// SetObjectLockMode sets the ObjectLockMode field's value.
13327func (s *CopyObjectInput) SetObjectLockMode(v string) *CopyObjectInput {
13328	s.ObjectLockMode = &v
13329	return s
13330}
13331
13332// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
13333func (s *CopyObjectInput) SetObjectLockRetainUntilDate(v time.Time) *CopyObjectInput {
13334	s.ObjectLockRetainUntilDate = &v
13335	return s
13336}
13337
13338// SetRequestPayer sets the RequestPayer field's value.
13339func (s *CopyObjectInput) SetRequestPayer(v string) *CopyObjectInput {
13340	s.RequestPayer = &v
13341	return s
13342}
13343
13344// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
13345func (s *CopyObjectInput) SetSSECustomerAlgorithm(v string) *CopyObjectInput {
13346	s.SSECustomerAlgorithm = &v
13347	return s
13348}
13349
13350// SetSSECustomerKey sets the SSECustomerKey field's value.
13351func (s *CopyObjectInput) SetSSECustomerKey(v string) *CopyObjectInput {
13352	s.SSECustomerKey = &v
13353	return s
13354}
13355
13356func (s *CopyObjectInput) getSSECustomerKey() (v string) {
13357	if s.SSECustomerKey == nil {
13358		return v
13359	}
13360	return *s.SSECustomerKey
13361}
13362
13363// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
13364func (s *CopyObjectInput) SetSSECustomerKeyMD5(v string) *CopyObjectInput {
13365	s.SSECustomerKeyMD5 = &v
13366	return s
13367}
13368
13369// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
13370func (s *CopyObjectInput) SetSSEKMSEncryptionContext(v string) *CopyObjectInput {
13371	s.SSEKMSEncryptionContext = &v
13372	return s
13373}
13374
13375// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
13376func (s *CopyObjectInput) SetSSEKMSKeyId(v string) *CopyObjectInput {
13377	s.SSEKMSKeyId = &v
13378	return s
13379}
13380
13381// SetServerSideEncryption sets the ServerSideEncryption field's value.
13382func (s *CopyObjectInput) SetServerSideEncryption(v string) *CopyObjectInput {
13383	s.ServerSideEncryption = &v
13384	return s
13385}
13386
13387// SetStorageClass sets the StorageClass field's value.
13388func (s *CopyObjectInput) SetStorageClass(v string) *CopyObjectInput {
13389	s.StorageClass = &v
13390	return s
13391}
13392
13393// SetTagging sets the Tagging field's value.
13394func (s *CopyObjectInput) SetTagging(v string) *CopyObjectInput {
13395	s.Tagging = &v
13396	return s
13397}
13398
13399// SetTaggingDirective sets the TaggingDirective field's value.
13400func (s *CopyObjectInput) SetTaggingDirective(v string) *CopyObjectInput {
13401	s.TaggingDirective = &v
13402	return s
13403}
13404
13405// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
13406func (s *CopyObjectInput) SetWebsiteRedirectLocation(v string) *CopyObjectInput {
13407	s.WebsiteRedirectLocation = &v
13408	return s
13409}
13410
13411func (s *CopyObjectInput) getEndpointARN() (arn.Resource, error) {
13412	if s.Bucket == nil {
13413		return nil, fmt.Errorf("member Bucket is nil")
13414	}
13415	return parseEndpointARN(*s.Bucket)
13416}
13417
13418func (s *CopyObjectInput) hasEndpointARN() bool {
13419	if s.Bucket == nil {
13420		return false
13421	}
13422	return arn.IsARN(*s.Bucket)
13423}
13424
13425// updateArnableField updates the value of the input field that
13426// takes an ARN as an input. This method is useful to backfill
13427// the parsed resource name from ARN into the input member.
13428// It returns a pointer to a modified copy of input and an error.
13429// Note that original input is not modified.
13430func (s CopyObjectInput) updateArnableField(v string) (interface{}, error) {
13431	if s.Bucket == nil {
13432		return nil, fmt.Errorf("member Bucket is nil")
13433	}
13434	s.Bucket = aws.String(v)
13435	return &s, nil
13436}
13437
13438type CopyObjectOutput struct {
13439	_ struct{} `type:"structure" payload:"CopyObjectResult"`
13440
13441	// Indicates whether the copied object uses an S3 Bucket Key for server-side
13442	// encryption with Amazon Web Services KMS (SSE-KMS).
13443	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
13444
13445	// Container for all response elements.
13446	CopyObjectResult *CopyObjectResult `type:"structure"`
13447
13448	// Version of the copied object in the destination bucket.
13449	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
13450
13451	// If the object expiration is configured, the response includes this header.
13452	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
13453
13454	// If present, indicates that the requester was successfully charged for the
13455	// request.
13456	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
13457
13458	// If server-side encryption with a customer-provided encryption key was requested,
13459	// the response will include this header confirming the encryption algorithm
13460	// used.
13461	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13462
13463	// If server-side encryption with a customer-provided encryption key was requested,
13464	// the response will include this header to provide round-trip message integrity
13465	// verification of the customer-provided encryption key.
13466	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13467
13468	// If present, specifies the Amazon Web Services KMS Encryption Context to use
13469	// for object encryption. The value of this header is a base64-encoded UTF-8
13470	// string holding JSON with the encryption context key-value pairs.
13471	//
13472	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
13473	// replaced with "sensitive" in string returned by CopyObjectOutput's
13474	// String and GoString methods.
13475	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
13476
13477	// If present, specifies the ID of the Amazon Web Services Key Management Service
13478	// (Amazon Web Services KMS) symmetric customer managed key that was used for
13479	// the object.
13480	//
13481	// SSEKMSKeyId is a sensitive parameter and its value will be
13482	// replaced with "sensitive" in string returned by CopyObjectOutput's
13483	// String and GoString methods.
13484	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
13485
13486	// The server-side encryption algorithm used when storing this object in Amazon
13487	// S3 (for example, AES256, aws:kms).
13488	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
13489
13490	// Version ID of the newly created copy.
13491	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
13492}
13493
13494// String returns the string representation.
13495//
13496// API parameter values that are decorated as "sensitive" in the API will not
13497// be included in the string output. The member name will be present, but the
13498// value will be replaced with "sensitive".
13499func (s CopyObjectOutput) String() string {
13500	return awsutil.Prettify(s)
13501}
13502
13503// GoString returns the string representation.
13504//
13505// API parameter values that are decorated as "sensitive" in the API will not
13506// be included in the string output. The member name will be present, but the
13507// value will be replaced with "sensitive".
13508func (s CopyObjectOutput) GoString() string {
13509	return s.String()
13510}
13511
13512// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
13513func (s *CopyObjectOutput) SetBucketKeyEnabled(v bool) *CopyObjectOutput {
13514	s.BucketKeyEnabled = &v
13515	return s
13516}
13517
13518// SetCopyObjectResult sets the CopyObjectResult field's value.
13519func (s *CopyObjectOutput) SetCopyObjectResult(v *CopyObjectResult) *CopyObjectOutput {
13520	s.CopyObjectResult = v
13521	return s
13522}
13523
13524// SetCopySourceVersionId sets the CopySourceVersionId field's value.
13525func (s *CopyObjectOutput) SetCopySourceVersionId(v string) *CopyObjectOutput {
13526	s.CopySourceVersionId = &v
13527	return s
13528}
13529
13530// SetExpiration sets the Expiration field's value.
13531func (s *CopyObjectOutput) SetExpiration(v string) *CopyObjectOutput {
13532	s.Expiration = &v
13533	return s
13534}
13535
13536// SetRequestCharged sets the RequestCharged field's value.
13537func (s *CopyObjectOutput) SetRequestCharged(v string) *CopyObjectOutput {
13538	s.RequestCharged = &v
13539	return s
13540}
13541
13542// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
13543func (s *CopyObjectOutput) SetSSECustomerAlgorithm(v string) *CopyObjectOutput {
13544	s.SSECustomerAlgorithm = &v
13545	return s
13546}
13547
13548// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
13549func (s *CopyObjectOutput) SetSSECustomerKeyMD5(v string) *CopyObjectOutput {
13550	s.SSECustomerKeyMD5 = &v
13551	return s
13552}
13553
13554// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
13555func (s *CopyObjectOutput) SetSSEKMSEncryptionContext(v string) *CopyObjectOutput {
13556	s.SSEKMSEncryptionContext = &v
13557	return s
13558}
13559
13560// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
13561func (s *CopyObjectOutput) SetSSEKMSKeyId(v string) *CopyObjectOutput {
13562	s.SSEKMSKeyId = &v
13563	return s
13564}
13565
13566// SetServerSideEncryption sets the ServerSideEncryption field's value.
13567func (s *CopyObjectOutput) SetServerSideEncryption(v string) *CopyObjectOutput {
13568	s.ServerSideEncryption = &v
13569	return s
13570}
13571
13572// SetVersionId sets the VersionId field's value.
13573func (s *CopyObjectOutput) SetVersionId(v string) *CopyObjectOutput {
13574	s.VersionId = &v
13575	return s
13576}
13577
13578// Container for all response elements.
13579type CopyObjectResult struct {
13580	_ struct{} `type:"structure"`
13581
13582	// Returns the ETag of the new object. The ETag reflects only changes to the
13583	// contents of an object, not its metadata.
13584	ETag *string `type:"string"`
13585
13586	// Creation date of the object.
13587	LastModified *time.Time `type:"timestamp"`
13588}
13589
13590// String returns the string representation.
13591//
13592// API parameter values that are decorated as "sensitive" in the API will not
13593// be included in the string output. The member name will be present, but the
13594// value will be replaced with "sensitive".
13595func (s CopyObjectResult) String() string {
13596	return awsutil.Prettify(s)
13597}
13598
13599// GoString returns the string representation.
13600//
13601// API parameter values that are decorated as "sensitive" in the API will not
13602// be included in the string output. The member name will be present, but the
13603// value will be replaced with "sensitive".
13604func (s CopyObjectResult) GoString() string {
13605	return s.String()
13606}
13607
13608// SetETag sets the ETag field's value.
13609func (s *CopyObjectResult) SetETag(v string) *CopyObjectResult {
13610	s.ETag = &v
13611	return s
13612}
13613
13614// SetLastModified sets the LastModified field's value.
13615func (s *CopyObjectResult) SetLastModified(v time.Time) *CopyObjectResult {
13616	s.LastModified = &v
13617	return s
13618}
13619
13620// Container for all response elements.
13621type CopyPartResult struct {
13622	_ struct{} `type:"structure"`
13623
13624	// Entity tag of the object.
13625	ETag *string `type:"string"`
13626
13627	// Date and time at which the object was uploaded.
13628	LastModified *time.Time `type:"timestamp"`
13629}
13630
13631// String returns the string representation.
13632//
13633// API parameter values that are decorated as "sensitive" in the API will not
13634// be included in the string output. The member name will be present, but the
13635// value will be replaced with "sensitive".
13636func (s CopyPartResult) String() string {
13637	return awsutil.Prettify(s)
13638}
13639
13640// GoString returns the string representation.
13641//
13642// API parameter values that are decorated as "sensitive" in the API will not
13643// be included in the string output. The member name will be present, but the
13644// value will be replaced with "sensitive".
13645func (s CopyPartResult) GoString() string {
13646	return s.String()
13647}
13648
13649// SetETag sets the ETag field's value.
13650func (s *CopyPartResult) SetETag(v string) *CopyPartResult {
13651	s.ETag = &v
13652	return s
13653}
13654
13655// SetLastModified sets the LastModified field's value.
13656func (s *CopyPartResult) SetLastModified(v time.Time) *CopyPartResult {
13657	s.LastModified = &v
13658	return s
13659}
13660
13661// The configuration information for the bucket.
13662type CreateBucketConfiguration struct {
13663	_ struct{} `type:"structure"`
13664
13665	// Specifies the Region where the bucket will be created. If you don't specify
13666	// a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1).
13667	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
13668}
13669
13670// String returns the string representation.
13671//
13672// API parameter values that are decorated as "sensitive" in the API will not
13673// be included in the string output. The member name will be present, but the
13674// value will be replaced with "sensitive".
13675func (s CreateBucketConfiguration) String() string {
13676	return awsutil.Prettify(s)
13677}
13678
13679// GoString returns the string representation.
13680//
13681// API parameter values that are decorated as "sensitive" in the API will not
13682// be included in the string output. The member name will be present, but the
13683// value will be replaced with "sensitive".
13684func (s CreateBucketConfiguration) GoString() string {
13685	return s.String()
13686}
13687
13688// SetLocationConstraint sets the LocationConstraint field's value.
13689func (s *CreateBucketConfiguration) SetLocationConstraint(v string) *CreateBucketConfiguration {
13690	s.LocationConstraint = &v
13691	return s
13692}
13693
13694type CreateBucketInput struct {
13695	_ struct{} `locationName:"CreateBucketRequest" type:"structure" payload:"CreateBucketConfiguration"`
13696
13697	// The canned ACL to apply to the bucket.
13698	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
13699
13700	// The name of the bucket to create.
13701	//
13702	// Bucket is a required field
13703	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13704
13705	// The configuration information for the bucket.
13706	CreateBucketConfiguration *CreateBucketConfiguration `locationName:"CreateBucketConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
13707
13708	// Allows grantee the read, write, read ACP, and write ACP permissions on the
13709	// bucket.
13710	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
13711
13712	// Allows grantee to list the objects in the bucket.
13713	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
13714
13715	// Allows grantee to read the bucket ACL.
13716	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
13717
13718	// Allows grantee to create new objects in the bucket.
13719	//
13720	// For the bucket and object owners of existing objects, also allows deletions
13721	// and overwrites of those objects.
13722	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
13723
13724	// Allows grantee to write the ACL for the applicable bucket.
13725	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
13726
13727	// Specifies whether you want S3 Object Lock to be enabled for the new bucket.
13728	ObjectLockEnabledForBucket *bool `location:"header" locationName:"x-amz-bucket-object-lock-enabled" type:"boolean"`
13729}
13730
13731// String returns the string representation.
13732//
13733// API parameter values that are decorated as "sensitive" in the API will not
13734// be included in the string output. The member name will be present, but the
13735// value will be replaced with "sensitive".
13736func (s CreateBucketInput) String() string {
13737	return awsutil.Prettify(s)
13738}
13739
13740// GoString returns the string representation.
13741//
13742// API parameter values that are decorated as "sensitive" in the API will not
13743// be included in the string output. The member name will be present, but the
13744// value will be replaced with "sensitive".
13745func (s CreateBucketInput) GoString() string {
13746	return s.String()
13747}
13748
13749// Validate inspects the fields of the type to determine if they are valid.
13750func (s *CreateBucketInput) Validate() error {
13751	invalidParams := request.ErrInvalidParams{Context: "CreateBucketInput"}
13752	if s.Bucket == nil {
13753		invalidParams.Add(request.NewErrParamRequired("Bucket"))
13754	}
13755	if s.Bucket != nil && len(*s.Bucket) < 1 {
13756		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
13757	}
13758
13759	if invalidParams.Len() > 0 {
13760		return invalidParams
13761	}
13762	return nil
13763}
13764
13765// SetACL sets the ACL field's value.
13766func (s *CreateBucketInput) SetACL(v string) *CreateBucketInput {
13767	s.ACL = &v
13768	return s
13769}
13770
13771// SetBucket sets the Bucket field's value.
13772func (s *CreateBucketInput) SetBucket(v string) *CreateBucketInput {
13773	s.Bucket = &v
13774	return s
13775}
13776
13777func (s *CreateBucketInput) getBucket() (v string) {
13778	if s.Bucket == nil {
13779		return v
13780	}
13781	return *s.Bucket
13782}
13783
13784// SetCreateBucketConfiguration sets the CreateBucketConfiguration field's value.
13785func (s *CreateBucketInput) SetCreateBucketConfiguration(v *CreateBucketConfiguration) *CreateBucketInput {
13786	s.CreateBucketConfiguration = v
13787	return s
13788}
13789
13790// SetGrantFullControl sets the GrantFullControl field's value.
13791func (s *CreateBucketInput) SetGrantFullControl(v string) *CreateBucketInput {
13792	s.GrantFullControl = &v
13793	return s
13794}
13795
13796// SetGrantRead sets the GrantRead field's value.
13797func (s *CreateBucketInput) SetGrantRead(v string) *CreateBucketInput {
13798	s.GrantRead = &v
13799	return s
13800}
13801
13802// SetGrantReadACP sets the GrantReadACP field's value.
13803func (s *CreateBucketInput) SetGrantReadACP(v string) *CreateBucketInput {
13804	s.GrantReadACP = &v
13805	return s
13806}
13807
13808// SetGrantWrite sets the GrantWrite field's value.
13809func (s *CreateBucketInput) SetGrantWrite(v string) *CreateBucketInput {
13810	s.GrantWrite = &v
13811	return s
13812}
13813
13814// SetGrantWriteACP sets the GrantWriteACP field's value.
13815func (s *CreateBucketInput) SetGrantWriteACP(v string) *CreateBucketInput {
13816	s.GrantWriteACP = &v
13817	return s
13818}
13819
13820// SetObjectLockEnabledForBucket sets the ObjectLockEnabledForBucket field's value.
13821func (s *CreateBucketInput) SetObjectLockEnabledForBucket(v bool) *CreateBucketInput {
13822	s.ObjectLockEnabledForBucket = &v
13823	return s
13824}
13825
13826type CreateBucketOutput struct {
13827	_ struct{} `type:"structure"`
13828
13829	// Specifies the Region where the bucket will be created. If you are creating
13830	// a bucket on the US East (N. Virginia) Region (us-east-1), you do not need
13831	// to specify the location.
13832	Location *string `location:"header" locationName:"Location" type:"string"`
13833}
13834
13835// String returns the string representation.
13836//
13837// API parameter values that are decorated as "sensitive" in the API will not
13838// be included in the string output. The member name will be present, but the
13839// value will be replaced with "sensitive".
13840func (s CreateBucketOutput) String() string {
13841	return awsutil.Prettify(s)
13842}
13843
13844// GoString returns the string representation.
13845//
13846// API parameter values that are decorated as "sensitive" in the API will not
13847// be included in the string output. The member name will be present, but the
13848// value will be replaced with "sensitive".
13849func (s CreateBucketOutput) GoString() string {
13850	return s.String()
13851}
13852
13853// SetLocation sets the Location field's value.
13854func (s *CreateBucketOutput) SetLocation(v string) *CreateBucketOutput {
13855	s.Location = &v
13856	return s
13857}
13858
13859type CreateMultipartUploadInput struct {
13860	_ struct{} `locationName:"CreateMultipartUploadRequest" type:"structure"`
13861
13862	// The canned ACL to apply to the object.
13863	//
13864	// This action is not supported by Amazon S3 on Outposts.
13865	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
13866
13867	// The name of the bucket to which to initiate the upload
13868	//
13869	// When using this action with an access point, you must direct requests to
13870	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
13871	// When using this action with an access point through the Amazon Web Services
13872	// SDKs, you provide the access point ARN in place of the bucket name. For more
13873	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
13874	// in the Amazon S3 User Guide.
13875	//
13876	// When using this action with Amazon S3 on Outposts, you must direct requests
13877	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
13878	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
13879	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
13880	// you provide the Outposts bucket ARN in place of the bucket name. For more
13881	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
13882	// in the Amazon S3 User Guide.
13883	//
13884	// Bucket is a required field
13885	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
13886
13887	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
13888	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
13889	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
13890	// SSE-KMS.
13891	//
13892	// Specifying this header with an object action doesn’t affect bucket-level
13893	// settings for S3 Bucket Key.
13894	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
13895
13896	// Specifies caching behavior along the request/reply chain.
13897	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
13898
13899	// Specifies presentational information for the object.
13900	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
13901
13902	// Specifies what content encodings have been applied to the object and thus
13903	// what decoding mechanisms must be applied to obtain the media-type referenced
13904	// by the Content-Type header field.
13905	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
13906
13907	// The language the content is in.
13908	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
13909
13910	// A standard MIME type describing the format of the object data.
13911	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
13912
13913	// The account ID of the expected bucket owner. If the bucket is owned by a
13914	// different account, the request will fail with an HTTP 403 (Access Denied)
13915	// error.
13916	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
13917
13918	// The date and time at which the object is no longer cacheable.
13919	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
13920
13921	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
13922	//
13923	// This action is not supported by Amazon S3 on Outposts.
13924	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
13925
13926	// Allows grantee to read the object data and its metadata.
13927	//
13928	// This action is not supported by Amazon S3 on Outposts.
13929	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
13930
13931	// Allows grantee to read the object ACL.
13932	//
13933	// This action is not supported by Amazon S3 on Outposts.
13934	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
13935
13936	// Allows grantee to write the ACL for the applicable object.
13937	//
13938	// This action is not supported by Amazon S3 on Outposts.
13939	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
13940
13941	// Object key for which the multipart upload is to be initiated.
13942	//
13943	// Key is a required field
13944	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
13945
13946	// A map of metadata to store with the object in S3.
13947	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
13948
13949	// Specifies whether you want to apply a Legal Hold to the uploaded object.
13950	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
13951
13952	// Specifies the Object Lock mode that you want to apply to the uploaded object.
13953	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
13954
13955	// Specifies the date and time when you want the Object Lock to expire.
13956	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
13957
13958	// Confirms that the requester knows that they will be charged for the request.
13959	// Bucket owners need not specify this parameter in their requests. For information
13960	// about downloading objects from requester pays buckets, see Downloading Objects
13961	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
13962	// in the Amazon S3 User Guide.
13963	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
13964
13965	// Specifies the algorithm to use to when encrypting the object (for example,
13966	// AES256).
13967	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
13968
13969	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
13970	// data. This value is used to store the object and then it is discarded; Amazon
13971	// S3 does not store the encryption key. The key must be appropriate for use
13972	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
13973	// header.
13974	//
13975	// SSECustomerKey is a sensitive parameter and its value will be
13976	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
13977	// String and GoString methods.
13978	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
13979
13980	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
13981	// Amazon S3 uses this header for a message integrity check to ensure that the
13982	// encryption key was transmitted without error.
13983	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
13984
13985	// Specifies the Amazon Web Services KMS Encryption Context to use for object
13986	// encryption. The value of this header is a base64-encoded UTF-8 string holding
13987	// JSON with the encryption context key-value pairs.
13988	//
13989	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
13990	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
13991	// String and GoString methods.
13992	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
13993
13994	// Specifies the ID of the symmetric customer managed key to use for object
13995	// encryption. All GET and PUT requests for an object protected by Amazon Web
13996	// Services KMS will fail if not made via SSL or using SigV4. For information
13997	// about configuring using any of the officially supported Amazon Web Services
13998	// SDKs and Amazon Web Services CLI, see Specifying the Signature Version in
13999	// Request Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version)
14000	// in the Amazon S3 User Guide.
14001	//
14002	// SSEKMSKeyId is a sensitive parameter and its value will be
14003	// replaced with "sensitive" in string returned by CreateMultipartUploadInput's
14004	// String and GoString methods.
14005	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
14006
14007	// The server-side encryption algorithm used when storing this object in Amazon
14008	// S3 (for example, AES256, aws:kms).
14009	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
14010
14011	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
14012	// objects. The STANDARD storage class provides high durability and high availability.
14013	// Depending on performance needs, you can specify a different Storage Class.
14014	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
14015	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
14016	// in the Amazon S3 User Guide.
14017	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
14018
14019	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
14020	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
14021
14022	// If the bucket is configured as a website, redirects requests for this object
14023	// to another object in the same bucket or to an external URL. Amazon S3 stores
14024	// the value of this header in the object metadata.
14025	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
14026}
14027
14028// String returns the string representation.
14029//
14030// API parameter values that are decorated as "sensitive" in the API will not
14031// be included in the string output. The member name will be present, but the
14032// value will be replaced with "sensitive".
14033func (s CreateMultipartUploadInput) String() string {
14034	return awsutil.Prettify(s)
14035}
14036
14037// GoString returns the string representation.
14038//
14039// API parameter values that are decorated as "sensitive" in the API will not
14040// be included in the string output. The member name will be present, but the
14041// value will be replaced with "sensitive".
14042func (s CreateMultipartUploadInput) GoString() string {
14043	return s.String()
14044}
14045
14046// Validate inspects the fields of the type to determine if they are valid.
14047func (s *CreateMultipartUploadInput) Validate() error {
14048	invalidParams := request.ErrInvalidParams{Context: "CreateMultipartUploadInput"}
14049	if s.Bucket == nil {
14050		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14051	}
14052	if s.Bucket != nil && len(*s.Bucket) < 1 {
14053		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14054	}
14055	if s.Key == nil {
14056		invalidParams.Add(request.NewErrParamRequired("Key"))
14057	}
14058	if s.Key != nil && len(*s.Key) < 1 {
14059		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
14060	}
14061
14062	if invalidParams.Len() > 0 {
14063		return invalidParams
14064	}
14065	return nil
14066}
14067
14068// SetACL sets the ACL field's value.
14069func (s *CreateMultipartUploadInput) SetACL(v string) *CreateMultipartUploadInput {
14070	s.ACL = &v
14071	return s
14072}
14073
14074// SetBucket sets the Bucket field's value.
14075func (s *CreateMultipartUploadInput) SetBucket(v string) *CreateMultipartUploadInput {
14076	s.Bucket = &v
14077	return s
14078}
14079
14080func (s *CreateMultipartUploadInput) getBucket() (v string) {
14081	if s.Bucket == nil {
14082		return v
14083	}
14084	return *s.Bucket
14085}
14086
14087// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
14088func (s *CreateMultipartUploadInput) SetBucketKeyEnabled(v bool) *CreateMultipartUploadInput {
14089	s.BucketKeyEnabled = &v
14090	return s
14091}
14092
14093// SetCacheControl sets the CacheControl field's value.
14094func (s *CreateMultipartUploadInput) SetCacheControl(v string) *CreateMultipartUploadInput {
14095	s.CacheControl = &v
14096	return s
14097}
14098
14099// SetContentDisposition sets the ContentDisposition field's value.
14100func (s *CreateMultipartUploadInput) SetContentDisposition(v string) *CreateMultipartUploadInput {
14101	s.ContentDisposition = &v
14102	return s
14103}
14104
14105// SetContentEncoding sets the ContentEncoding field's value.
14106func (s *CreateMultipartUploadInput) SetContentEncoding(v string) *CreateMultipartUploadInput {
14107	s.ContentEncoding = &v
14108	return s
14109}
14110
14111// SetContentLanguage sets the ContentLanguage field's value.
14112func (s *CreateMultipartUploadInput) SetContentLanguage(v string) *CreateMultipartUploadInput {
14113	s.ContentLanguage = &v
14114	return s
14115}
14116
14117// SetContentType sets the ContentType field's value.
14118func (s *CreateMultipartUploadInput) SetContentType(v string) *CreateMultipartUploadInput {
14119	s.ContentType = &v
14120	return s
14121}
14122
14123// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14124func (s *CreateMultipartUploadInput) SetExpectedBucketOwner(v string) *CreateMultipartUploadInput {
14125	s.ExpectedBucketOwner = &v
14126	return s
14127}
14128
14129// SetExpires sets the Expires field's value.
14130func (s *CreateMultipartUploadInput) SetExpires(v time.Time) *CreateMultipartUploadInput {
14131	s.Expires = &v
14132	return s
14133}
14134
14135// SetGrantFullControl sets the GrantFullControl field's value.
14136func (s *CreateMultipartUploadInput) SetGrantFullControl(v string) *CreateMultipartUploadInput {
14137	s.GrantFullControl = &v
14138	return s
14139}
14140
14141// SetGrantRead sets the GrantRead field's value.
14142func (s *CreateMultipartUploadInput) SetGrantRead(v string) *CreateMultipartUploadInput {
14143	s.GrantRead = &v
14144	return s
14145}
14146
14147// SetGrantReadACP sets the GrantReadACP field's value.
14148func (s *CreateMultipartUploadInput) SetGrantReadACP(v string) *CreateMultipartUploadInput {
14149	s.GrantReadACP = &v
14150	return s
14151}
14152
14153// SetGrantWriteACP sets the GrantWriteACP field's value.
14154func (s *CreateMultipartUploadInput) SetGrantWriteACP(v string) *CreateMultipartUploadInput {
14155	s.GrantWriteACP = &v
14156	return s
14157}
14158
14159// SetKey sets the Key field's value.
14160func (s *CreateMultipartUploadInput) SetKey(v string) *CreateMultipartUploadInput {
14161	s.Key = &v
14162	return s
14163}
14164
14165// SetMetadata sets the Metadata field's value.
14166func (s *CreateMultipartUploadInput) SetMetadata(v map[string]*string) *CreateMultipartUploadInput {
14167	s.Metadata = v
14168	return s
14169}
14170
14171// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
14172func (s *CreateMultipartUploadInput) SetObjectLockLegalHoldStatus(v string) *CreateMultipartUploadInput {
14173	s.ObjectLockLegalHoldStatus = &v
14174	return s
14175}
14176
14177// SetObjectLockMode sets the ObjectLockMode field's value.
14178func (s *CreateMultipartUploadInput) SetObjectLockMode(v string) *CreateMultipartUploadInput {
14179	s.ObjectLockMode = &v
14180	return s
14181}
14182
14183// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
14184func (s *CreateMultipartUploadInput) SetObjectLockRetainUntilDate(v time.Time) *CreateMultipartUploadInput {
14185	s.ObjectLockRetainUntilDate = &v
14186	return s
14187}
14188
14189// SetRequestPayer sets the RequestPayer field's value.
14190func (s *CreateMultipartUploadInput) SetRequestPayer(v string) *CreateMultipartUploadInput {
14191	s.RequestPayer = &v
14192	return s
14193}
14194
14195// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
14196func (s *CreateMultipartUploadInput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadInput {
14197	s.SSECustomerAlgorithm = &v
14198	return s
14199}
14200
14201// SetSSECustomerKey sets the SSECustomerKey field's value.
14202func (s *CreateMultipartUploadInput) SetSSECustomerKey(v string) *CreateMultipartUploadInput {
14203	s.SSECustomerKey = &v
14204	return s
14205}
14206
14207func (s *CreateMultipartUploadInput) getSSECustomerKey() (v string) {
14208	if s.SSECustomerKey == nil {
14209		return v
14210	}
14211	return *s.SSECustomerKey
14212}
14213
14214// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
14215func (s *CreateMultipartUploadInput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadInput {
14216	s.SSECustomerKeyMD5 = &v
14217	return s
14218}
14219
14220// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
14221func (s *CreateMultipartUploadInput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadInput {
14222	s.SSEKMSEncryptionContext = &v
14223	return s
14224}
14225
14226// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
14227func (s *CreateMultipartUploadInput) SetSSEKMSKeyId(v string) *CreateMultipartUploadInput {
14228	s.SSEKMSKeyId = &v
14229	return s
14230}
14231
14232// SetServerSideEncryption sets the ServerSideEncryption field's value.
14233func (s *CreateMultipartUploadInput) SetServerSideEncryption(v string) *CreateMultipartUploadInput {
14234	s.ServerSideEncryption = &v
14235	return s
14236}
14237
14238// SetStorageClass sets the StorageClass field's value.
14239func (s *CreateMultipartUploadInput) SetStorageClass(v string) *CreateMultipartUploadInput {
14240	s.StorageClass = &v
14241	return s
14242}
14243
14244// SetTagging sets the Tagging field's value.
14245func (s *CreateMultipartUploadInput) SetTagging(v string) *CreateMultipartUploadInput {
14246	s.Tagging = &v
14247	return s
14248}
14249
14250// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
14251func (s *CreateMultipartUploadInput) SetWebsiteRedirectLocation(v string) *CreateMultipartUploadInput {
14252	s.WebsiteRedirectLocation = &v
14253	return s
14254}
14255
14256func (s *CreateMultipartUploadInput) getEndpointARN() (arn.Resource, error) {
14257	if s.Bucket == nil {
14258		return nil, fmt.Errorf("member Bucket is nil")
14259	}
14260	return parseEndpointARN(*s.Bucket)
14261}
14262
14263func (s *CreateMultipartUploadInput) hasEndpointARN() bool {
14264	if s.Bucket == nil {
14265		return false
14266	}
14267	return arn.IsARN(*s.Bucket)
14268}
14269
14270// updateArnableField updates the value of the input field that
14271// takes an ARN as an input. This method is useful to backfill
14272// the parsed resource name from ARN into the input member.
14273// It returns a pointer to a modified copy of input and an error.
14274// Note that original input is not modified.
14275func (s CreateMultipartUploadInput) updateArnableField(v string) (interface{}, error) {
14276	if s.Bucket == nil {
14277		return nil, fmt.Errorf("member Bucket is nil")
14278	}
14279	s.Bucket = aws.String(v)
14280	return &s, nil
14281}
14282
14283type CreateMultipartUploadOutput struct {
14284	_ struct{} `type:"structure"`
14285
14286	// If the bucket has a lifecycle rule configured with an action to abort incomplete
14287	// multipart uploads and the prefix in the lifecycle rule matches the object
14288	// name in the request, the response includes this header. The header indicates
14289	// when the initiated multipart upload becomes eligible for an abort operation.
14290	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
14291	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
14292	//
14293	// The response also includes the x-amz-abort-rule-id header that provides the
14294	// ID of the lifecycle configuration rule that defines this action.
14295	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
14296
14297	// This header is returned along with the x-amz-abort-date header. It identifies
14298	// the applicable lifecycle configuration rule that defines the action to abort
14299	// incomplete multipart uploads.
14300	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
14301
14302	// The name of the bucket to which the multipart upload was initiated. Does
14303	// not return the access point ARN or access point alias if used.
14304	//
14305	// When using this action with an access point, you must direct requests to
14306	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
14307	// When using this action with an access point through the Amazon Web Services
14308	// SDKs, you provide the access point ARN in place of the bucket name. For more
14309	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
14310	// in the Amazon S3 User Guide.
14311	//
14312	// When using this action with Amazon S3 on Outposts, you must direct requests
14313	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
14314	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
14315	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
14316	// you provide the Outposts bucket ARN in place of the bucket name. For more
14317	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
14318	// in the Amazon S3 User Guide.
14319	Bucket *string `locationName:"Bucket" type:"string"`
14320
14321	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
14322	// encryption with Amazon Web Services KMS (SSE-KMS).
14323	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
14324
14325	// Object key for which the multipart upload was initiated.
14326	Key *string `min:"1" type:"string"`
14327
14328	// If present, indicates that the requester was successfully charged for the
14329	// request.
14330	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
14331
14332	// If server-side encryption with a customer-provided encryption key was requested,
14333	// the response will include this header confirming the encryption algorithm
14334	// used.
14335	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
14336
14337	// If server-side encryption with a customer-provided encryption key was requested,
14338	// the response will include this header to provide round-trip message integrity
14339	// verification of the customer-provided encryption key.
14340	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
14341
14342	// If present, specifies the Amazon Web Services KMS Encryption Context to use
14343	// for object encryption. The value of this header is a base64-encoded UTF-8
14344	// string holding JSON with the encryption context key-value pairs.
14345	//
14346	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
14347	// replaced with "sensitive" in string returned by CreateMultipartUploadOutput's
14348	// String and GoString methods.
14349	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
14350
14351	// If present, specifies the ID of the Amazon Web Services Key Management Service
14352	// (Amazon Web Services KMS) symmetric customer managed key that was used for
14353	// the object.
14354	//
14355	// SSEKMSKeyId is a sensitive parameter and its value will be
14356	// replaced with "sensitive" in string returned by CreateMultipartUploadOutput's
14357	// String and GoString methods.
14358	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
14359
14360	// The server-side encryption algorithm used when storing this object in Amazon
14361	// S3 (for example, AES256, aws:kms).
14362	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
14363
14364	// ID for the initiated multipart upload.
14365	UploadId *string `type:"string"`
14366}
14367
14368// String returns the string representation.
14369//
14370// API parameter values that are decorated as "sensitive" in the API will not
14371// be included in the string output. The member name will be present, but the
14372// value will be replaced with "sensitive".
14373func (s CreateMultipartUploadOutput) String() string {
14374	return awsutil.Prettify(s)
14375}
14376
14377// GoString returns the string representation.
14378//
14379// API parameter values that are decorated as "sensitive" in the API will not
14380// be included in the string output. The member name will be present, but the
14381// value will be replaced with "sensitive".
14382func (s CreateMultipartUploadOutput) GoString() string {
14383	return s.String()
14384}
14385
14386// SetAbortDate sets the AbortDate field's value.
14387func (s *CreateMultipartUploadOutput) SetAbortDate(v time.Time) *CreateMultipartUploadOutput {
14388	s.AbortDate = &v
14389	return s
14390}
14391
14392// SetAbortRuleId sets the AbortRuleId field's value.
14393func (s *CreateMultipartUploadOutput) SetAbortRuleId(v string) *CreateMultipartUploadOutput {
14394	s.AbortRuleId = &v
14395	return s
14396}
14397
14398// SetBucket sets the Bucket field's value.
14399func (s *CreateMultipartUploadOutput) SetBucket(v string) *CreateMultipartUploadOutput {
14400	s.Bucket = &v
14401	return s
14402}
14403
14404func (s *CreateMultipartUploadOutput) getBucket() (v string) {
14405	if s.Bucket == nil {
14406		return v
14407	}
14408	return *s.Bucket
14409}
14410
14411// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
14412func (s *CreateMultipartUploadOutput) SetBucketKeyEnabled(v bool) *CreateMultipartUploadOutput {
14413	s.BucketKeyEnabled = &v
14414	return s
14415}
14416
14417// SetKey sets the Key field's value.
14418func (s *CreateMultipartUploadOutput) SetKey(v string) *CreateMultipartUploadOutput {
14419	s.Key = &v
14420	return s
14421}
14422
14423// SetRequestCharged sets the RequestCharged field's value.
14424func (s *CreateMultipartUploadOutput) SetRequestCharged(v string) *CreateMultipartUploadOutput {
14425	s.RequestCharged = &v
14426	return s
14427}
14428
14429// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
14430func (s *CreateMultipartUploadOutput) SetSSECustomerAlgorithm(v string) *CreateMultipartUploadOutput {
14431	s.SSECustomerAlgorithm = &v
14432	return s
14433}
14434
14435// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
14436func (s *CreateMultipartUploadOutput) SetSSECustomerKeyMD5(v string) *CreateMultipartUploadOutput {
14437	s.SSECustomerKeyMD5 = &v
14438	return s
14439}
14440
14441// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
14442func (s *CreateMultipartUploadOutput) SetSSEKMSEncryptionContext(v string) *CreateMultipartUploadOutput {
14443	s.SSEKMSEncryptionContext = &v
14444	return s
14445}
14446
14447// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
14448func (s *CreateMultipartUploadOutput) SetSSEKMSKeyId(v string) *CreateMultipartUploadOutput {
14449	s.SSEKMSKeyId = &v
14450	return s
14451}
14452
14453// SetServerSideEncryption sets the ServerSideEncryption field's value.
14454func (s *CreateMultipartUploadOutput) SetServerSideEncryption(v string) *CreateMultipartUploadOutput {
14455	s.ServerSideEncryption = &v
14456	return s
14457}
14458
14459// SetUploadId sets the UploadId field's value.
14460func (s *CreateMultipartUploadOutput) SetUploadId(v string) *CreateMultipartUploadOutput {
14461	s.UploadId = &v
14462	return s
14463}
14464
14465// The container element for specifying the default Object Lock retention settings
14466// for new objects placed in the specified bucket.
14467//
14468//    * The DefaultRetention settings require both a mode and a period.
14469//
14470//    * The DefaultRetention period can be either Days or Years but you must
14471//    select one. You cannot specify Days and Years at the same time.
14472type DefaultRetention struct {
14473	_ struct{} `type:"structure"`
14474
14475	// The number of days that you want to specify for the default retention period.
14476	// Must be used with Mode.
14477	Days *int64 `type:"integer"`
14478
14479	// The default Object Lock retention mode you want to apply to new objects placed
14480	// in the specified bucket. Must be used with either Days or Years.
14481	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
14482
14483	// The number of years that you want to specify for the default retention period.
14484	// Must be used with Mode.
14485	Years *int64 `type:"integer"`
14486}
14487
14488// String returns the string representation.
14489//
14490// API parameter values that are decorated as "sensitive" in the API will not
14491// be included in the string output. The member name will be present, but the
14492// value will be replaced with "sensitive".
14493func (s DefaultRetention) String() string {
14494	return awsutil.Prettify(s)
14495}
14496
14497// GoString returns the string representation.
14498//
14499// API parameter values that are decorated as "sensitive" in the API will not
14500// be included in the string output. The member name will be present, but the
14501// value will be replaced with "sensitive".
14502func (s DefaultRetention) GoString() string {
14503	return s.String()
14504}
14505
14506// SetDays sets the Days field's value.
14507func (s *DefaultRetention) SetDays(v int64) *DefaultRetention {
14508	s.Days = &v
14509	return s
14510}
14511
14512// SetMode sets the Mode field's value.
14513func (s *DefaultRetention) SetMode(v string) *DefaultRetention {
14514	s.Mode = &v
14515	return s
14516}
14517
14518// SetYears sets the Years field's value.
14519func (s *DefaultRetention) SetYears(v int64) *DefaultRetention {
14520	s.Years = &v
14521	return s
14522}
14523
14524// Container for the objects to delete.
14525type Delete struct {
14526	_ struct{} `type:"structure"`
14527
14528	// The objects to delete.
14529	//
14530	// Objects is a required field
14531	Objects []*ObjectIdentifier `locationName:"Object" type:"list" flattened:"true" required:"true"`
14532
14533	// Element to enable quiet mode for the request. When you add this element,
14534	// you must set its value to true.
14535	Quiet *bool `type:"boolean"`
14536}
14537
14538// String returns the string representation.
14539//
14540// API parameter values that are decorated as "sensitive" in the API will not
14541// be included in the string output. The member name will be present, but the
14542// value will be replaced with "sensitive".
14543func (s Delete) String() string {
14544	return awsutil.Prettify(s)
14545}
14546
14547// GoString returns the string representation.
14548//
14549// API parameter values that are decorated as "sensitive" in the API will not
14550// be included in the string output. The member name will be present, but the
14551// value will be replaced with "sensitive".
14552func (s Delete) GoString() string {
14553	return s.String()
14554}
14555
14556// Validate inspects the fields of the type to determine if they are valid.
14557func (s *Delete) Validate() error {
14558	invalidParams := request.ErrInvalidParams{Context: "Delete"}
14559	if s.Objects == nil {
14560		invalidParams.Add(request.NewErrParamRequired("Objects"))
14561	}
14562	if s.Objects != nil {
14563		for i, v := range s.Objects {
14564			if v == nil {
14565				continue
14566			}
14567			if err := v.Validate(); err != nil {
14568				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Objects", i), err.(request.ErrInvalidParams))
14569			}
14570		}
14571	}
14572
14573	if invalidParams.Len() > 0 {
14574		return invalidParams
14575	}
14576	return nil
14577}
14578
14579// SetObjects sets the Objects field's value.
14580func (s *Delete) SetObjects(v []*ObjectIdentifier) *Delete {
14581	s.Objects = v
14582	return s
14583}
14584
14585// SetQuiet sets the Quiet field's value.
14586func (s *Delete) SetQuiet(v bool) *Delete {
14587	s.Quiet = &v
14588	return s
14589}
14590
14591type DeleteBucketAnalyticsConfigurationInput struct {
14592	_ struct{} `locationName:"DeleteBucketAnalyticsConfigurationRequest" type:"structure"`
14593
14594	// The name of the bucket from which an analytics configuration is deleted.
14595	//
14596	// Bucket is a required field
14597	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14598
14599	// The account ID of the expected bucket owner. If the bucket is owned by a
14600	// different account, the request will fail with an HTTP 403 (Access Denied)
14601	// error.
14602	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14603
14604	// The ID that identifies the analytics configuration.
14605	//
14606	// Id is a required field
14607	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
14608}
14609
14610// String returns the string representation.
14611//
14612// API parameter values that are decorated as "sensitive" in the API will not
14613// be included in the string output. The member name will be present, but the
14614// value will be replaced with "sensitive".
14615func (s DeleteBucketAnalyticsConfigurationInput) String() string {
14616	return awsutil.Prettify(s)
14617}
14618
14619// GoString returns the string representation.
14620//
14621// API parameter values that are decorated as "sensitive" in the API will not
14622// be included in the string output. The member name will be present, but the
14623// value will be replaced with "sensitive".
14624func (s DeleteBucketAnalyticsConfigurationInput) GoString() string {
14625	return s.String()
14626}
14627
14628// Validate inspects the fields of the type to determine if they are valid.
14629func (s *DeleteBucketAnalyticsConfigurationInput) Validate() error {
14630	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketAnalyticsConfigurationInput"}
14631	if s.Bucket == nil {
14632		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14633	}
14634	if s.Bucket != nil && len(*s.Bucket) < 1 {
14635		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14636	}
14637	if s.Id == nil {
14638		invalidParams.Add(request.NewErrParamRequired("Id"))
14639	}
14640
14641	if invalidParams.Len() > 0 {
14642		return invalidParams
14643	}
14644	return nil
14645}
14646
14647// SetBucket sets the Bucket field's value.
14648func (s *DeleteBucketAnalyticsConfigurationInput) SetBucket(v string) *DeleteBucketAnalyticsConfigurationInput {
14649	s.Bucket = &v
14650	return s
14651}
14652
14653func (s *DeleteBucketAnalyticsConfigurationInput) getBucket() (v string) {
14654	if s.Bucket == nil {
14655		return v
14656	}
14657	return *s.Bucket
14658}
14659
14660// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14661func (s *DeleteBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketAnalyticsConfigurationInput {
14662	s.ExpectedBucketOwner = &v
14663	return s
14664}
14665
14666// SetId sets the Id field's value.
14667func (s *DeleteBucketAnalyticsConfigurationInput) SetId(v string) *DeleteBucketAnalyticsConfigurationInput {
14668	s.Id = &v
14669	return s
14670}
14671
14672func (s *DeleteBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
14673	if s.Bucket == nil {
14674		return nil, fmt.Errorf("member Bucket is nil")
14675	}
14676	return parseEndpointARN(*s.Bucket)
14677}
14678
14679func (s *DeleteBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
14680	if s.Bucket == nil {
14681		return false
14682	}
14683	return arn.IsARN(*s.Bucket)
14684}
14685
14686// updateArnableField updates the value of the input field that
14687// takes an ARN as an input. This method is useful to backfill
14688// the parsed resource name from ARN into the input member.
14689// It returns a pointer to a modified copy of input and an error.
14690// Note that original input is not modified.
14691func (s DeleteBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
14692	if s.Bucket == nil {
14693		return nil, fmt.Errorf("member Bucket is nil")
14694	}
14695	s.Bucket = aws.String(v)
14696	return &s, nil
14697}
14698
14699type DeleteBucketAnalyticsConfigurationOutput struct {
14700	_ struct{} `type:"structure"`
14701}
14702
14703// String returns the string representation.
14704//
14705// API parameter values that are decorated as "sensitive" in the API will not
14706// be included in the string output. The member name will be present, but the
14707// value will be replaced with "sensitive".
14708func (s DeleteBucketAnalyticsConfigurationOutput) String() string {
14709	return awsutil.Prettify(s)
14710}
14711
14712// GoString returns the string representation.
14713//
14714// API parameter values that are decorated as "sensitive" in the API will not
14715// be included in the string output. The member name will be present, but the
14716// value will be replaced with "sensitive".
14717func (s DeleteBucketAnalyticsConfigurationOutput) GoString() string {
14718	return s.String()
14719}
14720
14721type DeleteBucketCorsInput struct {
14722	_ struct{} `locationName:"DeleteBucketCorsRequest" type:"structure"`
14723
14724	// Specifies the bucket whose cors configuration is being deleted.
14725	//
14726	// Bucket is a required field
14727	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14728
14729	// The account ID of the expected bucket owner. If the bucket is owned by a
14730	// different account, the request will fail with an HTTP 403 (Access Denied)
14731	// error.
14732	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14733}
14734
14735// String returns the string representation.
14736//
14737// API parameter values that are decorated as "sensitive" in the API will not
14738// be included in the string output. The member name will be present, but the
14739// value will be replaced with "sensitive".
14740func (s DeleteBucketCorsInput) String() string {
14741	return awsutil.Prettify(s)
14742}
14743
14744// GoString returns the string representation.
14745//
14746// API parameter values that are decorated as "sensitive" in the API will not
14747// be included in the string output. The member name will be present, but the
14748// value will be replaced with "sensitive".
14749func (s DeleteBucketCorsInput) GoString() string {
14750	return s.String()
14751}
14752
14753// Validate inspects the fields of the type to determine if they are valid.
14754func (s *DeleteBucketCorsInput) Validate() error {
14755	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketCorsInput"}
14756	if s.Bucket == nil {
14757		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14758	}
14759	if s.Bucket != nil && len(*s.Bucket) < 1 {
14760		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14761	}
14762
14763	if invalidParams.Len() > 0 {
14764		return invalidParams
14765	}
14766	return nil
14767}
14768
14769// SetBucket sets the Bucket field's value.
14770func (s *DeleteBucketCorsInput) SetBucket(v string) *DeleteBucketCorsInput {
14771	s.Bucket = &v
14772	return s
14773}
14774
14775func (s *DeleteBucketCorsInput) getBucket() (v string) {
14776	if s.Bucket == nil {
14777		return v
14778	}
14779	return *s.Bucket
14780}
14781
14782// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14783func (s *DeleteBucketCorsInput) SetExpectedBucketOwner(v string) *DeleteBucketCorsInput {
14784	s.ExpectedBucketOwner = &v
14785	return s
14786}
14787
14788func (s *DeleteBucketCorsInput) getEndpointARN() (arn.Resource, error) {
14789	if s.Bucket == nil {
14790		return nil, fmt.Errorf("member Bucket is nil")
14791	}
14792	return parseEndpointARN(*s.Bucket)
14793}
14794
14795func (s *DeleteBucketCorsInput) hasEndpointARN() bool {
14796	if s.Bucket == nil {
14797		return false
14798	}
14799	return arn.IsARN(*s.Bucket)
14800}
14801
14802// updateArnableField updates the value of the input field that
14803// takes an ARN as an input. This method is useful to backfill
14804// the parsed resource name from ARN into the input member.
14805// It returns a pointer to a modified copy of input and an error.
14806// Note that original input is not modified.
14807func (s DeleteBucketCorsInput) updateArnableField(v string) (interface{}, error) {
14808	if s.Bucket == nil {
14809		return nil, fmt.Errorf("member Bucket is nil")
14810	}
14811	s.Bucket = aws.String(v)
14812	return &s, nil
14813}
14814
14815type DeleteBucketCorsOutput struct {
14816	_ struct{} `type:"structure"`
14817}
14818
14819// String returns the string representation.
14820//
14821// API parameter values that are decorated as "sensitive" in the API will not
14822// be included in the string output. The member name will be present, but the
14823// value will be replaced with "sensitive".
14824func (s DeleteBucketCorsOutput) String() string {
14825	return awsutil.Prettify(s)
14826}
14827
14828// GoString returns the string representation.
14829//
14830// API parameter values that are decorated as "sensitive" in the API will not
14831// be included in the string output. The member name will be present, but the
14832// value will be replaced with "sensitive".
14833func (s DeleteBucketCorsOutput) GoString() string {
14834	return s.String()
14835}
14836
14837type DeleteBucketEncryptionInput struct {
14838	_ struct{} `locationName:"DeleteBucketEncryptionRequest" type:"structure"`
14839
14840	// The name of the bucket containing the server-side encryption configuration
14841	// to delete.
14842	//
14843	// Bucket is a required field
14844	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14845
14846	// The account ID of the expected bucket owner. If the bucket is owned by a
14847	// different account, the request will fail with an HTTP 403 (Access Denied)
14848	// error.
14849	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14850}
14851
14852// String returns the string representation.
14853//
14854// API parameter values that are decorated as "sensitive" in the API will not
14855// be included in the string output. The member name will be present, but the
14856// value will be replaced with "sensitive".
14857func (s DeleteBucketEncryptionInput) String() string {
14858	return awsutil.Prettify(s)
14859}
14860
14861// GoString returns the string representation.
14862//
14863// API parameter values that are decorated as "sensitive" in the API will not
14864// be included in the string output. The member name will be present, but the
14865// value will be replaced with "sensitive".
14866func (s DeleteBucketEncryptionInput) GoString() string {
14867	return s.String()
14868}
14869
14870// Validate inspects the fields of the type to determine if they are valid.
14871func (s *DeleteBucketEncryptionInput) Validate() error {
14872	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketEncryptionInput"}
14873	if s.Bucket == nil {
14874		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14875	}
14876	if s.Bucket != nil && len(*s.Bucket) < 1 {
14877		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14878	}
14879
14880	if invalidParams.Len() > 0 {
14881		return invalidParams
14882	}
14883	return nil
14884}
14885
14886// SetBucket sets the Bucket field's value.
14887func (s *DeleteBucketEncryptionInput) SetBucket(v string) *DeleteBucketEncryptionInput {
14888	s.Bucket = &v
14889	return s
14890}
14891
14892func (s *DeleteBucketEncryptionInput) getBucket() (v string) {
14893	if s.Bucket == nil {
14894		return v
14895	}
14896	return *s.Bucket
14897}
14898
14899// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
14900func (s *DeleteBucketEncryptionInput) SetExpectedBucketOwner(v string) *DeleteBucketEncryptionInput {
14901	s.ExpectedBucketOwner = &v
14902	return s
14903}
14904
14905func (s *DeleteBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
14906	if s.Bucket == nil {
14907		return nil, fmt.Errorf("member Bucket is nil")
14908	}
14909	return parseEndpointARN(*s.Bucket)
14910}
14911
14912func (s *DeleteBucketEncryptionInput) hasEndpointARN() bool {
14913	if s.Bucket == nil {
14914		return false
14915	}
14916	return arn.IsARN(*s.Bucket)
14917}
14918
14919// updateArnableField updates the value of the input field that
14920// takes an ARN as an input. This method is useful to backfill
14921// the parsed resource name from ARN into the input member.
14922// It returns a pointer to a modified copy of input and an error.
14923// Note that original input is not modified.
14924func (s DeleteBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
14925	if s.Bucket == nil {
14926		return nil, fmt.Errorf("member Bucket is nil")
14927	}
14928	s.Bucket = aws.String(v)
14929	return &s, nil
14930}
14931
14932type DeleteBucketEncryptionOutput struct {
14933	_ struct{} `type:"structure"`
14934}
14935
14936// String returns the string representation.
14937//
14938// API parameter values that are decorated as "sensitive" in the API will not
14939// be included in the string output. The member name will be present, but the
14940// value will be replaced with "sensitive".
14941func (s DeleteBucketEncryptionOutput) String() string {
14942	return awsutil.Prettify(s)
14943}
14944
14945// GoString returns the string representation.
14946//
14947// API parameter values that are decorated as "sensitive" in the API will not
14948// be included in the string output. The member name will be present, but the
14949// value will be replaced with "sensitive".
14950func (s DeleteBucketEncryptionOutput) GoString() string {
14951	return s.String()
14952}
14953
14954type DeleteBucketInput struct {
14955	_ struct{} `locationName:"DeleteBucketRequest" type:"structure"`
14956
14957	// Specifies the bucket being deleted.
14958	//
14959	// Bucket is a required field
14960	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
14961
14962	// The account ID of the expected bucket owner. If the bucket is owned by a
14963	// different account, the request will fail with an HTTP 403 (Access Denied)
14964	// error.
14965	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
14966}
14967
14968// String returns the string representation.
14969//
14970// API parameter values that are decorated as "sensitive" in the API will not
14971// be included in the string output. The member name will be present, but the
14972// value will be replaced with "sensitive".
14973func (s DeleteBucketInput) String() string {
14974	return awsutil.Prettify(s)
14975}
14976
14977// GoString returns the string representation.
14978//
14979// API parameter values that are decorated as "sensitive" in the API will not
14980// be included in the string output. The member name will be present, but the
14981// value will be replaced with "sensitive".
14982func (s DeleteBucketInput) GoString() string {
14983	return s.String()
14984}
14985
14986// Validate inspects the fields of the type to determine if they are valid.
14987func (s *DeleteBucketInput) Validate() error {
14988	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInput"}
14989	if s.Bucket == nil {
14990		invalidParams.Add(request.NewErrParamRequired("Bucket"))
14991	}
14992	if s.Bucket != nil && len(*s.Bucket) < 1 {
14993		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
14994	}
14995
14996	if invalidParams.Len() > 0 {
14997		return invalidParams
14998	}
14999	return nil
15000}
15001
15002// SetBucket sets the Bucket field's value.
15003func (s *DeleteBucketInput) SetBucket(v string) *DeleteBucketInput {
15004	s.Bucket = &v
15005	return s
15006}
15007
15008func (s *DeleteBucketInput) getBucket() (v string) {
15009	if s.Bucket == nil {
15010		return v
15011	}
15012	return *s.Bucket
15013}
15014
15015// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15016func (s *DeleteBucketInput) SetExpectedBucketOwner(v string) *DeleteBucketInput {
15017	s.ExpectedBucketOwner = &v
15018	return s
15019}
15020
15021func (s *DeleteBucketInput) getEndpointARN() (arn.Resource, error) {
15022	if s.Bucket == nil {
15023		return nil, fmt.Errorf("member Bucket is nil")
15024	}
15025	return parseEndpointARN(*s.Bucket)
15026}
15027
15028func (s *DeleteBucketInput) hasEndpointARN() bool {
15029	if s.Bucket == nil {
15030		return false
15031	}
15032	return arn.IsARN(*s.Bucket)
15033}
15034
15035// updateArnableField updates the value of the input field that
15036// takes an ARN as an input. This method is useful to backfill
15037// the parsed resource name from ARN into the input member.
15038// It returns a pointer to a modified copy of input and an error.
15039// Note that original input is not modified.
15040func (s DeleteBucketInput) updateArnableField(v string) (interface{}, error) {
15041	if s.Bucket == nil {
15042		return nil, fmt.Errorf("member Bucket is nil")
15043	}
15044	s.Bucket = aws.String(v)
15045	return &s, nil
15046}
15047
15048type DeleteBucketIntelligentTieringConfigurationInput struct {
15049	_ struct{} `locationName:"DeleteBucketIntelligentTieringConfigurationRequest" type:"structure"`
15050
15051	// The name of the Amazon S3 bucket whose configuration you want to modify or
15052	// retrieve.
15053	//
15054	// Bucket is a required field
15055	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15056
15057	// The ID used to identify the S3 Intelligent-Tiering configuration.
15058	//
15059	// Id is a required field
15060	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15061}
15062
15063// String returns the string representation.
15064//
15065// API parameter values that are decorated as "sensitive" in the API will not
15066// be included in the string output. The member name will be present, but the
15067// value will be replaced with "sensitive".
15068func (s DeleteBucketIntelligentTieringConfigurationInput) String() string {
15069	return awsutil.Prettify(s)
15070}
15071
15072// GoString returns the string representation.
15073//
15074// API parameter values that are decorated as "sensitive" in the API will not
15075// be included in the string output. The member name will be present, but the
15076// value will be replaced with "sensitive".
15077func (s DeleteBucketIntelligentTieringConfigurationInput) GoString() string {
15078	return s.String()
15079}
15080
15081// Validate inspects the fields of the type to determine if they are valid.
15082func (s *DeleteBucketIntelligentTieringConfigurationInput) Validate() error {
15083	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketIntelligentTieringConfigurationInput"}
15084	if s.Bucket == nil {
15085		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15086	}
15087	if s.Bucket != nil && len(*s.Bucket) < 1 {
15088		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15089	}
15090	if s.Id == nil {
15091		invalidParams.Add(request.NewErrParamRequired("Id"))
15092	}
15093
15094	if invalidParams.Len() > 0 {
15095		return invalidParams
15096	}
15097	return nil
15098}
15099
15100// SetBucket sets the Bucket field's value.
15101func (s *DeleteBucketIntelligentTieringConfigurationInput) SetBucket(v string) *DeleteBucketIntelligentTieringConfigurationInput {
15102	s.Bucket = &v
15103	return s
15104}
15105
15106func (s *DeleteBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
15107	if s.Bucket == nil {
15108		return v
15109	}
15110	return *s.Bucket
15111}
15112
15113// SetId sets the Id field's value.
15114func (s *DeleteBucketIntelligentTieringConfigurationInput) SetId(v string) *DeleteBucketIntelligentTieringConfigurationInput {
15115	s.Id = &v
15116	return s
15117}
15118
15119func (s *DeleteBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
15120	if s.Bucket == nil {
15121		return nil, fmt.Errorf("member Bucket is nil")
15122	}
15123	return parseEndpointARN(*s.Bucket)
15124}
15125
15126func (s *DeleteBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
15127	if s.Bucket == nil {
15128		return false
15129	}
15130	return arn.IsARN(*s.Bucket)
15131}
15132
15133// updateArnableField updates the value of the input field that
15134// takes an ARN as an input. This method is useful to backfill
15135// the parsed resource name from ARN into the input member.
15136// It returns a pointer to a modified copy of input and an error.
15137// Note that original input is not modified.
15138func (s DeleteBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
15139	if s.Bucket == nil {
15140		return nil, fmt.Errorf("member Bucket is nil")
15141	}
15142	s.Bucket = aws.String(v)
15143	return &s, nil
15144}
15145
15146type DeleteBucketIntelligentTieringConfigurationOutput struct {
15147	_ struct{} `type:"structure"`
15148}
15149
15150// String returns the string representation.
15151//
15152// API parameter values that are decorated as "sensitive" in the API will not
15153// be included in the string output. The member name will be present, but the
15154// value will be replaced with "sensitive".
15155func (s DeleteBucketIntelligentTieringConfigurationOutput) String() string {
15156	return awsutil.Prettify(s)
15157}
15158
15159// GoString returns the string representation.
15160//
15161// API parameter values that are decorated as "sensitive" in the API will not
15162// be included in the string output. The member name will be present, but the
15163// value will be replaced with "sensitive".
15164func (s DeleteBucketIntelligentTieringConfigurationOutput) GoString() string {
15165	return s.String()
15166}
15167
15168type DeleteBucketInventoryConfigurationInput struct {
15169	_ struct{} `locationName:"DeleteBucketInventoryConfigurationRequest" type:"structure"`
15170
15171	// The name of the bucket containing the inventory configuration to delete.
15172	//
15173	// Bucket is a required field
15174	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15175
15176	// The account ID of the expected bucket owner. If the bucket is owned by a
15177	// different account, the request will fail with an HTTP 403 (Access Denied)
15178	// error.
15179	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15180
15181	// The ID used to identify the inventory configuration.
15182	//
15183	// Id is a required field
15184	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15185}
15186
15187// String returns the string representation.
15188//
15189// API parameter values that are decorated as "sensitive" in the API will not
15190// be included in the string output. The member name will be present, but the
15191// value will be replaced with "sensitive".
15192func (s DeleteBucketInventoryConfigurationInput) String() string {
15193	return awsutil.Prettify(s)
15194}
15195
15196// GoString returns the string representation.
15197//
15198// API parameter values that are decorated as "sensitive" in the API will not
15199// be included in the string output. The member name will be present, but the
15200// value will be replaced with "sensitive".
15201func (s DeleteBucketInventoryConfigurationInput) GoString() string {
15202	return s.String()
15203}
15204
15205// Validate inspects the fields of the type to determine if they are valid.
15206func (s *DeleteBucketInventoryConfigurationInput) Validate() error {
15207	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketInventoryConfigurationInput"}
15208	if s.Bucket == nil {
15209		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15210	}
15211	if s.Bucket != nil && len(*s.Bucket) < 1 {
15212		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15213	}
15214	if s.Id == nil {
15215		invalidParams.Add(request.NewErrParamRequired("Id"))
15216	}
15217
15218	if invalidParams.Len() > 0 {
15219		return invalidParams
15220	}
15221	return nil
15222}
15223
15224// SetBucket sets the Bucket field's value.
15225func (s *DeleteBucketInventoryConfigurationInput) SetBucket(v string) *DeleteBucketInventoryConfigurationInput {
15226	s.Bucket = &v
15227	return s
15228}
15229
15230func (s *DeleteBucketInventoryConfigurationInput) getBucket() (v string) {
15231	if s.Bucket == nil {
15232		return v
15233	}
15234	return *s.Bucket
15235}
15236
15237// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15238func (s *DeleteBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketInventoryConfigurationInput {
15239	s.ExpectedBucketOwner = &v
15240	return s
15241}
15242
15243// SetId sets the Id field's value.
15244func (s *DeleteBucketInventoryConfigurationInput) SetId(v string) *DeleteBucketInventoryConfigurationInput {
15245	s.Id = &v
15246	return s
15247}
15248
15249func (s *DeleteBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
15250	if s.Bucket == nil {
15251		return nil, fmt.Errorf("member Bucket is nil")
15252	}
15253	return parseEndpointARN(*s.Bucket)
15254}
15255
15256func (s *DeleteBucketInventoryConfigurationInput) hasEndpointARN() bool {
15257	if s.Bucket == nil {
15258		return false
15259	}
15260	return arn.IsARN(*s.Bucket)
15261}
15262
15263// updateArnableField updates the value of the input field that
15264// takes an ARN as an input. This method is useful to backfill
15265// the parsed resource name from ARN into the input member.
15266// It returns a pointer to a modified copy of input and an error.
15267// Note that original input is not modified.
15268func (s DeleteBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
15269	if s.Bucket == nil {
15270		return nil, fmt.Errorf("member Bucket is nil")
15271	}
15272	s.Bucket = aws.String(v)
15273	return &s, nil
15274}
15275
15276type DeleteBucketInventoryConfigurationOutput struct {
15277	_ struct{} `type:"structure"`
15278}
15279
15280// String returns the string representation.
15281//
15282// API parameter values that are decorated as "sensitive" in the API will not
15283// be included in the string output. The member name will be present, but the
15284// value will be replaced with "sensitive".
15285func (s DeleteBucketInventoryConfigurationOutput) String() string {
15286	return awsutil.Prettify(s)
15287}
15288
15289// GoString returns the string representation.
15290//
15291// API parameter values that are decorated as "sensitive" in the API will not
15292// be included in the string output. The member name will be present, but the
15293// value will be replaced with "sensitive".
15294func (s DeleteBucketInventoryConfigurationOutput) GoString() string {
15295	return s.String()
15296}
15297
15298type DeleteBucketLifecycleInput struct {
15299	_ struct{} `locationName:"DeleteBucketLifecycleRequest" type:"structure"`
15300
15301	// The bucket name of the lifecycle to delete.
15302	//
15303	// Bucket is a required field
15304	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15305
15306	// The account ID of the expected bucket owner. If the bucket is owned by a
15307	// different account, the request will fail with an HTTP 403 (Access Denied)
15308	// error.
15309	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15310}
15311
15312// String returns the string representation.
15313//
15314// API parameter values that are decorated as "sensitive" in the API will not
15315// be included in the string output. The member name will be present, but the
15316// value will be replaced with "sensitive".
15317func (s DeleteBucketLifecycleInput) String() string {
15318	return awsutil.Prettify(s)
15319}
15320
15321// GoString returns the string representation.
15322//
15323// API parameter values that are decorated as "sensitive" in the API will not
15324// be included in the string output. The member name will be present, but the
15325// value will be replaced with "sensitive".
15326func (s DeleteBucketLifecycleInput) GoString() string {
15327	return s.String()
15328}
15329
15330// Validate inspects the fields of the type to determine if they are valid.
15331func (s *DeleteBucketLifecycleInput) Validate() error {
15332	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketLifecycleInput"}
15333	if s.Bucket == nil {
15334		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15335	}
15336	if s.Bucket != nil && len(*s.Bucket) < 1 {
15337		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15338	}
15339
15340	if invalidParams.Len() > 0 {
15341		return invalidParams
15342	}
15343	return nil
15344}
15345
15346// SetBucket sets the Bucket field's value.
15347func (s *DeleteBucketLifecycleInput) SetBucket(v string) *DeleteBucketLifecycleInput {
15348	s.Bucket = &v
15349	return s
15350}
15351
15352func (s *DeleteBucketLifecycleInput) getBucket() (v string) {
15353	if s.Bucket == nil {
15354		return v
15355	}
15356	return *s.Bucket
15357}
15358
15359// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15360func (s *DeleteBucketLifecycleInput) SetExpectedBucketOwner(v string) *DeleteBucketLifecycleInput {
15361	s.ExpectedBucketOwner = &v
15362	return s
15363}
15364
15365func (s *DeleteBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
15366	if s.Bucket == nil {
15367		return nil, fmt.Errorf("member Bucket is nil")
15368	}
15369	return parseEndpointARN(*s.Bucket)
15370}
15371
15372func (s *DeleteBucketLifecycleInput) hasEndpointARN() bool {
15373	if s.Bucket == nil {
15374		return false
15375	}
15376	return arn.IsARN(*s.Bucket)
15377}
15378
15379// updateArnableField updates the value of the input field that
15380// takes an ARN as an input. This method is useful to backfill
15381// the parsed resource name from ARN into the input member.
15382// It returns a pointer to a modified copy of input and an error.
15383// Note that original input is not modified.
15384func (s DeleteBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
15385	if s.Bucket == nil {
15386		return nil, fmt.Errorf("member Bucket is nil")
15387	}
15388	s.Bucket = aws.String(v)
15389	return &s, nil
15390}
15391
15392type DeleteBucketLifecycleOutput struct {
15393	_ struct{} `type:"structure"`
15394}
15395
15396// String returns the string representation.
15397//
15398// API parameter values that are decorated as "sensitive" in the API will not
15399// be included in the string output. The member name will be present, but the
15400// value will be replaced with "sensitive".
15401func (s DeleteBucketLifecycleOutput) String() string {
15402	return awsutil.Prettify(s)
15403}
15404
15405// GoString returns the string representation.
15406//
15407// API parameter values that are decorated as "sensitive" in the API will not
15408// be included in the string output. The member name will be present, but the
15409// value will be replaced with "sensitive".
15410func (s DeleteBucketLifecycleOutput) GoString() string {
15411	return s.String()
15412}
15413
15414type DeleteBucketMetricsConfigurationInput struct {
15415	_ struct{} `locationName:"DeleteBucketMetricsConfigurationRequest" type:"structure"`
15416
15417	// The name of the bucket containing the metrics configuration to delete.
15418	//
15419	// Bucket is a required field
15420	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15421
15422	// The account ID of the expected bucket owner. If the bucket is owned by a
15423	// different account, the request will fail with an HTTP 403 (Access Denied)
15424	// error.
15425	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15426
15427	// The ID used to identify the metrics configuration.
15428	//
15429	// Id is a required field
15430	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
15431}
15432
15433// String returns the string representation.
15434//
15435// API parameter values that are decorated as "sensitive" in the API will not
15436// be included in the string output. The member name will be present, but the
15437// value will be replaced with "sensitive".
15438func (s DeleteBucketMetricsConfigurationInput) String() string {
15439	return awsutil.Prettify(s)
15440}
15441
15442// GoString returns the string representation.
15443//
15444// API parameter values that are decorated as "sensitive" in the API will not
15445// be included in the string output. The member name will be present, but the
15446// value will be replaced with "sensitive".
15447func (s DeleteBucketMetricsConfigurationInput) GoString() string {
15448	return s.String()
15449}
15450
15451// Validate inspects the fields of the type to determine if they are valid.
15452func (s *DeleteBucketMetricsConfigurationInput) Validate() error {
15453	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketMetricsConfigurationInput"}
15454	if s.Bucket == nil {
15455		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15456	}
15457	if s.Bucket != nil && len(*s.Bucket) < 1 {
15458		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15459	}
15460	if s.Id == nil {
15461		invalidParams.Add(request.NewErrParamRequired("Id"))
15462	}
15463
15464	if invalidParams.Len() > 0 {
15465		return invalidParams
15466	}
15467	return nil
15468}
15469
15470// SetBucket sets the Bucket field's value.
15471func (s *DeleteBucketMetricsConfigurationInput) SetBucket(v string) *DeleteBucketMetricsConfigurationInput {
15472	s.Bucket = &v
15473	return s
15474}
15475
15476func (s *DeleteBucketMetricsConfigurationInput) getBucket() (v string) {
15477	if s.Bucket == nil {
15478		return v
15479	}
15480	return *s.Bucket
15481}
15482
15483// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15484func (s *DeleteBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *DeleteBucketMetricsConfigurationInput {
15485	s.ExpectedBucketOwner = &v
15486	return s
15487}
15488
15489// SetId sets the Id field's value.
15490func (s *DeleteBucketMetricsConfigurationInput) SetId(v string) *DeleteBucketMetricsConfigurationInput {
15491	s.Id = &v
15492	return s
15493}
15494
15495func (s *DeleteBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
15496	if s.Bucket == nil {
15497		return nil, fmt.Errorf("member Bucket is nil")
15498	}
15499	return parseEndpointARN(*s.Bucket)
15500}
15501
15502func (s *DeleteBucketMetricsConfigurationInput) hasEndpointARN() bool {
15503	if s.Bucket == nil {
15504		return false
15505	}
15506	return arn.IsARN(*s.Bucket)
15507}
15508
15509// updateArnableField updates the value of the input field that
15510// takes an ARN as an input. This method is useful to backfill
15511// the parsed resource name from ARN into the input member.
15512// It returns a pointer to a modified copy of input and an error.
15513// Note that original input is not modified.
15514func (s DeleteBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
15515	if s.Bucket == nil {
15516		return nil, fmt.Errorf("member Bucket is nil")
15517	}
15518	s.Bucket = aws.String(v)
15519	return &s, nil
15520}
15521
15522type DeleteBucketMetricsConfigurationOutput struct {
15523	_ struct{} `type:"structure"`
15524}
15525
15526// String returns the string representation.
15527//
15528// API parameter values that are decorated as "sensitive" in the API will not
15529// be included in the string output. The member name will be present, but the
15530// value will be replaced with "sensitive".
15531func (s DeleteBucketMetricsConfigurationOutput) String() string {
15532	return awsutil.Prettify(s)
15533}
15534
15535// GoString returns the string representation.
15536//
15537// API parameter values that are decorated as "sensitive" in the API will not
15538// be included in the string output. The member name will be present, but the
15539// value will be replaced with "sensitive".
15540func (s DeleteBucketMetricsConfigurationOutput) GoString() string {
15541	return s.String()
15542}
15543
15544type DeleteBucketOutput struct {
15545	_ struct{} `type:"structure"`
15546}
15547
15548// String returns the string representation.
15549//
15550// API parameter values that are decorated as "sensitive" in the API will not
15551// be included in the string output. The member name will be present, but the
15552// value will be replaced with "sensitive".
15553func (s DeleteBucketOutput) String() string {
15554	return awsutil.Prettify(s)
15555}
15556
15557// GoString returns the string representation.
15558//
15559// API parameter values that are decorated as "sensitive" in the API will not
15560// be included in the string output. The member name will be present, but the
15561// value will be replaced with "sensitive".
15562func (s DeleteBucketOutput) GoString() string {
15563	return s.String()
15564}
15565
15566type DeleteBucketOwnershipControlsInput struct {
15567	_ struct{} `locationName:"DeleteBucketOwnershipControlsRequest" type:"structure"`
15568
15569	// The Amazon S3 bucket whose OwnershipControls you want to delete.
15570	//
15571	// Bucket is a required field
15572	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15573
15574	// The account ID of the expected bucket owner. If the bucket is owned by a
15575	// different account, the request will fail with an HTTP 403 (Access Denied)
15576	// error.
15577	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15578}
15579
15580// String returns the string representation.
15581//
15582// API parameter values that are decorated as "sensitive" in the API will not
15583// be included in the string output. The member name will be present, but the
15584// value will be replaced with "sensitive".
15585func (s DeleteBucketOwnershipControlsInput) String() string {
15586	return awsutil.Prettify(s)
15587}
15588
15589// GoString returns the string representation.
15590//
15591// API parameter values that are decorated as "sensitive" in the API will not
15592// be included in the string output. The member name will be present, but the
15593// value will be replaced with "sensitive".
15594func (s DeleteBucketOwnershipControlsInput) GoString() string {
15595	return s.String()
15596}
15597
15598// Validate inspects the fields of the type to determine if they are valid.
15599func (s *DeleteBucketOwnershipControlsInput) Validate() error {
15600	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketOwnershipControlsInput"}
15601	if s.Bucket == nil {
15602		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15603	}
15604	if s.Bucket != nil && len(*s.Bucket) < 1 {
15605		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15606	}
15607
15608	if invalidParams.Len() > 0 {
15609		return invalidParams
15610	}
15611	return nil
15612}
15613
15614// SetBucket sets the Bucket field's value.
15615func (s *DeleteBucketOwnershipControlsInput) SetBucket(v string) *DeleteBucketOwnershipControlsInput {
15616	s.Bucket = &v
15617	return s
15618}
15619
15620func (s *DeleteBucketOwnershipControlsInput) getBucket() (v string) {
15621	if s.Bucket == nil {
15622		return v
15623	}
15624	return *s.Bucket
15625}
15626
15627// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15628func (s *DeleteBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *DeleteBucketOwnershipControlsInput {
15629	s.ExpectedBucketOwner = &v
15630	return s
15631}
15632
15633func (s *DeleteBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
15634	if s.Bucket == nil {
15635		return nil, fmt.Errorf("member Bucket is nil")
15636	}
15637	return parseEndpointARN(*s.Bucket)
15638}
15639
15640func (s *DeleteBucketOwnershipControlsInput) hasEndpointARN() bool {
15641	if s.Bucket == nil {
15642		return false
15643	}
15644	return arn.IsARN(*s.Bucket)
15645}
15646
15647// updateArnableField updates the value of the input field that
15648// takes an ARN as an input. This method is useful to backfill
15649// the parsed resource name from ARN into the input member.
15650// It returns a pointer to a modified copy of input and an error.
15651// Note that original input is not modified.
15652func (s DeleteBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
15653	if s.Bucket == nil {
15654		return nil, fmt.Errorf("member Bucket is nil")
15655	}
15656	s.Bucket = aws.String(v)
15657	return &s, nil
15658}
15659
15660type DeleteBucketOwnershipControlsOutput struct {
15661	_ struct{} `type:"structure"`
15662}
15663
15664// String returns the string representation.
15665//
15666// API parameter values that are decorated as "sensitive" in the API will not
15667// be included in the string output. The member name will be present, but the
15668// value will be replaced with "sensitive".
15669func (s DeleteBucketOwnershipControlsOutput) String() string {
15670	return awsutil.Prettify(s)
15671}
15672
15673// GoString returns the string representation.
15674//
15675// API parameter values that are decorated as "sensitive" in the API will not
15676// be included in the string output. The member name will be present, but the
15677// value will be replaced with "sensitive".
15678func (s DeleteBucketOwnershipControlsOutput) GoString() string {
15679	return s.String()
15680}
15681
15682type DeleteBucketPolicyInput struct {
15683	_ struct{} `locationName:"DeleteBucketPolicyRequest" type:"structure"`
15684
15685	// The bucket name.
15686	//
15687	// Bucket is a required field
15688	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15689
15690	// The account ID of the expected bucket owner. If the bucket is owned by a
15691	// different account, the request will fail with an HTTP 403 (Access Denied)
15692	// error.
15693	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15694}
15695
15696// String returns the string representation.
15697//
15698// API parameter values that are decorated as "sensitive" in the API will not
15699// be included in the string output. The member name will be present, but the
15700// value will be replaced with "sensitive".
15701func (s DeleteBucketPolicyInput) String() string {
15702	return awsutil.Prettify(s)
15703}
15704
15705// GoString returns the string representation.
15706//
15707// API parameter values that are decorated as "sensitive" in the API will not
15708// be included in the string output. The member name will be present, but the
15709// value will be replaced with "sensitive".
15710func (s DeleteBucketPolicyInput) GoString() string {
15711	return s.String()
15712}
15713
15714// Validate inspects the fields of the type to determine if they are valid.
15715func (s *DeleteBucketPolicyInput) Validate() error {
15716	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketPolicyInput"}
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 *DeleteBucketPolicyInput) SetBucket(v string) *DeleteBucketPolicyInput {
15732	s.Bucket = &v
15733	return s
15734}
15735
15736func (s *DeleteBucketPolicyInput) getBucket() (v string) {
15737	if s.Bucket == nil {
15738		return v
15739	}
15740	return *s.Bucket
15741}
15742
15743// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15744func (s *DeleteBucketPolicyInput) SetExpectedBucketOwner(v string) *DeleteBucketPolicyInput {
15745	s.ExpectedBucketOwner = &v
15746	return s
15747}
15748
15749func (s *DeleteBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
15750	if s.Bucket == nil {
15751		return nil, fmt.Errorf("member Bucket is nil")
15752	}
15753	return parseEndpointARN(*s.Bucket)
15754}
15755
15756func (s *DeleteBucketPolicyInput) hasEndpointARN() bool {
15757	if s.Bucket == nil {
15758		return false
15759	}
15760	return arn.IsARN(*s.Bucket)
15761}
15762
15763// updateArnableField updates the value of the input field that
15764// takes an ARN as an input. This method is useful to backfill
15765// the parsed resource name from ARN into the input member.
15766// It returns a pointer to a modified copy of input and an error.
15767// Note that original input is not modified.
15768func (s DeleteBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
15769	if s.Bucket == nil {
15770		return nil, fmt.Errorf("member Bucket is nil")
15771	}
15772	s.Bucket = aws.String(v)
15773	return &s, nil
15774}
15775
15776type DeleteBucketPolicyOutput struct {
15777	_ struct{} `type:"structure"`
15778}
15779
15780// String returns the string representation.
15781//
15782// API parameter values that are decorated as "sensitive" in the API will not
15783// be included in the string output. The member name will be present, but the
15784// value will be replaced with "sensitive".
15785func (s DeleteBucketPolicyOutput) String() string {
15786	return awsutil.Prettify(s)
15787}
15788
15789// GoString returns the string representation.
15790//
15791// API parameter values that are decorated as "sensitive" in the API will not
15792// be included in the string output. The member name will be present, but the
15793// value will be replaced with "sensitive".
15794func (s DeleteBucketPolicyOutput) GoString() string {
15795	return s.String()
15796}
15797
15798type DeleteBucketReplicationInput struct {
15799	_ struct{} `locationName:"DeleteBucketReplicationRequest" type:"structure"`
15800
15801	// The bucket name.
15802	//
15803	// Bucket is a required field
15804	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15805
15806	// The account ID of the expected bucket owner. If the bucket is owned by a
15807	// different account, the request will fail with an HTTP 403 (Access Denied)
15808	// error.
15809	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15810}
15811
15812// String returns the string representation.
15813//
15814// API parameter values that are decorated as "sensitive" in the API will not
15815// be included in the string output. The member name will be present, but the
15816// value will be replaced with "sensitive".
15817func (s DeleteBucketReplicationInput) String() string {
15818	return awsutil.Prettify(s)
15819}
15820
15821// GoString returns the string representation.
15822//
15823// API parameter values that are decorated as "sensitive" in the API will not
15824// be included in the string output. The member name will be present, but the
15825// value will be replaced with "sensitive".
15826func (s DeleteBucketReplicationInput) GoString() string {
15827	return s.String()
15828}
15829
15830// Validate inspects the fields of the type to determine if they are valid.
15831func (s *DeleteBucketReplicationInput) Validate() error {
15832	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketReplicationInput"}
15833	if s.Bucket == nil {
15834		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15835	}
15836	if s.Bucket != nil && len(*s.Bucket) < 1 {
15837		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15838	}
15839
15840	if invalidParams.Len() > 0 {
15841		return invalidParams
15842	}
15843	return nil
15844}
15845
15846// SetBucket sets the Bucket field's value.
15847func (s *DeleteBucketReplicationInput) SetBucket(v string) *DeleteBucketReplicationInput {
15848	s.Bucket = &v
15849	return s
15850}
15851
15852func (s *DeleteBucketReplicationInput) getBucket() (v string) {
15853	if s.Bucket == nil {
15854		return v
15855	}
15856	return *s.Bucket
15857}
15858
15859// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15860func (s *DeleteBucketReplicationInput) SetExpectedBucketOwner(v string) *DeleteBucketReplicationInput {
15861	s.ExpectedBucketOwner = &v
15862	return s
15863}
15864
15865func (s *DeleteBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
15866	if s.Bucket == nil {
15867		return nil, fmt.Errorf("member Bucket is nil")
15868	}
15869	return parseEndpointARN(*s.Bucket)
15870}
15871
15872func (s *DeleteBucketReplicationInput) hasEndpointARN() bool {
15873	if s.Bucket == nil {
15874		return false
15875	}
15876	return arn.IsARN(*s.Bucket)
15877}
15878
15879// updateArnableField updates the value of the input field that
15880// takes an ARN as an input. This method is useful to backfill
15881// the parsed resource name from ARN into the input member.
15882// It returns a pointer to a modified copy of input and an error.
15883// Note that original input is not modified.
15884func (s DeleteBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
15885	if s.Bucket == nil {
15886		return nil, fmt.Errorf("member Bucket is nil")
15887	}
15888	s.Bucket = aws.String(v)
15889	return &s, nil
15890}
15891
15892type DeleteBucketReplicationOutput struct {
15893	_ struct{} `type:"structure"`
15894}
15895
15896// String returns the string representation.
15897//
15898// API parameter values that are decorated as "sensitive" in the API will not
15899// be included in the string output. The member name will be present, but the
15900// value will be replaced with "sensitive".
15901func (s DeleteBucketReplicationOutput) String() string {
15902	return awsutil.Prettify(s)
15903}
15904
15905// GoString returns the string representation.
15906//
15907// API parameter values that are decorated as "sensitive" in the API will not
15908// be included in the string output. The member name will be present, but the
15909// value will be replaced with "sensitive".
15910func (s DeleteBucketReplicationOutput) GoString() string {
15911	return s.String()
15912}
15913
15914type DeleteBucketTaggingInput struct {
15915	_ struct{} `locationName:"DeleteBucketTaggingRequest" type:"structure"`
15916
15917	// The bucket that has the tag set to be removed.
15918	//
15919	// Bucket is a required field
15920	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
15921
15922	// The account ID of the expected bucket owner. If the bucket is owned by a
15923	// different account, the request will fail with an HTTP 403 (Access Denied)
15924	// error.
15925	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
15926}
15927
15928// String returns the string representation.
15929//
15930// API parameter values that are decorated as "sensitive" in the API will not
15931// be included in the string output. The member name will be present, but the
15932// value will be replaced with "sensitive".
15933func (s DeleteBucketTaggingInput) String() string {
15934	return awsutil.Prettify(s)
15935}
15936
15937// GoString returns the string representation.
15938//
15939// API parameter values that are decorated as "sensitive" in the API will not
15940// be included in the string output. The member name will be present, but the
15941// value will be replaced with "sensitive".
15942func (s DeleteBucketTaggingInput) GoString() string {
15943	return s.String()
15944}
15945
15946// Validate inspects the fields of the type to determine if they are valid.
15947func (s *DeleteBucketTaggingInput) Validate() error {
15948	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketTaggingInput"}
15949	if s.Bucket == nil {
15950		invalidParams.Add(request.NewErrParamRequired("Bucket"))
15951	}
15952	if s.Bucket != nil && len(*s.Bucket) < 1 {
15953		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
15954	}
15955
15956	if invalidParams.Len() > 0 {
15957		return invalidParams
15958	}
15959	return nil
15960}
15961
15962// SetBucket sets the Bucket field's value.
15963func (s *DeleteBucketTaggingInput) SetBucket(v string) *DeleteBucketTaggingInput {
15964	s.Bucket = &v
15965	return s
15966}
15967
15968func (s *DeleteBucketTaggingInput) getBucket() (v string) {
15969	if s.Bucket == nil {
15970		return v
15971	}
15972	return *s.Bucket
15973}
15974
15975// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
15976func (s *DeleteBucketTaggingInput) SetExpectedBucketOwner(v string) *DeleteBucketTaggingInput {
15977	s.ExpectedBucketOwner = &v
15978	return s
15979}
15980
15981func (s *DeleteBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
15982	if s.Bucket == nil {
15983		return nil, fmt.Errorf("member Bucket is nil")
15984	}
15985	return parseEndpointARN(*s.Bucket)
15986}
15987
15988func (s *DeleteBucketTaggingInput) hasEndpointARN() bool {
15989	if s.Bucket == nil {
15990		return false
15991	}
15992	return arn.IsARN(*s.Bucket)
15993}
15994
15995// updateArnableField updates the value of the input field that
15996// takes an ARN as an input. This method is useful to backfill
15997// the parsed resource name from ARN into the input member.
15998// It returns a pointer to a modified copy of input and an error.
15999// Note that original input is not modified.
16000func (s DeleteBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
16001	if s.Bucket == nil {
16002		return nil, fmt.Errorf("member Bucket is nil")
16003	}
16004	s.Bucket = aws.String(v)
16005	return &s, nil
16006}
16007
16008type DeleteBucketTaggingOutput struct {
16009	_ struct{} `type:"structure"`
16010}
16011
16012// String returns the string representation.
16013//
16014// API parameter values that are decorated as "sensitive" in the API will not
16015// be included in the string output. The member name will be present, but the
16016// value will be replaced with "sensitive".
16017func (s DeleteBucketTaggingOutput) String() string {
16018	return awsutil.Prettify(s)
16019}
16020
16021// GoString returns the string representation.
16022//
16023// API parameter values that are decorated as "sensitive" in the API will not
16024// be included in the string output. The member name will be present, but the
16025// value will be replaced with "sensitive".
16026func (s DeleteBucketTaggingOutput) GoString() string {
16027	return s.String()
16028}
16029
16030type DeleteBucketWebsiteInput struct {
16031	_ struct{} `locationName:"DeleteBucketWebsiteRequest" type:"structure"`
16032
16033	// The bucket name for which you want to remove the website configuration.
16034	//
16035	// Bucket is a required field
16036	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16037
16038	// The account ID of the expected bucket owner. If the bucket is owned by a
16039	// different account, the request will fail with an HTTP 403 (Access Denied)
16040	// error.
16041	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16042}
16043
16044// String returns the string representation.
16045//
16046// API parameter values that are decorated as "sensitive" in the API will not
16047// be included in the string output. The member name will be present, but the
16048// value will be replaced with "sensitive".
16049func (s DeleteBucketWebsiteInput) String() string {
16050	return awsutil.Prettify(s)
16051}
16052
16053// GoString returns the string representation.
16054//
16055// API parameter values that are decorated as "sensitive" in the API will not
16056// be included in the string output. The member name will be present, but the
16057// value will be replaced with "sensitive".
16058func (s DeleteBucketWebsiteInput) GoString() string {
16059	return s.String()
16060}
16061
16062// Validate inspects the fields of the type to determine if they are valid.
16063func (s *DeleteBucketWebsiteInput) Validate() error {
16064	invalidParams := request.ErrInvalidParams{Context: "DeleteBucketWebsiteInput"}
16065	if s.Bucket == nil {
16066		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16067	}
16068	if s.Bucket != nil && len(*s.Bucket) < 1 {
16069		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16070	}
16071
16072	if invalidParams.Len() > 0 {
16073		return invalidParams
16074	}
16075	return nil
16076}
16077
16078// SetBucket sets the Bucket field's value.
16079func (s *DeleteBucketWebsiteInput) SetBucket(v string) *DeleteBucketWebsiteInput {
16080	s.Bucket = &v
16081	return s
16082}
16083
16084func (s *DeleteBucketWebsiteInput) getBucket() (v string) {
16085	if s.Bucket == nil {
16086		return v
16087	}
16088	return *s.Bucket
16089}
16090
16091// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16092func (s *DeleteBucketWebsiteInput) SetExpectedBucketOwner(v string) *DeleteBucketWebsiteInput {
16093	s.ExpectedBucketOwner = &v
16094	return s
16095}
16096
16097func (s *DeleteBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
16098	if s.Bucket == nil {
16099		return nil, fmt.Errorf("member Bucket is nil")
16100	}
16101	return parseEndpointARN(*s.Bucket)
16102}
16103
16104func (s *DeleteBucketWebsiteInput) hasEndpointARN() bool {
16105	if s.Bucket == nil {
16106		return false
16107	}
16108	return arn.IsARN(*s.Bucket)
16109}
16110
16111// updateArnableField updates the value of the input field that
16112// takes an ARN as an input. This method is useful to backfill
16113// the parsed resource name from ARN into the input member.
16114// It returns a pointer to a modified copy of input and an error.
16115// Note that original input is not modified.
16116func (s DeleteBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
16117	if s.Bucket == nil {
16118		return nil, fmt.Errorf("member Bucket is nil")
16119	}
16120	s.Bucket = aws.String(v)
16121	return &s, nil
16122}
16123
16124type DeleteBucketWebsiteOutput struct {
16125	_ struct{} `type:"structure"`
16126}
16127
16128// String returns the string representation.
16129//
16130// API parameter values that are decorated as "sensitive" in the API will not
16131// be included in the string output. The member name will be present, but the
16132// value will be replaced with "sensitive".
16133func (s DeleteBucketWebsiteOutput) String() string {
16134	return awsutil.Prettify(s)
16135}
16136
16137// GoString returns the string representation.
16138//
16139// API parameter values that are decorated as "sensitive" in the API will not
16140// be included in the string output. The member name will be present, but the
16141// value will be replaced with "sensitive".
16142func (s DeleteBucketWebsiteOutput) GoString() string {
16143	return s.String()
16144}
16145
16146// Information about the delete marker.
16147type DeleteMarkerEntry struct {
16148	_ struct{} `type:"structure"`
16149
16150	// Specifies whether the object is (true) or is not (false) the latest version
16151	// of an object.
16152	IsLatest *bool `type:"boolean"`
16153
16154	// The object key.
16155	Key *string `min:"1" type:"string"`
16156
16157	// Date and time the object was last modified.
16158	LastModified *time.Time `type:"timestamp"`
16159
16160	// The account that created the delete marker.>
16161	Owner *Owner `type:"structure"`
16162
16163	// Version ID of an object.
16164	VersionId *string `type:"string"`
16165}
16166
16167// String returns the string representation.
16168//
16169// API parameter values that are decorated as "sensitive" in the API will not
16170// be included in the string output. The member name will be present, but the
16171// value will be replaced with "sensitive".
16172func (s DeleteMarkerEntry) String() string {
16173	return awsutil.Prettify(s)
16174}
16175
16176// GoString returns the string representation.
16177//
16178// API parameter values that are decorated as "sensitive" in the API will not
16179// be included in the string output. The member name will be present, but the
16180// value will be replaced with "sensitive".
16181func (s DeleteMarkerEntry) GoString() string {
16182	return s.String()
16183}
16184
16185// SetIsLatest sets the IsLatest field's value.
16186func (s *DeleteMarkerEntry) SetIsLatest(v bool) *DeleteMarkerEntry {
16187	s.IsLatest = &v
16188	return s
16189}
16190
16191// SetKey sets the Key field's value.
16192func (s *DeleteMarkerEntry) SetKey(v string) *DeleteMarkerEntry {
16193	s.Key = &v
16194	return s
16195}
16196
16197// SetLastModified sets the LastModified field's value.
16198func (s *DeleteMarkerEntry) SetLastModified(v time.Time) *DeleteMarkerEntry {
16199	s.LastModified = &v
16200	return s
16201}
16202
16203// SetOwner sets the Owner field's value.
16204func (s *DeleteMarkerEntry) SetOwner(v *Owner) *DeleteMarkerEntry {
16205	s.Owner = v
16206	return s
16207}
16208
16209// SetVersionId sets the VersionId field's value.
16210func (s *DeleteMarkerEntry) SetVersionId(v string) *DeleteMarkerEntry {
16211	s.VersionId = &v
16212	return s
16213}
16214
16215// Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
16216// in your replication configuration, you must also include a DeleteMarkerReplication
16217// element. If your Filter includes a Tag element, the DeleteMarkerReplication
16218// Status must be set to Disabled, because Amazon S3 does not support replicating
16219// delete markers for tag-based rules. For an example configuration, see Basic
16220// Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
16221//
16222// For more information about delete marker replication, see Basic Rule Configuration
16223// (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
16224//
16225// If you are using an earlier version of the replication configuration, Amazon
16226// S3 handles replication of delete markers differently. For more information,
16227// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
16228type DeleteMarkerReplication struct {
16229	_ struct{} `type:"structure"`
16230
16231	// Indicates whether to replicate delete markers.
16232	//
16233	// Indicates whether to replicate delete markers.
16234	Status *string `type:"string" enum:"DeleteMarkerReplicationStatus"`
16235}
16236
16237// String returns the string representation.
16238//
16239// API parameter values that are decorated as "sensitive" in the API will not
16240// be included in the string output. The member name will be present, but the
16241// value will be replaced with "sensitive".
16242func (s DeleteMarkerReplication) String() string {
16243	return awsutil.Prettify(s)
16244}
16245
16246// GoString returns the string representation.
16247//
16248// API parameter values that are decorated as "sensitive" in the API will not
16249// be included in the string output. The member name will be present, but the
16250// value will be replaced with "sensitive".
16251func (s DeleteMarkerReplication) GoString() string {
16252	return s.String()
16253}
16254
16255// SetStatus sets the Status field's value.
16256func (s *DeleteMarkerReplication) SetStatus(v string) *DeleteMarkerReplication {
16257	s.Status = &v
16258	return s
16259}
16260
16261type DeleteObjectInput struct {
16262	_ struct{} `locationName:"DeleteObjectRequest" type:"structure"`
16263
16264	// The bucket name of the bucket containing the object.
16265	//
16266	// When using this action with an access point, you must direct requests to
16267	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16268	// When using this action with an access point through the Amazon Web Services
16269	// SDKs, you provide the access point ARN in place of the bucket name. For more
16270	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
16271	// in the Amazon S3 User Guide.
16272	//
16273	// When using this action with Amazon S3 on Outposts, you must direct requests
16274	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
16275	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
16276	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
16277	// you provide the Outposts bucket ARN in place of the bucket name. For more
16278	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
16279	// in the Amazon S3 User Guide.
16280	//
16281	// Bucket is a required field
16282	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16283
16284	// Indicates whether S3 Object Lock should bypass Governance-mode restrictions
16285	// to process this operation. To use this header, you must have the s3:PutBucketPublicAccessBlock
16286	// permission.
16287	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
16288
16289	// The account ID of the expected bucket owner. If the bucket is owned by a
16290	// different account, the request will fail with an HTTP 403 (Access Denied)
16291	// error.
16292	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16293
16294	// Key name of the object to delete.
16295	//
16296	// Key is a required field
16297	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
16298
16299	// The concatenation of the authentication device's serial number, a space,
16300	// and the value that is displayed on your authentication device. Required to
16301	// permanently delete a versioned object if versioning is configured with MFA
16302	// delete enabled.
16303	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
16304
16305	// Confirms that the requester knows that they will be charged for the request.
16306	// Bucket owners need not specify this parameter in their requests. For information
16307	// about downloading objects from requester pays buckets, see Downloading Objects
16308	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
16309	// in the Amazon S3 User Guide.
16310	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16311
16312	// VersionId used to reference a specific version of the object.
16313	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
16314}
16315
16316// String returns the string representation.
16317//
16318// API parameter values that are decorated as "sensitive" in the API will not
16319// be included in the string output. The member name will be present, but the
16320// value will be replaced with "sensitive".
16321func (s DeleteObjectInput) String() string {
16322	return awsutil.Prettify(s)
16323}
16324
16325// GoString returns the string representation.
16326//
16327// API parameter values that are decorated as "sensitive" in the API will not
16328// be included in the string output. The member name will be present, but the
16329// value will be replaced with "sensitive".
16330func (s DeleteObjectInput) GoString() string {
16331	return s.String()
16332}
16333
16334// Validate inspects the fields of the type to determine if they are valid.
16335func (s *DeleteObjectInput) Validate() error {
16336	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectInput"}
16337	if s.Bucket == nil {
16338		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16339	}
16340	if s.Bucket != nil && len(*s.Bucket) < 1 {
16341		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16342	}
16343	if s.Key == nil {
16344		invalidParams.Add(request.NewErrParamRequired("Key"))
16345	}
16346	if s.Key != nil && len(*s.Key) < 1 {
16347		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16348	}
16349
16350	if invalidParams.Len() > 0 {
16351		return invalidParams
16352	}
16353	return nil
16354}
16355
16356// SetBucket sets the Bucket field's value.
16357func (s *DeleteObjectInput) SetBucket(v string) *DeleteObjectInput {
16358	s.Bucket = &v
16359	return s
16360}
16361
16362func (s *DeleteObjectInput) getBucket() (v string) {
16363	if s.Bucket == nil {
16364		return v
16365	}
16366	return *s.Bucket
16367}
16368
16369// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
16370func (s *DeleteObjectInput) SetBypassGovernanceRetention(v bool) *DeleteObjectInput {
16371	s.BypassGovernanceRetention = &v
16372	return s
16373}
16374
16375// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16376func (s *DeleteObjectInput) SetExpectedBucketOwner(v string) *DeleteObjectInput {
16377	s.ExpectedBucketOwner = &v
16378	return s
16379}
16380
16381// SetKey sets the Key field's value.
16382func (s *DeleteObjectInput) SetKey(v string) *DeleteObjectInput {
16383	s.Key = &v
16384	return s
16385}
16386
16387// SetMFA sets the MFA field's value.
16388func (s *DeleteObjectInput) SetMFA(v string) *DeleteObjectInput {
16389	s.MFA = &v
16390	return s
16391}
16392
16393// SetRequestPayer sets the RequestPayer field's value.
16394func (s *DeleteObjectInput) SetRequestPayer(v string) *DeleteObjectInput {
16395	s.RequestPayer = &v
16396	return s
16397}
16398
16399// SetVersionId sets the VersionId field's value.
16400func (s *DeleteObjectInput) SetVersionId(v string) *DeleteObjectInput {
16401	s.VersionId = &v
16402	return s
16403}
16404
16405func (s *DeleteObjectInput) getEndpointARN() (arn.Resource, error) {
16406	if s.Bucket == nil {
16407		return nil, fmt.Errorf("member Bucket is nil")
16408	}
16409	return parseEndpointARN(*s.Bucket)
16410}
16411
16412func (s *DeleteObjectInput) hasEndpointARN() bool {
16413	if s.Bucket == nil {
16414		return false
16415	}
16416	return arn.IsARN(*s.Bucket)
16417}
16418
16419// updateArnableField updates the value of the input field that
16420// takes an ARN as an input. This method is useful to backfill
16421// the parsed resource name from ARN into the input member.
16422// It returns a pointer to a modified copy of input and an error.
16423// Note that original input is not modified.
16424func (s DeleteObjectInput) updateArnableField(v string) (interface{}, error) {
16425	if s.Bucket == nil {
16426		return nil, fmt.Errorf("member Bucket is nil")
16427	}
16428	s.Bucket = aws.String(v)
16429	return &s, nil
16430}
16431
16432type DeleteObjectOutput struct {
16433	_ struct{} `type:"structure"`
16434
16435	// Specifies whether the versioned object that was permanently deleted was (true)
16436	// or was not (false) a delete marker.
16437	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
16438
16439	// If present, indicates that the requester was successfully charged for the
16440	// request.
16441	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
16442
16443	// Returns the version ID of the delete marker created as a result of the DELETE
16444	// operation.
16445	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
16446}
16447
16448// String returns the string representation.
16449//
16450// API parameter values that are decorated as "sensitive" in the API will not
16451// be included in the string output. The member name will be present, but the
16452// value will be replaced with "sensitive".
16453func (s DeleteObjectOutput) String() string {
16454	return awsutil.Prettify(s)
16455}
16456
16457// GoString returns the string representation.
16458//
16459// API parameter values that are decorated as "sensitive" in the API will not
16460// be included in the string output. The member name will be present, but the
16461// value will be replaced with "sensitive".
16462func (s DeleteObjectOutput) GoString() string {
16463	return s.String()
16464}
16465
16466// SetDeleteMarker sets the DeleteMarker field's value.
16467func (s *DeleteObjectOutput) SetDeleteMarker(v bool) *DeleteObjectOutput {
16468	s.DeleteMarker = &v
16469	return s
16470}
16471
16472// SetRequestCharged sets the RequestCharged field's value.
16473func (s *DeleteObjectOutput) SetRequestCharged(v string) *DeleteObjectOutput {
16474	s.RequestCharged = &v
16475	return s
16476}
16477
16478// SetVersionId sets the VersionId field's value.
16479func (s *DeleteObjectOutput) SetVersionId(v string) *DeleteObjectOutput {
16480	s.VersionId = &v
16481	return s
16482}
16483
16484type DeleteObjectTaggingInput struct {
16485	_ struct{} `locationName:"DeleteObjectTaggingRequest" type:"structure"`
16486
16487	// The bucket name containing the objects from which to remove the tags.
16488	//
16489	// When using this action with an access point, you must direct requests to
16490	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16491	// When using this action with an access point through the Amazon Web Services
16492	// SDKs, you provide the access point ARN in place of the bucket name. For more
16493	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
16494	// in the Amazon S3 User Guide.
16495	//
16496	// When using this action with Amazon S3 on Outposts, you must direct requests
16497	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
16498	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
16499	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
16500	// you provide the Outposts bucket ARN in place of the bucket name. For more
16501	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
16502	// in the Amazon S3 User Guide.
16503	//
16504	// Bucket is a required field
16505	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16506
16507	// The account ID of the expected bucket owner. If the bucket is owned by a
16508	// different account, the request will fail with an HTTP 403 (Access Denied)
16509	// error.
16510	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16511
16512	// The key that identifies the object in the bucket from which to remove all
16513	// tags.
16514	//
16515	// Key is a required field
16516	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
16517
16518	// The versionId of the object that the tag-set will be removed from.
16519	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
16520}
16521
16522// String returns the string representation.
16523//
16524// API parameter values that are decorated as "sensitive" in the API will not
16525// be included in the string output. The member name will be present, but the
16526// value will be replaced with "sensitive".
16527func (s DeleteObjectTaggingInput) String() string {
16528	return awsutil.Prettify(s)
16529}
16530
16531// GoString returns the string representation.
16532//
16533// API parameter values that are decorated as "sensitive" in the API will not
16534// be included in the string output. The member name will be present, but the
16535// value will be replaced with "sensitive".
16536func (s DeleteObjectTaggingInput) GoString() string {
16537	return s.String()
16538}
16539
16540// Validate inspects the fields of the type to determine if they are valid.
16541func (s *DeleteObjectTaggingInput) Validate() error {
16542	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectTaggingInput"}
16543	if s.Bucket == nil {
16544		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16545	}
16546	if s.Bucket != nil && len(*s.Bucket) < 1 {
16547		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16548	}
16549	if s.Key == nil {
16550		invalidParams.Add(request.NewErrParamRequired("Key"))
16551	}
16552	if s.Key != nil && len(*s.Key) < 1 {
16553		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
16554	}
16555
16556	if invalidParams.Len() > 0 {
16557		return invalidParams
16558	}
16559	return nil
16560}
16561
16562// SetBucket sets the Bucket field's value.
16563func (s *DeleteObjectTaggingInput) SetBucket(v string) *DeleteObjectTaggingInput {
16564	s.Bucket = &v
16565	return s
16566}
16567
16568func (s *DeleteObjectTaggingInput) getBucket() (v string) {
16569	if s.Bucket == nil {
16570		return v
16571	}
16572	return *s.Bucket
16573}
16574
16575// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16576func (s *DeleteObjectTaggingInput) SetExpectedBucketOwner(v string) *DeleteObjectTaggingInput {
16577	s.ExpectedBucketOwner = &v
16578	return s
16579}
16580
16581// SetKey sets the Key field's value.
16582func (s *DeleteObjectTaggingInput) SetKey(v string) *DeleteObjectTaggingInput {
16583	s.Key = &v
16584	return s
16585}
16586
16587// SetVersionId sets the VersionId field's value.
16588func (s *DeleteObjectTaggingInput) SetVersionId(v string) *DeleteObjectTaggingInput {
16589	s.VersionId = &v
16590	return s
16591}
16592
16593func (s *DeleteObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
16594	if s.Bucket == nil {
16595		return nil, fmt.Errorf("member Bucket is nil")
16596	}
16597	return parseEndpointARN(*s.Bucket)
16598}
16599
16600func (s *DeleteObjectTaggingInput) hasEndpointARN() bool {
16601	if s.Bucket == nil {
16602		return false
16603	}
16604	return arn.IsARN(*s.Bucket)
16605}
16606
16607// updateArnableField updates the value of the input field that
16608// takes an ARN as an input. This method is useful to backfill
16609// the parsed resource name from ARN into the input member.
16610// It returns a pointer to a modified copy of input and an error.
16611// Note that original input is not modified.
16612func (s DeleteObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
16613	if s.Bucket == nil {
16614		return nil, fmt.Errorf("member Bucket is nil")
16615	}
16616	s.Bucket = aws.String(v)
16617	return &s, nil
16618}
16619
16620type DeleteObjectTaggingOutput struct {
16621	_ struct{} `type:"structure"`
16622
16623	// The versionId of the object the tag-set was removed from.
16624	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
16625}
16626
16627// String returns the string representation.
16628//
16629// API parameter values that are decorated as "sensitive" in the API will not
16630// be included in the string output. The member name will be present, but the
16631// value will be replaced with "sensitive".
16632func (s DeleteObjectTaggingOutput) String() string {
16633	return awsutil.Prettify(s)
16634}
16635
16636// GoString returns the string representation.
16637//
16638// API parameter values that are decorated as "sensitive" in the API will not
16639// be included in the string output. The member name will be present, but the
16640// value will be replaced with "sensitive".
16641func (s DeleteObjectTaggingOutput) GoString() string {
16642	return s.String()
16643}
16644
16645// SetVersionId sets the VersionId field's value.
16646func (s *DeleteObjectTaggingOutput) SetVersionId(v string) *DeleteObjectTaggingOutput {
16647	s.VersionId = &v
16648	return s
16649}
16650
16651type DeleteObjectsInput struct {
16652	_ struct{} `locationName:"DeleteObjectsRequest" type:"structure" payload:"Delete"`
16653
16654	// The bucket name containing the objects to delete.
16655	//
16656	// When using this action with an access point, you must direct requests to
16657	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
16658	// When using this action with an access point through the Amazon Web Services
16659	// SDKs, you provide the access point ARN in place of the bucket name. For more
16660	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
16661	// in the Amazon S3 User Guide.
16662	//
16663	// When using this action with Amazon S3 on Outposts, you must direct requests
16664	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
16665	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
16666	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
16667	// you provide the Outposts bucket ARN in place of the bucket name. For more
16668	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
16669	// in the Amazon S3 User Guide.
16670	//
16671	// Bucket is a required field
16672	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16673
16674	// Specifies whether you want to delete this object even if it has a Governance-type
16675	// Object Lock in place. To use this header, you must have the s3:PutBucketPublicAccessBlock
16676	// permission.
16677	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
16678
16679	// Container for the request.
16680	//
16681	// Delete is a required field
16682	Delete *Delete `locationName:"Delete" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
16683
16684	// The account ID of the expected bucket owner. If the bucket is owned by a
16685	// different account, the request will fail with an HTTP 403 (Access Denied)
16686	// error.
16687	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16688
16689	// The concatenation of the authentication device's serial number, a space,
16690	// and the value that is displayed on your authentication device. Required to
16691	// permanently delete a versioned object if versioning is configured with MFA
16692	// delete enabled.
16693	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
16694
16695	// Confirms that the requester knows that they will be charged for the request.
16696	// Bucket owners need not specify this parameter in their requests. For information
16697	// about downloading objects from requester pays buckets, see Downloading Objects
16698	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
16699	// in the Amazon S3 User Guide.
16700	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
16701}
16702
16703// String returns the string representation.
16704//
16705// API parameter values that are decorated as "sensitive" in the API will not
16706// be included in the string output. The member name will be present, but the
16707// value will be replaced with "sensitive".
16708func (s DeleteObjectsInput) String() string {
16709	return awsutil.Prettify(s)
16710}
16711
16712// GoString returns the string representation.
16713//
16714// API parameter values that are decorated as "sensitive" in the API will not
16715// be included in the string output. The member name will be present, but the
16716// value will be replaced with "sensitive".
16717func (s DeleteObjectsInput) GoString() string {
16718	return s.String()
16719}
16720
16721// Validate inspects the fields of the type to determine if they are valid.
16722func (s *DeleteObjectsInput) Validate() error {
16723	invalidParams := request.ErrInvalidParams{Context: "DeleteObjectsInput"}
16724	if s.Bucket == nil {
16725		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16726	}
16727	if s.Bucket != nil && len(*s.Bucket) < 1 {
16728		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16729	}
16730	if s.Delete == nil {
16731		invalidParams.Add(request.NewErrParamRequired("Delete"))
16732	}
16733	if s.Delete != nil {
16734		if err := s.Delete.Validate(); err != nil {
16735			invalidParams.AddNested("Delete", err.(request.ErrInvalidParams))
16736		}
16737	}
16738
16739	if invalidParams.Len() > 0 {
16740		return invalidParams
16741	}
16742	return nil
16743}
16744
16745// SetBucket sets the Bucket field's value.
16746func (s *DeleteObjectsInput) SetBucket(v string) *DeleteObjectsInput {
16747	s.Bucket = &v
16748	return s
16749}
16750
16751func (s *DeleteObjectsInput) getBucket() (v string) {
16752	if s.Bucket == nil {
16753		return v
16754	}
16755	return *s.Bucket
16756}
16757
16758// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
16759func (s *DeleteObjectsInput) SetBypassGovernanceRetention(v bool) *DeleteObjectsInput {
16760	s.BypassGovernanceRetention = &v
16761	return s
16762}
16763
16764// SetDelete sets the Delete field's value.
16765func (s *DeleteObjectsInput) SetDelete(v *Delete) *DeleteObjectsInput {
16766	s.Delete = v
16767	return s
16768}
16769
16770// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16771func (s *DeleteObjectsInput) SetExpectedBucketOwner(v string) *DeleteObjectsInput {
16772	s.ExpectedBucketOwner = &v
16773	return s
16774}
16775
16776// SetMFA sets the MFA field's value.
16777func (s *DeleteObjectsInput) SetMFA(v string) *DeleteObjectsInput {
16778	s.MFA = &v
16779	return s
16780}
16781
16782// SetRequestPayer sets the RequestPayer field's value.
16783func (s *DeleteObjectsInput) SetRequestPayer(v string) *DeleteObjectsInput {
16784	s.RequestPayer = &v
16785	return s
16786}
16787
16788func (s *DeleteObjectsInput) getEndpointARN() (arn.Resource, error) {
16789	if s.Bucket == nil {
16790		return nil, fmt.Errorf("member Bucket is nil")
16791	}
16792	return parseEndpointARN(*s.Bucket)
16793}
16794
16795func (s *DeleteObjectsInput) hasEndpointARN() bool {
16796	if s.Bucket == nil {
16797		return false
16798	}
16799	return arn.IsARN(*s.Bucket)
16800}
16801
16802// updateArnableField updates the value of the input field that
16803// takes an ARN as an input. This method is useful to backfill
16804// the parsed resource name from ARN into the input member.
16805// It returns a pointer to a modified copy of input and an error.
16806// Note that original input is not modified.
16807func (s DeleteObjectsInput) updateArnableField(v string) (interface{}, error) {
16808	if s.Bucket == nil {
16809		return nil, fmt.Errorf("member Bucket is nil")
16810	}
16811	s.Bucket = aws.String(v)
16812	return &s, nil
16813}
16814
16815type DeleteObjectsOutput struct {
16816	_ struct{} `type:"structure"`
16817
16818	// Container element for a successful delete. It identifies the object that
16819	// was successfully deleted.
16820	Deleted []*DeletedObject `type:"list" flattened:"true"`
16821
16822	// Container for a failed delete action that describes the object that Amazon
16823	// S3 attempted to delete and the error it encountered.
16824	Errors []*Error `locationName:"Error" type:"list" flattened:"true"`
16825
16826	// If present, indicates that the requester was successfully charged for the
16827	// request.
16828	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
16829}
16830
16831// String returns the string representation.
16832//
16833// API parameter values that are decorated as "sensitive" in the API will not
16834// be included in the string output. The member name will be present, but the
16835// value will be replaced with "sensitive".
16836func (s DeleteObjectsOutput) String() string {
16837	return awsutil.Prettify(s)
16838}
16839
16840// GoString returns the string representation.
16841//
16842// API parameter values that are decorated as "sensitive" in the API will not
16843// be included in the string output. The member name will be present, but the
16844// value will be replaced with "sensitive".
16845func (s DeleteObjectsOutput) GoString() string {
16846	return s.String()
16847}
16848
16849// SetDeleted sets the Deleted field's value.
16850func (s *DeleteObjectsOutput) SetDeleted(v []*DeletedObject) *DeleteObjectsOutput {
16851	s.Deleted = v
16852	return s
16853}
16854
16855// SetErrors sets the Errors field's value.
16856func (s *DeleteObjectsOutput) SetErrors(v []*Error) *DeleteObjectsOutput {
16857	s.Errors = v
16858	return s
16859}
16860
16861// SetRequestCharged sets the RequestCharged field's value.
16862func (s *DeleteObjectsOutput) SetRequestCharged(v string) *DeleteObjectsOutput {
16863	s.RequestCharged = &v
16864	return s
16865}
16866
16867type DeletePublicAccessBlockInput struct {
16868	_ struct{} `locationName:"DeletePublicAccessBlockRequest" type:"structure"`
16869
16870	// The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.
16871	//
16872	// Bucket is a required field
16873	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
16874
16875	// The account ID of the expected bucket owner. If the bucket is owned by a
16876	// different account, the request will fail with an HTTP 403 (Access Denied)
16877	// error.
16878	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
16879}
16880
16881// String returns the string representation.
16882//
16883// API parameter values that are decorated as "sensitive" in the API will not
16884// be included in the string output. The member name will be present, but the
16885// value will be replaced with "sensitive".
16886func (s DeletePublicAccessBlockInput) String() string {
16887	return awsutil.Prettify(s)
16888}
16889
16890// GoString returns the string representation.
16891//
16892// API parameter values that are decorated as "sensitive" in the API will not
16893// be included in the string output. The member name will be present, but the
16894// value will be replaced with "sensitive".
16895func (s DeletePublicAccessBlockInput) GoString() string {
16896	return s.String()
16897}
16898
16899// Validate inspects the fields of the type to determine if they are valid.
16900func (s *DeletePublicAccessBlockInput) Validate() error {
16901	invalidParams := request.ErrInvalidParams{Context: "DeletePublicAccessBlockInput"}
16902	if s.Bucket == nil {
16903		invalidParams.Add(request.NewErrParamRequired("Bucket"))
16904	}
16905	if s.Bucket != nil && len(*s.Bucket) < 1 {
16906		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
16907	}
16908
16909	if invalidParams.Len() > 0 {
16910		return invalidParams
16911	}
16912	return nil
16913}
16914
16915// SetBucket sets the Bucket field's value.
16916func (s *DeletePublicAccessBlockInput) SetBucket(v string) *DeletePublicAccessBlockInput {
16917	s.Bucket = &v
16918	return s
16919}
16920
16921func (s *DeletePublicAccessBlockInput) getBucket() (v string) {
16922	if s.Bucket == nil {
16923		return v
16924	}
16925	return *s.Bucket
16926}
16927
16928// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
16929func (s *DeletePublicAccessBlockInput) SetExpectedBucketOwner(v string) *DeletePublicAccessBlockInput {
16930	s.ExpectedBucketOwner = &v
16931	return s
16932}
16933
16934func (s *DeletePublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
16935	if s.Bucket == nil {
16936		return nil, fmt.Errorf("member Bucket is nil")
16937	}
16938	return parseEndpointARN(*s.Bucket)
16939}
16940
16941func (s *DeletePublicAccessBlockInput) hasEndpointARN() bool {
16942	if s.Bucket == nil {
16943		return false
16944	}
16945	return arn.IsARN(*s.Bucket)
16946}
16947
16948// updateArnableField updates the value of the input field that
16949// takes an ARN as an input. This method is useful to backfill
16950// the parsed resource name from ARN into the input member.
16951// It returns a pointer to a modified copy of input and an error.
16952// Note that original input is not modified.
16953func (s DeletePublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
16954	if s.Bucket == nil {
16955		return nil, fmt.Errorf("member Bucket is nil")
16956	}
16957	s.Bucket = aws.String(v)
16958	return &s, nil
16959}
16960
16961type DeletePublicAccessBlockOutput struct {
16962	_ struct{} `type:"structure"`
16963}
16964
16965// String returns the string representation.
16966//
16967// API parameter values that are decorated as "sensitive" in the API will not
16968// be included in the string output. The member name will be present, but the
16969// value will be replaced with "sensitive".
16970func (s DeletePublicAccessBlockOutput) String() string {
16971	return awsutil.Prettify(s)
16972}
16973
16974// GoString returns the string representation.
16975//
16976// API parameter values that are decorated as "sensitive" in the API will not
16977// be included in the string output. The member name will be present, but the
16978// value will be replaced with "sensitive".
16979func (s DeletePublicAccessBlockOutput) GoString() string {
16980	return s.String()
16981}
16982
16983// Information about the deleted object.
16984type DeletedObject struct {
16985	_ struct{} `type:"structure"`
16986
16987	// Specifies whether the versioned object that was permanently deleted was (true)
16988	// or was not (false) a delete marker. In a simple DELETE, this header indicates
16989	// whether (true) or not (false) a delete marker was created.
16990	DeleteMarker *bool `type:"boolean"`
16991
16992	// The version ID of the delete marker created as a result of the DELETE operation.
16993	// If you delete a specific object version, the value returned by this header
16994	// is the version ID of the object version deleted.
16995	DeleteMarkerVersionId *string `type:"string"`
16996
16997	// The name of the deleted object.
16998	Key *string `min:"1" type:"string"`
16999
17000	// The version ID of the deleted object.
17001	VersionId *string `type:"string"`
17002}
17003
17004// String returns the string representation.
17005//
17006// API parameter values that are decorated as "sensitive" in the API will not
17007// be included in the string output. The member name will be present, but the
17008// value will be replaced with "sensitive".
17009func (s DeletedObject) String() string {
17010	return awsutil.Prettify(s)
17011}
17012
17013// GoString returns the string representation.
17014//
17015// API parameter values that are decorated as "sensitive" in the API will not
17016// be included in the string output. The member name will be present, but the
17017// value will be replaced with "sensitive".
17018func (s DeletedObject) GoString() string {
17019	return s.String()
17020}
17021
17022// SetDeleteMarker sets the DeleteMarker field's value.
17023func (s *DeletedObject) SetDeleteMarker(v bool) *DeletedObject {
17024	s.DeleteMarker = &v
17025	return s
17026}
17027
17028// SetDeleteMarkerVersionId sets the DeleteMarkerVersionId field's value.
17029func (s *DeletedObject) SetDeleteMarkerVersionId(v string) *DeletedObject {
17030	s.DeleteMarkerVersionId = &v
17031	return s
17032}
17033
17034// SetKey sets the Key field's value.
17035func (s *DeletedObject) SetKey(v string) *DeletedObject {
17036	s.Key = &v
17037	return s
17038}
17039
17040// SetVersionId sets the VersionId field's value.
17041func (s *DeletedObject) SetVersionId(v string) *DeletedObject {
17042	s.VersionId = &v
17043	return s
17044}
17045
17046// Specifies information about where to publish analysis or configuration results
17047// for an Amazon S3 bucket and S3 Replication Time Control (S3 RTC).
17048type Destination struct {
17049	_ struct{} `type:"structure"`
17050
17051	// Specify this only in a cross-account scenario (where source and destination
17052	// bucket owners are not the same), and you want to change replica ownership
17053	// to the Amazon Web Services account that owns the destination bucket. If this
17054	// is not specified in the replication configuration, the replicas are owned
17055	// by same Amazon Web Services account that owns the source object.
17056	AccessControlTranslation *AccessControlTranslation `type:"structure"`
17057
17058	// Destination bucket owner account ID. In a cross-account scenario, if you
17059	// direct Amazon S3 to change replica ownership to the Amazon Web Services account
17060	// that owns the destination bucket by specifying the AccessControlTranslation
17061	// property, this is the account ID of the destination bucket owner. For more
17062	// information, see Replication Additional Configuration: Changing the Replica
17063	// Owner (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-change-owner.html)
17064	// in the Amazon S3 User Guide.
17065	Account *string `type:"string"`
17066
17067	// The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to
17068	// store the results.
17069	//
17070	// Bucket is a required field
17071	Bucket *string `type:"string" required:"true"`
17072
17073	// A container that provides information about encryption. If SourceSelectionCriteria
17074	// is specified, you must specify this element.
17075	EncryptionConfiguration *EncryptionConfiguration `type:"structure"`
17076
17077	// A container specifying replication metrics-related settings enabling replication
17078	// metrics and events.
17079	Metrics *Metrics `type:"structure"`
17080
17081	// A container specifying S3 Replication Time Control (S3 RTC), including whether
17082	// S3 RTC is enabled and the time when all objects and operations on objects
17083	// must be replicated. Must be specified together with a Metrics block.
17084	ReplicationTime *ReplicationTime `type:"structure"`
17085
17086	// The storage class to use when replicating objects, such as S3 Standard or
17087	// reduced redundancy. By default, Amazon S3 uses the storage class of the source
17088	// object to create the object replica.
17089	//
17090	// For valid values, see the StorageClass element of the PUT Bucket replication
17091	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)
17092	// action in the Amazon S3 API Reference.
17093	StorageClass *string `type:"string" enum:"StorageClass"`
17094}
17095
17096// String returns the string representation.
17097//
17098// API parameter values that are decorated as "sensitive" in the API will not
17099// be included in the string output. The member name will be present, but the
17100// value will be replaced with "sensitive".
17101func (s Destination) String() string {
17102	return awsutil.Prettify(s)
17103}
17104
17105// GoString returns the string representation.
17106//
17107// API parameter values that are decorated as "sensitive" in the API will not
17108// be included in the string output. The member name will be present, but the
17109// value will be replaced with "sensitive".
17110func (s Destination) GoString() string {
17111	return s.String()
17112}
17113
17114// Validate inspects the fields of the type to determine if they are valid.
17115func (s *Destination) Validate() error {
17116	invalidParams := request.ErrInvalidParams{Context: "Destination"}
17117	if s.Bucket == nil {
17118		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17119	}
17120	if s.AccessControlTranslation != nil {
17121		if err := s.AccessControlTranslation.Validate(); err != nil {
17122			invalidParams.AddNested("AccessControlTranslation", err.(request.ErrInvalidParams))
17123		}
17124	}
17125	if s.Metrics != nil {
17126		if err := s.Metrics.Validate(); err != nil {
17127			invalidParams.AddNested("Metrics", err.(request.ErrInvalidParams))
17128		}
17129	}
17130	if s.ReplicationTime != nil {
17131		if err := s.ReplicationTime.Validate(); err != nil {
17132			invalidParams.AddNested("ReplicationTime", err.(request.ErrInvalidParams))
17133		}
17134	}
17135
17136	if invalidParams.Len() > 0 {
17137		return invalidParams
17138	}
17139	return nil
17140}
17141
17142// SetAccessControlTranslation sets the AccessControlTranslation field's value.
17143func (s *Destination) SetAccessControlTranslation(v *AccessControlTranslation) *Destination {
17144	s.AccessControlTranslation = v
17145	return s
17146}
17147
17148// SetAccount sets the Account field's value.
17149func (s *Destination) SetAccount(v string) *Destination {
17150	s.Account = &v
17151	return s
17152}
17153
17154// SetBucket sets the Bucket field's value.
17155func (s *Destination) SetBucket(v string) *Destination {
17156	s.Bucket = &v
17157	return s
17158}
17159
17160func (s *Destination) getBucket() (v string) {
17161	if s.Bucket == nil {
17162		return v
17163	}
17164	return *s.Bucket
17165}
17166
17167// SetEncryptionConfiguration sets the EncryptionConfiguration field's value.
17168func (s *Destination) SetEncryptionConfiguration(v *EncryptionConfiguration) *Destination {
17169	s.EncryptionConfiguration = v
17170	return s
17171}
17172
17173// SetMetrics sets the Metrics field's value.
17174func (s *Destination) SetMetrics(v *Metrics) *Destination {
17175	s.Metrics = v
17176	return s
17177}
17178
17179// SetReplicationTime sets the ReplicationTime field's value.
17180func (s *Destination) SetReplicationTime(v *ReplicationTime) *Destination {
17181	s.ReplicationTime = v
17182	return s
17183}
17184
17185// SetStorageClass sets the StorageClass field's value.
17186func (s *Destination) SetStorageClass(v string) *Destination {
17187	s.StorageClass = &v
17188	return s
17189}
17190
17191// Contains the type of server-side encryption used.
17192type Encryption struct {
17193	_ struct{} `type:"structure"`
17194
17195	// The server-side encryption algorithm used when storing job results in Amazon
17196	// S3 (for example, AES256, aws:kms).
17197	//
17198	// EncryptionType is a required field
17199	EncryptionType *string `type:"string" required:"true" enum:"ServerSideEncryption"`
17200
17201	// If the encryption type is aws:kms, this optional value can be used to specify
17202	// the encryption context for the restore results.
17203	KMSContext *string `type:"string"`
17204
17205	// If the encryption type is aws:kms, this optional value specifies the ID of
17206	// the symmetric customer managed key to use for encryption of job results.
17207	// Amazon S3 only supports symmetric keys. For more information, see Using symmetric
17208	// and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
17209	// in the Amazon Web Services Key Management Service Developer Guide.
17210	//
17211	// KMSKeyId is a sensitive parameter and its value will be
17212	// replaced with "sensitive" in string returned by Encryption's
17213	// String and GoString methods.
17214	KMSKeyId *string `type:"string" sensitive:"true"`
17215}
17216
17217// String returns the string representation.
17218//
17219// API parameter values that are decorated as "sensitive" in the API will not
17220// be included in the string output. The member name will be present, but the
17221// value will be replaced with "sensitive".
17222func (s Encryption) String() string {
17223	return awsutil.Prettify(s)
17224}
17225
17226// GoString returns the string representation.
17227//
17228// API parameter values that are decorated as "sensitive" in the API will not
17229// be included in the string output. The member name will be present, but the
17230// value will be replaced with "sensitive".
17231func (s Encryption) GoString() string {
17232	return s.String()
17233}
17234
17235// Validate inspects the fields of the type to determine if they are valid.
17236func (s *Encryption) Validate() error {
17237	invalidParams := request.ErrInvalidParams{Context: "Encryption"}
17238	if s.EncryptionType == nil {
17239		invalidParams.Add(request.NewErrParamRequired("EncryptionType"))
17240	}
17241
17242	if invalidParams.Len() > 0 {
17243		return invalidParams
17244	}
17245	return nil
17246}
17247
17248// SetEncryptionType sets the EncryptionType field's value.
17249func (s *Encryption) SetEncryptionType(v string) *Encryption {
17250	s.EncryptionType = &v
17251	return s
17252}
17253
17254// SetKMSContext sets the KMSContext field's value.
17255func (s *Encryption) SetKMSContext(v string) *Encryption {
17256	s.KMSContext = &v
17257	return s
17258}
17259
17260// SetKMSKeyId sets the KMSKeyId field's value.
17261func (s *Encryption) SetKMSKeyId(v string) *Encryption {
17262	s.KMSKeyId = &v
17263	return s
17264}
17265
17266// Specifies encryption-related information for an Amazon S3 bucket that is
17267// a destination for replicated objects.
17268type EncryptionConfiguration struct {
17269	_ struct{} `type:"structure"`
17270
17271	// Specifies the ID (Key ARN or Alias ARN) of the customer managed Amazon Web
17272	// Services KMS key stored in Amazon Web Services Key Management Service (KMS)
17273	// for the destination bucket. Amazon S3 uses this key to encrypt replica objects.
17274	// Amazon S3 only supports symmetric, customer managed KMS keys. For more information,
17275	// see Using symmetric and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
17276	// in the Amazon Web Services Key Management Service Developer Guide.
17277	ReplicaKmsKeyID *string `type:"string"`
17278}
17279
17280// String returns the string representation.
17281//
17282// API parameter values that are decorated as "sensitive" in the API will not
17283// be included in the string output. The member name will be present, but the
17284// value will be replaced with "sensitive".
17285func (s EncryptionConfiguration) String() string {
17286	return awsutil.Prettify(s)
17287}
17288
17289// GoString returns the string representation.
17290//
17291// API parameter values that are decorated as "sensitive" in the API will not
17292// be included in the string output. The member name will be present, but the
17293// value will be replaced with "sensitive".
17294func (s EncryptionConfiguration) GoString() string {
17295	return s.String()
17296}
17297
17298// SetReplicaKmsKeyID sets the ReplicaKmsKeyID field's value.
17299func (s *EncryptionConfiguration) SetReplicaKmsKeyID(v string) *EncryptionConfiguration {
17300	s.ReplicaKmsKeyID = &v
17301	return s
17302}
17303
17304// A message that indicates the request is complete and no more messages will
17305// be sent. You should not assume that the request is complete until the client
17306// receives an EndEvent.
17307type EndEvent struct {
17308	_ struct{} `locationName:"EndEvent" type:"structure"`
17309}
17310
17311// String returns the string representation.
17312//
17313// API parameter values that are decorated as "sensitive" in the API will not
17314// be included in the string output. The member name will be present, but the
17315// value will be replaced with "sensitive".
17316func (s EndEvent) String() string {
17317	return awsutil.Prettify(s)
17318}
17319
17320// GoString returns the string representation.
17321//
17322// API parameter values that are decorated as "sensitive" in the API will not
17323// be included in the string output. The member name will be present, but the
17324// value will be replaced with "sensitive".
17325func (s EndEvent) GoString() string {
17326	return s.String()
17327}
17328
17329// The EndEvent is and event in the SelectObjectContentEventStream group of events.
17330func (s *EndEvent) eventSelectObjectContentEventStream() {}
17331
17332// UnmarshalEvent unmarshals the EventStream Message into the EndEvent value.
17333// This method is only used internally within the SDK's EventStream handling.
17334func (s *EndEvent) UnmarshalEvent(
17335	payloadUnmarshaler protocol.PayloadUnmarshaler,
17336	msg eventstream.Message,
17337) error {
17338	return nil
17339}
17340
17341// MarshalEvent marshals the type into an stream event value. This method
17342// should only used internally within the SDK's EventStream handling.
17343func (s *EndEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
17344	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
17345	return msg, err
17346}
17347
17348// Container for all error elements.
17349type Error struct {
17350	_ struct{} `type:"structure"`
17351
17352	// The error code is a string that uniquely identifies an error condition. It
17353	// is meant to be read and understood by programs that detect and handle errors
17354	// by type.
17355	//
17356	// Amazon S3 error codes
17357	//
17358	//    * Code: AccessDenied Description: Access Denied HTTP Status Code: 403
17359	//    Forbidden SOAP Fault Code Prefix: Client
17360	//
17361	//    * Code: AccountProblem Description: There is a problem with your Amazon
17362	//    Web Services account that prevents the action from completing successfully.
17363	//    Contact Amazon Web Services Support for further assistance. HTTP Status
17364	//    Code: 403 Forbidden SOAP Fault Code Prefix: Client
17365	//
17366	//    * Code: AllAccessDisabled Description: All access to this Amazon S3 resource
17367	//    has been disabled. Contact Amazon Web Services Support for further assistance.
17368	//    HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17369	//
17370	//    * Code: AmbiguousGrantByEmailAddress Description: The email address you
17371	//    provided is associated with more than one account. HTTP Status Code: 400
17372	//    Bad Request SOAP Fault Code Prefix: Client
17373	//
17374	//    * Code: AuthorizationHeaderMalformed Description: The authorization header
17375	//    you provided is invalid. HTTP Status Code: 400 Bad Request HTTP Status
17376	//    Code: N/A
17377	//
17378	//    * Code: BadDigest Description: The Content-MD5 you specified did not match
17379	//    what we received. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17380	//    Client
17381	//
17382	//    * Code: BucketAlreadyExists Description: The requested bucket name is
17383	//    not available. The bucket namespace is shared by all users of the system.
17384	//    Please select a different name and try again. HTTP Status Code: 409 Conflict
17385	//    SOAP Fault Code Prefix: Client
17386	//
17387	//    * Code: BucketAlreadyOwnedByYou Description: The bucket you tried to create
17388	//    already exists, and you own it. Amazon S3 returns this error in all Amazon
17389	//    Web Services Regions except in the North Virginia Region. For legacy compatibility,
17390	//    if you re-create an existing bucket that you already own in the North
17391	//    Virginia Region, Amazon S3 returns 200 OK and resets the bucket access
17392	//    control lists (ACLs). Code: 409 Conflict (in all Regions except the North
17393	//    Virginia Region) SOAP Fault Code Prefix: Client
17394	//
17395	//    * Code: BucketNotEmpty Description: The bucket you tried to delete is
17396	//    not empty. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
17397	//
17398	//    * Code: CredentialsNotSupported Description: This request does not support
17399	//    credentials. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17400	//    Client
17401	//
17402	//    * Code: CrossLocationLoggingProhibited Description: Cross-location logging
17403	//    not allowed. Buckets in one geographic location cannot log information
17404	//    to a bucket in another location. HTTP Status Code: 403 Forbidden SOAP
17405	//    Fault Code Prefix: Client
17406	//
17407	//    * Code: EntityTooSmall Description: Your proposed upload is smaller than
17408	//    the minimum allowed object size. HTTP Status Code: 400 Bad Request SOAP
17409	//    Fault Code Prefix: Client
17410	//
17411	//    * Code: EntityTooLarge Description: Your proposed upload exceeds the maximum
17412	//    allowed object size. HTTP Status Code: 400 Bad Request SOAP Fault Code
17413	//    Prefix: Client
17414	//
17415	//    * Code: ExpiredToken Description: The provided token has expired. HTTP
17416	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17417	//
17418	//    * Code: IllegalVersioningConfigurationException Description: Indicates
17419	//    that the versioning configuration specified in the request is invalid.
17420	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17421	//
17422	//    * Code: IncompleteBody Description: You did not provide the number of
17423	//    bytes specified by the Content-Length HTTP header HTTP Status Code: 400
17424	//    Bad Request SOAP Fault Code Prefix: Client
17425	//
17426	//    * Code: IncorrectNumberOfFilesInPostRequest Description: POST requires
17427	//    exactly one file upload per request. HTTP Status Code: 400 Bad Request
17428	//    SOAP Fault Code Prefix: Client
17429	//
17430	//    * Code: InlineDataTooLarge Description: Inline data exceeds the maximum
17431	//    allowed size. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17432	//    Client
17433	//
17434	//    * Code: InternalError Description: We encountered an internal error. Please
17435	//    try again. HTTP Status Code: 500 Internal Server Error SOAP Fault Code
17436	//    Prefix: Server
17437	//
17438	//    * Code: InvalidAccessKeyId Description: The Amazon Web Services access
17439	//    key ID you provided does not exist in our records. HTTP Status Code: 403
17440	//    Forbidden SOAP Fault Code Prefix: Client
17441	//
17442	//    * Code: InvalidAddressingHeader Description: You must specify the Anonymous
17443	//    role. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
17444	//
17445	//    * Code: InvalidArgument Description: Invalid Argument HTTP Status Code:
17446	//    400 Bad Request SOAP Fault Code Prefix: Client
17447	//
17448	//    * Code: InvalidBucketName Description: The specified bucket is not valid.
17449	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17450	//
17451	//    * Code: InvalidBucketState Description: The request is not valid with
17452	//    the current state of the bucket. HTTP Status Code: 409 Conflict SOAP Fault
17453	//    Code Prefix: Client
17454	//
17455	//    * Code: InvalidDigest Description: The Content-MD5 you specified is not
17456	//    valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17457	//
17458	//    * Code: InvalidEncryptionAlgorithmError Description: The encryption request
17459	//    you specified is not valid. The valid value is AES256. HTTP Status Code:
17460	//    400 Bad Request SOAP Fault Code Prefix: Client
17461	//
17462	//    * Code: InvalidLocationConstraint Description: The specified location
17463	//    constraint is not valid. For more information about Regions, see How to
17464	//    Select a Region for Your Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro).
17465	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17466	//
17467	//    * Code: InvalidObjectState Description: The action is not valid for the
17468	//    current state of the object. HTTP Status Code: 403 Forbidden SOAP Fault
17469	//    Code Prefix: Client
17470	//
17471	//    * Code: InvalidPart Description: One or more of the specified parts could
17472	//    not be found. The part might not have been uploaded, or the specified
17473	//    entity tag might not have matched the part's entity tag. HTTP Status Code:
17474	//    400 Bad Request SOAP Fault Code Prefix: Client
17475	//
17476	//    * Code: InvalidPartOrder Description: The list of parts was not in ascending
17477	//    order. Parts list must be specified in order by part number. HTTP Status
17478	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17479	//
17480	//    * Code: InvalidPayer Description: All access to this object has been disabled.
17481	//    Please contact Amazon Web Services Support for further assistance. HTTP
17482	//    Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17483	//
17484	//    * Code: InvalidPolicyDocument Description: The content of the form does
17485	//    not meet the conditions specified in the policy document. HTTP Status
17486	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17487	//
17488	//    * Code: InvalidRange Description: The requested range cannot be satisfied.
17489	//    HTTP Status Code: 416 Requested Range Not Satisfiable SOAP Fault Code
17490	//    Prefix: Client
17491	//
17492	//    * Code: InvalidRequest Description: Please use AWS4-HMAC-SHA256. HTTP
17493	//    Status Code: 400 Bad Request Code: N/A
17494	//
17495	//    * Code: InvalidRequest Description: SOAP requests must be made over an
17496	//    HTTPS connection. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17497	//    Client
17498	//
17499	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
17500	//    not supported for buckets with non-DNS compliant names. HTTP Status Code:
17501	//    400 Bad Request Code: N/A
17502	//
17503	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
17504	//    not supported for buckets with periods (.) in their names. HTTP Status
17505	//    Code: 400 Bad Request Code: N/A
17506	//
17507	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate endpoint
17508	//    only supports virtual style requests. HTTP Status Code: 400 Bad Request
17509	//    Code: N/A
17510	//
17511	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is not
17512	//    configured on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
17513	//
17514	//    * Code: InvalidRequest Description: Amazon S3 Transfer Accelerate is disabled
17515	//    on this bucket. HTTP Status Code: 400 Bad Request Code: N/A
17516	//
17517	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration is
17518	//    not supported on this bucket. Contact Amazon Web Services Support for
17519	//    more information. HTTP Status Code: 400 Bad Request Code: N/A
17520	//
17521	//    * Code: InvalidRequest Description: Amazon S3 Transfer Acceleration cannot
17522	//    be enabled on this bucket. Contact Amazon Web Services Support for more
17523	//    information. HTTP Status Code: 400 Bad Request Code: N/A
17524	//
17525	//    * Code: InvalidSecurity Description: The provided security credentials
17526	//    are not valid. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix:
17527	//    Client
17528	//
17529	//    * Code: InvalidSOAPRequest Description: The SOAP request body is invalid.
17530	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17531	//
17532	//    * Code: InvalidStorageClass Description: The storage class you specified
17533	//    is not valid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17534	//    Client
17535	//
17536	//    * Code: InvalidTargetBucketForLogging Description: The target bucket for
17537	//    logging does not exist, is not owned by you, or does not have the appropriate
17538	//    grants for the log-delivery group. HTTP Status Code: 400 Bad Request SOAP
17539	//    Fault Code Prefix: Client
17540	//
17541	//    * Code: InvalidToken Description: The provided token is malformed or otherwise
17542	//    invalid. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17543	//
17544	//    * Code: InvalidURI Description: Couldn't parse the specified URI. HTTP
17545	//    Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17546	//
17547	//    * Code: KeyTooLongError Description: Your key is too long. HTTP Status
17548	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17549	//
17550	//    * Code: MalformedACLError Description: The XML you provided was not well-formed
17551	//    or did not validate against our published schema. HTTP Status Code: 400
17552	//    Bad Request SOAP Fault Code Prefix: Client
17553	//
17554	//    * Code: MalformedPOSTRequest Description: The body of your POST request
17555	//    is not well-formed multipart/form-data. HTTP Status Code: 400 Bad Request
17556	//    SOAP Fault Code Prefix: Client
17557	//
17558	//    * Code: MalformedXML Description: This happens when the user sends malformed
17559	//    XML (XML that doesn't conform to the published XSD) for the configuration.
17560	//    The error message is, "The XML you provided was not well-formed or did
17561	//    not validate against our published schema." HTTP Status Code: 400 Bad
17562	//    Request SOAP Fault Code Prefix: Client
17563	//
17564	//    * Code: MaxMessageLengthExceeded Description: Your request was too big.
17565	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17566	//
17567	//    * Code: MaxPostPreDataLengthExceededError Description: Your POST request
17568	//    fields preceding the upload file were too large. HTTP Status Code: 400
17569	//    Bad Request SOAP Fault Code Prefix: Client
17570	//
17571	//    * Code: MetadataTooLarge Description: Your metadata headers exceed the
17572	//    maximum allowed metadata size. HTTP Status Code: 400 Bad Request SOAP
17573	//    Fault Code Prefix: Client
17574	//
17575	//    * Code: MethodNotAllowed Description: The specified method is not allowed
17576	//    against this resource. HTTP Status Code: 405 Method Not Allowed SOAP Fault
17577	//    Code Prefix: Client
17578	//
17579	//    * Code: MissingAttachment Description: A SOAP attachment was expected,
17580	//    but none were found. HTTP Status Code: N/A SOAP Fault Code Prefix: Client
17581	//
17582	//    * Code: MissingContentLength Description: You must provide the Content-Length
17583	//    HTTP header. HTTP Status Code: 411 Length Required SOAP Fault Code Prefix:
17584	//    Client
17585	//
17586	//    * Code: MissingRequestBodyError Description: This happens when the user
17587	//    sends an empty XML document as a request. The error message is, "Request
17588	//    body is empty." HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix:
17589	//    Client
17590	//
17591	//    * Code: MissingSecurityElement Description: The SOAP 1.1 request is missing
17592	//    a security element. HTTP Status Code: 400 Bad Request SOAP Fault Code
17593	//    Prefix: Client
17594	//
17595	//    * Code: MissingSecurityHeader Description: Your request is missing a required
17596	//    header. HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17597	//
17598	//    * Code: NoLoggingStatusForKey Description: There is no such thing as a
17599	//    logging status subresource for a key. HTTP Status Code: 400 Bad Request
17600	//    SOAP Fault Code Prefix: Client
17601	//
17602	//    * Code: NoSuchBucket Description: The specified bucket does not exist.
17603	//    HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client
17604	//
17605	//    * Code: NoSuchBucketPolicy Description: The specified bucket does not
17606	//    have a bucket policy. HTTP Status Code: 404 Not Found SOAP Fault Code
17607	//    Prefix: Client
17608	//
17609	//    * Code: NoSuchKey Description: The specified key does not exist. HTTP
17610	//    Status Code: 404 Not Found SOAP Fault Code Prefix: Client
17611	//
17612	//    * Code: NoSuchLifecycleConfiguration Description: The lifecycle configuration
17613	//    does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix:
17614	//    Client
17615	//
17616	//    * Code: NoSuchUpload Description: The specified multipart upload does
17617	//    not exist. The upload ID might be invalid, or the multipart upload might
17618	//    have been aborted or completed. HTTP Status Code: 404 Not Found SOAP Fault
17619	//    Code Prefix: Client
17620	//
17621	//    * Code: NoSuchVersion Description: Indicates that the version ID specified
17622	//    in the request does not match an existing version. HTTP Status Code: 404
17623	//    Not Found SOAP Fault Code Prefix: Client
17624	//
17625	//    * Code: NotImplemented Description: A header you provided implies functionality
17626	//    that is not implemented. HTTP Status Code: 501 Not Implemented SOAP Fault
17627	//    Code Prefix: Server
17628	//
17629	//    * Code: NotSignedUp Description: Your account is not signed up for the
17630	//    Amazon S3 service. You must sign up before you can use Amazon S3. You
17631	//    can sign up at the following URL: Amazon S3 (http://aws.amazon.com/s3)
17632	//    HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17633	//
17634	//    * Code: OperationAborted Description: A conflicting conditional action
17635	//    is currently in progress against this resource. Try again. HTTP Status
17636	//    Code: 409 Conflict SOAP Fault Code Prefix: Client
17637	//
17638	//    * Code: PermanentRedirect Description: The bucket you are attempting to
17639	//    access must be addressed using the specified endpoint. Send all future
17640	//    requests to this endpoint. HTTP Status Code: 301 Moved Permanently SOAP
17641	//    Fault Code Prefix: Client
17642	//
17643	//    * Code: PreconditionFailed Description: At least one of the preconditions
17644	//    you specified did not hold. HTTP Status Code: 412 Precondition Failed
17645	//    SOAP Fault Code Prefix: Client
17646	//
17647	//    * Code: Redirect Description: Temporary redirect. HTTP Status Code: 307
17648	//    Moved Temporarily SOAP Fault Code Prefix: Client
17649	//
17650	//    * Code: RestoreAlreadyInProgress Description: Object restore is already
17651	//    in progress. HTTP Status Code: 409 Conflict SOAP Fault Code Prefix: Client
17652	//
17653	//    * Code: RequestIsNotMultiPartContent Description: Bucket POST must be
17654	//    of the enclosure-type multipart/form-data. HTTP Status Code: 400 Bad Request
17655	//    SOAP Fault Code Prefix: Client
17656	//
17657	//    * Code: RequestTimeout Description: Your socket connection to the server
17658	//    was not read from or written to within the timeout period. HTTP Status
17659	//    Code: 400 Bad Request SOAP Fault Code Prefix: Client
17660	//
17661	//    * Code: RequestTimeTooSkewed Description: The difference between the request
17662	//    time and the server's time is too large. HTTP Status Code: 403 Forbidden
17663	//    SOAP Fault Code Prefix: Client
17664	//
17665	//    * Code: RequestTorrentOfBucketError Description: Requesting the torrent
17666	//    file of a bucket is not permitted. HTTP Status Code: 400 Bad Request SOAP
17667	//    Fault Code Prefix: Client
17668	//
17669	//    * Code: SignatureDoesNotMatch Description: The request signature we calculated
17670	//    does not match the signature you provided. Check your Amazon Web Services
17671	//    secret access key and signing method. For more information, see REST Authentication
17672	//    (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html)
17673	//    and SOAP Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/SOAPAuthentication.html)
17674	//    for details. HTTP Status Code: 403 Forbidden SOAP Fault Code Prefix: Client
17675	//
17676	//    * Code: ServiceUnavailable Description: Reduce your request rate. HTTP
17677	//    Status Code: 503 Service Unavailable SOAP Fault Code Prefix: Server
17678	//
17679	//    * Code: SlowDown Description: Reduce your request rate. HTTP Status Code:
17680	//    503 Slow Down SOAP Fault Code Prefix: Server
17681	//
17682	//    * Code: TemporaryRedirect Description: You are being redirected to the
17683	//    bucket while DNS updates. HTTP Status Code: 307 Moved Temporarily SOAP
17684	//    Fault Code Prefix: Client
17685	//
17686	//    * Code: TokenRefreshRequired Description: The provided token must be refreshed.
17687	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17688	//
17689	//    * Code: TooManyBuckets Description: You have attempted to create more
17690	//    buckets than allowed. HTTP Status Code: 400 Bad Request SOAP Fault Code
17691	//    Prefix: Client
17692	//
17693	//    * Code: UnexpectedContent Description: This request does not support content.
17694	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17695	//
17696	//    * Code: UnresolvableGrantByEmailAddress Description: The email address
17697	//    you provided does not match any account on record. HTTP Status Code: 400
17698	//    Bad Request SOAP Fault Code Prefix: Client
17699	//
17700	//    * Code: UserKeyMustBeSpecified Description: The bucket POST must contain
17701	//    the specified field name. If it is specified, check the order of the fields.
17702	//    HTTP Status Code: 400 Bad Request SOAP Fault Code Prefix: Client
17703	Code *string `type:"string"`
17704
17705	// The error key.
17706	Key *string `min:"1" type:"string"`
17707
17708	// The error message contains a generic description of the error condition in
17709	// English. It is intended for a human audience. Simple programs display the
17710	// message directly to the end user if they encounter an error condition they
17711	// don't know how or don't care to handle. Sophisticated programs with more
17712	// exhaustive error handling and proper internationalization are more likely
17713	// to ignore the error message.
17714	Message *string `type:"string"`
17715
17716	// The version ID of the error.
17717	VersionId *string `type:"string"`
17718}
17719
17720// String returns the string representation.
17721//
17722// API parameter values that are decorated as "sensitive" in the API will not
17723// be included in the string output. The member name will be present, but the
17724// value will be replaced with "sensitive".
17725func (s Error) String() string {
17726	return awsutil.Prettify(s)
17727}
17728
17729// GoString returns the string representation.
17730//
17731// API parameter values that are decorated as "sensitive" in the API will not
17732// be included in the string output. The member name will be present, but the
17733// value will be replaced with "sensitive".
17734func (s Error) GoString() string {
17735	return s.String()
17736}
17737
17738// SetCode sets the Code field's value.
17739func (s *Error) SetCode(v string) *Error {
17740	s.Code = &v
17741	return s
17742}
17743
17744// SetKey sets the Key field's value.
17745func (s *Error) SetKey(v string) *Error {
17746	s.Key = &v
17747	return s
17748}
17749
17750// SetMessage sets the Message field's value.
17751func (s *Error) SetMessage(v string) *Error {
17752	s.Message = &v
17753	return s
17754}
17755
17756// SetVersionId sets the VersionId field's value.
17757func (s *Error) SetVersionId(v string) *Error {
17758	s.VersionId = &v
17759	return s
17760}
17761
17762// The error information.
17763type ErrorDocument struct {
17764	_ struct{} `type:"structure"`
17765
17766	// The object key name to use when a 4XX class error occurs.
17767	//
17768	// Replacement must be made for object keys containing special characters (such
17769	// as carriage returns) when using XML requests. For more information, see XML
17770	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
17771	//
17772	// Key is a required field
17773	Key *string `min:"1" type:"string" required:"true"`
17774}
17775
17776// String returns the string representation.
17777//
17778// API parameter values that are decorated as "sensitive" in the API will not
17779// be included in the string output. The member name will be present, but the
17780// value will be replaced with "sensitive".
17781func (s ErrorDocument) String() string {
17782	return awsutil.Prettify(s)
17783}
17784
17785// GoString returns the string representation.
17786//
17787// API parameter values that are decorated as "sensitive" in the API will not
17788// be included in the string output. The member name will be present, but the
17789// value will be replaced with "sensitive".
17790func (s ErrorDocument) GoString() string {
17791	return s.String()
17792}
17793
17794// Validate inspects the fields of the type to determine if they are valid.
17795func (s *ErrorDocument) Validate() error {
17796	invalidParams := request.ErrInvalidParams{Context: "ErrorDocument"}
17797	if s.Key == nil {
17798		invalidParams.Add(request.NewErrParamRequired("Key"))
17799	}
17800	if s.Key != nil && len(*s.Key) < 1 {
17801		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
17802	}
17803
17804	if invalidParams.Len() > 0 {
17805		return invalidParams
17806	}
17807	return nil
17808}
17809
17810// SetKey sets the Key field's value.
17811func (s *ErrorDocument) SetKey(v string) *ErrorDocument {
17812	s.Key = &v
17813	return s
17814}
17815
17816// Optional configuration to replicate existing source bucket objects. For more
17817// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
17818// in the Amazon S3 User Guide.
17819type ExistingObjectReplication struct {
17820	_ struct{} `type:"structure"`
17821
17822	// Status is a required field
17823	Status *string `type:"string" required:"true" enum:"ExistingObjectReplicationStatus"`
17824}
17825
17826// String returns the string representation.
17827//
17828// API parameter values that are decorated as "sensitive" in the API will not
17829// be included in the string output. The member name will be present, but the
17830// value will be replaced with "sensitive".
17831func (s ExistingObjectReplication) String() string {
17832	return awsutil.Prettify(s)
17833}
17834
17835// GoString returns the string representation.
17836//
17837// API parameter values that are decorated as "sensitive" in the API will not
17838// be included in the string output. The member name will be present, but the
17839// value will be replaced with "sensitive".
17840func (s ExistingObjectReplication) GoString() string {
17841	return s.String()
17842}
17843
17844// Validate inspects the fields of the type to determine if they are valid.
17845func (s *ExistingObjectReplication) Validate() error {
17846	invalidParams := request.ErrInvalidParams{Context: "ExistingObjectReplication"}
17847	if s.Status == nil {
17848		invalidParams.Add(request.NewErrParamRequired("Status"))
17849	}
17850
17851	if invalidParams.Len() > 0 {
17852		return invalidParams
17853	}
17854	return nil
17855}
17856
17857// SetStatus sets the Status field's value.
17858func (s *ExistingObjectReplication) SetStatus(v string) *ExistingObjectReplication {
17859	s.Status = &v
17860	return s
17861}
17862
17863// Specifies the Amazon S3 object key name to filter on and whether to filter
17864// on the suffix or prefix of the key name.
17865type FilterRule struct {
17866	_ struct{} `type:"structure"`
17867
17868	// The object key name prefix or suffix identifying one or more objects to which
17869	// the filtering rule applies. The maximum length is 1,024 characters. Overlapping
17870	// prefixes and suffixes are not supported. For more information, see Configuring
17871	// Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
17872	// in the Amazon S3 User Guide.
17873	Name *string `type:"string" enum:"FilterRuleName"`
17874
17875	// The value that the filter searches for in object key names.
17876	Value *string `type:"string"`
17877}
17878
17879// String returns the string representation.
17880//
17881// API parameter values that are decorated as "sensitive" in the API will not
17882// be included in the string output. The member name will be present, but the
17883// value will be replaced with "sensitive".
17884func (s FilterRule) String() string {
17885	return awsutil.Prettify(s)
17886}
17887
17888// GoString returns the string representation.
17889//
17890// API parameter values that are decorated as "sensitive" in the API will not
17891// be included in the string output. The member name will be present, but the
17892// value will be replaced with "sensitive".
17893func (s FilterRule) GoString() string {
17894	return s.String()
17895}
17896
17897// SetName sets the Name field's value.
17898func (s *FilterRule) SetName(v string) *FilterRule {
17899	s.Name = &v
17900	return s
17901}
17902
17903// SetValue sets the Value field's value.
17904func (s *FilterRule) SetValue(v string) *FilterRule {
17905	s.Value = &v
17906	return s
17907}
17908
17909type GetBucketAccelerateConfigurationInput struct {
17910	_ struct{} `locationName:"GetBucketAccelerateConfigurationRequest" type:"structure"`
17911
17912	// The name of the bucket for which the accelerate configuration is retrieved.
17913	//
17914	// Bucket is a required field
17915	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
17916
17917	// The account ID of the expected bucket owner. If the bucket is owned by a
17918	// different account, the request will fail with an HTTP 403 (Access Denied)
17919	// error.
17920	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
17921}
17922
17923// String returns the string representation.
17924//
17925// API parameter values that are decorated as "sensitive" in the API will not
17926// be included in the string output. The member name will be present, but the
17927// value will be replaced with "sensitive".
17928func (s GetBucketAccelerateConfigurationInput) String() string {
17929	return awsutil.Prettify(s)
17930}
17931
17932// GoString returns the string representation.
17933//
17934// API parameter values that are decorated as "sensitive" in the API will not
17935// be included in the string output. The member name will be present, but the
17936// value will be replaced with "sensitive".
17937func (s GetBucketAccelerateConfigurationInput) GoString() string {
17938	return s.String()
17939}
17940
17941// Validate inspects the fields of the type to determine if they are valid.
17942func (s *GetBucketAccelerateConfigurationInput) Validate() error {
17943	invalidParams := request.ErrInvalidParams{Context: "GetBucketAccelerateConfigurationInput"}
17944	if s.Bucket == nil {
17945		invalidParams.Add(request.NewErrParamRequired("Bucket"))
17946	}
17947	if s.Bucket != nil && len(*s.Bucket) < 1 {
17948		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
17949	}
17950
17951	if invalidParams.Len() > 0 {
17952		return invalidParams
17953	}
17954	return nil
17955}
17956
17957// SetBucket sets the Bucket field's value.
17958func (s *GetBucketAccelerateConfigurationInput) SetBucket(v string) *GetBucketAccelerateConfigurationInput {
17959	s.Bucket = &v
17960	return s
17961}
17962
17963func (s *GetBucketAccelerateConfigurationInput) getBucket() (v string) {
17964	if s.Bucket == nil {
17965		return v
17966	}
17967	return *s.Bucket
17968}
17969
17970// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
17971func (s *GetBucketAccelerateConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketAccelerateConfigurationInput {
17972	s.ExpectedBucketOwner = &v
17973	return s
17974}
17975
17976func (s *GetBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
17977	if s.Bucket == nil {
17978		return nil, fmt.Errorf("member Bucket is nil")
17979	}
17980	return parseEndpointARN(*s.Bucket)
17981}
17982
17983func (s *GetBucketAccelerateConfigurationInput) hasEndpointARN() bool {
17984	if s.Bucket == nil {
17985		return false
17986	}
17987	return arn.IsARN(*s.Bucket)
17988}
17989
17990// updateArnableField updates the value of the input field that
17991// takes an ARN as an input. This method is useful to backfill
17992// the parsed resource name from ARN into the input member.
17993// It returns a pointer to a modified copy of input and an error.
17994// Note that original input is not modified.
17995func (s GetBucketAccelerateConfigurationInput) updateArnableField(v string) (interface{}, error) {
17996	if s.Bucket == nil {
17997		return nil, fmt.Errorf("member Bucket is nil")
17998	}
17999	s.Bucket = aws.String(v)
18000	return &s, nil
18001}
18002
18003type GetBucketAccelerateConfigurationOutput struct {
18004	_ struct{} `type:"structure"`
18005
18006	// The accelerate configuration of the bucket.
18007	Status *string `type:"string" enum:"BucketAccelerateStatus"`
18008}
18009
18010// String returns the string representation.
18011//
18012// API parameter values that are decorated as "sensitive" in the API will not
18013// be included in the string output. The member name will be present, but the
18014// value will be replaced with "sensitive".
18015func (s GetBucketAccelerateConfigurationOutput) String() string {
18016	return awsutil.Prettify(s)
18017}
18018
18019// GoString returns the string representation.
18020//
18021// API parameter values that are decorated as "sensitive" in the API will not
18022// be included in the string output. The member name will be present, but the
18023// value will be replaced with "sensitive".
18024func (s GetBucketAccelerateConfigurationOutput) GoString() string {
18025	return s.String()
18026}
18027
18028// SetStatus sets the Status field's value.
18029func (s *GetBucketAccelerateConfigurationOutput) SetStatus(v string) *GetBucketAccelerateConfigurationOutput {
18030	s.Status = &v
18031	return s
18032}
18033
18034type GetBucketAclInput struct {
18035	_ struct{} `locationName:"GetBucketAclRequest" type:"structure"`
18036
18037	// Specifies the S3 bucket whose ACL is being requested.
18038	//
18039	// Bucket is a required field
18040	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18041
18042	// The account ID of the expected bucket owner. If the bucket is owned by a
18043	// different account, the request will fail with an HTTP 403 (Access Denied)
18044	// error.
18045	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18046}
18047
18048// String returns the string representation.
18049//
18050// API parameter values that are decorated as "sensitive" in the API will not
18051// be included in the string output. The member name will be present, but the
18052// value will be replaced with "sensitive".
18053func (s GetBucketAclInput) String() string {
18054	return awsutil.Prettify(s)
18055}
18056
18057// GoString returns the string representation.
18058//
18059// API parameter values that are decorated as "sensitive" in the API will not
18060// be included in the string output. The member name will be present, but the
18061// value will be replaced with "sensitive".
18062func (s GetBucketAclInput) GoString() string {
18063	return s.String()
18064}
18065
18066// Validate inspects the fields of the type to determine if they are valid.
18067func (s *GetBucketAclInput) Validate() error {
18068	invalidParams := request.ErrInvalidParams{Context: "GetBucketAclInput"}
18069	if s.Bucket == nil {
18070		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18071	}
18072	if s.Bucket != nil && len(*s.Bucket) < 1 {
18073		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18074	}
18075
18076	if invalidParams.Len() > 0 {
18077		return invalidParams
18078	}
18079	return nil
18080}
18081
18082// SetBucket sets the Bucket field's value.
18083func (s *GetBucketAclInput) SetBucket(v string) *GetBucketAclInput {
18084	s.Bucket = &v
18085	return s
18086}
18087
18088func (s *GetBucketAclInput) getBucket() (v string) {
18089	if s.Bucket == nil {
18090		return v
18091	}
18092	return *s.Bucket
18093}
18094
18095// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18096func (s *GetBucketAclInput) SetExpectedBucketOwner(v string) *GetBucketAclInput {
18097	s.ExpectedBucketOwner = &v
18098	return s
18099}
18100
18101func (s *GetBucketAclInput) getEndpointARN() (arn.Resource, error) {
18102	if s.Bucket == nil {
18103		return nil, fmt.Errorf("member Bucket is nil")
18104	}
18105	return parseEndpointARN(*s.Bucket)
18106}
18107
18108func (s *GetBucketAclInput) hasEndpointARN() bool {
18109	if s.Bucket == nil {
18110		return false
18111	}
18112	return arn.IsARN(*s.Bucket)
18113}
18114
18115// updateArnableField updates the value of the input field that
18116// takes an ARN as an input. This method is useful to backfill
18117// the parsed resource name from ARN into the input member.
18118// It returns a pointer to a modified copy of input and an error.
18119// Note that original input is not modified.
18120func (s GetBucketAclInput) updateArnableField(v string) (interface{}, error) {
18121	if s.Bucket == nil {
18122		return nil, fmt.Errorf("member Bucket is nil")
18123	}
18124	s.Bucket = aws.String(v)
18125	return &s, nil
18126}
18127
18128type GetBucketAclOutput struct {
18129	_ struct{} `type:"structure"`
18130
18131	// A list of grants.
18132	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
18133
18134	// Container for the bucket owner's display name and ID.
18135	Owner *Owner `type:"structure"`
18136}
18137
18138// String returns the string representation.
18139//
18140// API parameter values that are decorated as "sensitive" in the API will not
18141// be included in the string output. The member name will be present, but the
18142// value will be replaced with "sensitive".
18143func (s GetBucketAclOutput) String() string {
18144	return awsutil.Prettify(s)
18145}
18146
18147// GoString returns the string representation.
18148//
18149// API parameter values that are decorated as "sensitive" in the API will not
18150// be included in the string output. The member name will be present, but the
18151// value will be replaced with "sensitive".
18152func (s GetBucketAclOutput) GoString() string {
18153	return s.String()
18154}
18155
18156// SetGrants sets the Grants field's value.
18157func (s *GetBucketAclOutput) SetGrants(v []*Grant) *GetBucketAclOutput {
18158	s.Grants = v
18159	return s
18160}
18161
18162// SetOwner sets the Owner field's value.
18163func (s *GetBucketAclOutput) SetOwner(v *Owner) *GetBucketAclOutput {
18164	s.Owner = v
18165	return s
18166}
18167
18168type GetBucketAnalyticsConfigurationInput struct {
18169	_ struct{} `locationName:"GetBucketAnalyticsConfigurationRequest" type:"structure"`
18170
18171	// The name of the bucket from which an analytics configuration is retrieved.
18172	//
18173	// Bucket is a required field
18174	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18175
18176	// The account ID of the expected bucket owner. If the bucket is owned by a
18177	// different account, the request will fail with an HTTP 403 (Access Denied)
18178	// error.
18179	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18180
18181	// The ID that identifies the analytics configuration.
18182	//
18183	// Id is a required field
18184	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18185}
18186
18187// String returns the string representation.
18188//
18189// API parameter values that are decorated as "sensitive" in the API will not
18190// be included in the string output. The member name will be present, but the
18191// value will be replaced with "sensitive".
18192func (s GetBucketAnalyticsConfigurationInput) String() string {
18193	return awsutil.Prettify(s)
18194}
18195
18196// GoString returns the string representation.
18197//
18198// API parameter values that are decorated as "sensitive" in the API will not
18199// be included in the string output. The member name will be present, but the
18200// value will be replaced with "sensitive".
18201func (s GetBucketAnalyticsConfigurationInput) GoString() string {
18202	return s.String()
18203}
18204
18205// Validate inspects the fields of the type to determine if they are valid.
18206func (s *GetBucketAnalyticsConfigurationInput) Validate() error {
18207	invalidParams := request.ErrInvalidParams{Context: "GetBucketAnalyticsConfigurationInput"}
18208	if s.Bucket == nil {
18209		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18210	}
18211	if s.Bucket != nil && len(*s.Bucket) < 1 {
18212		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18213	}
18214	if s.Id == nil {
18215		invalidParams.Add(request.NewErrParamRequired("Id"))
18216	}
18217
18218	if invalidParams.Len() > 0 {
18219		return invalidParams
18220	}
18221	return nil
18222}
18223
18224// SetBucket sets the Bucket field's value.
18225func (s *GetBucketAnalyticsConfigurationInput) SetBucket(v string) *GetBucketAnalyticsConfigurationInput {
18226	s.Bucket = &v
18227	return s
18228}
18229
18230func (s *GetBucketAnalyticsConfigurationInput) getBucket() (v string) {
18231	if s.Bucket == nil {
18232		return v
18233	}
18234	return *s.Bucket
18235}
18236
18237// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18238func (s *GetBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketAnalyticsConfigurationInput {
18239	s.ExpectedBucketOwner = &v
18240	return s
18241}
18242
18243// SetId sets the Id field's value.
18244func (s *GetBucketAnalyticsConfigurationInput) SetId(v string) *GetBucketAnalyticsConfigurationInput {
18245	s.Id = &v
18246	return s
18247}
18248
18249func (s *GetBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
18250	if s.Bucket == nil {
18251		return nil, fmt.Errorf("member Bucket is nil")
18252	}
18253	return parseEndpointARN(*s.Bucket)
18254}
18255
18256func (s *GetBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
18257	if s.Bucket == nil {
18258		return false
18259	}
18260	return arn.IsARN(*s.Bucket)
18261}
18262
18263// updateArnableField updates the value of the input field that
18264// takes an ARN as an input. This method is useful to backfill
18265// the parsed resource name from ARN into the input member.
18266// It returns a pointer to a modified copy of input and an error.
18267// Note that original input is not modified.
18268func (s GetBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
18269	if s.Bucket == nil {
18270		return nil, fmt.Errorf("member Bucket is nil")
18271	}
18272	s.Bucket = aws.String(v)
18273	return &s, nil
18274}
18275
18276type GetBucketAnalyticsConfigurationOutput struct {
18277	_ struct{} `type:"structure" payload:"AnalyticsConfiguration"`
18278
18279	// The configuration and any analyses for the analytics filter.
18280	AnalyticsConfiguration *AnalyticsConfiguration `type:"structure"`
18281}
18282
18283// String returns the string representation.
18284//
18285// API parameter values that are decorated as "sensitive" in the API will not
18286// be included in the string output. The member name will be present, but the
18287// value will be replaced with "sensitive".
18288func (s GetBucketAnalyticsConfigurationOutput) String() string {
18289	return awsutil.Prettify(s)
18290}
18291
18292// GoString returns the string representation.
18293//
18294// API parameter values that are decorated as "sensitive" in the API will not
18295// be included in the string output. The member name will be present, but the
18296// value will be replaced with "sensitive".
18297func (s GetBucketAnalyticsConfigurationOutput) GoString() string {
18298	return s.String()
18299}
18300
18301// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
18302func (s *GetBucketAnalyticsConfigurationOutput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *GetBucketAnalyticsConfigurationOutput {
18303	s.AnalyticsConfiguration = v
18304	return s
18305}
18306
18307type GetBucketCorsInput struct {
18308	_ struct{} `locationName:"GetBucketCorsRequest" type:"structure"`
18309
18310	// The bucket name for which to get the cors configuration.
18311	//
18312	// Bucket is a required field
18313	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18314
18315	// The account ID of the expected bucket owner. If the bucket is owned by a
18316	// different account, the request will fail with an HTTP 403 (Access Denied)
18317	// error.
18318	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18319}
18320
18321// String returns the string representation.
18322//
18323// API parameter values that are decorated as "sensitive" in the API will not
18324// be included in the string output. The member name will be present, but the
18325// value will be replaced with "sensitive".
18326func (s GetBucketCorsInput) String() string {
18327	return awsutil.Prettify(s)
18328}
18329
18330// GoString returns the string representation.
18331//
18332// API parameter values that are decorated as "sensitive" in the API will not
18333// be included in the string output. The member name will be present, but the
18334// value will be replaced with "sensitive".
18335func (s GetBucketCorsInput) GoString() string {
18336	return s.String()
18337}
18338
18339// Validate inspects the fields of the type to determine if they are valid.
18340func (s *GetBucketCorsInput) Validate() error {
18341	invalidParams := request.ErrInvalidParams{Context: "GetBucketCorsInput"}
18342	if s.Bucket == nil {
18343		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18344	}
18345	if s.Bucket != nil && len(*s.Bucket) < 1 {
18346		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18347	}
18348
18349	if invalidParams.Len() > 0 {
18350		return invalidParams
18351	}
18352	return nil
18353}
18354
18355// SetBucket sets the Bucket field's value.
18356func (s *GetBucketCorsInput) SetBucket(v string) *GetBucketCorsInput {
18357	s.Bucket = &v
18358	return s
18359}
18360
18361func (s *GetBucketCorsInput) getBucket() (v string) {
18362	if s.Bucket == nil {
18363		return v
18364	}
18365	return *s.Bucket
18366}
18367
18368// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18369func (s *GetBucketCorsInput) SetExpectedBucketOwner(v string) *GetBucketCorsInput {
18370	s.ExpectedBucketOwner = &v
18371	return s
18372}
18373
18374func (s *GetBucketCorsInput) getEndpointARN() (arn.Resource, error) {
18375	if s.Bucket == nil {
18376		return nil, fmt.Errorf("member Bucket is nil")
18377	}
18378	return parseEndpointARN(*s.Bucket)
18379}
18380
18381func (s *GetBucketCorsInput) hasEndpointARN() bool {
18382	if s.Bucket == nil {
18383		return false
18384	}
18385	return arn.IsARN(*s.Bucket)
18386}
18387
18388// updateArnableField updates the value of the input field that
18389// takes an ARN as an input. This method is useful to backfill
18390// the parsed resource name from ARN into the input member.
18391// It returns a pointer to a modified copy of input and an error.
18392// Note that original input is not modified.
18393func (s GetBucketCorsInput) updateArnableField(v string) (interface{}, error) {
18394	if s.Bucket == nil {
18395		return nil, fmt.Errorf("member Bucket is nil")
18396	}
18397	s.Bucket = aws.String(v)
18398	return &s, nil
18399}
18400
18401type GetBucketCorsOutput struct {
18402	_ struct{} `type:"structure"`
18403
18404	// A set of origins and methods (cross-origin access that you want to allow).
18405	// You can add up to 100 rules to the configuration.
18406	CORSRules []*CORSRule `locationName:"CORSRule" type:"list" flattened:"true"`
18407}
18408
18409// String returns the string representation.
18410//
18411// API parameter values that are decorated as "sensitive" in the API will not
18412// be included in the string output. The member name will be present, but the
18413// value will be replaced with "sensitive".
18414func (s GetBucketCorsOutput) String() string {
18415	return awsutil.Prettify(s)
18416}
18417
18418// GoString returns the string representation.
18419//
18420// API parameter values that are decorated as "sensitive" in the API will not
18421// be included in the string output. The member name will be present, but the
18422// value will be replaced with "sensitive".
18423func (s GetBucketCorsOutput) GoString() string {
18424	return s.String()
18425}
18426
18427// SetCORSRules sets the CORSRules field's value.
18428func (s *GetBucketCorsOutput) SetCORSRules(v []*CORSRule) *GetBucketCorsOutput {
18429	s.CORSRules = v
18430	return s
18431}
18432
18433type GetBucketEncryptionInput struct {
18434	_ struct{} `locationName:"GetBucketEncryptionRequest" type:"structure"`
18435
18436	// The name of the bucket from which the server-side encryption configuration
18437	// is retrieved.
18438	//
18439	// Bucket is a required field
18440	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18441
18442	// The account ID of the expected bucket owner. If the bucket is owned by a
18443	// different account, the request will fail with an HTTP 403 (Access Denied)
18444	// error.
18445	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18446}
18447
18448// String returns the string representation.
18449//
18450// API parameter values that are decorated as "sensitive" in the API will not
18451// be included in the string output. The member name will be present, but the
18452// value will be replaced with "sensitive".
18453func (s GetBucketEncryptionInput) String() string {
18454	return awsutil.Prettify(s)
18455}
18456
18457// GoString returns the string representation.
18458//
18459// API parameter values that are decorated as "sensitive" in the API will not
18460// be included in the string output. The member name will be present, but the
18461// value will be replaced with "sensitive".
18462func (s GetBucketEncryptionInput) GoString() string {
18463	return s.String()
18464}
18465
18466// Validate inspects the fields of the type to determine if they are valid.
18467func (s *GetBucketEncryptionInput) Validate() error {
18468	invalidParams := request.ErrInvalidParams{Context: "GetBucketEncryptionInput"}
18469	if s.Bucket == nil {
18470		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18471	}
18472	if s.Bucket != nil && len(*s.Bucket) < 1 {
18473		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18474	}
18475
18476	if invalidParams.Len() > 0 {
18477		return invalidParams
18478	}
18479	return nil
18480}
18481
18482// SetBucket sets the Bucket field's value.
18483func (s *GetBucketEncryptionInput) SetBucket(v string) *GetBucketEncryptionInput {
18484	s.Bucket = &v
18485	return s
18486}
18487
18488func (s *GetBucketEncryptionInput) getBucket() (v string) {
18489	if s.Bucket == nil {
18490		return v
18491	}
18492	return *s.Bucket
18493}
18494
18495// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18496func (s *GetBucketEncryptionInput) SetExpectedBucketOwner(v string) *GetBucketEncryptionInput {
18497	s.ExpectedBucketOwner = &v
18498	return s
18499}
18500
18501func (s *GetBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
18502	if s.Bucket == nil {
18503		return nil, fmt.Errorf("member Bucket is nil")
18504	}
18505	return parseEndpointARN(*s.Bucket)
18506}
18507
18508func (s *GetBucketEncryptionInput) hasEndpointARN() bool {
18509	if s.Bucket == nil {
18510		return false
18511	}
18512	return arn.IsARN(*s.Bucket)
18513}
18514
18515// updateArnableField updates the value of the input field that
18516// takes an ARN as an input. This method is useful to backfill
18517// the parsed resource name from ARN into the input member.
18518// It returns a pointer to a modified copy of input and an error.
18519// Note that original input is not modified.
18520func (s GetBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
18521	if s.Bucket == nil {
18522		return nil, fmt.Errorf("member Bucket is nil")
18523	}
18524	s.Bucket = aws.String(v)
18525	return &s, nil
18526}
18527
18528type GetBucketEncryptionOutput struct {
18529	_ struct{} `type:"structure" payload:"ServerSideEncryptionConfiguration"`
18530
18531	// Specifies the default server-side-encryption configuration.
18532	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `type:"structure"`
18533}
18534
18535// String returns the string representation.
18536//
18537// API parameter values that are decorated as "sensitive" in the API will not
18538// be included in the string output. The member name will be present, but the
18539// value will be replaced with "sensitive".
18540func (s GetBucketEncryptionOutput) String() string {
18541	return awsutil.Prettify(s)
18542}
18543
18544// GoString returns the string representation.
18545//
18546// API parameter values that are decorated as "sensitive" in the API will not
18547// be included in the string output. The member name will be present, but the
18548// value will be replaced with "sensitive".
18549func (s GetBucketEncryptionOutput) GoString() string {
18550	return s.String()
18551}
18552
18553// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
18554func (s *GetBucketEncryptionOutput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *GetBucketEncryptionOutput {
18555	s.ServerSideEncryptionConfiguration = v
18556	return s
18557}
18558
18559type GetBucketIntelligentTieringConfigurationInput struct {
18560	_ struct{} `locationName:"GetBucketIntelligentTieringConfigurationRequest" type:"structure"`
18561
18562	// The name of the Amazon S3 bucket whose configuration you want to modify or
18563	// retrieve.
18564	//
18565	// Bucket is a required field
18566	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18567
18568	// The ID used to identify the S3 Intelligent-Tiering configuration.
18569	//
18570	// Id is a required field
18571	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18572}
18573
18574// String returns the string representation.
18575//
18576// API parameter values that are decorated as "sensitive" in the API will not
18577// be included in the string output. The member name will be present, but the
18578// value will be replaced with "sensitive".
18579func (s GetBucketIntelligentTieringConfigurationInput) String() string {
18580	return awsutil.Prettify(s)
18581}
18582
18583// GoString returns the string representation.
18584//
18585// API parameter values that are decorated as "sensitive" in the API will not
18586// be included in the string output. The member name will be present, but the
18587// value will be replaced with "sensitive".
18588func (s GetBucketIntelligentTieringConfigurationInput) GoString() string {
18589	return s.String()
18590}
18591
18592// Validate inspects the fields of the type to determine if they are valid.
18593func (s *GetBucketIntelligentTieringConfigurationInput) Validate() error {
18594	invalidParams := request.ErrInvalidParams{Context: "GetBucketIntelligentTieringConfigurationInput"}
18595	if s.Bucket == nil {
18596		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18597	}
18598	if s.Bucket != nil && len(*s.Bucket) < 1 {
18599		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18600	}
18601	if s.Id == nil {
18602		invalidParams.Add(request.NewErrParamRequired("Id"))
18603	}
18604
18605	if invalidParams.Len() > 0 {
18606		return invalidParams
18607	}
18608	return nil
18609}
18610
18611// SetBucket sets the Bucket field's value.
18612func (s *GetBucketIntelligentTieringConfigurationInput) SetBucket(v string) *GetBucketIntelligentTieringConfigurationInput {
18613	s.Bucket = &v
18614	return s
18615}
18616
18617func (s *GetBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
18618	if s.Bucket == nil {
18619		return v
18620	}
18621	return *s.Bucket
18622}
18623
18624// SetId sets the Id field's value.
18625func (s *GetBucketIntelligentTieringConfigurationInput) SetId(v string) *GetBucketIntelligentTieringConfigurationInput {
18626	s.Id = &v
18627	return s
18628}
18629
18630func (s *GetBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
18631	if s.Bucket == nil {
18632		return nil, fmt.Errorf("member Bucket is nil")
18633	}
18634	return parseEndpointARN(*s.Bucket)
18635}
18636
18637func (s *GetBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
18638	if s.Bucket == nil {
18639		return false
18640	}
18641	return arn.IsARN(*s.Bucket)
18642}
18643
18644// updateArnableField updates the value of the input field that
18645// takes an ARN as an input. This method is useful to backfill
18646// the parsed resource name from ARN into the input member.
18647// It returns a pointer to a modified copy of input and an error.
18648// Note that original input is not modified.
18649func (s GetBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
18650	if s.Bucket == nil {
18651		return nil, fmt.Errorf("member Bucket is nil")
18652	}
18653	s.Bucket = aws.String(v)
18654	return &s, nil
18655}
18656
18657type GetBucketIntelligentTieringConfigurationOutput struct {
18658	_ struct{} `type:"structure" payload:"IntelligentTieringConfiguration"`
18659
18660	// Container for S3 Intelligent-Tiering configuration.
18661	IntelligentTieringConfiguration *IntelligentTieringConfiguration `type:"structure"`
18662}
18663
18664// String returns the string representation.
18665//
18666// API parameter values that are decorated as "sensitive" in the API will not
18667// be included in the string output. The member name will be present, but the
18668// value will be replaced with "sensitive".
18669func (s GetBucketIntelligentTieringConfigurationOutput) String() string {
18670	return awsutil.Prettify(s)
18671}
18672
18673// GoString returns the string representation.
18674//
18675// API parameter values that are decorated as "sensitive" in the API will not
18676// be included in the string output. The member name will be present, but the
18677// value will be replaced with "sensitive".
18678func (s GetBucketIntelligentTieringConfigurationOutput) GoString() string {
18679	return s.String()
18680}
18681
18682// SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
18683func (s *GetBucketIntelligentTieringConfigurationOutput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *GetBucketIntelligentTieringConfigurationOutput {
18684	s.IntelligentTieringConfiguration = v
18685	return s
18686}
18687
18688type GetBucketInventoryConfigurationInput struct {
18689	_ struct{} `locationName:"GetBucketInventoryConfigurationRequest" type:"structure"`
18690
18691	// The name of the bucket containing the inventory configuration to retrieve.
18692	//
18693	// Bucket is a required field
18694	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18695
18696	// The account ID of the expected bucket owner. If the bucket is owned by a
18697	// different account, the request will fail with an HTTP 403 (Access Denied)
18698	// error.
18699	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18700
18701	// The ID used to identify the inventory configuration.
18702	//
18703	// Id is a required field
18704	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
18705}
18706
18707// String returns the string representation.
18708//
18709// API parameter values that are decorated as "sensitive" in the API will not
18710// be included in the string output. The member name will be present, but the
18711// value will be replaced with "sensitive".
18712func (s GetBucketInventoryConfigurationInput) String() string {
18713	return awsutil.Prettify(s)
18714}
18715
18716// GoString returns the string representation.
18717//
18718// API parameter values that are decorated as "sensitive" in the API will not
18719// be included in the string output. The member name will be present, but the
18720// value will be replaced with "sensitive".
18721func (s GetBucketInventoryConfigurationInput) GoString() string {
18722	return s.String()
18723}
18724
18725// Validate inspects the fields of the type to determine if they are valid.
18726func (s *GetBucketInventoryConfigurationInput) Validate() error {
18727	invalidParams := request.ErrInvalidParams{Context: "GetBucketInventoryConfigurationInput"}
18728	if s.Bucket == nil {
18729		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18730	}
18731	if s.Bucket != nil && len(*s.Bucket) < 1 {
18732		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18733	}
18734	if s.Id == nil {
18735		invalidParams.Add(request.NewErrParamRequired("Id"))
18736	}
18737
18738	if invalidParams.Len() > 0 {
18739		return invalidParams
18740	}
18741	return nil
18742}
18743
18744// SetBucket sets the Bucket field's value.
18745func (s *GetBucketInventoryConfigurationInput) SetBucket(v string) *GetBucketInventoryConfigurationInput {
18746	s.Bucket = &v
18747	return s
18748}
18749
18750func (s *GetBucketInventoryConfigurationInput) getBucket() (v string) {
18751	if s.Bucket == nil {
18752		return v
18753	}
18754	return *s.Bucket
18755}
18756
18757// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18758func (s *GetBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketInventoryConfigurationInput {
18759	s.ExpectedBucketOwner = &v
18760	return s
18761}
18762
18763// SetId sets the Id field's value.
18764func (s *GetBucketInventoryConfigurationInput) SetId(v string) *GetBucketInventoryConfigurationInput {
18765	s.Id = &v
18766	return s
18767}
18768
18769func (s *GetBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
18770	if s.Bucket == nil {
18771		return nil, fmt.Errorf("member Bucket is nil")
18772	}
18773	return parseEndpointARN(*s.Bucket)
18774}
18775
18776func (s *GetBucketInventoryConfigurationInput) hasEndpointARN() bool {
18777	if s.Bucket == nil {
18778		return false
18779	}
18780	return arn.IsARN(*s.Bucket)
18781}
18782
18783// updateArnableField updates the value of the input field that
18784// takes an ARN as an input. This method is useful to backfill
18785// the parsed resource name from ARN into the input member.
18786// It returns a pointer to a modified copy of input and an error.
18787// Note that original input is not modified.
18788func (s GetBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
18789	if s.Bucket == nil {
18790		return nil, fmt.Errorf("member Bucket is nil")
18791	}
18792	s.Bucket = aws.String(v)
18793	return &s, nil
18794}
18795
18796type GetBucketInventoryConfigurationOutput struct {
18797	_ struct{} `type:"structure" payload:"InventoryConfiguration"`
18798
18799	// Specifies the inventory configuration.
18800	InventoryConfiguration *InventoryConfiguration `type:"structure"`
18801}
18802
18803// String returns the string representation.
18804//
18805// API parameter values that are decorated as "sensitive" in the API will not
18806// be included in the string output. The member name will be present, but the
18807// value will be replaced with "sensitive".
18808func (s GetBucketInventoryConfigurationOutput) String() string {
18809	return awsutil.Prettify(s)
18810}
18811
18812// GoString returns the string representation.
18813//
18814// API parameter values that are decorated as "sensitive" in the API will not
18815// be included in the string output. The member name will be present, but the
18816// value will be replaced with "sensitive".
18817func (s GetBucketInventoryConfigurationOutput) GoString() string {
18818	return s.String()
18819}
18820
18821// SetInventoryConfiguration sets the InventoryConfiguration field's value.
18822func (s *GetBucketInventoryConfigurationOutput) SetInventoryConfiguration(v *InventoryConfiguration) *GetBucketInventoryConfigurationOutput {
18823	s.InventoryConfiguration = v
18824	return s
18825}
18826
18827type GetBucketLifecycleConfigurationInput struct {
18828	_ struct{} `locationName:"GetBucketLifecycleConfigurationRequest" type:"structure"`
18829
18830	// The name of the bucket for which to get the lifecycle information.
18831	//
18832	// Bucket is a required field
18833	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18834
18835	// The account ID of the expected bucket owner. If the bucket is owned by a
18836	// different account, the request will fail with an HTTP 403 (Access Denied)
18837	// error.
18838	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18839}
18840
18841// String returns the string representation.
18842//
18843// API parameter values that are decorated as "sensitive" in the API will not
18844// be included in the string output. The member name will be present, but the
18845// value will be replaced with "sensitive".
18846func (s GetBucketLifecycleConfigurationInput) String() string {
18847	return awsutil.Prettify(s)
18848}
18849
18850// GoString returns the string representation.
18851//
18852// API parameter values that are decorated as "sensitive" in the API will not
18853// be included in the string output. The member name will be present, but the
18854// value will be replaced with "sensitive".
18855func (s GetBucketLifecycleConfigurationInput) GoString() string {
18856	return s.String()
18857}
18858
18859// Validate inspects the fields of the type to determine if they are valid.
18860func (s *GetBucketLifecycleConfigurationInput) Validate() error {
18861	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleConfigurationInput"}
18862	if s.Bucket == nil {
18863		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18864	}
18865	if s.Bucket != nil && len(*s.Bucket) < 1 {
18866		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18867	}
18868
18869	if invalidParams.Len() > 0 {
18870		return invalidParams
18871	}
18872	return nil
18873}
18874
18875// SetBucket sets the Bucket field's value.
18876func (s *GetBucketLifecycleConfigurationInput) SetBucket(v string) *GetBucketLifecycleConfigurationInput {
18877	s.Bucket = &v
18878	return s
18879}
18880
18881func (s *GetBucketLifecycleConfigurationInput) getBucket() (v string) {
18882	if s.Bucket == nil {
18883		return v
18884	}
18885	return *s.Bucket
18886}
18887
18888// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
18889func (s *GetBucketLifecycleConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketLifecycleConfigurationInput {
18890	s.ExpectedBucketOwner = &v
18891	return s
18892}
18893
18894func (s *GetBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
18895	if s.Bucket == nil {
18896		return nil, fmt.Errorf("member Bucket is nil")
18897	}
18898	return parseEndpointARN(*s.Bucket)
18899}
18900
18901func (s *GetBucketLifecycleConfigurationInput) hasEndpointARN() bool {
18902	if s.Bucket == nil {
18903		return false
18904	}
18905	return arn.IsARN(*s.Bucket)
18906}
18907
18908// updateArnableField updates the value of the input field that
18909// takes an ARN as an input. This method is useful to backfill
18910// the parsed resource name from ARN into the input member.
18911// It returns a pointer to a modified copy of input and an error.
18912// Note that original input is not modified.
18913func (s GetBucketLifecycleConfigurationInput) updateArnableField(v string) (interface{}, error) {
18914	if s.Bucket == nil {
18915		return nil, fmt.Errorf("member Bucket is nil")
18916	}
18917	s.Bucket = aws.String(v)
18918	return &s, nil
18919}
18920
18921type GetBucketLifecycleConfigurationOutput struct {
18922	_ struct{} `type:"structure"`
18923
18924	// Container for a lifecycle rule.
18925	Rules []*LifecycleRule `locationName:"Rule" type:"list" flattened:"true"`
18926}
18927
18928// String returns the string representation.
18929//
18930// API parameter values that are decorated as "sensitive" in the API will not
18931// be included in the string output. The member name will be present, but the
18932// value will be replaced with "sensitive".
18933func (s GetBucketLifecycleConfigurationOutput) String() string {
18934	return awsutil.Prettify(s)
18935}
18936
18937// GoString returns the string representation.
18938//
18939// API parameter values that are decorated as "sensitive" in the API will not
18940// be included in the string output. The member name will be present, but the
18941// value will be replaced with "sensitive".
18942func (s GetBucketLifecycleConfigurationOutput) GoString() string {
18943	return s.String()
18944}
18945
18946// SetRules sets the Rules field's value.
18947func (s *GetBucketLifecycleConfigurationOutput) SetRules(v []*LifecycleRule) *GetBucketLifecycleConfigurationOutput {
18948	s.Rules = v
18949	return s
18950}
18951
18952type GetBucketLifecycleInput struct {
18953	_ struct{} `locationName:"GetBucketLifecycleRequest" type:"structure"`
18954
18955	// The name of the bucket for which to get the lifecycle information.
18956	//
18957	// Bucket is a required field
18958	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
18959
18960	// The account ID of the expected bucket owner. If the bucket is owned by a
18961	// different account, the request will fail with an HTTP 403 (Access Denied)
18962	// error.
18963	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
18964}
18965
18966// String returns the string representation.
18967//
18968// API parameter values that are decorated as "sensitive" in the API will not
18969// be included in the string output. The member name will be present, but the
18970// value will be replaced with "sensitive".
18971func (s GetBucketLifecycleInput) String() string {
18972	return awsutil.Prettify(s)
18973}
18974
18975// GoString returns the string representation.
18976//
18977// API parameter values that are decorated as "sensitive" in the API will not
18978// be included in the string output. The member name will be present, but the
18979// value will be replaced with "sensitive".
18980func (s GetBucketLifecycleInput) GoString() string {
18981	return s.String()
18982}
18983
18984// Validate inspects the fields of the type to determine if they are valid.
18985func (s *GetBucketLifecycleInput) Validate() error {
18986	invalidParams := request.ErrInvalidParams{Context: "GetBucketLifecycleInput"}
18987	if s.Bucket == nil {
18988		invalidParams.Add(request.NewErrParamRequired("Bucket"))
18989	}
18990	if s.Bucket != nil && len(*s.Bucket) < 1 {
18991		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
18992	}
18993
18994	if invalidParams.Len() > 0 {
18995		return invalidParams
18996	}
18997	return nil
18998}
18999
19000// SetBucket sets the Bucket field's value.
19001func (s *GetBucketLifecycleInput) SetBucket(v string) *GetBucketLifecycleInput {
19002	s.Bucket = &v
19003	return s
19004}
19005
19006func (s *GetBucketLifecycleInput) getBucket() (v string) {
19007	if s.Bucket == nil {
19008		return v
19009	}
19010	return *s.Bucket
19011}
19012
19013// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19014func (s *GetBucketLifecycleInput) SetExpectedBucketOwner(v string) *GetBucketLifecycleInput {
19015	s.ExpectedBucketOwner = &v
19016	return s
19017}
19018
19019func (s *GetBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
19020	if s.Bucket == nil {
19021		return nil, fmt.Errorf("member Bucket is nil")
19022	}
19023	return parseEndpointARN(*s.Bucket)
19024}
19025
19026func (s *GetBucketLifecycleInput) hasEndpointARN() bool {
19027	if s.Bucket == nil {
19028		return false
19029	}
19030	return arn.IsARN(*s.Bucket)
19031}
19032
19033// updateArnableField updates the value of the input field that
19034// takes an ARN as an input. This method is useful to backfill
19035// the parsed resource name from ARN into the input member.
19036// It returns a pointer to a modified copy of input and an error.
19037// Note that original input is not modified.
19038func (s GetBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
19039	if s.Bucket == nil {
19040		return nil, fmt.Errorf("member Bucket is nil")
19041	}
19042	s.Bucket = aws.String(v)
19043	return &s, nil
19044}
19045
19046type GetBucketLifecycleOutput struct {
19047	_ struct{} `type:"structure"`
19048
19049	// Container for a lifecycle rule.
19050	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true"`
19051}
19052
19053// String returns the string representation.
19054//
19055// API parameter values that are decorated as "sensitive" in the API will not
19056// be included in the string output. The member name will be present, but the
19057// value will be replaced with "sensitive".
19058func (s GetBucketLifecycleOutput) String() string {
19059	return awsutil.Prettify(s)
19060}
19061
19062// GoString returns the string representation.
19063//
19064// API parameter values that are decorated as "sensitive" in the API will not
19065// be included in the string output. The member name will be present, but the
19066// value will be replaced with "sensitive".
19067func (s GetBucketLifecycleOutput) GoString() string {
19068	return s.String()
19069}
19070
19071// SetRules sets the Rules field's value.
19072func (s *GetBucketLifecycleOutput) SetRules(v []*Rule) *GetBucketLifecycleOutput {
19073	s.Rules = v
19074	return s
19075}
19076
19077type GetBucketLocationInput struct {
19078	_ struct{} `locationName:"GetBucketLocationRequest" type:"structure"`
19079
19080	// The name of the bucket for which to get the location.
19081	//
19082	// Bucket is a required field
19083	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19084
19085	// The account ID of the expected bucket owner. If the bucket is owned by a
19086	// different account, the request will fail with an HTTP 403 (Access Denied)
19087	// error.
19088	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19089}
19090
19091// String returns the string representation.
19092//
19093// API parameter values that are decorated as "sensitive" in the API will not
19094// be included in the string output. The member name will be present, but the
19095// value will be replaced with "sensitive".
19096func (s GetBucketLocationInput) String() string {
19097	return awsutil.Prettify(s)
19098}
19099
19100// GoString returns the string representation.
19101//
19102// API parameter values that are decorated as "sensitive" in the API will not
19103// be included in the string output. The member name will be present, but the
19104// value will be replaced with "sensitive".
19105func (s GetBucketLocationInput) GoString() string {
19106	return s.String()
19107}
19108
19109// Validate inspects the fields of the type to determine if they are valid.
19110func (s *GetBucketLocationInput) Validate() error {
19111	invalidParams := request.ErrInvalidParams{Context: "GetBucketLocationInput"}
19112	if s.Bucket == nil {
19113		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19114	}
19115	if s.Bucket != nil && len(*s.Bucket) < 1 {
19116		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19117	}
19118
19119	if invalidParams.Len() > 0 {
19120		return invalidParams
19121	}
19122	return nil
19123}
19124
19125// SetBucket sets the Bucket field's value.
19126func (s *GetBucketLocationInput) SetBucket(v string) *GetBucketLocationInput {
19127	s.Bucket = &v
19128	return s
19129}
19130
19131func (s *GetBucketLocationInput) getBucket() (v string) {
19132	if s.Bucket == nil {
19133		return v
19134	}
19135	return *s.Bucket
19136}
19137
19138// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19139func (s *GetBucketLocationInput) SetExpectedBucketOwner(v string) *GetBucketLocationInput {
19140	s.ExpectedBucketOwner = &v
19141	return s
19142}
19143
19144func (s *GetBucketLocationInput) getEndpointARN() (arn.Resource, error) {
19145	if s.Bucket == nil {
19146		return nil, fmt.Errorf("member Bucket is nil")
19147	}
19148	return parseEndpointARN(*s.Bucket)
19149}
19150
19151func (s *GetBucketLocationInput) hasEndpointARN() bool {
19152	if s.Bucket == nil {
19153		return false
19154	}
19155	return arn.IsARN(*s.Bucket)
19156}
19157
19158// updateArnableField updates the value of the input field that
19159// takes an ARN as an input. This method is useful to backfill
19160// the parsed resource name from ARN into the input member.
19161// It returns a pointer to a modified copy of input and an error.
19162// Note that original input is not modified.
19163func (s GetBucketLocationInput) updateArnableField(v string) (interface{}, error) {
19164	if s.Bucket == nil {
19165		return nil, fmt.Errorf("member Bucket is nil")
19166	}
19167	s.Bucket = aws.String(v)
19168	return &s, nil
19169}
19170
19171type GetBucketLocationOutput struct {
19172	_ struct{} `type:"structure"`
19173
19174	// Specifies the Region where the bucket resides. For a list of all the Amazon
19175	// S3 supported location constraints by Region, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region).
19176	// Buckets in Region us-east-1 have a LocationConstraint of null.
19177	LocationConstraint *string `type:"string" enum:"BucketLocationConstraint"`
19178}
19179
19180// String returns the string representation.
19181//
19182// API parameter values that are decorated as "sensitive" in the API will not
19183// be included in the string output. The member name will be present, but the
19184// value will be replaced with "sensitive".
19185func (s GetBucketLocationOutput) String() string {
19186	return awsutil.Prettify(s)
19187}
19188
19189// GoString returns the string representation.
19190//
19191// API parameter values that are decorated as "sensitive" in the API will not
19192// be included in the string output. The member name will be present, but the
19193// value will be replaced with "sensitive".
19194func (s GetBucketLocationOutput) GoString() string {
19195	return s.String()
19196}
19197
19198// SetLocationConstraint sets the LocationConstraint field's value.
19199func (s *GetBucketLocationOutput) SetLocationConstraint(v string) *GetBucketLocationOutput {
19200	s.LocationConstraint = &v
19201	return s
19202}
19203
19204type GetBucketLoggingInput struct {
19205	_ struct{} `locationName:"GetBucketLoggingRequest" type:"structure"`
19206
19207	// The bucket name for which to get the logging information.
19208	//
19209	// Bucket is a required field
19210	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19211
19212	// The account ID of the expected bucket owner. If the bucket is owned by a
19213	// different account, the request will fail with an HTTP 403 (Access Denied)
19214	// error.
19215	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19216}
19217
19218// String returns the string representation.
19219//
19220// API parameter values that are decorated as "sensitive" in the API will not
19221// be included in the string output. The member name will be present, but the
19222// value will be replaced with "sensitive".
19223func (s GetBucketLoggingInput) String() string {
19224	return awsutil.Prettify(s)
19225}
19226
19227// GoString returns the string representation.
19228//
19229// API parameter values that are decorated as "sensitive" in the API will not
19230// be included in the string output. The member name will be present, but the
19231// value will be replaced with "sensitive".
19232func (s GetBucketLoggingInput) GoString() string {
19233	return s.String()
19234}
19235
19236// Validate inspects the fields of the type to determine if they are valid.
19237func (s *GetBucketLoggingInput) Validate() error {
19238	invalidParams := request.ErrInvalidParams{Context: "GetBucketLoggingInput"}
19239	if s.Bucket == nil {
19240		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19241	}
19242	if s.Bucket != nil && len(*s.Bucket) < 1 {
19243		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19244	}
19245
19246	if invalidParams.Len() > 0 {
19247		return invalidParams
19248	}
19249	return nil
19250}
19251
19252// SetBucket sets the Bucket field's value.
19253func (s *GetBucketLoggingInput) SetBucket(v string) *GetBucketLoggingInput {
19254	s.Bucket = &v
19255	return s
19256}
19257
19258func (s *GetBucketLoggingInput) getBucket() (v string) {
19259	if s.Bucket == nil {
19260		return v
19261	}
19262	return *s.Bucket
19263}
19264
19265// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19266func (s *GetBucketLoggingInput) SetExpectedBucketOwner(v string) *GetBucketLoggingInput {
19267	s.ExpectedBucketOwner = &v
19268	return s
19269}
19270
19271func (s *GetBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
19272	if s.Bucket == nil {
19273		return nil, fmt.Errorf("member Bucket is nil")
19274	}
19275	return parseEndpointARN(*s.Bucket)
19276}
19277
19278func (s *GetBucketLoggingInput) hasEndpointARN() bool {
19279	if s.Bucket == nil {
19280		return false
19281	}
19282	return arn.IsARN(*s.Bucket)
19283}
19284
19285// updateArnableField updates the value of the input field that
19286// takes an ARN as an input. This method is useful to backfill
19287// the parsed resource name from ARN into the input member.
19288// It returns a pointer to a modified copy of input and an error.
19289// Note that original input is not modified.
19290func (s GetBucketLoggingInput) updateArnableField(v string) (interface{}, error) {
19291	if s.Bucket == nil {
19292		return nil, fmt.Errorf("member Bucket is nil")
19293	}
19294	s.Bucket = aws.String(v)
19295	return &s, nil
19296}
19297
19298type GetBucketLoggingOutput struct {
19299	_ struct{} `type:"structure"`
19300
19301	// Describes where logs are stored and the prefix that Amazon S3 assigns to
19302	// all log object keys for a bucket. For more information, see PUT Bucket logging
19303	// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
19304	// in the Amazon S3 API Reference.
19305	LoggingEnabled *LoggingEnabled `type:"structure"`
19306}
19307
19308// String returns the string representation.
19309//
19310// API parameter values that are decorated as "sensitive" in the API will not
19311// be included in the string output. The member name will be present, but the
19312// value will be replaced with "sensitive".
19313func (s GetBucketLoggingOutput) String() string {
19314	return awsutil.Prettify(s)
19315}
19316
19317// GoString returns the string representation.
19318//
19319// API parameter values that are decorated as "sensitive" in the API will not
19320// be included in the string output. The member name will be present, but the
19321// value will be replaced with "sensitive".
19322func (s GetBucketLoggingOutput) GoString() string {
19323	return s.String()
19324}
19325
19326// SetLoggingEnabled sets the LoggingEnabled field's value.
19327func (s *GetBucketLoggingOutput) SetLoggingEnabled(v *LoggingEnabled) *GetBucketLoggingOutput {
19328	s.LoggingEnabled = v
19329	return s
19330}
19331
19332type GetBucketMetricsConfigurationInput struct {
19333	_ struct{} `locationName:"GetBucketMetricsConfigurationRequest" type:"structure"`
19334
19335	// The name of the bucket containing the metrics configuration to retrieve.
19336	//
19337	// Bucket is a required field
19338	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19339
19340	// The account ID of the expected bucket owner. If the bucket is owned by a
19341	// different account, the request will fail with an HTTP 403 (Access Denied)
19342	// error.
19343	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19344
19345	// The ID used to identify the metrics configuration.
19346	//
19347	// Id is a required field
19348	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
19349}
19350
19351// String returns the string representation.
19352//
19353// API parameter values that are decorated as "sensitive" in the API will not
19354// be included in the string output. The member name will be present, but the
19355// value will be replaced with "sensitive".
19356func (s GetBucketMetricsConfigurationInput) String() string {
19357	return awsutil.Prettify(s)
19358}
19359
19360// GoString returns the string representation.
19361//
19362// API parameter values that are decorated as "sensitive" in the API will not
19363// be included in the string output. The member name will be present, but the
19364// value will be replaced with "sensitive".
19365func (s GetBucketMetricsConfigurationInput) GoString() string {
19366	return s.String()
19367}
19368
19369// Validate inspects the fields of the type to determine if they are valid.
19370func (s *GetBucketMetricsConfigurationInput) Validate() error {
19371	invalidParams := request.ErrInvalidParams{Context: "GetBucketMetricsConfigurationInput"}
19372	if s.Bucket == nil {
19373		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19374	}
19375	if s.Bucket != nil && len(*s.Bucket) < 1 {
19376		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19377	}
19378	if s.Id == nil {
19379		invalidParams.Add(request.NewErrParamRequired("Id"))
19380	}
19381
19382	if invalidParams.Len() > 0 {
19383		return invalidParams
19384	}
19385	return nil
19386}
19387
19388// SetBucket sets the Bucket field's value.
19389func (s *GetBucketMetricsConfigurationInput) SetBucket(v string) *GetBucketMetricsConfigurationInput {
19390	s.Bucket = &v
19391	return s
19392}
19393
19394func (s *GetBucketMetricsConfigurationInput) getBucket() (v string) {
19395	if s.Bucket == nil {
19396		return v
19397	}
19398	return *s.Bucket
19399}
19400
19401// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19402func (s *GetBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *GetBucketMetricsConfigurationInput {
19403	s.ExpectedBucketOwner = &v
19404	return s
19405}
19406
19407// SetId sets the Id field's value.
19408func (s *GetBucketMetricsConfigurationInput) SetId(v string) *GetBucketMetricsConfigurationInput {
19409	s.Id = &v
19410	return s
19411}
19412
19413func (s *GetBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
19414	if s.Bucket == nil {
19415		return nil, fmt.Errorf("member Bucket is nil")
19416	}
19417	return parseEndpointARN(*s.Bucket)
19418}
19419
19420func (s *GetBucketMetricsConfigurationInput) hasEndpointARN() bool {
19421	if s.Bucket == nil {
19422		return false
19423	}
19424	return arn.IsARN(*s.Bucket)
19425}
19426
19427// updateArnableField updates the value of the input field that
19428// takes an ARN as an input. This method is useful to backfill
19429// the parsed resource name from ARN into the input member.
19430// It returns a pointer to a modified copy of input and an error.
19431// Note that original input is not modified.
19432func (s GetBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
19433	if s.Bucket == nil {
19434		return nil, fmt.Errorf("member Bucket is nil")
19435	}
19436	s.Bucket = aws.String(v)
19437	return &s, nil
19438}
19439
19440type GetBucketMetricsConfigurationOutput struct {
19441	_ struct{} `type:"structure" payload:"MetricsConfiguration"`
19442
19443	// Specifies the metrics configuration.
19444	MetricsConfiguration *MetricsConfiguration `type:"structure"`
19445}
19446
19447// String returns the string representation.
19448//
19449// API parameter values that are decorated as "sensitive" in the API will not
19450// be included in the string output. The member name will be present, but the
19451// value will be replaced with "sensitive".
19452func (s GetBucketMetricsConfigurationOutput) String() string {
19453	return awsutil.Prettify(s)
19454}
19455
19456// GoString returns the string representation.
19457//
19458// API parameter values that are decorated as "sensitive" in the API will not
19459// be included in the string output. The member name will be present, but the
19460// value will be replaced with "sensitive".
19461func (s GetBucketMetricsConfigurationOutput) GoString() string {
19462	return s.String()
19463}
19464
19465// SetMetricsConfiguration sets the MetricsConfiguration field's value.
19466func (s *GetBucketMetricsConfigurationOutput) SetMetricsConfiguration(v *MetricsConfiguration) *GetBucketMetricsConfigurationOutput {
19467	s.MetricsConfiguration = v
19468	return s
19469}
19470
19471type GetBucketNotificationConfigurationRequest struct {
19472	_ struct{} `locationName:"GetBucketNotificationConfigurationRequest" type:"structure"`
19473
19474	// The name of the bucket for which to get the notification configuration.
19475	//
19476	// Bucket is a required field
19477	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19478
19479	// The account ID of the expected bucket owner. If the bucket is owned by a
19480	// different account, the request will fail with an HTTP 403 (Access Denied)
19481	// error.
19482	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19483}
19484
19485// String returns the string representation.
19486//
19487// API parameter values that are decorated as "sensitive" in the API will not
19488// be included in the string output. The member name will be present, but the
19489// value will be replaced with "sensitive".
19490func (s GetBucketNotificationConfigurationRequest) String() string {
19491	return awsutil.Prettify(s)
19492}
19493
19494// GoString returns the string representation.
19495//
19496// API parameter values that are decorated as "sensitive" in the API will not
19497// be included in the string output. The member name will be present, but the
19498// value will be replaced with "sensitive".
19499func (s GetBucketNotificationConfigurationRequest) GoString() string {
19500	return s.String()
19501}
19502
19503// Validate inspects the fields of the type to determine if they are valid.
19504func (s *GetBucketNotificationConfigurationRequest) Validate() error {
19505	invalidParams := request.ErrInvalidParams{Context: "GetBucketNotificationConfigurationRequest"}
19506	if s.Bucket == nil {
19507		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19508	}
19509	if s.Bucket != nil && len(*s.Bucket) < 1 {
19510		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19511	}
19512
19513	if invalidParams.Len() > 0 {
19514		return invalidParams
19515	}
19516	return nil
19517}
19518
19519// SetBucket sets the Bucket field's value.
19520func (s *GetBucketNotificationConfigurationRequest) SetBucket(v string) *GetBucketNotificationConfigurationRequest {
19521	s.Bucket = &v
19522	return s
19523}
19524
19525func (s *GetBucketNotificationConfigurationRequest) getBucket() (v string) {
19526	if s.Bucket == nil {
19527		return v
19528	}
19529	return *s.Bucket
19530}
19531
19532// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19533func (s *GetBucketNotificationConfigurationRequest) SetExpectedBucketOwner(v string) *GetBucketNotificationConfigurationRequest {
19534	s.ExpectedBucketOwner = &v
19535	return s
19536}
19537
19538func (s *GetBucketNotificationConfigurationRequest) getEndpointARN() (arn.Resource, error) {
19539	if s.Bucket == nil {
19540		return nil, fmt.Errorf("member Bucket is nil")
19541	}
19542	return parseEndpointARN(*s.Bucket)
19543}
19544
19545func (s *GetBucketNotificationConfigurationRequest) hasEndpointARN() bool {
19546	if s.Bucket == nil {
19547		return false
19548	}
19549	return arn.IsARN(*s.Bucket)
19550}
19551
19552// updateArnableField updates the value of the input field that
19553// takes an ARN as an input. This method is useful to backfill
19554// the parsed resource name from ARN into the input member.
19555// It returns a pointer to a modified copy of input and an error.
19556// Note that original input is not modified.
19557func (s GetBucketNotificationConfigurationRequest) updateArnableField(v string) (interface{}, error) {
19558	if s.Bucket == nil {
19559		return nil, fmt.Errorf("member Bucket is nil")
19560	}
19561	s.Bucket = aws.String(v)
19562	return &s, nil
19563}
19564
19565type GetBucketOwnershipControlsInput struct {
19566	_ struct{} `locationName:"GetBucketOwnershipControlsRequest" type:"structure"`
19567
19568	// The name of the Amazon S3 bucket whose OwnershipControls you want to retrieve.
19569	//
19570	// Bucket is a required field
19571	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19572
19573	// The account ID of the expected bucket owner. If the bucket is owned by a
19574	// different account, the request will fail with an HTTP 403 (Access Denied)
19575	// error.
19576	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19577}
19578
19579// String returns the string representation.
19580//
19581// API parameter values that are decorated as "sensitive" in the API will not
19582// be included in the string output. The member name will be present, but the
19583// value will be replaced with "sensitive".
19584func (s GetBucketOwnershipControlsInput) String() string {
19585	return awsutil.Prettify(s)
19586}
19587
19588// GoString returns the string representation.
19589//
19590// API parameter values that are decorated as "sensitive" in the API will not
19591// be included in the string output. The member name will be present, but the
19592// value will be replaced with "sensitive".
19593func (s GetBucketOwnershipControlsInput) GoString() string {
19594	return s.String()
19595}
19596
19597// Validate inspects the fields of the type to determine if they are valid.
19598func (s *GetBucketOwnershipControlsInput) Validate() error {
19599	invalidParams := request.ErrInvalidParams{Context: "GetBucketOwnershipControlsInput"}
19600	if s.Bucket == nil {
19601		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19602	}
19603	if s.Bucket != nil && len(*s.Bucket) < 1 {
19604		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19605	}
19606
19607	if invalidParams.Len() > 0 {
19608		return invalidParams
19609	}
19610	return nil
19611}
19612
19613// SetBucket sets the Bucket field's value.
19614func (s *GetBucketOwnershipControlsInput) SetBucket(v string) *GetBucketOwnershipControlsInput {
19615	s.Bucket = &v
19616	return s
19617}
19618
19619func (s *GetBucketOwnershipControlsInput) getBucket() (v string) {
19620	if s.Bucket == nil {
19621		return v
19622	}
19623	return *s.Bucket
19624}
19625
19626// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19627func (s *GetBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *GetBucketOwnershipControlsInput {
19628	s.ExpectedBucketOwner = &v
19629	return s
19630}
19631
19632func (s *GetBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
19633	if s.Bucket == nil {
19634		return nil, fmt.Errorf("member Bucket is nil")
19635	}
19636	return parseEndpointARN(*s.Bucket)
19637}
19638
19639func (s *GetBucketOwnershipControlsInput) hasEndpointARN() bool {
19640	if s.Bucket == nil {
19641		return false
19642	}
19643	return arn.IsARN(*s.Bucket)
19644}
19645
19646// updateArnableField updates the value of the input field that
19647// takes an ARN as an input. This method is useful to backfill
19648// the parsed resource name from ARN into the input member.
19649// It returns a pointer to a modified copy of input and an error.
19650// Note that original input is not modified.
19651func (s GetBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
19652	if s.Bucket == nil {
19653		return nil, fmt.Errorf("member Bucket is nil")
19654	}
19655	s.Bucket = aws.String(v)
19656	return &s, nil
19657}
19658
19659type GetBucketOwnershipControlsOutput struct {
19660	_ struct{} `type:"structure" payload:"OwnershipControls"`
19661
19662	// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) currently in
19663	// effect for this Amazon S3 bucket.
19664	OwnershipControls *OwnershipControls `type:"structure"`
19665}
19666
19667// String returns the string representation.
19668//
19669// API parameter values that are decorated as "sensitive" in the API will not
19670// be included in the string output. The member name will be present, but the
19671// value will be replaced with "sensitive".
19672func (s GetBucketOwnershipControlsOutput) String() string {
19673	return awsutil.Prettify(s)
19674}
19675
19676// GoString returns the string representation.
19677//
19678// API parameter values that are decorated as "sensitive" in the API will not
19679// be included in the string output. The member name will be present, but the
19680// value will be replaced with "sensitive".
19681func (s GetBucketOwnershipControlsOutput) GoString() string {
19682	return s.String()
19683}
19684
19685// SetOwnershipControls sets the OwnershipControls field's value.
19686func (s *GetBucketOwnershipControlsOutput) SetOwnershipControls(v *OwnershipControls) *GetBucketOwnershipControlsOutput {
19687	s.OwnershipControls = v
19688	return s
19689}
19690
19691type GetBucketPolicyInput struct {
19692	_ struct{} `locationName:"GetBucketPolicyRequest" type:"structure"`
19693
19694	// The bucket name for which to get the bucket policy.
19695	//
19696	// Bucket is a required field
19697	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19698
19699	// The account ID of the expected bucket owner. If the bucket is owned by a
19700	// different account, the request will fail with an HTTP 403 (Access Denied)
19701	// error.
19702	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19703}
19704
19705// String returns the string representation.
19706//
19707// API parameter values that are decorated as "sensitive" in the API will not
19708// be included in the string output. The member name will be present, but the
19709// value will be replaced with "sensitive".
19710func (s GetBucketPolicyInput) String() string {
19711	return awsutil.Prettify(s)
19712}
19713
19714// GoString returns the string representation.
19715//
19716// API parameter values that are decorated as "sensitive" in the API will not
19717// be included in the string output. The member name will be present, but the
19718// value will be replaced with "sensitive".
19719func (s GetBucketPolicyInput) GoString() string {
19720	return s.String()
19721}
19722
19723// Validate inspects the fields of the type to determine if they are valid.
19724func (s *GetBucketPolicyInput) Validate() error {
19725	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyInput"}
19726	if s.Bucket == nil {
19727		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19728	}
19729	if s.Bucket != nil && len(*s.Bucket) < 1 {
19730		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19731	}
19732
19733	if invalidParams.Len() > 0 {
19734		return invalidParams
19735	}
19736	return nil
19737}
19738
19739// SetBucket sets the Bucket field's value.
19740func (s *GetBucketPolicyInput) SetBucket(v string) *GetBucketPolicyInput {
19741	s.Bucket = &v
19742	return s
19743}
19744
19745func (s *GetBucketPolicyInput) getBucket() (v string) {
19746	if s.Bucket == nil {
19747		return v
19748	}
19749	return *s.Bucket
19750}
19751
19752// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19753func (s *GetBucketPolicyInput) SetExpectedBucketOwner(v string) *GetBucketPolicyInput {
19754	s.ExpectedBucketOwner = &v
19755	return s
19756}
19757
19758func (s *GetBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
19759	if s.Bucket == nil {
19760		return nil, fmt.Errorf("member Bucket is nil")
19761	}
19762	return parseEndpointARN(*s.Bucket)
19763}
19764
19765func (s *GetBucketPolicyInput) hasEndpointARN() bool {
19766	if s.Bucket == nil {
19767		return false
19768	}
19769	return arn.IsARN(*s.Bucket)
19770}
19771
19772// updateArnableField updates the value of the input field that
19773// takes an ARN as an input. This method is useful to backfill
19774// the parsed resource name from ARN into the input member.
19775// It returns a pointer to a modified copy of input and an error.
19776// Note that original input is not modified.
19777func (s GetBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
19778	if s.Bucket == nil {
19779		return nil, fmt.Errorf("member Bucket is nil")
19780	}
19781	s.Bucket = aws.String(v)
19782	return &s, nil
19783}
19784
19785type GetBucketPolicyOutput struct {
19786	_ struct{} `type:"structure" payload:"Policy"`
19787
19788	// The bucket policy as a JSON document.
19789	Policy *string `type:"string"`
19790}
19791
19792// String returns the string representation.
19793//
19794// API parameter values that are decorated as "sensitive" in the API will not
19795// be included in the string output. The member name will be present, but the
19796// value will be replaced with "sensitive".
19797func (s GetBucketPolicyOutput) String() string {
19798	return awsutil.Prettify(s)
19799}
19800
19801// GoString returns the string representation.
19802//
19803// API parameter values that are decorated as "sensitive" in the API will not
19804// be included in the string output. The member name will be present, but the
19805// value will be replaced with "sensitive".
19806func (s GetBucketPolicyOutput) GoString() string {
19807	return s.String()
19808}
19809
19810// SetPolicy sets the Policy field's value.
19811func (s *GetBucketPolicyOutput) SetPolicy(v string) *GetBucketPolicyOutput {
19812	s.Policy = &v
19813	return s
19814}
19815
19816type GetBucketPolicyStatusInput struct {
19817	_ struct{} `locationName:"GetBucketPolicyStatusRequest" type:"structure"`
19818
19819	// The name of the Amazon S3 bucket whose policy status you want to retrieve.
19820	//
19821	// Bucket is a required field
19822	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19823
19824	// The account ID of the expected bucket owner. If the bucket is owned by a
19825	// different account, the request will fail with an HTTP 403 (Access Denied)
19826	// error.
19827	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19828}
19829
19830// String returns the string representation.
19831//
19832// API parameter values that are decorated as "sensitive" in the API will not
19833// be included in the string output. The member name will be present, but the
19834// value will be replaced with "sensitive".
19835func (s GetBucketPolicyStatusInput) String() string {
19836	return awsutil.Prettify(s)
19837}
19838
19839// GoString returns the string representation.
19840//
19841// API parameter values that are decorated as "sensitive" in the API will not
19842// be included in the string output. The member name will be present, but the
19843// value will be replaced with "sensitive".
19844func (s GetBucketPolicyStatusInput) GoString() string {
19845	return s.String()
19846}
19847
19848// Validate inspects the fields of the type to determine if they are valid.
19849func (s *GetBucketPolicyStatusInput) Validate() error {
19850	invalidParams := request.ErrInvalidParams{Context: "GetBucketPolicyStatusInput"}
19851	if s.Bucket == nil {
19852		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19853	}
19854	if s.Bucket != nil && len(*s.Bucket) < 1 {
19855		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19856	}
19857
19858	if invalidParams.Len() > 0 {
19859		return invalidParams
19860	}
19861	return nil
19862}
19863
19864// SetBucket sets the Bucket field's value.
19865func (s *GetBucketPolicyStatusInput) SetBucket(v string) *GetBucketPolicyStatusInput {
19866	s.Bucket = &v
19867	return s
19868}
19869
19870func (s *GetBucketPolicyStatusInput) getBucket() (v string) {
19871	if s.Bucket == nil {
19872		return v
19873	}
19874	return *s.Bucket
19875}
19876
19877// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
19878func (s *GetBucketPolicyStatusInput) SetExpectedBucketOwner(v string) *GetBucketPolicyStatusInput {
19879	s.ExpectedBucketOwner = &v
19880	return s
19881}
19882
19883func (s *GetBucketPolicyStatusInput) getEndpointARN() (arn.Resource, error) {
19884	if s.Bucket == nil {
19885		return nil, fmt.Errorf("member Bucket is nil")
19886	}
19887	return parseEndpointARN(*s.Bucket)
19888}
19889
19890func (s *GetBucketPolicyStatusInput) hasEndpointARN() bool {
19891	if s.Bucket == nil {
19892		return false
19893	}
19894	return arn.IsARN(*s.Bucket)
19895}
19896
19897// updateArnableField updates the value of the input field that
19898// takes an ARN as an input. This method is useful to backfill
19899// the parsed resource name from ARN into the input member.
19900// It returns a pointer to a modified copy of input and an error.
19901// Note that original input is not modified.
19902func (s GetBucketPolicyStatusInput) updateArnableField(v string) (interface{}, error) {
19903	if s.Bucket == nil {
19904		return nil, fmt.Errorf("member Bucket is nil")
19905	}
19906	s.Bucket = aws.String(v)
19907	return &s, nil
19908}
19909
19910type GetBucketPolicyStatusOutput struct {
19911	_ struct{} `type:"structure" payload:"PolicyStatus"`
19912
19913	// The policy status for the specified bucket.
19914	PolicyStatus *PolicyStatus `type:"structure"`
19915}
19916
19917// String returns the string representation.
19918//
19919// API parameter values that are decorated as "sensitive" in the API will not
19920// be included in the string output. The member name will be present, but the
19921// value will be replaced with "sensitive".
19922func (s GetBucketPolicyStatusOutput) String() string {
19923	return awsutil.Prettify(s)
19924}
19925
19926// GoString returns the string representation.
19927//
19928// API parameter values that are decorated as "sensitive" in the API will not
19929// be included in the string output. The member name will be present, but the
19930// value will be replaced with "sensitive".
19931func (s GetBucketPolicyStatusOutput) GoString() string {
19932	return s.String()
19933}
19934
19935// SetPolicyStatus sets the PolicyStatus field's value.
19936func (s *GetBucketPolicyStatusOutput) SetPolicyStatus(v *PolicyStatus) *GetBucketPolicyStatusOutput {
19937	s.PolicyStatus = v
19938	return s
19939}
19940
19941type GetBucketReplicationInput struct {
19942	_ struct{} `locationName:"GetBucketReplicationRequest" type:"structure"`
19943
19944	// The bucket name for which to get the replication information.
19945	//
19946	// Bucket is a required field
19947	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
19948
19949	// The account ID of the expected bucket owner. If the bucket is owned by a
19950	// different account, the request will fail with an HTTP 403 (Access Denied)
19951	// error.
19952	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
19953}
19954
19955// String returns the string representation.
19956//
19957// API parameter values that are decorated as "sensitive" in the API will not
19958// be included in the string output. The member name will be present, but the
19959// value will be replaced with "sensitive".
19960func (s GetBucketReplicationInput) String() string {
19961	return awsutil.Prettify(s)
19962}
19963
19964// GoString returns the string representation.
19965//
19966// API parameter values that are decorated as "sensitive" in the API will not
19967// be included in the string output. The member name will be present, but the
19968// value will be replaced with "sensitive".
19969func (s GetBucketReplicationInput) GoString() string {
19970	return s.String()
19971}
19972
19973// Validate inspects the fields of the type to determine if they are valid.
19974func (s *GetBucketReplicationInput) Validate() error {
19975	invalidParams := request.ErrInvalidParams{Context: "GetBucketReplicationInput"}
19976	if s.Bucket == nil {
19977		invalidParams.Add(request.NewErrParamRequired("Bucket"))
19978	}
19979	if s.Bucket != nil && len(*s.Bucket) < 1 {
19980		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
19981	}
19982
19983	if invalidParams.Len() > 0 {
19984		return invalidParams
19985	}
19986	return nil
19987}
19988
19989// SetBucket sets the Bucket field's value.
19990func (s *GetBucketReplicationInput) SetBucket(v string) *GetBucketReplicationInput {
19991	s.Bucket = &v
19992	return s
19993}
19994
19995func (s *GetBucketReplicationInput) getBucket() (v string) {
19996	if s.Bucket == nil {
19997		return v
19998	}
19999	return *s.Bucket
20000}
20001
20002// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20003func (s *GetBucketReplicationInput) SetExpectedBucketOwner(v string) *GetBucketReplicationInput {
20004	s.ExpectedBucketOwner = &v
20005	return s
20006}
20007
20008func (s *GetBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
20009	if s.Bucket == nil {
20010		return nil, fmt.Errorf("member Bucket is nil")
20011	}
20012	return parseEndpointARN(*s.Bucket)
20013}
20014
20015func (s *GetBucketReplicationInput) hasEndpointARN() bool {
20016	if s.Bucket == nil {
20017		return false
20018	}
20019	return arn.IsARN(*s.Bucket)
20020}
20021
20022// updateArnableField updates the value of the input field that
20023// takes an ARN as an input. This method is useful to backfill
20024// the parsed resource name from ARN into the input member.
20025// It returns a pointer to a modified copy of input and an error.
20026// Note that original input is not modified.
20027func (s GetBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
20028	if s.Bucket == nil {
20029		return nil, fmt.Errorf("member Bucket is nil")
20030	}
20031	s.Bucket = aws.String(v)
20032	return &s, nil
20033}
20034
20035type GetBucketReplicationOutput struct {
20036	_ struct{} `type:"structure" payload:"ReplicationConfiguration"`
20037
20038	// A container for replication rules. You can add up to 1,000 rules. The maximum
20039	// size of a replication configuration is 2 MB.
20040	ReplicationConfiguration *ReplicationConfiguration `type:"structure"`
20041}
20042
20043// String returns the string representation.
20044//
20045// API parameter values that are decorated as "sensitive" in the API will not
20046// be included in the string output. The member name will be present, but the
20047// value will be replaced with "sensitive".
20048func (s GetBucketReplicationOutput) String() string {
20049	return awsutil.Prettify(s)
20050}
20051
20052// GoString returns the string representation.
20053//
20054// API parameter values that are decorated as "sensitive" in the API will not
20055// be included in the string output. The member name will be present, but the
20056// value will be replaced with "sensitive".
20057func (s GetBucketReplicationOutput) GoString() string {
20058	return s.String()
20059}
20060
20061// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
20062func (s *GetBucketReplicationOutput) SetReplicationConfiguration(v *ReplicationConfiguration) *GetBucketReplicationOutput {
20063	s.ReplicationConfiguration = v
20064	return s
20065}
20066
20067type GetBucketRequestPaymentInput struct {
20068	_ struct{} `locationName:"GetBucketRequestPaymentRequest" type:"structure"`
20069
20070	// The name of the bucket for which to get the payment request configuration
20071	//
20072	// Bucket is a required field
20073	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20074
20075	// The account ID of the expected bucket owner. If the bucket is owned by a
20076	// different account, the request will fail with an HTTP 403 (Access Denied)
20077	// error.
20078	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20079}
20080
20081// String returns the string representation.
20082//
20083// API parameter values that are decorated as "sensitive" in the API will not
20084// be included in the string output. The member name will be present, but the
20085// value will be replaced with "sensitive".
20086func (s GetBucketRequestPaymentInput) String() string {
20087	return awsutil.Prettify(s)
20088}
20089
20090// GoString returns the string representation.
20091//
20092// API parameter values that are decorated as "sensitive" in the API will not
20093// be included in the string output. The member name will be present, but the
20094// value will be replaced with "sensitive".
20095func (s GetBucketRequestPaymentInput) GoString() string {
20096	return s.String()
20097}
20098
20099// Validate inspects the fields of the type to determine if they are valid.
20100func (s *GetBucketRequestPaymentInput) Validate() error {
20101	invalidParams := request.ErrInvalidParams{Context: "GetBucketRequestPaymentInput"}
20102	if s.Bucket == nil {
20103		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20104	}
20105	if s.Bucket != nil && len(*s.Bucket) < 1 {
20106		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20107	}
20108
20109	if invalidParams.Len() > 0 {
20110		return invalidParams
20111	}
20112	return nil
20113}
20114
20115// SetBucket sets the Bucket field's value.
20116func (s *GetBucketRequestPaymentInput) SetBucket(v string) *GetBucketRequestPaymentInput {
20117	s.Bucket = &v
20118	return s
20119}
20120
20121func (s *GetBucketRequestPaymentInput) getBucket() (v string) {
20122	if s.Bucket == nil {
20123		return v
20124	}
20125	return *s.Bucket
20126}
20127
20128// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20129func (s *GetBucketRequestPaymentInput) SetExpectedBucketOwner(v string) *GetBucketRequestPaymentInput {
20130	s.ExpectedBucketOwner = &v
20131	return s
20132}
20133
20134func (s *GetBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
20135	if s.Bucket == nil {
20136		return nil, fmt.Errorf("member Bucket is nil")
20137	}
20138	return parseEndpointARN(*s.Bucket)
20139}
20140
20141func (s *GetBucketRequestPaymentInput) hasEndpointARN() bool {
20142	if s.Bucket == nil {
20143		return false
20144	}
20145	return arn.IsARN(*s.Bucket)
20146}
20147
20148// updateArnableField updates the value of the input field that
20149// takes an ARN as an input. This method is useful to backfill
20150// the parsed resource name from ARN into the input member.
20151// It returns a pointer to a modified copy of input and an error.
20152// Note that original input is not modified.
20153func (s GetBucketRequestPaymentInput) updateArnableField(v string) (interface{}, error) {
20154	if s.Bucket == nil {
20155		return nil, fmt.Errorf("member Bucket is nil")
20156	}
20157	s.Bucket = aws.String(v)
20158	return &s, nil
20159}
20160
20161type GetBucketRequestPaymentOutput struct {
20162	_ struct{} `type:"structure"`
20163
20164	// Specifies who pays for the download and request fees.
20165	Payer *string `type:"string" enum:"Payer"`
20166}
20167
20168// String returns the string representation.
20169//
20170// API parameter values that are decorated as "sensitive" in the API will not
20171// be included in the string output. The member name will be present, but the
20172// value will be replaced with "sensitive".
20173func (s GetBucketRequestPaymentOutput) String() string {
20174	return awsutil.Prettify(s)
20175}
20176
20177// GoString returns the string representation.
20178//
20179// API parameter values that are decorated as "sensitive" in the API will not
20180// be included in the string output. The member name will be present, but the
20181// value will be replaced with "sensitive".
20182func (s GetBucketRequestPaymentOutput) GoString() string {
20183	return s.String()
20184}
20185
20186// SetPayer sets the Payer field's value.
20187func (s *GetBucketRequestPaymentOutput) SetPayer(v string) *GetBucketRequestPaymentOutput {
20188	s.Payer = &v
20189	return s
20190}
20191
20192type GetBucketTaggingInput struct {
20193	_ struct{} `locationName:"GetBucketTaggingRequest" type:"structure"`
20194
20195	// The name of the bucket for which to get the tagging information.
20196	//
20197	// Bucket is a required field
20198	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20199
20200	// The account ID of the expected bucket owner. If the bucket is owned by a
20201	// different account, the request will fail with an HTTP 403 (Access Denied)
20202	// error.
20203	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20204}
20205
20206// String returns the string representation.
20207//
20208// API parameter values that are decorated as "sensitive" in the API will not
20209// be included in the string output. The member name will be present, but the
20210// value will be replaced with "sensitive".
20211func (s GetBucketTaggingInput) String() string {
20212	return awsutil.Prettify(s)
20213}
20214
20215// GoString returns the string representation.
20216//
20217// API parameter values that are decorated as "sensitive" in the API will not
20218// be included in the string output. The member name will be present, but the
20219// value will be replaced with "sensitive".
20220func (s GetBucketTaggingInput) GoString() string {
20221	return s.String()
20222}
20223
20224// Validate inspects the fields of the type to determine if they are valid.
20225func (s *GetBucketTaggingInput) Validate() error {
20226	invalidParams := request.ErrInvalidParams{Context: "GetBucketTaggingInput"}
20227	if s.Bucket == nil {
20228		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20229	}
20230	if s.Bucket != nil && len(*s.Bucket) < 1 {
20231		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20232	}
20233
20234	if invalidParams.Len() > 0 {
20235		return invalidParams
20236	}
20237	return nil
20238}
20239
20240// SetBucket sets the Bucket field's value.
20241func (s *GetBucketTaggingInput) SetBucket(v string) *GetBucketTaggingInput {
20242	s.Bucket = &v
20243	return s
20244}
20245
20246func (s *GetBucketTaggingInput) getBucket() (v string) {
20247	if s.Bucket == nil {
20248		return v
20249	}
20250	return *s.Bucket
20251}
20252
20253// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20254func (s *GetBucketTaggingInput) SetExpectedBucketOwner(v string) *GetBucketTaggingInput {
20255	s.ExpectedBucketOwner = &v
20256	return s
20257}
20258
20259func (s *GetBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
20260	if s.Bucket == nil {
20261		return nil, fmt.Errorf("member Bucket is nil")
20262	}
20263	return parseEndpointARN(*s.Bucket)
20264}
20265
20266func (s *GetBucketTaggingInput) hasEndpointARN() bool {
20267	if s.Bucket == nil {
20268		return false
20269	}
20270	return arn.IsARN(*s.Bucket)
20271}
20272
20273// updateArnableField updates the value of the input field that
20274// takes an ARN as an input. This method is useful to backfill
20275// the parsed resource name from ARN into the input member.
20276// It returns a pointer to a modified copy of input and an error.
20277// Note that original input is not modified.
20278func (s GetBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
20279	if s.Bucket == nil {
20280		return nil, fmt.Errorf("member Bucket is nil")
20281	}
20282	s.Bucket = aws.String(v)
20283	return &s, nil
20284}
20285
20286type GetBucketTaggingOutput struct {
20287	_ struct{} `type:"structure"`
20288
20289	// Contains the tag set.
20290	//
20291	// TagSet is a required field
20292	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
20293}
20294
20295// String returns the string representation.
20296//
20297// API parameter values that are decorated as "sensitive" in the API will not
20298// be included in the string output. The member name will be present, but the
20299// value will be replaced with "sensitive".
20300func (s GetBucketTaggingOutput) String() string {
20301	return awsutil.Prettify(s)
20302}
20303
20304// GoString returns the string representation.
20305//
20306// API parameter values that are decorated as "sensitive" in the API will not
20307// be included in the string output. The member name will be present, but the
20308// value will be replaced with "sensitive".
20309func (s GetBucketTaggingOutput) GoString() string {
20310	return s.String()
20311}
20312
20313// SetTagSet sets the TagSet field's value.
20314func (s *GetBucketTaggingOutput) SetTagSet(v []*Tag) *GetBucketTaggingOutput {
20315	s.TagSet = v
20316	return s
20317}
20318
20319type GetBucketVersioningInput struct {
20320	_ struct{} `locationName:"GetBucketVersioningRequest" type:"structure"`
20321
20322	// The name of the bucket for which to get the versioning information.
20323	//
20324	// Bucket is a required field
20325	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20326
20327	// The account ID of the expected bucket owner. If the bucket is owned by a
20328	// different account, the request will fail with an HTTP 403 (Access Denied)
20329	// error.
20330	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20331}
20332
20333// String returns the string representation.
20334//
20335// API parameter values that are decorated as "sensitive" in the API will not
20336// be included in the string output. The member name will be present, but the
20337// value will be replaced with "sensitive".
20338func (s GetBucketVersioningInput) String() string {
20339	return awsutil.Prettify(s)
20340}
20341
20342// GoString returns the string representation.
20343//
20344// API parameter values that are decorated as "sensitive" in the API will not
20345// be included in the string output. The member name will be present, but the
20346// value will be replaced with "sensitive".
20347func (s GetBucketVersioningInput) GoString() string {
20348	return s.String()
20349}
20350
20351// Validate inspects the fields of the type to determine if they are valid.
20352func (s *GetBucketVersioningInput) Validate() error {
20353	invalidParams := request.ErrInvalidParams{Context: "GetBucketVersioningInput"}
20354	if s.Bucket == nil {
20355		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20356	}
20357	if s.Bucket != nil && len(*s.Bucket) < 1 {
20358		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20359	}
20360
20361	if invalidParams.Len() > 0 {
20362		return invalidParams
20363	}
20364	return nil
20365}
20366
20367// SetBucket sets the Bucket field's value.
20368func (s *GetBucketVersioningInput) SetBucket(v string) *GetBucketVersioningInput {
20369	s.Bucket = &v
20370	return s
20371}
20372
20373func (s *GetBucketVersioningInput) getBucket() (v string) {
20374	if s.Bucket == nil {
20375		return v
20376	}
20377	return *s.Bucket
20378}
20379
20380// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20381func (s *GetBucketVersioningInput) SetExpectedBucketOwner(v string) *GetBucketVersioningInput {
20382	s.ExpectedBucketOwner = &v
20383	return s
20384}
20385
20386func (s *GetBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
20387	if s.Bucket == nil {
20388		return nil, fmt.Errorf("member Bucket is nil")
20389	}
20390	return parseEndpointARN(*s.Bucket)
20391}
20392
20393func (s *GetBucketVersioningInput) hasEndpointARN() bool {
20394	if s.Bucket == nil {
20395		return false
20396	}
20397	return arn.IsARN(*s.Bucket)
20398}
20399
20400// updateArnableField updates the value of the input field that
20401// takes an ARN as an input. This method is useful to backfill
20402// the parsed resource name from ARN into the input member.
20403// It returns a pointer to a modified copy of input and an error.
20404// Note that original input is not modified.
20405func (s GetBucketVersioningInput) updateArnableField(v string) (interface{}, error) {
20406	if s.Bucket == nil {
20407		return nil, fmt.Errorf("member Bucket is nil")
20408	}
20409	s.Bucket = aws.String(v)
20410	return &s, nil
20411}
20412
20413type GetBucketVersioningOutput struct {
20414	_ struct{} `type:"structure"`
20415
20416	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
20417	// This element is only returned if the bucket has been configured with MFA
20418	// delete. If the bucket has never been so configured, this element is not returned.
20419	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADeleteStatus"`
20420
20421	// The versioning state of the bucket.
20422	Status *string `type:"string" enum:"BucketVersioningStatus"`
20423}
20424
20425// String returns the string representation.
20426//
20427// API parameter values that are decorated as "sensitive" in the API will not
20428// be included in the string output. The member name will be present, but the
20429// value will be replaced with "sensitive".
20430func (s GetBucketVersioningOutput) String() string {
20431	return awsutil.Prettify(s)
20432}
20433
20434// GoString returns the string representation.
20435//
20436// API parameter values that are decorated as "sensitive" in the API will not
20437// be included in the string output. The member name will be present, but the
20438// value will be replaced with "sensitive".
20439func (s GetBucketVersioningOutput) GoString() string {
20440	return s.String()
20441}
20442
20443// SetMFADelete sets the MFADelete field's value.
20444func (s *GetBucketVersioningOutput) SetMFADelete(v string) *GetBucketVersioningOutput {
20445	s.MFADelete = &v
20446	return s
20447}
20448
20449// SetStatus sets the Status field's value.
20450func (s *GetBucketVersioningOutput) SetStatus(v string) *GetBucketVersioningOutput {
20451	s.Status = &v
20452	return s
20453}
20454
20455type GetBucketWebsiteInput struct {
20456	_ struct{} `locationName:"GetBucketWebsiteRequest" type:"structure"`
20457
20458	// The bucket name for which to get the website configuration.
20459	//
20460	// Bucket is a required field
20461	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20462
20463	// The account ID of the expected bucket owner. If the bucket is owned by a
20464	// different account, the request will fail with an HTTP 403 (Access Denied)
20465	// error.
20466	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20467}
20468
20469// String returns the string representation.
20470//
20471// API parameter values that are decorated as "sensitive" in the API will not
20472// be included in the string output. The member name will be present, but the
20473// value will be replaced with "sensitive".
20474func (s GetBucketWebsiteInput) String() string {
20475	return awsutil.Prettify(s)
20476}
20477
20478// GoString returns the string representation.
20479//
20480// API parameter values that are decorated as "sensitive" in the API will not
20481// be included in the string output. The member name will be present, but the
20482// value will be replaced with "sensitive".
20483func (s GetBucketWebsiteInput) GoString() string {
20484	return s.String()
20485}
20486
20487// Validate inspects the fields of the type to determine if they are valid.
20488func (s *GetBucketWebsiteInput) Validate() error {
20489	invalidParams := request.ErrInvalidParams{Context: "GetBucketWebsiteInput"}
20490	if s.Bucket == nil {
20491		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20492	}
20493	if s.Bucket != nil && len(*s.Bucket) < 1 {
20494		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20495	}
20496
20497	if invalidParams.Len() > 0 {
20498		return invalidParams
20499	}
20500	return nil
20501}
20502
20503// SetBucket sets the Bucket field's value.
20504func (s *GetBucketWebsiteInput) SetBucket(v string) *GetBucketWebsiteInput {
20505	s.Bucket = &v
20506	return s
20507}
20508
20509func (s *GetBucketWebsiteInput) getBucket() (v string) {
20510	if s.Bucket == nil {
20511		return v
20512	}
20513	return *s.Bucket
20514}
20515
20516// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20517func (s *GetBucketWebsiteInput) SetExpectedBucketOwner(v string) *GetBucketWebsiteInput {
20518	s.ExpectedBucketOwner = &v
20519	return s
20520}
20521
20522func (s *GetBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
20523	if s.Bucket == nil {
20524		return nil, fmt.Errorf("member Bucket is nil")
20525	}
20526	return parseEndpointARN(*s.Bucket)
20527}
20528
20529func (s *GetBucketWebsiteInput) hasEndpointARN() bool {
20530	if s.Bucket == nil {
20531		return false
20532	}
20533	return arn.IsARN(*s.Bucket)
20534}
20535
20536// updateArnableField updates the value of the input field that
20537// takes an ARN as an input. This method is useful to backfill
20538// the parsed resource name from ARN into the input member.
20539// It returns a pointer to a modified copy of input and an error.
20540// Note that original input is not modified.
20541func (s GetBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
20542	if s.Bucket == nil {
20543		return nil, fmt.Errorf("member Bucket is nil")
20544	}
20545	s.Bucket = aws.String(v)
20546	return &s, nil
20547}
20548
20549type GetBucketWebsiteOutput struct {
20550	_ struct{} `type:"structure"`
20551
20552	// The object key name of the website error document to use for 4XX class errors.
20553	ErrorDocument *ErrorDocument `type:"structure"`
20554
20555	// The name of the index document for the website (for example index.html).
20556	IndexDocument *IndexDocument `type:"structure"`
20557
20558	// Specifies the redirect behavior of all requests to a website endpoint of
20559	// an Amazon S3 bucket.
20560	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
20561
20562	// Rules that define when a redirect is applied and the redirect behavior.
20563	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
20564}
20565
20566// String returns the string representation.
20567//
20568// API parameter values that are decorated as "sensitive" in the API will not
20569// be included in the string output. The member name will be present, but the
20570// value will be replaced with "sensitive".
20571func (s GetBucketWebsiteOutput) String() string {
20572	return awsutil.Prettify(s)
20573}
20574
20575// GoString returns the string representation.
20576//
20577// API parameter values that are decorated as "sensitive" in the API will not
20578// be included in the string output. The member name will be present, but the
20579// value will be replaced with "sensitive".
20580func (s GetBucketWebsiteOutput) GoString() string {
20581	return s.String()
20582}
20583
20584// SetErrorDocument sets the ErrorDocument field's value.
20585func (s *GetBucketWebsiteOutput) SetErrorDocument(v *ErrorDocument) *GetBucketWebsiteOutput {
20586	s.ErrorDocument = v
20587	return s
20588}
20589
20590// SetIndexDocument sets the IndexDocument field's value.
20591func (s *GetBucketWebsiteOutput) SetIndexDocument(v *IndexDocument) *GetBucketWebsiteOutput {
20592	s.IndexDocument = v
20593	return s
20594}
20595
20596// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
20597func (s *GetBucketWebsiteOutput) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *GetBucketWebsiteOutput {
20598	s.RedirectAllRequestsTo = v
20599	return s
20600}
20601
20602// SetRoutingRules sets the RoutingRules field's value.
20603func (s *GetBucketWebsiteOutput) SetRoutingRules(v []*RoutingRule) *GetBucketWebsiteOutput {
20604	s.RoutingRules = v
20605	return s
20606}
20607
20608type GetObjectAclInput struct {
20609	_ struct{} `locationName:"GetObjectAclRequest" type:"structure"`
20610
20611	// The bucket name that contains the object for which to get the ACL information.
20612	//
20613	// When using this action with an access point, you must direct requests to
20614	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20615	// When using this action with an access point through the Amazon Web Services
20616	// SDKs, you provide the access point ARN in place of the bucket name. For more
20617	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
20618	// in the Amazon S3 User Guide.
20619	//
20620	// Bucket is a required field
20621	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20622
20623	// The account ID of the expected bucket owner. If the bucket is owned by a
20624	// different account, the request will fail with an HTTP 403 (Access Denied)
20625	// error.
20626	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20627
20628	// The key of the object for which to get the ACL information.
20629	//
20630	// Key is a required field
20631	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20632
20633	// Confirms that the requester knows that they will be charged for the request.
20634	// Bucket owners need not specify this parameter in their requests. For information
20635	// about downloading objects from requester pays buckets, see Downloading Objects
20636	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
20637	// in the Amazon S3 User Guide.
20638	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20639
20640	// VersionId used to reference a specific version of the object.
20641	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20642}
20643
20644// String returns the string representation.
20645//
20646// API parameter values that are decorated as "sensitive" in the API will not
20647// be included in the string output. The member name will be present, but the
20648// value will be replaced with "sensitive".
20649func (s GetObjectAclInput) String() string {
20650	return awsutil.Prettify(s)
20651}
20652
20653// GoString returns the string representation.
20654//
20655// API parameter values that are decorated as "sensitive" in the API will not
20656// be included in the string output. The member name will be present, but the
20657// value will be replaced with "sensitive".
20658func (s GetObjectAclInput) GoString() string {
20659	return s.String()
20660}
20661
20662// Validate inspects the fields of the type to determine if they are valid.
20663func (s *GetObjectAclInput) Validate() error {
20664	invalidParams := request.ErrInvalidParams{Context: "GetObjectAclInput"}
20665	if s.Bucket == nil {
20666		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20667	}
20668	if s.Bucket != nil && len(*s.Bucket) < 1 {
20669		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20670	}
20671	if s.Key == nil {
20672		invalidParams.Add(request.NewErrParamRequired("Key"))
20673	}
20674	if s.Key != nil && len(*s.Key) < 1 {
20675		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20676	}
20677
20678	if invalidParams.Len() > 0 {
20679		return invalidParams
20680	}
20681	return nil
20682}
20683
20684// SetBucket sets the Bucket field's value.
20685func (s *GetObjectAclInput) SetBucket(v string) *GetObjectAclInput {
20686	s.Bucket = &v
20687	return s
20688}
20689
20690func (s *GetObjectAclInput) getBucket() (v string) {
20691	if s.Bucket == nil {
20692		return v
20693	}
20694	return *s.Bucket
20695}
20696
20697// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20698func (s *GetObjectAclInput) SetExpectedBucketOwner(v string) *GetObjectAclInput {
20699	s.ExpectedBucketOwner = &v
20700	return s
20701}
20702
20703// SetKey sets the Key field's value.
20704func (s *GetObjectAclInput) SetKey(v string) *GetObjectAclInput {
20705	s.Key = &v
20706	return s
20707}
20708
20709// SetRequestPayer sets the RequestPayer field's value.
20710func (s *GetObjectAclInput) SetRequestPayer(v string) *GetObjectAclInput {
20711	s.RequestPayer = &v
20712	return s
20713}
20714
20715// SetVersionId sets the VersionId field's value.
20716func (s *GetObjectAclInput) SetVersionId(v string) *GetObjectAclInput {
20717	s.VersionId = &v
20718	return s
20719}
20720
20721func (s *GetObjectAclInput) getEndpointARN() (arn.Resource, error) {
20722	if s.Bucket == nil {
20723		return nil, fmt.Errorf("member Bucket is nil")
20724	}
20725	return parseEndpointARN(*s.Bucket)
20726}
20727
20728func (s *GetObjectAclInput) hasEndpointARN() bool {
20729	if s.Bucket == nil {
20730		return false
20731	}
20732	return arn.IsARN(*s.Bucket)
20733}
20734
20735// updateArnableField updates the value of the input field that
20736// takes an ARN as an input. This method is useful to backfill
20737// the parsed resource name from ARN into the input member.
20738// It returns a pointer to a modified copy of input and an error.
20739// Note that original input is not modified.
20740func (s GetObjectAclInput) updateArnableField(v string) (interface{}, error) {
20741	if s.Bucket == nil {
20742		return nil, fmt.Errorf("member Bucket is nil")
20743	}
20744	s.Bucket = aws.String(v)
20745	return &s, nil
20746}
20747
20748type GetObjectAclOutput struct {
20749	_ struct{} `type:"structure"`
20750
20751	// A list of grants.
20752	Grants []*Grant `locationName:"AccessControlList" locationNameList:"Grant" type:"list"`
20753
20754	// Container for the bucket owner's display name and ID.
20755	Owner *Owner `type:"structure"`
20756
20757	// If present, indicates that the requester was successfully charged for the
20758	// request.
20759	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
20760}
20761
20762// String returns the string representation.
20763//
20764// API parameter values that are decorated as "sensitive" in the API will not
20765// be included in the string output. The member name will be present, but the
20766// value will be replaced with "sensitive".
20767func (s GetObjectAclOutput) String() string {
20768	return awsutil.Prettify(s)
20769}
20770
20771// GoString returns the string representation.
20772//
20773// API parameter values that are decorated as "sensitive" in the API will not
20774// be included in the string output. The member name will be present, but the
20775// value will be replaced with "sensitive".
20776func (s GetObjectAclOutput) GoString() string {
20777	return s.String()
20778}
20779
20780// SetGrants sets the Grants field's value.
20781func (s *GetObjectAclOutput) SetGrants(v []*Grant) *GetObjectAclOutput {
20782	s.Grants = v
20783	return s
20784}
20785
20786// SetOwner sets the Owner field's value.
20787func (s *GetObjectAclOutput) SetOwner(v *Owner) *GetObjectAclOutput {
20788	s.Owner = v
20789	return s
20790}
20791
20792// SetRequestCharged sets the RequestCharged field's value.
20793func (s *GetObjectAclOutput) SetRequestCharged(v string) *GetObjectAclOutput {
20794	s.RequestCharged = &v
20795	return s
20796}
20797
20798type GetObjectInput struct {
20799	_ struct{} `locationName:"GetObjectRequest" type:"structure"`
20800
20801	// The bucket name containing the object.
20802	//
20803	// When using this action with an access point, you must direct requests to
20804	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
20805	// When using this action with an access point through the Amazon Web Services
20806	// SDKs, you provide the access point ARN in place of the bucket name. For more
20807	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
20808	// in the Amazon S3 User Guide.
20809	//
20810	// When using an Object Lambda access point the hostname takes the form AccessPointName-AccountId.s3-object-lambda.Region.amazonaws.com.
20811	//
20812	// When using this action with Amazon S3 on Outposts, you must direct requests
20813	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
20814	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
20815	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
20816	// you provide the Outposts bucket ARN in place of the bucket name. For more
20817	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
20818	// in the Amazon S3 User Guide.
20819	//
20820	// Bucket is a required field
20821	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
20822
20823	// The account ID of the expected bucket owner. If the bucket is owned by a
20824	// different account, the request will fail with an HTTP 403 (Access Denied)
20825	// error.
20826	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
20827
20828	// Return the object only if its entity tag (ETag) is the same as the one specified,
20829	// otherwise return a 412 (precondition failed).
20830	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
20831
20832	// Return the object only if it has been modified since the specified time,
20833	// otherwise return a 304 (not modified).
20834	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
20835
20836	// Return the object only if its entity tag (ETag) is different from the one
20837	// specified, otherwise return a 304 (not modified).
20838	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
20839
20840	// Return the object only if it has not been modified since the specified time,
20841	// otherwise return a 412 (precondition failed).
20842	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
20843
20844	// Key of the object to get.
20845	//
20846	// Key is a required field
20847	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
20848
20849	// Part number of the object being read. This is a positive integer between
20850	// 1 and 10,000. Effectively performs a 'ranged' GET request for the part specified.
20851	// Useful for downloading just a part of an object.
20852	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
20853
20854	// Downloads the specified range bytes of an object. For more information about
20855	// the HTTP Range header, see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
20856	// (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
20857	//
20858	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
20859	Range *string `location:"header" locationName:"Range" type:"string"`
20860
20861	// Confirms that the requester knows that they will be charged for the request.
20862	// Bucket owners need not specify this parameter in their requests. For information
20863	// about downloading objects from requester pays buckets, see Downloading Objects
20864	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
20865	// in the Amazon S3 User Guide.
20866	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
20867
20868	// Sets the Cache-Control header of the response.
20869	ResponseCacheControl *string `location:"querystring" locationName:"response-cache-control" type:"string"`
20870
20871	// Sets the Content-Disposition header of the response
20872	ResponseContentDisposition *string `location:"querystring" locationName:"response-content-disposition" type:"string"`
20873
20874	// Sets the Content-Encoding header of the response.
20875	ResponseContentEncoding *string `location:"querystring" locationName:"response-content-encoding" type:"string"`
20876
20877	// Sets the Content-Language header of the response.
20878	ResponseContentLanguage *string `location:"querystring" locationName:"response-content-language" type:"string"`
20879
20880	// Sets the Content-Type header of the response.
20881	ResponseContentType *string `location:"querystring" locationName:"response-content-type" type:"string"`
20882
20883	// Sets the Expires header of the response.
20884	ResponseExpires *time.Time `location:"querystring" locationName:"response-expires" type:"timestamp" timestampFormat:"rfc822"`
20885
20886	// Specifies the algorithm to use to when decrypting the object (for example,
20887	// AES256).
20888	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
20889
20890	// Specifies the customer-provided encryption key for Amazon S3 used to encrypt
20891	// the data. This value is used to decrypt the object when recovering it and
20892	// must match the one used when storing the data. The key must be appropriate
20893	// for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
20894	// header.
20895	//
20896	// SSECustomerKey is a sensitive parameter and its value will be
20897	// replaced with "sensitive" in string returned by GetObjectInput's
20898	// String and GoString methods.
20899	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
20900
20901	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
20902	// Amazon S3 uses this header for a message integrity check to ensure that the
20903	// encryption key was transmitted without error.
20904	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
20905
20906	// VersionId used to reference a specific version of the object.
20907	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
20908}
20909
20910// String returns the string representation.
20911//
20912// API parameter values that are decorated as "sensitive" in the API will not
20913// be included in the string output. The member name will be present, but the
20914// value will be replaced with "sensitive".
20915func (s GetObjectInput) String() string {
20916	return awsutil.Prettify(s)
20917}
20918
20919// GoString returns the string representation.
20920//
20921// API parameter values that are decorated as "sensitive" in the API will not
20922// be included in the string output. The member name will be present, but the
20923// value will be replaced with "sensitive".
20924func (s GetObjectInput) GoString() string {
20925	return s.String()
20926}
20927
20928// Validate inspects the fields of the type to determine if they are valid.
20929func (s *GetObjectInput) Validate() error {
20930	invalidParams := request.ErrInvalidParams{Context: "GetObjectInput"}
20931	if s.Bucket == nil {
20932		invalidParams.Add(request.NewErrParamRequired("Bucket"))
20933	}
20934	if s.Bucket != nil && len(*s.Bucket) < 1 {
20935		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
20936	}
20937	if s.Key == nil {
20938		invalidParams.Add(request.NewErrParamRequired("Key"))
20939	}
20940	if s.Key != nil && len(*s.Key) < 1 {
20941		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
20942	}
20943
20944	if invalidParams.Len() > 0 {
20945		return invalidParams
20946	}
20947	return nil
20948}
20949
20950// SetBucket sets the Bucket field's value.
20951func (s *GetObjectInput) SetBucket(v string) *GetObjectInput {
20952	s.Bucket = &v
20953	return s
20954}
20955
20956func (s *GetObjectInput) getBucket() (v string) {
20957	if s.Bucket == nil {
20958		return v
20959	}
20960	return *s.Bucket
20961}
20962
20963// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
20964func (s *GetObjectInput) SetExpectedBucketOwner(v string) *GetObjectInput {
20965	s.ExpectedBucketOwner = &v
20966	return s
20967}
20968
20969// SetIfMatch sets the IfMatch field's value.
20970func (s *GetObjectInput) SetIfMatch(v string) *GetObjectInput {
20971	s.IfMatch = &v
20972	return s
20973}
20974
20975// SetIfModifiedSince sets the IfModifiedSince field's value.
20976func (s *GetObjectInput) SetIfModifiedSince(v time.Time) *GetObjectInput {
20977	s.IfModifiedSince = &v
20978	return s
20979}
20980
20981// SetIfNoneMatch sets the IfNoneMatch field's value.
20982func (s *GetObjectInput) SetIfNoneMatch(v string) *GetObjectInput {
20983	s.IfNoneMatch = &v
20984	return s
20985}
20986
20987// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
20988func (s *GetObjectInput) SetIfUnmodifiedSince(v time.Time) *GetObjectInput {
20989	s.IfUnmodifiedSince = &v
20990	return s
20991}
20992
20993// SetKey sets the Key field's value.
20994func (s *GetObjectInput) SetKey(v string) *GetObjectInput {
20995	s.Key = &v
20996	return s
20997}
20998
20999// SetPartNumber sets the PartNumber field's value.
21000func (s *GetObjectInput) SetPartNumber(v int64) *GetObjectInput {
21001	s.PartNumber = &v
21002	return s
21003}
21004
21005// SetRange sets the Range field's value.
21006func (s *GetObjectInput) SetRange(v string) *GetObjectInput {
21007	s.Range = &v
21008	return s
21009}
21010
21011// SetRequestPayer sets the RequestPayer field's value.
21012func (s *GetObjectInput) SetRequestPayer(v string) *GetObjectInput {
21013	s.RequestPayer = &v
21014	return s
21015}
21016
21017// SetResponseCacheControl sets the ResponseCacheControl field's value.
21018func (s *GetObjectInput) SetResponseCacheControl(v string) *GetObjectInput {
21019	s.ResponseCacheControl = &v
21020	return s
21021}
21022
21023// SetResponseContentDisposition sets the ResponseContentDisposition field's value.
21024func (s *GetObjectInput) SetResponseContentDisposition(v string) *GetObjectInput {
21025	s.ResponseContentDisposition = &v
21026	return s
21027}
21028
21029// SetResponseContentEncoding sets the ResponseContentEncoding field's value.
21030func (s *GetObjectInput) SetResponseContentEncoding(v string) *GetObjectInput {
21031	s.ResponseContentEncoding = &v
21032	return s
21033}
21034
21035// SetResponseContentLanguage sets the ResponseContentLanguage field's value.
21036func (s *GetObjectInput) SetResponseContentLanguage(v string) *GetObjectInput {
21037	s.ResponseContentLanguage = &v
21038	return s
21039}
21040
21041// SetResponseContentType sets the ResponseContentType field's value.
21042func (s *GetObjectInput) SetResponseContentType(v string) *GetObjectInput {
21043	s.ResponseContentType = &v
21044	return s
21045}
21046
21047// SetResponseExpires sets the ResponseExpires field's value.
21048func (s *GetObjectInput) SetResponseExpires(v time.Time) *GetObjectInput {
21049	s.ResponseExpires = &v
21050	return s
21051}
21052
21053// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21054func (s *GetObjectInput) SetSSECustomerAlgorithm(v string) *GetObjectInput {
21055	s.SSECustomerAlgorithm = &v
21056	return s
21057}
21058
21059// SetSSECustomerKey sets the SSECustomerKey field's value.
21060func (s *GetObjectInput) SetSSECustomerKey(v string) *GetObjectInput {
21061	s.SSECustomerKey = &v
21062	return s
21063}
21064
21065func (s *GetObjectInput) getSSECustomerKey() (v string) {
21066	if s.SSECustomerKey == nil {
21067		return v
21068	}
21069	return *s.SSECustomerKey
21070}
21071
21072// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21073func (s *GetObjectInput) SetSSECustomerKeyMD5(v string) *GetObjectInput {
21074	s.SSECustomerKeyMD5 = &v
21075	return s
21076}
21077
21078// SetVersionId sets the VersionId field's value.
21079func (s *GetObjectInput) SetVersionId(v string) *GetObjectInput {
21080	s.VersionId = &v
21081	return s
21082}
21083
21084func (s *GetObjectInput) getEndpointARN() (arn.Resource, error) {
21085	if s.Bucket == nil {
21086		return nil, fmt.Errorf("member Bucket is nil")
21087	}
21088	return parseEndpointARN(*s.Bucket)
21089}
21090
21091func (s *GetObjectInput) hasEndpointARN() bool {
21092	if s.Bucket == nil {
21093		return false
21094	}
21095	return arn.IsARN(*s.Bucket)
21096}
21097
21098// updateArnableField updates the value of the input field that
21099// takes an ARN as an input. This method is useful to backfill
21100// the parsed resource name from ARN into the input member.
21101// It returns a pointer to a modified copy of input and an error.
21102// Note that original input is not modified.
21103func (s GetObjectInput) updateArnableField(v string) (interface{}, error) {
21104	if s.Bucket == nil {
21105		return nil, fmt.Errorf("member Bucket is nil")
21106	}
21107	s.Bucket = aws.String(v)
21108	return &s, nil
21109}
21110
21111type GetObjectLegalHoldInput struct {
21112	_ struct{} `locationName:"GetObjectLegalHoldRequest" type:"structure"`
21113
21114	// The bucket name containing the object whose Legal Hold status you want to
21115	// retrieve.
21116	//
21117	// When using this action with an access point, you must direct requests to
21118	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21119	// When using this action with an access point through the Amazon Web Services
21120	// SDKs, you provide the access point ARN in place of the bucket name. For more
21121	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21122	// in the Amazon S3 User Guide.
21123	//
21124	// Bucket is a required field
21125	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21126
21127	// The account ID of the expected bucket owner. If the bucket is owned by a
21128	// different account, the request will fail with an HTTP 403 (Access Denied)
21129	// error.
21130	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21131
21132	// The key name for the object whose Legal Hold status you want to retrieve.
21133	//
21134	// Key is a required field
21135	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21136
21137	// Confirms that the requester knows that they will be charged for the request.
21138	// Bucket owners need not specify this parameter in their requests. For information
21139	// about downloading objects from requester pays buckets, see Downloading Objects
21140	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21141	// in the Amazon S3 User Guide.
21142	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21143
21144	// The version ID of the object whose Legal Hold status you want to retrieve.
21145	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21146}
21147
21148// String returns the string representation.
21149//
21150// API parameter values that are decorated as "sensitive" in the API will not
21151// be included in the string output. The member name will be present, but the
21152// value will be replaced with "sensitive".
21153func (s GetObjectLegalHoldInput) String() string {
21154	return awsutil.Prettify(s)
21155}
21156
21157// GoString returns the string representation.
21158//
21159// API parameter values that are decorated as "sensitive" in the API will not
21160// be included in the string output. The member name will be present, but the
21161// value will be replaced with "sensitive".
21162func (s GetObjectLegalHoldInput) GoString() string {
21163	return s.String()
21164}
21165
21166// Validate inspects the fields of the type to determine if they are valid.
21167func (s *GetObjectLegalHoldInput) Validate() error {
21168	invalidParams := request.ErrInvalidParams{Context: "GetObjectLegalHoldInput"}
21169	if s.Bucket == nil {
21170		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21171	}
21172	if s.Bucket != nil && len(*s.Bucket) < 1 {
21173		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21174	}
21175	if s.Key == nil {
21176		invalidParams.Add(request.NewErrParamRequired("Key"))
21177	}
21178	if s.Key != nil && len(*s.Key) < 1 {
21179		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21180	}
21181
21182	if invalidParams.Len() > 0 {
21183		return invalidParams
21184	}
21185	return nil
21186}
21187
21188// SetBucket sets the Bucket field's value.
21189func (s *GetObjectLegalHoldInput) SetBucket(v string) *GetObjectLegalHoldInput {
21190	s.Bucket = &v
21191	return s
21192}
21193
21194func (s *GetObjectLegalHoldInput) getBucket() (v string) {
21195	if s.Bucket == nil {
21196		return v
21197	}
21198	return *s.Bucket
21199}
21200
21201// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
21202func (s *GetObjectLegalHoldInput) SetExpectedBucketOwner(v string) *GetObjectLegalHoldInput {
21203	s.ExpectedBucketOwner = &v
21204	return s
21205}
21206
21207// SetKey sets the Key field's value.
21208func (s *GetObjectLegalHoldInput) SetKey(v string) *GetObjectLegalHoldInput {
21209	s.Key = &v
21210	return s
21211}
21212
21213// SetRequestPayer sets the RequestPayer field's value.
21214func (s *GetObjectLegalHoldInput) SetRequestPayer(v string) *GetObjectLegalHoldInput {
21215	s.RequestPayer = &v
21216	return s
21217}
21218
21219// SetVersionId sets the VersionId field's value.
21220func (s *GetObjectLegalHoldInput) SetVersionId(v string) *GetObjectLegalHoldInput {
21221	s.VersionId = &v
21222	return s
21223}
21224
21225func (s *GetObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
21226	if s.Bucket == nil {
21227		return nil, fmt.Errorf("member Bucket is nil")
21228	}
21229	return parseEndpointARN(*s.Bucket)
21230}
21231
21232func (s *GetObjectLegalHoldInput) hasEndpointARN() bool {
21233	if s.Bucket == nil {
21234		return false
21235	}
21236	return arn.IsARN(*s.Bucket)
21237}
21238
21239// updateArnableField updates the value of the input field that
21240// takes an ARN as an input. This method is useful to backfill
21241// the parsed resource name from ARN into the input member.
21242// It returns a pointer to a modified copy of input and an error.
21243// Note that original input is not modified.
21244func (s GetObjectLegalHoldInput) updateArnableField(v string) (interface{}, error) {
21245	if s.Bucket == nil {
21246		return nil, fmt.Errorf("member Bucket is nil")
21247	}
21248	s.Bucket = aws.String(v)
21249	return &s, nil
21250}
21251
21252type GetObjectLegalHoldOutput struct {
21253	_ struct{} `type:"structure" payload:"LegalHold"`
21254
21255	// The current Legal Hold status for the specified object.
21256	LegalHold *ObjectLockLegalHold `type:"structure"`
21257}
21258
21259// String returns the string representation.
21260//
21261// API parameter values that are decorated as "sensitive" in the API will not
21262// be included in the string output. The member name will be present, but the
21263// value will be replaced with "sensitive".
21264func (s GetObjectLegalHoldOutput) String() string {
21265	return awsutil.Prettify(s)
21266}
21267
21268// GoString returns the string representation.
21269//
21270// API parameter values that are decorated as "sensitive" in the API will not
21271// be included in the string output. The member name will be present, but the
21272// value will be replaced with "sensitive".
21273func (s GetObjectLegalHoldOutput) GoString() string {
21274	return s.String()
21275}
21276
21277// SetLegalHold sets the LegalHold field's value.
21278func (s *GetObjectLegalHoldOutput) SetLegalHold(v *ObjectLockLegalHold) *GetObjectLegalHoldOutput {
21279	s.LegalHold = v
21280	return s
21281}
21282
21283type GetObjectLockConfigurationInput struct {
21284	_ struct{} `locationName:"GetObjectLockConfigurationRequest" type:"structure"`
21285
21286	// The bucket whose Object Lock configuration you want to retrieve.
21287	//
21288	// When using this action with an access point, you must direct requests to
21289	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21290	// When using this action with an access point through the Amazon Web Services
21291	// SDKs, you provide the access point ARN in place of the bucket name. For more
21292	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21293	// in the Amazon S3 User Guide.
21294	//
21295	// Bucket is a required field
21296	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21297
21298	// The account ID of the expected bucket owner. If the bucket is owned by a
21299	// different account, the request will fail with an HTTP 403 (Access Denied)
21300	// error.
21301	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21302}
21303
21304// String returns the string representation.
21305//
21306// API parameter values that are decorated as "sensitive" in the API will not
21307// be included in the string output. The member name will be present, but the
21308// value will be replaced with "sensitive".
21309func (s GetObjectLockConfigurationInput) String() string {
21310	return awsutil.Prettify(s)
21311}
21312
21313// GoString returns the string representation.
21314//
21315// API parameter values that are decorated as "sensitive" in the API will not
21316// be included in the string output. The member name will be present, but the
21317// value will be replaced with "sensitive".
21318func (s GetObjectLockConfigurationInput) GoString() string {
21319	return s.String()
21320}
21321
21322// Validate inspects the fields of the type to determine if they are valid.
21323func (s *GetObjectLockConfigurationInput) Validate() error {
21324	invalidParams := request.ErrInvalidParams{Context: "GetObjectLockConfigurationInput"}
21325	if s.Bucket == nil {
21326		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21327	}
21328	if s.Bucket != nil && len(*s.Bucket) < 1 {
21329		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21330	}
21331
21332	if invalidParams.Len() > 0 {
21333		return invalidParams
21334	}
21335	return nil
21336}
21337
21338// SetBucket sets the Bucket field's value.
21339func (s *GetObjectLockConfigurationInput) SetBucket(v string) *GetObjectLockConfigurationInput {
21340	s.Bucket = &v
21341	return s
21342}
21343
21344func (s *GetObjectLockConfigurationInput) getBucket() (v string) {
21345	if s.Bucket == nil {
21346		return v
21347	}
21348	return *s.Bucket
21349}
21350
21351// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
21352func (s *GetObjectLockConfigurationInput) SetExpectedBucketOwner(v string) *GetObjectLockConfigurationInput {
21353	s.ExpectedBucketOwner = &v
21354	return s
21355}
21356
21357func (s *GetObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
21358	if s.Bucket == nil {
21359		return nil, fmt.Errorf("member Bucket is nil")
21360	}
21361	return parseEndpointARN(*s.Bucket)
21362}
21363
21364func (s *GetObjectLockConfigurationInput) hasEndpointARN() bool {
21365	if s.Bucket == nil {
21366		return false
21367	}
21368	return arn.IsARN(*s.Bucket)
21369}
21370
21371// updateArnableField updates the value of the input field that
21372// takes an ARN as an input. This method is useful to backfill
21373// the parsed resource name from ARN into the input member.
21374// It returns a pointer to a modified copy of input and an error.
21375// Note that original input is not modified.
21376func (s GetObjectLockConfigurationInput) updateArnableField(v string) (interface{}, error) {
21377	if s.Bucket == nil {
21378		return nil, fmt.Errorf("member Bucket is nil")
21379	}
21380	s.Bucket = aws.String(v)
21381	return &s, nil
21382}
21383
21384type GetObjectLockConfigurationOutput struct {
21385	_ struct{} `type:"structure" payload:"ObjectLockConfiguration"`
21386
21387	// The specified bucket's Object Lock configuration.
21388	ObjectLockConfiguration *ObjectLockConfiguration `type:"structure"`
21389}
21390
21391// String returns the string representation.
21392//
21393// API parameter values that are decorated as "sensitive" in the API will not
21394// be included in the string output. The member name will be present, but the
21395// value will be replaced with "sensitive".
21396func (s GetObjectLockConfigurationOutput) String() string {
21397	return awsutil.Prettify(s)
21398}
21399
21400// GoString returns the string representation.
21401//
21402// API parameter values that are decorated as "sensitive" in the API will not
21403// be included in the string output. The member name will be present, but the
21404// value will be replaced with "sensitive".
21405func (s GetObjectLockConfigurationOutput) GoString() string {
21406	return s.String()
21407}
21408
21409// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
21410func (s *GetObjectLockConfigurationOutput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *GetObjectLockConfigurationOutput {
21411	s.ObjectLockConfiguration = v
21412	return s
21413}
21414
21415type GetObjectOutput struct {
21416	_ struct{} `type:"structure" payload:"Body"`
21417
21418	// Indicates that a range of bytes was specified.
21419	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
21420
21421	// Object data.
21422	Body io.ReadCloser `type:"blob"`
21423
21424	// Indicates whether the object uses an S3 Bucket Key for server-side encryption
21425	// with Amazon Web Services KMS (SSE-KMS).
21426	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
21427
21428	// Specifies caching behavior along the request/reply chain.
21429	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
21430
21431	// Specifies presentational information for the object.
21432	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
21433
21434	// Specifies what content encodings have been applied to the object and thus
21435	// what decoding mechanisms must be applied to obtain the media-type referenced
21436	// by the Content-Type header field.
21437	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
21438
21439	// The language the content is in.
21440	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
21441
21442	// Size of the body in bytes.
21443	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
21444
21445	// The portion of the object returned in the response.
21446	ContentRange *string `location:"header" locationName:"Content-Range" type:"string"`
21447
21448	// A standard MIME type describing the format of the object data.
21449	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
21450
21451	// Specifies whether the object retrieved was (true) or was not (false) a Delete
21452	// Marker. If false, this response header does not appear in the response.
21453	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
21454
21455	// An ETag is an opaque identifier assigned by a web server to a specific version
21456	// of a resource found at a URL.
21457	ETag *string `location:"header" locationName:"ETag" type:"string"`
21458
21459	// If the object expiration is configured (see PUT Bucket lifecycle), the response
21460	// includes this header. It includes the expiry-date and rule-id key-value pairs
21461	// providing object expiration information. The value of the rule-id is URL
21462	// encoded.
21463	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
21464
21465	// The date and time at which the object is no longer cacheable.
21466	Expires *string `location:"header" locationName:"Expires" type:"string"`
21467
21468	// Creation date of the object.
21469	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
21470
21471	// A map of metadata to store with the object in S3.
21472	//
21473	// By default unmarshaled keys are written as a map keys in following canonicalized format:
21474	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
21475	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
21476	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
21477
21478	// This is set to the number of metadata entries not returned in x-amz-meta
21479	// headers. This can happen if you create metadata using an API like SOAP that
21480	// supports more flexible metadata than the REST API. For example, using SOAP,
21481	// you can create metadata whose values are not legal HTTP headers.
21482	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
21483
21484	// Indicates whether this object has an active legal hold. This field is only
21485	// returned if you have permission to view an object's legal hold status.
21486	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
21487
21488	// The Object Lock mode currently in place for this object.
21489	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
21490
21491	// The date and time when this object's Object Lock will expire.
21492	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
21493
21494	// The count of parts this object has.
21495	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
21496
21497	// Amazon S3 can return this if your request involves a bucket that is either
21498	// a source or destination in a replication rule.
21499	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
21500
21501	// If present, indicates that the requester was successfully charged for the
21502	// request.
21503	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
21504
21505	// Provides information about object restoration action and expiration time
21506	// of the restored object copy.
21507	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
21508
21509	// If server-side encryption with a customer-provided encryption key was requested,
21510	// the response will include this header confirming the encryption algorithm
21511	// used.
21512	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
21513
21514	// If server-side encryption with a customer-provided encryption key was requested,
21515	// the response will include this header to provide round-trip message integrity
21516	// verification of the customer-provided encryption key.
21517	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
21518
21519	// If present, specifies the ID of the Amazon Web Services Key Management Service
21520	// (Amazon Web Services KMS) symmetric customer managed key that was used for
21521	// the object.
21522	//
21523	// SSEKMSKeyId is a sensitive parameter and its value will be
21524	// replaced with "sensitive" in string returned by GetObjectOutput's
21525	// String and GoString methods.
21526	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
21527
21528	// The server-side encryption algorithm used when storing this object in Amazon
21529	// S3 (for example, AES256, aws:kms).
21530	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
21531
21532	// Provides storage class information of the object. Amazon S3 returns this
21533	// header for all objects except for S3 Standard storage class objects.
21534	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
21535
21536	// The number of tags, if any, on the object.
21537	TagCount *int64 `location:"header" locationName:"x-amz-tagging-count" type:"integer"`
21538
21539	// Version of the object.
21540	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
21541
21542	// If the bucket is configured as a website, redirects requests for this object
21543	// to another object in the same bucket or to an external URL. Amazon S3 stores
21544	// the value of this header in the object metadata.
21545	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
21546}
21547
21548// String returns the string representation.
21549//
21550// API parameter values that are decorated as "sensitive" in the API will not
21551// be included in the string output. The member name will be present, but the
21552// value will be replaced with "sensitive".
21553func (s GetObjectOutput) String() string {
21554	return awsutil.Prettify(s)
21555}
21556
21557// GoString returns the string representation.
21558//
21559// API parameter values that are decorated as "sensitive" in the API will not
21560// be included in the string output. The member name will be present, but the
21561// value will be replaced with "sensitive".
21562func (s GetObjectOutput) GoString() string {
21563	return s.String()
21564}
21565
21566// SetAcceptRanges sets the AcceptRanges field's value.
21567func (s *GetObjectOutput) SetAcceptRanges(v string) *GetObjectOutput {
21568	s.AcceptRanges = &v
21569	return s
21570}
21571
21572// SetBody sets the Body field's value.
21573func (s *GetObjectOutput) SetBody(v io.ReadCloser) *GetObjectOutput {
21574	s.Body = v
21575	return s
21576}
21577
21578// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
21579func (s *GetObjectOutput) SetBucketKeyEnabled(v bool) *GetObjectOutput {
21580	s.BucketKeyEnabled = &v
21581	return s
21582}
21583
21584// SetCacheControl sets the CacheControl field's value.
21585func (s *GetObjectOutput) SetCacheControl(v string) *GetObjectOutput {
21586	s.CacheControl = &v
21587	return s
21588}
21589
21590// SetContentDisposition sets the ContentDisposition field's value.
21591func (s *GetObjectOutput) SetContentDisposition(v string) *GetObjectOutput {
21592	s.ContentDisposition = &v
21593	return s
21594}
21595
21596// SetContentEncoding sets the ContentEncoding field's value.
21597func (s *GetObjectOutput) SetContentEncoding(v string) *GetObjectOutput {
21598	s.ContentEncoding = &v
21599	return s
21600}
21601
21602// SetContentLanguage sets the ContentLanguage field's value.
21603func (s *GetObjectOutput) SetContentLanguage(v string) *GetObjectOutput {
21604	s.ContentLanguage = &v
21605	return s
21606}
21607
21608// SetContentLength sets the ContentLength field's value.
21609func (s *GetObjectOutput) SetContentLength(v int64) *GetObjectOutput {
21610	s.ContentLength = &v
21611	return s
21612}
21613
21614// SetContentRange sets the ContentRange field's value.
21615func (s *GetObjectOutput) SetContentRange(v string) *GetObjectOutput {
21616	s.ContentRange = &v
21617	return s
21618}
21619
21620// SetContentType sets the ContentType field's value.
21621func (s *GetObjectOutput) SetContentType(v string) *GetObjectOutput {
21622	s.ContentType = &v
21623	return s
21624}
21625
21626// SetDeleteMarker sets the DeleteMarker field's value.
21627func (s *GetObjectOutput) SetDeleteMarker(v bool) *GetObjectOutput {
21628	s.DeleteMarker = &v
21629	return s
21630}
21631
21632// SetETag sets the ETag field's value.
21633func (s *GetObjectOutput) SetETag(v string) *GetObjectOutput {
21634	s.ETag = &v
21635	return s
21636}
21637
21638// SetExpiration sets the Expiration field's value.
21639func (s *GetObjectOutput) SetExpiration(v string) *GetObjectOutput {
21640	s.Expiration = &v
21641	return s
21642}
21643
21644// SetExpires sets the Expires field's value.
21645func (s *GetObjectOutput) SetExpires(v string) *GetObjectOutput {
21646	s.Expires = &v
21647	return s
21648}
21649
21650// SetLastModified sets the LastModified field's value.
21651func (s *GetObjectOutput) SetLastModified(v time.Time) *GetObjectOutput {
21652	s.LastModified = &v
21653	return s
21654}
21655
21656// SetMetadata sets the Metadata field's value.
21657func (s *GetObjectOutput) SetMetadata(v map[string]*string) *GetObjectOutput {
21658	s.Metadata = v
21659	return s
21660}
21661
21662// SetMissingMeta sets the MissingMeta field's value.
21663func (s *GetObjectOutput) SetMissingMeta(v int64) *GetObjectOutput {
21664	s.MissingMeta = &v
21665	return s
21666}
21667
21668// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
21669func (s *GetObjectOutput) SetObjectLockLegalHoldStatus(v string) *GetObjectOutput {
21670	s.ObjectLockLegalHoldStatus = &v
21671	return s
21672}
21673
21674// SetObjectLockMode sets the ObjectLockMode field's value.
21675func (s *GetObjectOutput) SetObjectLockMode(v string) *GetObjectOutput {
21676	s.ObjectLockMode = &v
21677	return s
21678}
21679
21680// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
21681func (s *GetObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *GetObjectOutput {
21682	s.ObjectLockRetainUntilDate = &v
21683	return s
21684}
21685
21686// SetPartsCount sets the PartsCount field's value.
21687func (s *GetObjectOutput) SetPartsCount(v int64) *GetObjectOutput {
21688	s.PartsCount = &v
21689	return s
21690}
21691
21692// SetReplicationStatus sets the ReplicationStatus field's value.
21693func (s *GetObjectOutput) SetReplicationStatus(v string) *GetObjectOutput {
21694	s.ReplicationStatus = &v
21695	return s
21696}
21697
21698// SetRequestCharged sets the RequestCharged field's value.
21699func (s *GetObjectOutput) SetRequestCharged(v string) *GetObjectOutput {
21700	s.RequestCharged = &v
21701	return s
21702}
21703
21704// SetRestore sets the Restore field's value.
21705func (s *GetObjectOutput) SetRestore(v string) *GetObjectOutput {
21706	s.Restore = &v
21707	return s
21708}
21709
21710// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
21711func (s *GetObjectOutput) SetSSECustomerAlgorithm(v string) *GetObjectOutput {
21712	s.SSECustomerAlgorithm = &v
21713	return s
21714}
21715
21716// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
21717func (s *GetObjectOutput) SetSSECustomerKeyMD5(v string) *GetObjectOutput {
21718	s.SSECustomerKeyMD5 = &v
21719	return s
21720}
21721
21722// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
21723func (s *GetObjectOutput) SetSSEKMSKeyId(v string) *GetObjectOutput {
21724	s.SSEKMSKeyId = &v
21725	return s
21726}
21727
21728// SetServerSideEncryption sets the ServerSideEncryption field's value.
21729func (s *GetObjectOutput) SetServerSideEncryption(v string) *GetObjectOutput {
21730	s.ServerSideEncryption = &v
21731	return s
21732}
21733
21734// SetStorageClass sets the StorageClass field's value.
21735func (s *GetObjectOutput) SetStorageClass(v string) *GetObjectOutput {
21736	s.StorageClass = &v
21737	return s
21738}
21739
21740// SetTagCount sets the TagCount field's value.
21741func (s *GetObjectOutput) SetTagCount(v int64) *GetObjectOutput {
21742	s.TagCount = &v
21743	return s
21744}
21745
21746// SetVersionId sets the VersionId field's value.
21747func (s *GetObjectOutput) SetVersionId(v string) *GetObjectOutput {
21748	s.VersionId = &v
21749	return s
21750}
21751
21752// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
21753func (s *GetObjectOutput) SetWebsiteRedirectLocation(v string) *GetObjectOutput {
21754	s.WebsiteRedirectLocation = &v
21755	return s
21756}
21757
21758type GetObjectRetentionInput struct {
21759	_ struct{} `locationName:"GetObjectRetentionRequest" type:"structure"`
21760
21761	// The bucket name containing the object whose retention settings you want to
21762	// retrieve.
21763	//
21764	// When using this action with an access point, you must direct requests to
21765	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21766	// When using this action with an access point through the Amazon Web Services
21767	// SDKs, you provide the access point ARN in place of the bucket name. For more
21768	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21769	// in the Amazon S3 User Guide.
21770	//
21771	// Bucket is a required field
21772	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21773
21774	// The account ID of the expected bucket owner. If the bucket is owned by a
21775	// different account, the request will fail with an HTTP 403 (Access Denied)
21776	// error.
21777	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21778
21779	// The key name for the object whose retention settings you want to retrieve.
21780	//
21781	// Key is a required field
21782	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21783
21784	// Confirms that the requester knows that they will be charged for the request.
21785	// Bucket owners need not specify this parameter in their requests. For information
21786	// about downloading objects from requester pays buckets, see Downloading Objects
21787	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21788	// in the Amazon S3 User Guide.
21789	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21790
21791	// The version ID for the object whose retention settings you want to retrieve.
21792	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21793}
21794
21795// String returns the string representation.
21796//
21797// API parameter values that are decorated as "sensitive" in the API will not
21798// be included in the string output. The member name will be present, but the
21799// value will be replaced with "sensitive".
21800func (s GetObjectRetentionInput) String() string {
21801	return awsutil.Prettify(s)
21802}
21803
21804// GoString returns the string representation.
21805//
21806// API parameter values that are decorated as "sensitive" in the API will not
21807// be included in the string output. The member name will be present, but the
21808// value will be replaced with "sensitive".
21809func (s GetObjectRetentionInput) GoString() string {
21810	return s.String()
21811}
21812
21813// Validate inspects the fields of the type to determine if they are valid.
21814func (s *GetObjectRetentionInput) Validate() error {
21815	invalidParams := request.ErrInvalidParams{Context: "GetObjectRetentionInput"}
21816	if s.Bucket == nil {
21817		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21818	}
21819	if s.Bucket != nil && len(*s.Bucket) < 1 {
21820		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
21821	}
21822	if s.Key == nil {
21823		invalidParams.Add(request.NewErrParamRequired("Key"))
21824	}
21825	if s.Key != nil && len(*s.Key) < 1 {
21826		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
21827	}
21828
21829	if invalidParams.Len() > 0 {
21830		return invalidParams
21831	}
21832	return nil
21833}
21834
21835// SetBucket sets the Bucket field's value.
21836func (s *GetObjectRetentionInput) SetBucket(v string) *GetObjectRetentionInput {
21837	s.Bucket = &v
21838	return s
21839}
21840
21841func (s *GetObjectRetentionInput) getBucket() (v string) {
21842	if s.Bucket == nil {
21843		return v
21844	}
21845	return *s.Bucket
21846}
21847
21848// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
21849func (s *GetObjectRetentionInput) SetExpectedBucketOwner(v string) *GetObjectRetentionInput {
21850	s.ExpectedBucketOwner = &v
21851	return s
21852}
21853
21854// SetKey sets the Key field's value.
21855func (s *GetObjectRetentionInput) SetKey(v string) *GetObjectRetentionInput {
21856	s.Key = &v
21857	return s
21858}
21859
21860// SetRequestPayer sets the RequestPayer field's value.
21861func (s *GetObjectRetentionInput) SetRequestPayer(v string) *GetObjectRetentionInput {
21862	s.RequestPayer = &v
21863	return s
21864}
21865
21866// SetVersionId sets the VersionId field's value.
21867func (s *GetObjectRetentionInput) SetVersionId(v string) *GetObjectRetentionInput {
21868	s.VersionId = &v
21869	return s
21870}
21871
21872func (s *GetObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
21873	if s.Bucket == nil {
21874		return nil, fmt.Errorf("member Bucket is nil")
21875	}
21876	return parseEndpointARN(*s.Bucket)
21877}
21878
21879func (s *GetObjectRetentionInput) hasEndpointARN() bool {
21880	if s.Bucket == nil {
21881		return false
21882	}
21883	return arn.IsARN(*s.Bucket)
21884}
21885
21886// updateArnableField updates the value of the input field that
21887// takes an ARN as an input. This method is useful to backfill
21888// the parsed resource name from ARN into the input member.
21889// It returns a pointer to a modified copy of input and an error.
21890// Note that original input is not modified.
21891func (s GetObjectRetentionInput) updateArnableField(v string) (interface{}, error) {
21892	if s.Bucket == nil {
21893		return nil, fmt.Errorf("member Bucket is nil")
21894	}
21895	s.Bucket = aws.String(v)
21896	return &s, nil
21897}
21898
21899type GetObjectRetentionOutput struct {
21900	_ struct{} `type:"structure" payload:"Retention"`
21901
21902	// The container element for an object's retention settings.
21903	Retention *ObjectLockRetention `type:"structure"`
21904}
21905
21906// String returns the string representation.
21907//
21908// API parameter values that are decorated as "sensitive" in the API will not
21909// be included in the string output. The member name will be present, but the
21910// value will be replaced with "sensitive".
21911func (s GetObjectRetentionOutput) String() string {
21912	return awsutil.Prettify(s)
21913}
21914
21915// GoString returns the string representation.
21916//
21917// API parameter values that are decorated as "sensitive" in the API will not
21918// be included in the string output. The member name will be present, but the
21919// value will be replaced with "sensitive".
21920func (s GetObjectRetentionOutput) GoString() string {
21921	return s.String()
21922}
21923
21924// SetRetention sets the Retention field's value.
21925func (s *GetObjectRetentionOutput) SetRetention(v *ObjectLockRetention) *GetObjectRetentionOutput {
21926	s.Retention = v
21927	return s
21928}
21929
21930type GetObjectTaggingInput struct {
21931	_ struct{} `locationName:"GetObjectTaggingRequest" type:"structure"`
21932
21933	// The bucket name containing the object for which to get the tagging information.
21934	//
21935	// When using this action with an access point, you must direct requests to
21936	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
21937	// When using this action with an access point through the Amazon Web Services
21938	// SDKs, you provide the access point ARN in place of the bucket name. For more
21939	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
21940	// in the Amazon S3 User Guide.
21941	//
21942	// When using this action with Amazon S3 on Outposts, you must direct requests
21943	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
21944	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
21945	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
21946	// you provide the Outposts bucket ARN in place of the bucket name. For more
21947	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
21948	// in the Amazon S3 User Guide.
21949	//
21950	// Bucket is a required field
21951	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
21952
21953	// The account ID of the expected bucket owner. If the bucket is owned by a
21954	// different account, the request will fail with an HTTP 403 (Access Denied)
21955	// error.
21956	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
21957
21958	// Object key for which to get the tagging information.
21959	//
21960	// Key is a required field
21961	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
21962
21963	// Confirms that the requester knows that they will be charged for the request.
21964	// Bucket owners need not specify this parameter in their requests. For information
21965	// about downloading objects from requester pays buckets, see Downloading Objects
21966	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
21967	// in the Amazon S3 User Guide.
21968	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
21969
21970	// The versionId of the object for which to get the tagging information.
21971	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
21972}
21973
21974// String returns the string representation.
21975//
21976// API parameter values that are decorated as "sensitive" in the API will not
21977// be included in the string output. The member name will be present, but the
21978// value will be replaced with "sensitive".
21979func (s GetObjectTaggingInput) String() string {
21980	return awsutil.Prettify(s)
21981}
21982
21983// GoString returns the string representation.
21984//
21985// API parameter values that are decorated as "sensitive" in the API will not
21986// be included in the string output. The member name will be present, but the
21987// value will be replaced with "sensitive".
21988func (s GetObjectTaggingInput) GoString() string {
21989	return s.String()
21990}
21991
21992// Validate inspects the fields of the type to determine if they are valid.
21993func (s *GetObjectTaggingInput) Validate() error {
21994	invalidParams := request.ErrInvalidParams{Context: "GetObjectTaggingInput"}
21995	if s.Bucket == nil {
21996		invalidParams.Add(request.NewErrParamRequired("Bucket"))
21997	}
21998	if s.Bucket != nil && len(*s.Bucket) < 1 {
21999		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22000	}
22001	if s.Key == nil {
22002		invalidParams.Add(request.NewErrParamRequired("Key"))
22003	}
22004	if s.Key != nil && len(*s.Key) < 1 {
22005		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22006	}
22007
22008	if invalidParams.Len() > 0 {
22009		return invalidParams
22010	}
22011	return nil
22012}
22013
22014// SetBucket sets the Bucket field's value.
22015func (s *GetObjectTaggingInput) SetBucket(v string) *GetObjectTaggingInput {
22016	s.Bucket = &v
22017	return s
22018}
22019
22020func (s *GetObjectTaggingInput) getBucket() (v string) {
22021	if s.Bucket == nil {
22022		return v
22023	}
22024	return *s.Bucket
22025}
22026
22027// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22028func (s *GetObjectTaggingInput) SetExpectedBucketOwner(v string) *GetObjectTaggingInput {
22029	s.ExpectedBucketOwner = &v
22030	return s
22031}
22032
22033// SetKey sets the Key field's value.
22034func (s *GetObjectTaggingInput) SetKey(v string) *GetObjectTaggingInput {
22035	s.Key = &v
22036	return s
22037}
22038
22039// SetRequestPayer sets the RequestPayer field's value.
22040func (s *GetObjectTaggingInput) SetRequestPayer(v string) *GetObjectTaggingInput {
22041	s.RequestPayer = &v
22042	return s
22043}
22044
22045// SetVersionId sets the VersionId field's value.
22046func (s *GetObjectTaggingInput) SetVersionId(v string) *GetObjectTaggingInput {
22047	s.VersionId = &v
22048	return s
22049}
22050
22051func (s *GetObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
22052	if s.Bucket == nil {
22053		return nil, fmt.Errorf("member Bucket is nil")
22054	}
22055	return parseEndpointARN(*s.Bucket)
22056}
22057
22058func (s *GetObjectTaggingInput) hasEndpointARN() bool {
22059	if s.Bucket == nil {
22060		return false
22061	}
22062	return arn.IsARN(*s.Bucket)
22063}
22064
22065// updateArnableField updates the value of the input field that
22066// takes an ARN as an input. This method is useful to backfill
22067// the parsed resource name from ARN into the input member.
22068// It returns a pointer to a modified copy of input and an error.
22069// Note that original input is not modified.
22070func (s GetObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
22071	if s.Bucket == nil {
22072		return nil, fmt.Errorf("member Bucket is nil")
22073	}
22074	s.Bucket = aws.String(v)
22075	return &s, nil
22076}
22077
22078type GetObjectTaggingOutput struct {
22079	_ struct{} `type:"structure"`
22080
22081	// Contains the tag set.
22082	//
22083	// TagSet is a required field
22084	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
22085
22086	// The versionId of the object for which you got the tagging information.
22087	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
22088}
22089
22090// String returns the string representation.
22091//
22092// API parameter values that are decorated as "sensitive" in the API will not
22093// be included in the string output. The member name will be present, but the
22094// value will be replaced with "sensitive".
22095func (s GetObjectTaggingOutput) String() string {
22096	return awsutil.Prettify(s)
22097}
22098
22099// GoString returns the string representation.
22100//
22101// API parameter values that are decorated as "sensitive" in the API will not
22102// be included in the string output. The member name will be present, but the
22103// value will be replaced with "sensitive".
22104func (s GetObjectTaggingOutput) GoString() string {
22105	return s.String()
22106}
22107
22108// SetTagSet sets the TagSet field's value.
22109func (s *GetObjectTaggingOutput) SetTagSet(v []*Tag) *GetObjectTaggingOutput {
22110	s.TagSet = v
22111	return s
22112}
22113
22114// SetVersionId sets the VersionId field's value.
22115func (s *GetObjectTaggingOutput) SetVersionId(v string) *GetObjectTaggingOutput {
22116	s.VersionId = &v
22117	return s
22118}
22119
22120type GetObjectTorrentInput struct {
22121	_ struct{} `locationName:"GetObjectTorrentRequest" type:"structure"`
22122
22123	// The name of the bucket containing the object for which to get the torrent
22124	// files.
22125	//
22126	// Bucket is a required field
22127	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22128
22129	// The account ID of the expected bucket owner. If the bucket is owned by a
22130	// different account, the request will fail with an HTTP 403 (Access Denied)
22131	// error.
22132	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22133
22134	// The object key for which to get the information.
22135	//
22136	// Key is a required field
22137	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
22138
22139	// Confirms that the requester knows that they will be charged for the request.
22140	// Bucket owners need not specify this parameter in their requests. For information
22141	// about downloading objects from requester pays buckets, see Downloading Objects
22142	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
22143	// in the Amazon S3 User Guide.
22144	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
22145}
22146
22147// String returns the string representation.
22148//
22149// API parameter values that are decorated as "sensitive" in the API will not
22150// be included in the string output. The member name will be present, but the
22151// value will be replaced with "sensitive".
22152func (s GetObjectTorrentInput) String() string {
22153	return awsutil.Prettify(s)
22154}
22155
22156// GoString returns the string representation.
22157//
22158// API parameter values that are decorated as "sensitive" in the API will not
22159// be included in the string output. The member name will be present, but the
22160// value will be replaced with "sensitive".
22161func (s GetObjectTorrentInput) GoString() string {
22162	return s.String()
22163}
22164
22165// Validate inspects the fields of the type to determine if they are valid.
22166func (s *GetObjectTorrentInput) Validate() error {
22167	invalidParams := request.ErrInvalidParams{Context: "GetObjectTorrentInput"}
22168	if s.Bucket == nil {
22169		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22170	}
22171	if s.Bucket != nil && len(*s.Bucket) < 1 {
22172		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22173	}
22174	if s.Key == nil {
22175		invalidParams.Add(request.NewErrParamRequired("Key"))
22176	}
22177	if s.Key != nil && len(*s.Key) < 1 {
22178		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22179	}
22180
22181	if invalidParams.Len() > 0 {
22182		return invalidParams
22183	}
22184	return nil
22185}
22186
22187// SetBucket sets the Bucket field's value.
22188func (s *GetObjectTorrentInput) SetBucket(v string) *GetObjectTorrentInput {
22189	s.Bucket = &v
22190	return s
22191}
22192
22193func (s *GetObjectTorrentInput) getBucket() (v string) {
22194	if s.Bucket == nil {
22195		return v
22196	}
22197	return *s.Bucket
22198}
22199
22200// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22201func (s *GetObjectTorrentInput) SetExpectedBucketOwner(v string) *GetObjectTorrentInput {
22202	s.ExpectedBucketOwner = &v
22203	return s
22204}
22205
22206// SetKey sets the Key field's value.
22207func (s *GetObjectTorrentInput) SetKey(v string) *GetObjectTorrentInput {
22208	s.Key = &v
22209	return s
22210}
22211
22212// SetRequestPayer sets the RequestPayer field's value.
22213func (s *GetObjectTorrentInput) SetRequestPayer(v string) *GetObjectTorrentInput {
22214	s.RequestPayer = &v
22215	return s
22216}
22217
22218func (s *GetObjectTorrentInput) getEndpointARN() (arn.Resource, error) {
22219	if s.Bucket == nil {
22220		return nil, fmt.Errorf("member Bucket is nil")
22221	}
22222	return parseEndpointARN(*s.Bucket)
22223}
22224
22225func (s *GetObjectTorrentInput) hasEndpointARN() bool {
22226	if s.Bucket == nil {
22227		return false
22228	}
22229	return arn.IsARN(*s.Bucket)
22230}
22231
22232// updateArnableField updates the value of the input field that
22233// takes an ARN as an input. This method is useful to backfill
22234// the parsed resource name from ARN into the input member.
22235// It returns a pointer to a modified copy of input and an error.
22236// Note that original input is not modified.
22237func (s GetObjectTorrentInput) updateArnableField(v string) (interface{}, error) {
22238	if s.Bucket == nil {
22239		return nil, fmt.Errorf("member Bucket is nil")
22240	}
22241	s.Bucket = aws.String(v)
22242	return &s, nil
22243}
22244
22245type GetObjectTorrentOutput struct {
22246	_ struct{} `type:"structure" payload:"Body"`
22247
22248	// A Bencoded dictionary as defined by the BitTorrent specification
22249	Body io.ReadCloser `type:"blob"`
22250
22251	// If present, indicates that the requester was successfully charged for the
22252	// request.
22253	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
22254}
22255
22256// String returns the string representation.
22257//
22258// API parameter values that are decorated as "sensitive" in the API will not
22259// be included in the string output. The member name will be present, but the
22260// value will be replaced with "sensitive".
22261func (s GetObjectTorrentOutput) String() string {
22262	return awsutil.Prettify(s)
22263}
22264
22265// GoString returns the string representation.
22266//
22267// API parameter values that are decorated as "sensitive" in the API will not
22268// be included in the string output. The member name will be present, but the
22269// value will be replaced with "sensitive".
22270func (s GetObjectTorrentOutput) GoString() string {
22271	return s.String()
22272}
22273
22274// SetBody sets the Body field's value.
22275func (s *GetObjectTorrentOutput) SetBody(v io.ReadCloser) *GetObjectTorrentOutput {
22276	s.Body = v
22277	return s
22278}
22279
22280// SetRequestCharged sets the RequestCharged field's value.
22281func (s *GetObjectTorrentOutput) SetRequestCharged(v string) *GetObjectTorrentOutput {
22282	s.RequestCharged = &v
22283	return s
22284}
22285
22286type GetPublicAccessBlockInput struct {
22287	_ struct{} `locationName:"GetPublicAccessBlockRequest" type:"structure"`
22288
22289	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
22290	// want to retrieve.
22291	//
22292	// Bucket is a required field
22293	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22294
22295	// The account ID of the expected bucket owner. If the bucket is owned by a
22296	// different account, the request will fail with an HTTP 403 (Access Denied)
22297	// error.
22298	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22299}
22300
22301// String returns the string representation.
22302//
22303// API parameter values that are decorated as "sensitive" in the API will not
22304// be included in the string output. The member name will be present, but the
22305// value will be replaced with "sensitive".
22306func (s GetPublicAccessBlockInput) String() string {
22307	return awsutil.Prettify(s)
22308}
22309
22310// GoString returns the string representation.
22311//
22312// API parameter values that are decorated as "sensitive" in the API will not
22313// be included in the string output. The member name will be present, but the
22314// value will be replaced with "sensitive".
22315func (s GetPublicAccessBlockInput) GoString() string {
22316	return s.String()
22317}
22318
22319// Validate inspects the fields of the type to determine if they are valid.
22320func (s *GetPublicAccessBlockInput) Validate() error {
22321	invalidParams := request.ErrInvalidParams{Context: "GetPublicAccessBlockInput"}
22322	if s.Bucket == nil {
22323		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22324	}
22325	if s.Bucket != nil && len(*s.Bucket) < 1 {
22326		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22327	}
22328
22329	if invalidParams.Len() > 0 {
22330		return invalidParams
22331	}
22332	return nil
22333}
22334
22335// SetBucket sets the Bucket field's value.
22336func (s *GetPublicAccessBlockInput) SetBucket(v string) *GetPublicAccessBlockInput {
22337	s.Bucket = &v
22338	return s
22339}
22340
22341func (s *GetPublicAccessBlockInput) getBucket() (v string) {
22342	if s.Bucket == nil {
22343		return v
22344	}
22345	return *s.Bucket
22346}
22347
22348// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22349func (s *GetPublicAccessBlockInput) SetExpectedBucketOwner(v string) *GetPublicAccessBlockInput {
22350	s.ExpectedBucketOwner = &v
22351	return s
22352}
22353
22354func (s *GetPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
22355	if s.Bucket == nil {
22356		return nil, fmt.Errorf("member Bucket is nil")
22357	}
22358	return parseEndpointARN(*s.Bucket)
22359}
22360
22361func (s *GetPublicAccessBlockInput) hasEndpointARN() bool {
22362	if s.Bucket == nil {
22363		return false
22364	}
22365	return arn.IsARN(*s.Bucket)
22366}
22367
22368// updateArnableField updates the value of the input field that
22369// takes an ARN as an input. This method is useful to backfill
22370// the parsed resource name from ARN into the input member.
22371// It returns a pointer to a modified copy of input and an error.
22372// Note that original input is not modified.
22373func (s GetPublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
22374	if s.Bucket == nil {
22375		return nil, fmt.Errorf("member Bucket is nil")
22376	}
22377	s.Bucket = aws.String(v)
22378	return &s, nil
22379}
22380
22381type GetPublicAccessBlockOutput struct {
22382	_ struct{} `type:"structure" payload:"PublicAccessBlockConfiguration"`
22383
22384	// The PublicAccessBlock configuration currently in effect for this Amazon S3
22385	// bucket.
22386	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `type:"structure"`
22387}
22388
22389// String returns the string representation.
22390//
22391// API parameter values that are decorated as "sensitive" in the API will not
22392// be included in the string output. The member name will be present, but the
22393// value will be replaced with "sensitive".
22394func (s GetPublicAccessBlockOutput) String() string {
22395	return awsutil.Prettify(s)
22396}
22397
22398// GoString returns the string representation.
22399//
22400// API parameter values that are decorated as "sensitive" in the API will not
22401// be included in the string output. The member name will be present, but the
22402// value will be replaced with "sensitive".
22403func (s GetPublicAccessBlockOutput) GoString() string {
22404	return s.String()
22405}
22406
22407// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
22408func (s *GetPublicAccessBlockOutput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *GetPublicAccessBlockOutput {
22409	s.PublicAccessBlockConfiguration = v
22410	return s
22411}
22412
22413// Container for S3 Glacier job parameters.
22414type GlacierJobParameters struct {
22415	_ struct{} `type:"structure"`
22416
22417	// Retrieval tier at which the restore will be processed.
22418	//
22419	// Tier is a required field
22420	Tier *string `type:"string" required:"true" enum:"Tier"`
22421}
22422
22423// String returns the string representation.
22424//
22425// API parameter values that are decorated as "sensitive" in the API will not
22426// be included in the string output. The member name will be present, but the
22427// value will be replaced with "sensitive".
22428func (s GlacierJobParameters) String() string {
22429	return awsutil.Prettify(s)
22430}
22431
22432// GoString returns the string representation.
22433//
22434// API parameter values that are decorated as "sensitive" in the API will not
22435// be included in the string output. The member name will be present, but the
22436// value will be replaced with "sensitive".
22437func (s GlacierJobParameters) GoString() string {
22438	return s.String()
22439}
22440
22441// Validate inspects the fields of the type to determine if they are valid.
22442func (s *GlacierJobParameters) Validate() error {
22443	invalidParams := request.ErrInvalidParams{Context: "GlacierJobParameters"}
22444	if s.Tier == nil {
22445		invalidParams.Add(request.NewErrParamRequired("Tier"))
22446	}
22447
22448	if invalidParams.Len() > 0 {
22449		return invalidParams
22450	}
22451	return nil
22452}
22453
22454// SetTier sets the Tier field's value.
22455func (s *GlacierJobParameters) SetTier(v string) *GlacierJobParameters {
22456	s.Tier = &v
22457	return s
22458}
22459
22460// Container for grant information.
22461type Grant struct {
22462	_ struct{} `type:"structure"`
22463
22464	// The person being granted permissions.
22465	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
22466
22467	// Specifies the permission given to the grantee.
22468	Permission *string `type:"string" enum:"Permission"`
22469}
22470
22471// String returns the string representation.
22472//
22473// API parameter values that are decorated as "sensitive" in the API will not
22474// be included in the string output. The member name will be present, but the
22475// value will be replaced with "sensitive".
22476func (s Grant) String() string {
22477	return awsutil.Prettify(s)
22478}
22479
22480// GoString returns the string representation.
22481//
22482// API parameter values that are decorated as "sensitive" in the API will not
22483// be included in the string output. The member name will be present, but the
22484// value will be replaced with "sensitive".
22485func (s Grant) GoString() string {
22486	return s.String()
22487}
22488
22489// Validate inspects the fields of the type to determine if they are valid.
22490func (s *Grant) Validate() error {
22491	invalidParams := request.ErrInvalidParams{Context: "Grant"}
22492	if s.Grantee != nil {
22493		if err := s.Grantee.Validate(); err != nil {
22494			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
22495		}
22496	}
22497
22498	if invalidParams.Len() > 0 {
22499		return invalidParams
22500	}
22501	return nil
22502}
22503
22504// SetGrantee sets the Grantee field's value.
22505func (s *Grant) SetGrantee(v *Grantee) *Grant {
22506	s.Grantee = v
22507	return s
22508}
22509
22510// SetPermission sets the Permission field's value.
22511func (s *Grant) SetPermission(v string) *Grant {
22512	s.Permission = &v
22513	return s
22514}
22515
22516// Container for the person being granted permissions.
22517type Grantee struct {
22518	_ struct{} `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
22519
22520	// Screen name of the grantee.
22521	DisplayName *string `type:"string"`
22522
22523	// Email address of the grantee.
22524	//
22525	// Using email addresses to specify a grantee is only supported in the following
22526	// Amazon Web Services Regions:
22527	//
22528	//    * US East (N. Virginia)
22529	//
22530	//    * US West (N. California)
22531	//
22532	//    * US West (Oregon)
22533	//
22534	//    * Asia Pacific (Singapore)
22535	//
22536	//    * Asia Pacific (Sydney)
22537	//
22538	//    * Asia Pacific (Tokyo)
22539	//
22540	//    * Europe (Ireland)
22541	//
22542	//    * South America (São Paulo)
22543	//
22544	// For a list of all the Amazon S3 supported Regions and endpoints, see Regions
22545	// and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)
22546	// in the Amazon Web Services General Reference.
22547	EmailAddress *string `type:"string"`
22548
22549	// The canonical user ID of the grantee.
22550	ID *string `type:"string"`
22551
22552	// Type of grantee
22553	//
22554	// Type is a required field
22555	Type *string `locationName:"xsi:type" type:"string" xmlAttribute:"true" required:"true" enum:"Type"`
22556
22557	// URI of the grantee group.
22558	URI *string `type:"string"`
22559}
22560
22561// String returns the string representation.
22562//
22563// API parameter values that are decorated as "sensitive" in the API will not
22564// be included in the string output. The member name will be present, but the
22565// value will be replaced with "sensitive".
22566func (s Grantee) String() string {
22567	return awsutil.Prettify(s)
22568}
22569
22570// GoString returns the string representation.
22571//
22572// API parameter values that are decorated as "sensitive" in the API will not
22573// be included in the string output. The member name will be present, but the
22574// value will be replaced with "sensitive".
22575func (s Grantee) GoString() string {
22576	return s.String()
22577}
22578
22579// Validate inspects the fields of the type to determine if they are valid.
22580func (s *Grantee) Validate() error {
22581	invalidParams := request.ErrInvalidParams{Context: "Grantee"}
22582	if s.Type == nil {
22583		invalidParams.Add(request.NewErrParamRequired("Type"))
22584	}
22585
22586	if invalidParams.Len() > 0 {
22587		return invalidParams
22588	}
22589	return nil
22590}
22591
22592// SetDisplayName sets the DisplayName field's value.
22593func (s *Grantee) SetDisplayName(v string) *Grantee {
22594	s.DisplayName = &v
22595	return s
22596}
22597
22598// SetEmailAddress sets the EmailAddress field's value.
22599func (s *Grantee) SetEmailAddress(v string) *Grantee {
22600	s.EmailAddress = &v
22601	return s
22602}
22603
22604// SetID sets the ID field's value.
22605func (s *Grantee) SetID(v string) *Grantee {
22606	s.ID = &v
22607	return s
22608}
22609
22610// SetType sets the Type field's value.
22611func (s *Grantee) SetType(v string) *Grantee {
22612	s.Type = &v
22613	return s
22614}
22615
22616// SetURI sets the URI field's value.
22617func (s *Grantee) SetURI(v string) *Grantee {
22618	s.URI = &v
22619	return s
22620}
22621
22622type HeadBucketInput struct {
22623	_ struct{} `locationName:"HeadBucketRequest" type:"structure"`
22624
22625	// The bucket name.
22626	//
22627	// When using this action with an access point, you must direct requests to
22628	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
22629	// When using this action with an access point through the Amazon Web Services
22630	// SDKs, you provide the access point ARN in place of the bucket name. For more
22631	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
22632	// in the Amazon S3 User Guide.
22633	//
22634	// When using this action with Amazon S3 on Outposts, you must direct requests
22635	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
22636	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
22637	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
22638	// you provide the Outposts bucket ARN in place of the bucket name. For more
22639	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
22640	// in the Amazon S3 User Guide.
22641	//
22642	// Bucket is a required field
22643	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22644
22645	// The account ID of the expected bucket owner. If the bucket is owned by a
22646	// different account, the request will fail with an HTTP 403 (Access Denied)
22647	// error.
22648	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22649}
22650
22651// String returns the string representation.
22652//
22653// API parameter values that are decorated as "sensitive" in the API will not
22654// be included in the string output. The member name will be present, but the
22655// value will be replaced with "sensitive".
22656func (s HeadBucketInput) String() string {
22657	return awsutil.Prettify(s)
22658}
22659
22660// GoString returns the string representation.
22661//
22662// API parameter values that are decorated as "sensitive" in the API will not
22663// be included in the string output. The member name will be present, but the
22664// value will be replaced with "sensitive".
22665func (s HeadBucketInput) GoString() string {
22666	return s.String()
22667}
22668
22669// Validate inspects the fields of the type to determine if they are valid.
22670func (s *HeadBucketInput) Validate() error {
22671	invalidParams := request.ErrInvalidParams{Context: "HeadBucketInput"}
22672	if s.Bucket == nil {
22673		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22674	}
22675	if s.Bucket != nil && len(*s.Bucket) < 1 {
22676		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22677	}
22678
22679	if invalidParams.Len() > 0 {
22680		return invalidParams
22681	}
22682	return nil
22683}
22684
22685// SetBucket sets the Bucket field's value.
22686func (s *HeadBucketInput) SetBucket(v string) *HeadBucketInput {
22687	s.Bucket = &v
22688	return s
22689}
22690
22691func (s *HeadBucketInput) getBucket() (v string) {
22692	if s.Bucket == nil {
22693		return v
22694	}
22695	return *s.Bucket
22696}
22697
22698// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22699func (s *HeadBucketInput) SetExpectedBucketOwner(v string) *HeadBucketInput {
22700	s.ExpectedBucketOwner = &v
22701	return s
22702}
22703
22704func (s *HeadBucketInput) getEndpointARN() (arn.Resource, error) {
22705	if s.Bucket == nil {
22706		return nil, fmt.Errorf("member Bucket is nil")
22707	}
22708	return parseEndpointARN(*s.Bucket)
22709}
22710
22711func (s *HeadBucketInput) hasEndpointARN() bool {
22712	if s.Bucket == nil {
22713		return false
22714	}
22715	return arn.IsARN(*s.Bucket)
22716}
22717
22718// updateArnableField updates the value of the input field that
22719// takes an ARN as an input. This method is useful to backfill
22720// the parsed resource name from ARN into the input member.
22721// It returns a pointer to a modified copy of input and an error.
22722// Note that original input is not modified.
22723func (s HeadBucketInput) updateArnableField(v string) (interface{}, error) {
22724	if s.Bucket == nil {
22725		return nil, fmt.Errorf("member Bucket is nil")
22726	}
22727	s.Bucket = aws.String(v)
22728	return &s, nil
22729}
22730
22731type HeadBucketOutput struct {
22732	_ struct{} `type:"structure"`
22733}
22734
22735// String returns the string representation.
22736//
22737// API parameter values that are decorated as "sensitive" in the API will not
22738// be included in the string output. The member name will be present, but the
22739// value will be replaced with "sensitive".
22740func (s HeadBucketOutput) String() string {
22741	return awsutil.Prettify(s)
22742}
22743
22744// GoString returns the string representation.
22745//
22746// API parameter values that are decorated as "sensitive" in the API will not
22747// be included in the string output. The member name will be present, but the
22748// value will be replaced with "sensitive".
22749func (s HeadBucketOutput) GoString() string {
22750	return s.String()
22751}
22752
22753type HeadObjectInput struct {
22754	_ struct{} `locationName:"HeadObjectRequest" type:"structure"`
22755
22756	// The name of the bucket containing the object.
22757	//
22758	// When using this action with an access point, you must direct requests to
22759	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
22760	// When using this action with an access point through the Amazon Web Services
22761	// SDKs, you provide the access point ARN in place of the bucket name. For more
22762	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
22763	// in the Amazon S3 User Guide.
22764	//
22765	// When using this action with Amazon S3 on Outposts, you must direct requests
22766	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
22767	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
22768	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
22769	// you provide the Outposts bucket ARN in place of the bucket name. For more
22770	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
22771	// in the Amazon S3 User Guide.
22772	//
22773	// Bucket is a required field
22774	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
22775
22776	// The account ID of the expected bucket owner. If the bucket is owned by a
22777	// different account, the request will fail with an HTTP 403 (Access Denied)
22778	// error.
22779	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
22780
22781	// Return the object only if its entity tag (ETag) is the same as the one specified,
22782	// otherwise return a 412 (precondition failed).
22783	IfMatch *string `location:"header" locationName:"If-Match" type:"string"`
22784
22785	// Return the object only if it has been modified since the specified time,
22786	// otherwise return a 304 (not modified).
22787	IfModifiedSince *time.Time `location:"header" locationName:"If-Modified-Since" type:"timestamp"`
22788
22789	// Return the object only if its entity tag (ETag) is different from the one
22790	// specified, otherwise return a 304 (not modified).
22791	IfNoneMatch *string `location:"header" locationName:"If-None-Match" type:"string"`
22792
22793	// Return the object only if it has not been modified since the specified time,
22794	// otherwise return a 412 (precondition failed).
22795	IfUnmodifiedSince *time.Time `location:"header" locationName:"If-Unmodified-Since" type:"timestamp"`
22796
22797	// The object key.
22798	//
22799	// Key is a required field
22800	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
22801
22802	// Part number of the object being read. This is a positive integer between
22803	// 1 and 10,000. Effectively performs a 'ranged' HEAD request for the part specified.
22804	// Useful querying about the size of the part and the number of parts in this
22805	// object.
22806	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer"`
22807
22808	// Downloads the specified range bytes of an object. For more information about
22809	// the HTTP Range header, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
22810	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35).
22811	//
22812	// Amazon S3 doesn't support retrieving multiple ranges of data per GET request.
22813	Range *string `location:"header" locationName:"Range" type:"string"`
22814
22815	// Confirms that the requester knows that they will be charged for the request.
22816	// Bucket owners need not specify this parameter in their requests. For information
22817	// about downloading objects from requester pays buckets, see Downloading Objects
22818	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
22819	// in the Amazon S3 User Guide.
22820	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
22821
22822	// Specifies the algorithm to use to when encrypting the object (for example,
22823	// AES256).
22824	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
22825
22826	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
22827	// data. This value is used to store the object and then it is discarded; Amazon
22828	// S3 does not store the encryption key. The key must be appropriate for use
22829	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
22830	// header.
22831	//
22832	// SSECustomerKey is a sensitive parameter and its value will be
22833	// replaced with "sensitive" in string returned by HeadObjectInput's
22834	// String and GoString methods.
22835	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
22836
22837	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
22838	// Amazon S3 uses this header for a message integrity check to ensure that the
22839	// encryption key was transmitted without error.
22840	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
22841
22842	// VersionId used to reference a specific version of the object.
22843	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
22844}
22845
22846// String returns the string representation.
22847//
22848// API parameter values that are decorated as "sensitive" in the API will not
22849// be included in the string output. The member name will be present, but the
22850// value will be replaced with "sensitive".
22851func (s HeadObjectInput) String() string {
22852	return awsutil.Prettify(s)
22853}
22854
22855// GoString returns the string representation.
22856//
22857// API parameter values that are decorated as "sensitive" in the API will not
22858// be included in the string output. The member name will be present, but the
22859// value will be replaced with "sensitive".
22860func (s HeadObjectInput) GoString() string {
22861	return s.String()
22862}
22863
22864// Validate inspects the fields of the type to determine if they are valid.
22865func (s *HeadObjectInput) Validate() error {
22866	invalidParams := request.ErrInvalidParams{Context: "HeadObjectInput"}
22867	if s.Bucket == nil {
22868		invalidParams.Add(request.NewErrParamRequired("Bucket"))
22869	}
22870	if s.Bucket != nil && len(*s.Bucket) < 1 {
22871		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
22872	}
22873	if s.Key == nil {
22874		invalidParams.Add(request.NewErrParamRequired("Key"))
22875	}
22876	if s.Key != nil && len(*s.Key) < 1 {
22877		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
22878	}
22879
22880	if invalidParams.Len() > 0 {
22881		return invalidParams
22882	}
22883	return nil
22884}
22885
22886// SetBucket sets the Bucket field's value.
22887func (s *HeadObjectInput) SetBucket(v string) *HeadObjectInput {
22888	s.Bucket = &v
22889	return s
22890}
22891
22892func (s *HeadObjectInput) getBucket() (v string) {
22893	if s.Bucket == nil {
22894		return v
22895	}
22896	return *s.Bucket
22897}
22898
22899// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
22900func (s *HeadObjectInput) SetExpectedBucketOwner(v string) *HeadObjectInput {
22901	s.ExpectedBucketOwner = &v
22902	return s
22903}
22904
22905// SetIfMatch sets the IfMatch field's value.
22906func (s *HeadObjectInput) SetIfMatch(v string) *HeadObjectInput {
22907	s.IfMatch = &v
22908	return s
22909}
22910
22911// SetIfModifiedSince sets the IfModifiedSince field's value.
22912func (s *HeadObjectInput) SetIfModifiedSince(v time.Time) *HeadObjectInput {
22913	s.IfModifiedSince = &v
22914	return s
22915}
22916
22917// SetIfNoneMatch sets the IfNoneMatch field's value.
22918func (s *HeadObjectInput) SetIfNoneMatch(v string) *HeadObjectInput {
22919	s.IfNoneMatch = &v
22920	return s
22921}
22922
22923// SetIfUnmodifiedSince sets the IfUnmodifiedSince field's value.
22924func (s *HeadObjectInput) SetIfUnmodifiedSince(v time.Time) *HeadObjectInput {
22925	s.IfUnmodifiedSince = &v
22926	return s
22927}
22928
22929// SetKey sets the Key field's value.
22930func (s *HeadObjectInput) SetKey(v string) *HeadObjectInput {
22931	s.Key = &v
22932	return s
22933}
22934
22935// SetPartNumber sets the PartNumber field's value.
22936func (s *HeadObjectInput) SetPartNumber(v int64) *HeadObjectInput {
22937	s.PartNumber = &v
22938	return s
22939}
22940
22941// SetRange sets the Range field's value.
22942func (s *HeadObjectInput) SetRange(v string) *HeadObjectInput {
22943	s.Range = &v
22944	return s
22945}
22946
22947// SetRequestPayer sets the RequestPayer field's value.
22948func (s *HeadObjectInput) SetRequestPayer(v string) *HeadObjectInput {
22949	s.RequestPayer = &v
22950	return s
22951}
22952
22953// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
22954func (s *HeadObjectInput) SetSSECustomerAlgorithm(v string) *HeadObjectInput {
22955	s.SSECustomerAlgorithm = &v
22956	return s
22957}
22958
22959// SetSSECustomerKey sets the SSECustomerKey field's value.
22960func (s *HeadObjectInput) SetSSECustomerKey(v string) *HeadObjectInput {
22961	s.SSECustomerKey = &v
22962	return s
22963}
22964
22965func (s *HeadObjectInput) getSSECustomerKey() (v string) {
22966	if s.SSECustomerKey == nil {
22967		return v
22968	}
22969	return *s.SSECustomerKey
22970}
22971
22972// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
22973func (s *HeadObjectInput) SetSSECustomerKeyMD5(v string) *HeadObjectInput {
22974	s.SSECustomerKeyMD5 = &v
22975	return s
22976}
22977
22978// SetVersionId sets the VersionId field's value.
22979func (s *HeadObjectInput) SetVersionId(v string) *HeadObjectInput {
22980	s.VersionId = &v
22981	return s
22982}
22983
22984func (s *HeadObjectInput) getEndpointARN() (arn.Resource, error) {
22985	if s.Bucket == nil {
22986		return nil, fmt.Errorf("member Bucket is nil")
22987	}
22988	return parseEndpointARN(*s.Bucket)
22989}
22990
22991func (s *HeadObjectInput) hasEndpointARN() bool {
22992	if s.Bucket == nil {
22993		return false
22994	}
22995	return arn.IsARN(*s.Bucket)
22996}
22997
22998// updateArnableField updates the value of the input field that
22999// takes an ARN as an input. This method is useful to backfill
23000// the parsed resource name from ARN into the input member.
23001// It returns a pointer to a modified copy of input and an error.
23002// Note that original input is not modified.
23003func (s HeadObjectInput) updateArnableField(v string) (interface{}, error) {
23004	if s.Bucket == nil {
23005		return nil, fmt.Errorf("member Bucket is nil")
23006	}
23007	s.Bucket = aws.String(v)
23008	return &s, nil
23009}
23010
23011type HeadObjectOutput struct {
23012	_ struct{} `type:"structure"`
23013
23014	// Indicates that a range of bytes was specified.
23015	AcceptRanges *string `location:"header" locationName:"accept-ranges" type:"string"`
23016
23017	// The archive state of the head object.
23018	ArchiveStatus *string `location:"header" locationName:"x-amz-archive-status" type:"string" enum:"ArchiveStatus"`
23019
23020	// Indicates whether the object uses an S3 Bucket Key for server-side encryption
23021	// with Amazon Web Services KMS (SSE-KMS).
23022	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
23023
23024	// Specifies caching behavior along the request/reply chain.
23025	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
23026
23027	// Specifies presentational information for the object.
23028	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
23029
23030	// Specifies what content encodings have been applied to the object and thus
23031	// what decoding mechanisms must be applied to obtain the media-type referenced
23032	// by the Content-Type header field.
23033	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
23034
23035	// The language the content is in.
23036	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
23037
23038	// Size of the body in bytes.
23039	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
23040
23041	// A standard MIME type describing the format of the object data.
23042	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
23043
23044	// Specifies whether the object retrieved was (true) or was not (false) a Delete
23045	// Marker. If false, this response header does not appear in the response.
23046	DeleteMarker *bool `location:"header" locationName:"x-amz-delete-marker" type:"boolean"`
23047
23048	// An ETag is an opaque identifier assigned by a web server to a specific version
23049	// of a resource found at a URL.
23050	ETag *string `location:"header" locationName:"ETag" type:"string"`
23051
23052	// If the object expiration is configured (see PUT Bucket lifecycle), the response
23053	// includes this header. It includes the expiry-date and rule-id key-value pairs
23054	// providing object expiration information. The value of the rule-id is URL
23055	// encoded.
23056	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
23057
23058	// The date and time at which the object is no longer cacheable.
23059	Expires *string `location:"header" locationName:"Expires" type:"string"`
23060
23061	// Creation date of the object.
23062	LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
23063
23064	// A map of metadata to store with the object in S3.
23065	//
23066	// By default unmarshaled keys are written as a map keys in following canonicalized format:
23067	// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
23068	// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
23069	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
23070
23071	// This is set to the number of metadata entries not returned in x-amz-meta
23072	// headers. This can happen if you create metadata using an API like SOAP that
23073	// supports more flexible metadata than the REST API. For example, using SOAP,
23074	// you can create metadata whose values are not legal HTTP headers.
23075	MissingMeta *int64 `location:"header" locationName:"x-amz-missing-meta" type:"integer"`
23076
23077	// Specifies whether a legal hold is in effect for this object. This header
23078	// is only returned if the requester has the s3:GetObjectLegalHold permission.
23079	// This header is not returned if the specified version of this object has never
23080	// had a legal hold applied. For more information about S3 Object Lock, see
23081	// Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
23082	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
23083
23084	// The Object Lock mode, if any, that's in effect for this object. This header
23085	// is only returned if the requester has the s3:GetObjectRetention permission.
23086	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
23087	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
23088
23089	// The date and time when the Object Lock retention period expires. This header
23090	// is only returned if the requester has the s3:GetObjectRetention permission.
23091	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
23092
23093	// The count of parts this object has.
23094	PartsCount *int64 `location:"header" locationName:"x-amz-mp-parts-count" type:"integer"`
23095
23096	// Amazon S3 can return this header if your request involves a bucket that is
23097	// either a source or a destination in a replication rule.
23098	//
23099	// In replication, you have a source bucket on which you configure replication
23100	// and destination bucket or buckets where Amazon S3 stores object replicas.
23101	// When you request an object (GetObject) or object metadata (HeadObject) from
23102	// these buckets, Amazon S3 will return the x-amz-replication-status header
23103	// in the response as follows:
23104	//
23105	//    * If requesting an object from the source bucket — Amazon S3 will return
23106	//    the x-amz-replication-status header if the object in your request is eligible
23107	//    for replication. For example, suppose that in your replication configuration,
23108	//    you specify object prefix TaxDocs requesting Amazon S3 to replicate objects
23109	//    with key prefix TaxDocs. Any objects you upload with this key name prefix,
23110	//    for example TaxDocs/document1.pdf, are eligible for replication. For any
23111	//    object request with this key name prefix, Amazon S3 will return the x-amz-replication-status
23112	//    header with value PENDING, COMPLETED or FAILED indicating object replication
23113	//    status.
23114	//
23115	//    * If requesting an object from a destination bucket — Amazon S3 will
23116	//    return the x-amz-replication-status header with value REPLICA if the object
23117	//    in your request is a replica that Amazon S3 created and there is no replica
23118	//    modification replication in progress.
23119	//
23120	//    * When replicating objects to multiple destination buckets the x-amz-replication-status
23121	//    header acts differently. The header of the source object will only return
23122	//    a value of COMPLETED when replication is successful to all destinations.
23123	//    The header will remain at value PENDING until replication has completed
23124	//    for all destinations. If one or more destinations fails replication the
23125	//    header will return FAILED.
23126	//
23127	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html).
23128	ReplicationStatus *string `location:"header" locationName:"x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
23129
23130	// If present, indicates that the requester was successfully charged for the
23131	// request.
23132	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
23133
23134	// If the object is an archived object (an object whose storage class is GLACIER),
23135	// the response includes this header if either the archive restoration is in
23136	// progress (see RestoreObject (https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)
23137	// or an archive copy is already restored.
23138	//
23139	// If an archive copy is already restored, the header value indicates when Amazon
23140	// S3 is scheduled to delete the object copy. For example:
23141	//
23142	// x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00
23143	// GMT"
23144	//
23145	// If the object restoration is in progress, the header returns the value ongoing-request="true".
23146	//
23147	// For more information about archiving objects, see Transitioning Objects:
23148	// General Considerations (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html#lifecycle-transition-general-considerations).
23149	Restore *string `location:"header" locationName:"x-amz-restore" type:"string"`
23150
23151	// If server-side encryption with a customer-provided encryption key was requested,
23152	// the response will include this header confirming the encryption algorithm
23153	// used.
23154	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
23155
23156	// If server-side encryption with a customer-provided encryption key was requested,
23157	// the response will include this header to provide round-trip message integrity
23158	// verification of the customer-provided encryption key.
23159	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
23160
23161	// If present, specifies the ID of the Amazon Web Services Key Management Service
23162	// (Amazon Web Services KMS) symmetric customer managed key that was used for
23163	// the object.
23164	//
23165	// SSEKMSKeyId is a sensitive parameter and its value will be
23166	// replaced with "sensitive" in string returned by HeadObjectOutput's
23167	// String and GoString methods.
23168	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
23169
23170	// If the object is stored using server-side encryption either with an Amazon
23171	// Web Services KMS key or an Amazon S3-managed encryption key, the response
23172	// includes this header with the value of the server-side encryption algorithm
23173	// used when storing this object in Amazon S3 (for example, AES256, aws:kms).
23174	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
23175
23176	// Provides storage class information of the object. Amazon S3 returns this
23177	// header for all objects except for S3 Standard storage class objects.
23178	//
23179	// For more information, see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html).
23180	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
23181
23182	// Version of the object.
23183	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
23184
23185	// If the bucket is configured as a website, redirects requests for this object
23186	// to another object in the same bucket or to an external URL. Amazon S3 stores
23187	// the value of this header in the object metadata.
23188	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
23189}
23190
23191// String returns the string representation.
23192//
23193// API parameter values that are decorated as "sensitive" in the API will not
23194// be included in the string output. The member name will be present, but the
23195// value will be replaced with "sensitive".
23196func (s HeadObjectOutput) String() string {
23197	return awsutil.Prettify(s)
23198}
23199
23200// GoString returns the string representation.
23201//
23202// API parameter values that are decorated as "sensitive" in the API will not
23203// be included in the string output. The member name will be present, but the
23204// value will be replaced with "sensitive".
23205func (s HeadObjectOutput) GoString() string {
23206	return s.String()
23207}
23208
23209// SetAcceptRanges sets the AcceptRanges field's value.
23210func (s *HeadObjectOutput) SetAcceptRanges(v string) *HeadObjectOutput {
23211	s.AcceptRanges = &v
23212	return s
23213}
23214
23215// SetArchiveStatus sets the ArchiveStatus field's value.
23216func (s *HeadObjectOutput) SetArchiveStatus(v string) *HeadObjectOutput {
23217	s.ArchiveStatus = &v
23218	return s
23219}
23220
23221// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
23222func (s *HeadObjectOutput) SetBucketKeyEnabled(v bool) *HeadObjectOutput {
23223	s.BucketKeyEnabled = &v
23224	return s
23225}
23226
23227// SetCacheControl sets the CacheControl field's value.
23228func (s *HeadObjectOutput) SetCacheControl(v string) *HeadObjectOutput {
23229	s.CacheControl = &v
23230	return s
23231}
23232
23233// SetContentDisposition sets the ContentDisposition field's value.
23234func (s *HeadObjectOutput) SetContentDisposition(v string) *HeadObjectOutput {
23235	s.ContentDisposition = &v
23236	return s
23237}
23238
23239// SetContentEncoding sets the ContentEncoding field's value.
23240func (s *HeadObjectOutput) SetContentEncoding(v string) *HeadObjectOutput {
23241	s.ContentEncoding = &v
23242	return s
23243}
23244
23245// SetContentLanguage sets the ContentLanguage field's value.
23246func (s *HeadObjectOutput) SetContentLanguage(v string) *HeadObjectOutput {
23247	s.ContentLanguage = &v
23248	return s
23249}
23250
23251// SetContentLength sets the ContentLength field's value.
23252func (s *HeadObjectOutput) SetContentLength(v int64) *HeadObjectOutput {
23253	s.ContentLength = &v
23254	return s
23255}
23256
23257// SetContentType sets the ContentType field's value.
23258func (s *HeadObjectOutput) SetContentType(v string) *HeadObjectOutput {
23259	s.ContentType = &v
23260	return s
23261}
23262
23263// SetDeleteMarker sets the DeleteMarker field's value.
23264func (s *HeadObjectOutput) SetDeleteMarker(v bool) *HeadObjectOutput {
23265	s.DeleteMarker = &v
23266	return s
23267}
23268
23269// SetETag sets the ETag field's value.
23270func (s *HeadObjectOutput) SetETag(v string) *HeadObjectOutput {
23271	s.ETag = &v
23272	return s
23273}
23274
23275// SetExpiration sets the Expiration field's value.
23276func (s *HeadObjectOutput) SetExpiration(v string) *HeadObjectOutput {
23277	s.Expiration = &v
23278	return s
23279}
23280
23281// SetExpires sets the Expires field's value.
23282func (s *HeadObjectOutput) SetExpires(v string) *HeadObjectOutput {
23283	s.Expires = &v
23284	return s
23285}
23286
23287// SetLastModified sets the LastModified field's value.
23288func (s *HeadObjectOutput) SetLastModified(v time.Time) *HeadObjectOutput {
23289	s.LastModified = &v
23290	return s
23291}
23292
23293// SetMetadata sets the Metadata field's value.
23294func (s *HeadObjectOutput) SetMetadata(v map[string]*string) *HeadObjectOutput {
23295	s.Metadata = v
23296	return s
23297}
23298
23299// SetMissingMeta sets the MissingMeta field's value.
23300func (s *HeadObjectOutput) SetMissingMeta(v int64) *HeadObjectOutput {
23301	s.MissingMeta = &v
23302	return s
23303}
23304
23305// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
23306func (s *HeadObjectOutput) SetObjectLockLegalHoldStatus(v string) *HeadObjectOutput {
23307	s.ObjectLockLegalHoldStatus = &v
23308	return s
23309}
23310
23311// SetObjectLockMode sets the ObjectLockMode field's value.
23312func (s *HeadObjectOutput) SetObjectLockMode(v string) *HeadObjectOutput {
23313	s.ObjectLockMode = &v
23314	return s
23315}
23316
23317// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
23318func (s *HeadObjectOutput) SetObjectLockRetainUntilDate(v time.Time) *HeadObjectOutput {
23319	s.ObjectLockRetainUntilDate = &v
23320	return s
23321}
23322
23323// SetPartsCount sets the PartsCount field's value.
23324func (s *HeadObjectOutput) SetPartsCount(v int64) *HeadObjectOutput {
23325	s.PartsCount = &v
23326	return s
23327}
23328
23329// SetReplicationStatus sets the ReplicationStatus field's value.
23330func (s *HeadObjectOutput) SetReplicationStatus(v string) *HeadObjectOutput {
23331	s.ReplicationStatus = &v
23332	return s
23333}
23334
23335// SetRequestCharged sets the RequestCharged field's value.
23336func (s *HeadObjectOutput) SetRequestCharged(v string) *HeadObjectOutput {
23337	s.RequestCharged = &v
23338	return s
23339}
23340
23341// SetRestore sets the Restore field's value.
23342func (s *HeadObjectOutput) SetRestore(v string) *HeadObjectOutput {
23343	s.Restore = &v
23344	return s
23345}
23346
23347// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
23348func (s *HeadObjectOutput) SetSSECustomerAlgorithm(v string) *HeadObjectOutput {
23349	s.SSECustomerAlgorithm = &v
23350	return s
23351}
23352
23353// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
23354func (s *HeadObjectOutput) SetSSECustomerKeyMD5(v string) *HeadObjectOutput {
23355	s.SSECustomerKeyMD5 = &v
23356	return s
23357}
23358
23359// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
23360func (s *HeadObjectOutput) SetSSEKMSKeyId(v string) *HeadObjectOutput {
23361	s.SSEKMSKeyId = &v
23362	return s
23363}
23364
23365// SetServerSideEncryption sets the ServerSideEncryption field's value.
23366func (s *HeadObjectOutput) SetServerSideEncryption(v string) *HeadObjectOutput {
23367	s.ServerSideEncryption = &v
23368	return s
23369}
23370
23371// SetStorageClass sets the StorageClass field's value.
23372func (s *HeadObjectOutput) SetStorageClass(v string) *HeadObjectOutput {
23373	s.StorageClass = &v
23374	return s
23375}
23376
23377// SetVersionId sets the VersionId field's value.
23378func (s *HeadObjectOutput) SetVersionId(v string) *HeadObjectOutput {
23379	s.VersionId = &v
23380	return s
23381}
23382
23383// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
23384func (s *HeadObjectOutput) SetWebsiteRedirectLocation(v string) *HeadObjectOutput {
23385	s.WebsiteRedirectLocation = &v
23386	return s
23387}
23388
23389// Container for the Suffix element.
23390type IndexDocument struct {
23391	_ struct{} `type:"structure"`
23392
23393	// A suffix that is appended to a request that is for a directory on the website
23394	// endpoint (for example,if the suffix is index.html and you make a request
23395	// to samplebucket/images/ the data that is returned will be for the object
23396	// with the key name images/index.html) The suffix must not be empty and must
23397	// not include a slash character.
23398	//
23399	// Replacement must be made for object keys containing special characters (such
23400	// as carriage returns) when using XML requests. For more information, see XML
23401	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
23402	//
23403	// Suffix is a required field
23404	Suffix *string `type:"string" required:"true"`
23405}
23406
23407// String returns the string representation.
23408//
23409// API parameter values that are decorated as "sensitive" in the API will not
23410// be included in the string output. The member name will be present, but the
23411// value will be replaced with "sensitive".
23412func (s IndexDocument) String() string {
23413	return awsutil.Prettify(s)
23414}
23415
23416// GoString returns the string representation.
23417//
23418// API parameter values that are decorated as "sensitive" in the API will not
23419// be included in the string output. The member name will be present, but the
23420// value will be replaced with "sensitive".
23421func (s IndexDocument) GoString() string {
23422	return s.String()
23423}
23424
23425// Validate inspects the fields of the type to determine if they are valid.
23426func (s *IndexDocument) Validate() error {
23427	invalidParams := request.ErrInvalidParams{Context: "IndexDocument"}
23428	if s.Suffix == nil {
23429		invalidParams.Add(request.NewErrParamRequired("Suffix"))
23430	}
23431
23432	if invalidParams.Len() > 0 {
23433		return invalidParams
23434	}
23435	return nil
23436}
23437
23438// SetSuffix sets the Suffix field's value.
23439func (s *IndexDocument) SetSuffix(v string) *IndexDocument {
23440	s.Suffix = &v
23441	return s
23442}
23443
23444// Container element that identifies who initiated the multipart upload.
23445type Initiator struct {
23446	_ struct{} `type:"structure"`
23447
23448	// Name of the Principal.
23449	DisplayName *string `type:"string"`
23450
23451	// If the principal is an Amazon Web Services account, it provides the Canonical
23452	// User ID. If the principal is an IAM User, it provides a user ARN value.
23453	ID *string `type:"string"`
23454}
23455
23456// String returns the string representation.
23457//
23458// API parameter values that are decorated as "sensitive" in the API will not
23459// be included in the string output. The member name will be present, but the
23460// value will be replaced with "sensitive".
23461func (s Initiator) String() string {
23462	return awsutil.Prettify(s)
23463}
23464
23465// GoString returns the string representation.
23466//
23467// API parameter values that are decorated as "sensitive" in the API will not
23468// be included in the string output. The member name will be present, but the
23469// value will be replaced with "sensitive".
23470func (s Initiator) GoString() string {
23471	return s.String()
23472}
23473
23474// SetDisplayName sets the DisplayName field's value.
23475func (s *Initiator) SetDisplayName(v string) *Initiator {
23476	s.DisplayName = &v
23477	return s
23478}
23479
23480// SetID sets the ID field's value.
23481func (s *Initiator) SetID(v string) *Initiator {
23482	s.ID = &v
23483	return s
23484}
23485
23486// Describes the serialization format of the object.
23487type InputSerialization struct {
23488	_ struct{} `type:"structure"`
23489
23490	// Describes the serialization of a CSV-encoded object.
23491	CSV *CSVInput `type:"structure"`
23492
23493	// Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default
23494	// Value: NONE.
23495	CompressionType *string `type:"string" enum:"CompressionType"`
23496
23497	// Specifies JSON as object's input serialization format.
23498	JSON *JSONInput `type:"structure"`
23499
23500	// Specifies Parquet as object's input serialization format.
23501	Parquet *ParquetInput `type:"structure"`
23502}
23503
23504// String returns the string representation.
23505//
23506// API parameter values that are decorated as "sensitive" in the API will not
23507// be included in the string output. The member name will be present, but the
23508// value will be replaced with "sensitive".
23509func (s InputSerialization) String() string {
23510	return awsutil.Prettify(s)
23511}
23512
23513// GoString returns the string representation.
23514//
23515// API parameter values that are decorated as "sensitive" in the API will not
23516// be included in the string output. The member name will be present, but the
23517// value will be replaced with "sensitive".
23518func (s InputSerialization) GoString() string {
23519	return s.String()
23520}
23521
23522// SetCSV sets the CSV field's value.
23523func (s *InputSerialization) SetCSV(v *CSVInput) *InputSerialization {
23524	s.CSV = v
23525	return s
23526}
23527
23528// SetCompressionType sets the CompressionType field's value.
23529func (s *InputSerialization) SetCompressionType(v string) *InputSerialization {
23530	s.CompressionType = &v
23531	return s
23532}
23533
23534// SetJSON sets the JSON field's value.
23535func (s *InputSerialization) SetJSON(v *JSONInput) *InputSerialization {
23536	s.JSON = v
23537	return s
23538}
23539
23540// SetParquet sets the Parquet field's value.
23541func (s *InputSerialization) SetParquet(v *ParquetInput) *InputSerialization {
23542	s.Parquet = v
23543	return s
23544}
23545
23546// A container for specifying S3 Intelligent-Tiering filters. The filters determine
23547// the subset of objects to which the rule applies.
23548type IntelligentTieringAndOperator struct {
23549	_ struct{} `type:"structure"`
23550
23551	// An object key name prefix that identifies the subset of objects to which
23552	// the configuration applies.
23553	Prefix *string `type:"string"`
23554
23555	// All of these tags must exist in the object's tag set in order for the configuration
23556	// to apply.
23557	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
23558}
23559
23560// String returns the string representation.
23561//
23562// API parameter values that are decorated as "sensitive" in the API will not
23563// be included in the string output. The member name will be present, but the
23564// value will be replaced with "sensitive".
23565func (s IntelligentTieringAndOperator) String() string {
23566	return awsutil.Prettify(s)
23567}
23568
23569// GoString returns the string representation.
23570//
23571// API parameter values that are decorated as "sensitive" in the API will not
23572// be included in the string output. The member name will be present, but the
23573// value will be replaced with "sensitive".
23574func (s IntelligentTieringAndOperator) GoString() string {
23575	return s.String()
23576}
23577
23578// Validate inspects the fields of the type to determine if they are valid.
23579func (s *IntelligentTieringAndOperator) Validate() error {
23580	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringAndOperator"}
23581	if s.Tags != nil {
23582		for i, v := range s.Tags {
23583			if v == nil {
23584				continue
23585			}
23586			if err := v.Validate(); err != nil {
23587				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
23588			}
23589		}
23590	}
23591
23592	if invalidParams.Len() > 0 {
23593		return invalidParams
23594	}
23595	return nil
23596}
23597
23598// SetPrefix sets the Prefix field's value.
23599func (s *IntelligentTieringAndOperator) SetPrefix(v string) *IntelligentTieringAndOperator {
23600	s.Prefix = &v
23601	return s
23602}
23603
23604// SetTags sets the Tags field's value.
23605func (s *IntelligentTieringAndOperator) SetTags(v []*Tag) *IntelligentTieringAndOperator {
23606	s.Tags = v
23607	return s
23608}
23609
23610// Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.
23611//
23612// For information about the S3 Intelligent-Tiering storage class, see Storage
23613// class for automatically optimizing frequently and infrequently accessed objects
23614// (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access).
23615type IntelligentTieringConfiguration struct {
23616	_ struct{} `type:"structure"`
23617
23618	// Specifies a bucket filter. The configuration only includes objects that meet
23619	// the filter's criteria.
23620	Filter *IntelligentTieringFilter `type:"structure"`
23621
23622	// The ID used to identify the S3 Intelligent-Tiering configuration.
23623	//
23624	// Id is a required field
23625	Id *string `type:"string" required:"true"`
23626
23627	// Specifies the status of the configuration.
23628	//
23629	// Status is a required field
23630	Status *string `type:"string" required:"true" enum:"IntelligentTieringStatus"`
23631
23632	// Specifies the S3 Intelligent-Tiering storage class tier of the configuration.
23633	//
23634	// Tierings is a required field
23635	Tierings []*Tiering `locationName:"Tiering" type:"list" flattened:"true" required:"true"`
23636}
23637
23638// String returns the string representation.
23639//
23640// API parameter values that are decorated as "sensitive" in the API will not
23641// be included in the string output. The member name will be present, but the
23642// value will be replaced with "sensitive".
23643func (s IntelligentTieringConfiguration) String() string {
23644	return awsutil.Prettify(s)
23645}
23646
23647// GoString returns the string representation.
23648//
23649// API parameter values that are decorated as "sensitive" in the API will not
23650// be included in the string output. The member name will be present, but the
23651// value will be replaced with "sensitive".
23652func (s IntelligentTieringConfiguration) GoString() string {
23653	return s.String()
23654}
23655
23656// Validate inspects the fields of the type to determine if they are valid.
23657func (s *IntelligentTieringConfiguration) Validate() error {
23658	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringConfiguration"}
23659	if s.Id == nil {
23660		invalidParams.Add(request.NewErrParamRequired("Id"))
23661	}
23662	if s.Status == nil {
23663		invalidParams.Add(request.NewErrParamRequired("Status"))
23664	}
23665	if s.Tierings == nil {
23666		invalidParams.Add(request.NewErrParamRequired("Tierings"))
23667	}
23668	if s.Filter != nil {
23669		if err := s.Filter.Validate(); err != nil {
23670			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
23671		}
23672	}
23673	if s.Tierings != nil {
23674		for i, v := range s.Tierings {
23675			if v == nil {
23676				continue
23677			}
23678			if err := v.Validate(); err != nil {
23679				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tierings", i), err.(request.ErrInvalidParams))
23680			}
23681		}
23682	}
23683
23684	if invalidParams.Len() > 0 {
23685		return invalidParams
23686	}
23687	return nil
23688}
23689
23690// SetFilter sets the Filter field's value.
23691func (s *IntelligentTieringConfiguration) SetFilter(v *IntelligentTieringFilter) *IntelligentTieringConfiguration {
23692	s.Filter = v
23693	return s
23694}
23695
23696// SetId sets the Id field's value.
23697func (s *IntelligentTieringConfiguration) SetId(v string) *IntelligentTieringConfiguration {
23698	s.Id = &v
23699	return s
23700}
23701
23702// SetStatus sets the Status field's value.
23703func (s *IntelligentTieringConfiguration) SetStatus(v string) *IntelligentTieringConfiguration {
23704	s.Status = &v
23705	return s
23706}
23707
23708// SetTierings sets the Tierings field's value.
23709func (s *IntelligentTieringConfiguration) SetTierings(v []*Tiering) *IntelligentTieringConfiguration {
23710	s.Tierings = v
23711	return s
23712}
23713
23714// The Filter is used to identify objects that the S3 Intelligent-Tiering configuration
23715// applies to.
23716type IntelligentTieringFilter struct {
23717	_ struct{} `type:"structure"`
23718
23719	// A conjunction (logical AND) of predicates, which is used in evaluating a
23720	// metrics filter. The operator must have at least two predicates, and an object
23721	// must match all of the predicates in order for the filter to apply.
23722	And *IntelligentTieringAndOperator `type:"structure"`
23723
23724	// An object key name prefix that identifies the subset of objects to which
23725	// the rule applies.
23726	//
23727	// Replacement must be made for object keys containing special characters (such
23728	// as carriage returns) when using XML requests. For more information, see XML
23729	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
23730	Prefix *string `type:"string"`
23731
23732	// A container of a key value name pair.
23733	Tag *Tag `type:"structure"`
23734}
23735
23736// String returns the string representation.
23737//
23738// API parameter values that are decorated as "sensitive" in the API will not
23739// be included in the string output. The member name will be present, but the
23740// value will be replaced with "sensitive".
23741func (s IntelligentTieringFilter) String() string {
23742	return awsutil.Prettify(s)
23743}
23744
23745// GoString returns the string representation.
23746//
23747// API parameter values that are decorated as "sensitive" in the API will not
23748// be included in the string output. The member name will be present, but the
23749// value will be replaced with "sensitive".
23750func (s IntelligentTieringFilter) GoString() string {
23751	return s.String()
23752}
23753
23754// Validate inspects the fields of the type to determine if they are valid.
23755func (s *IntelligentTieringFilter) Validate() error {
23756	invalidParams := request.ErrInvalidParams{Context: "IntelligentTieringFilter"}
23757	if s.And != nil {
23758		if err := s.And.Validate(); err != nil {
23759			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
23760		}
23761	}
23762	if s.Tag != nil {
23763		if err := s.Tag.Validate(); err != nil {
23764			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
23765		}
23766	}
23767
23768	if invalidParams.Len() > 0 {
23769		return invalidParams
23770	}
23771	return nil
23772}
23773
23774// SetAnd sets the And field's value.
23775func (s *IntelligentTieringFilter) SetAnd(v *IntelligentTieringAndOperator) *IntelligentTieringFilter {
23776	s.And = v
23777	return s
23778}
23779
23780// SetPrefix sets the Prefix field's value.
23781func (s *IntelligentTieringFilter) SetPrefix(v string) *IntelligentTieringFilter {
23782	s.Prefix = &v
23783	return s
23784}
23785
23786// SetTag sets the Tag field's value.
23787func (s *IntelligentTieringFilter) SetTag(v *Tag) *IntelligentTieringFilter {
23788	s.Tag = v
23789	return s
23790}
23791
23792// Specifies the inventory configuration for an Amazon S3 bucket. For more information,
23793// see GET Bucket inventory (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETInventoryConfig.html)
23794// in the Amazon S3 API Reference.
23795type InventoryConfiguration struct {
23796	_ struct{} `type:"structure"`
23797
23798	// Contains information about where to publish the inventory results.
23799	//
23800	// Destination is a required field
23801	Destination *InventoryDestination `type:"structure" required:"true"`
23802
23803	// Specifies an inventory filter. The inventory only includes objects that meet
23804	// the filter's criteria.
23805	Filter *InventoryFilter `type:"structure"`
23806
23807	// The ID used to identify the inventory configuration.
23808	//
23809	// Id is a required field
23810	Id *string `type:"string" required:"true"`
23811
23812	// Object versions to include in the inventory list. If set to All, the list
23813	// includes all the object versions, which adds the version-related fields VersionId,
23814	// IsLatest, and DeleteMarker to the list. If set to Current, the list does
23815	// not contain these version-related fields.
23816	//
23817	// IncludedObjectVersions is a required field
23818	IncludedObjectVersions *string `type:"string" required:"true" enum:"InventoryIncludedObjectVersions"`
23819
23820	// Specifies whether the inventory is enabled or disabled. If set to True, an
23821	// inventory list is generated. If set to False, no inventory list is generated.
23822	//
23823	// IsEnabled is a required field
23824	IsEnabled *bool `type:"boolean" required:"true"`
23825
23826	// Contains the optional fields that are included in the inventory results.
23827	OptionalFields []*string `locationNameList:"Field" type:"list"`
23828
23829	// Specifies the schedule for generating inventory results.
23830	//
23831	// Schedule is a required field
23832	Schedule *InventorySchedule `type:"structure" required:"true"`
23833}
23834
23835// String returns the string representation.
23836//
23837// API parameter values that are decorated as "sensitive" in the API will not
23838// be included in the string output. The member name will be present, but the
23839// value will be replaced with "sensitive".
23840func (s InventoryConfiguration) String() string {
23841	return awsutil.Prettify(s)
23842}
23843
23844// GoString returns the string representation.
23845//
23846// API parameter values that are decorated as "sensitive" in the API will not
23847// be included in the string output. The member name will be present, but the
23848// value will be replaced with "sensitive".
23849func (s InventoryConfiguration) GoString() string {
23850	return s.String()
23851}
23852
23853// Validate inspects the fields of the type to determine if they are valid.
23854func (s *InventoryConfiguration) Validate() error {
23855	invalidParams := request.ErrInvalidParams{Context: "InventoryConfiguration"}
23856	if s.Destination == nil {
23857		invalidParams.Add(request.NewErrParamRequired("Destination"))
23858	}
23859	if s.Id == nil {
23860		invalidParams.Add(request.NewErrParamRequired("Id"))
23861	}
23862	if s.IncludedObjectVersions == nil {
23863		invalidParams.Add(request.NewErrParamRequired("IncludedObjectVersions"))
23864	}
23865	if s.IsEnabled == nil {
23866		invalidParams.Add(request.NewErrParamRequired("IsEnabled"))
23867	}
23868	if s.Schedule == nil {
23869		invalidParams.Add(request.NewErrParamRequired("Schedule"))
23870	}
23871	if s.Destination != nil {
23872		if err := s.Destination.Validate(); err != nil {
23873			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
23874		}
23875	}
23876	if s.Filter != nil {
23877		if err := s.Filter.Validate(); err != nil {
23878			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
23879		}
23880	}
23881	if s.Schedule != nil {
23882		if err := s.Schedule.Validate(); err != nil {
23883			invalidParams.AddNested("Schedule", err.(request.ErrInvalidParams))
23884		}
23885	}
23886
23887	if invalidParams.Len() > 0 {
23888		return invalidParams
23889	}
23890	return nil
23891}
23892
23893// SetDestination sets the Destination field's value.
23894func (s *InventoryConfiguration) SetDestination(v *InventoryDestination) *InventoryConfiguration {
23895	s.Destination = v
23896	return s
23897}
23898
23899// SetFilter sets the Filter field's value.
23900func (s *InventoryConfiguration) SetFilter(v *InventoryFilter) *InventoryConfiguration {
23901	s.Filter = v
23902	return s
23903}
23904
23905// SetId sets the Id field's value.
23906func (s *InventoryConfiguration) SetId(v string) *InventoryConfiguration {
23907	s.Id = &v
23908	return s
23909}
23910
23911// SetIncludedObjectVersions sets the IncludedObjectVersions field's value.
23912func (s *InventoryConfiguration) SetIncludedObjectVersions(v string) *InventoryConfiguration {
23913	s.IncludedObjectVersions = &v
23914	return s
23915}
23916
23917// SetIsEnabled sets the IsEnabled field's value.
23918func (s *InventoryConfiguration) SetIsEnabled(v bool) *InventoryConfiguration {
23919	s.IsEnabled = &v
23920	return s
23921}
23922
23923// SetOptionalFields sets the OptionalFields field's value.
23924func (s *InventoryConfiguration) SetOptionalFields(v []*string) *InventoryConfiguration {
23925	s.OptionalFields = v
23926	return s
23927}
23928
23929// SetSchedule sets the Schedule field's value.
23930func (s *InventoryConfiguration) SetSchedule(v *InventorySchedule) *InventoryConfiguration {
23931	s.Schedule = v
23932	return s
23933}
23934
23935// Specifies the inventory configuration for an Amazon S3 bucket.
23936type InventoryDestination struct {
23937	_ struct{} `type:"structure"`
23938
23939	// Contains the bucket name, file format, bucket owner (optional), and prefix
23940	// (optional) where inventory results are published.
23941	//
23942	// S3BucketDestination is a required field
23943	S3BucketDestination *InventoryS3BucketDestination `type:"structure" required:"true"`
23944}
23945
23946// String returns the string representation.
23947//
23948// API parameter values that are decorated as "sensitive" in the API will not
23949// be included in the string output. The member name will be present, but the
23950// value will be replaced with "sensitive".
23951func (s InventoryDestination) String() string {
23952	return awsutil.Prettify(s)
23953}
23954
23955// GoString returns the string representation.
23956//
23957// API parameter values that are decorated as "sensitive" in the API will not
23958// be included in the string output. The member name will be present, but the
23959// value will be replaced with "sensitive".
23960func (s InventoryDestination) GoString() string {
23961	return s.String()
23962}
23963
23964// Validate inspects the fields of the type to determine if they are valid.
23965func (s *InventoryDestination) Validate() error {
23966	invalidParams := request.ErrInvalidParams{Context: "InventoryDestination"}
23967	if s.S3BucketDestination == nil {
23968		invalidParams.Add(request.NewErrParamRequired("S3BucketDestination"))
23969	}
23970	if s.S3BucketDestination != nil {
23971		if err := s.S3BucketDestination.Validate(); err != nil {
23972			invalidParams.AddNested("S3BucketDestination", err.(request.ErrInvalidParams))
23973		}
23974	}
23975
23976	if invalidParams.Len() > 0 {
23977		return invalidParams
23978	}
23979	return nil
23980}
23981
23982// SetS3BucketDestination sets the S3BucketDestination field's value.
23983func (s *InventoryDestination) SetS3BucketDestination(v *InventoryS3BucketDestination) *InventoryDestination {
23984	s.S3BucketDestination = v
23985	return s
23986}
23987
23988// Contains the type of server-side encryption used to encrypt the inventory
23989// results.
23990type InventoryEncryption struct {
23991	_ struct{} `type:"structure"`
23992
23993	// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
23994	SSEKMS *SSEKMS `locationName:"SSE-KMS" type:"structure"`
23995
23996	// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
23997	SSES3 *SSES3 `locationName:"SSE-S3" type:"structure"`
23998}
23999
24000// String returns the string representation.
24001//
24002// API parameter values that are decorated as "sensitive" in the API will not
24003// be included in the string output. The member name will be present, but the
24004// value will be replaced with "sensitive".
24005func (s InventoryEncryption) String() string {
24006	return awsutil.Prettify(s)
24007}
24008
24009// GoString returns the string representation.
24010//
24011// API parameter values that are decorated as "sensitive" in the API will not
24012// be included in the string output. The member name will be present, but the
24013// value will be replaced with "sensitive".
24014func (s InventoryEncryption) GoString() string {
24015	return s.String()
24016}
24017
24018// Validate inspects the fields of the type to determine if they are valid.
24019func (s *InventoryEncryption) Validate() error {
24020	invalidParams := request.ErrInvalidParams{Context: "InventoryEncryption"}
24021	if s.SSEKMS != nil {
24022		if err := s.SSEKMS.Validate(); err != nil {
24023			invalidParams.AddNested("SSEKMS", err.(request.ErrInvalidParams))
24024		}
24025	}
24026
24027	if invalidParams.Len() > 0 {
24028		return invalidParams
24029	}
24030	return nil
24031}
24032
24033// SetSSEKMS sets the SSEKMS field's value.
24034func (s *InventoryEncryption) SetSSEKMS(v *SSEKMS) *InventoryEncryption {
24035	s.SSEKMS = v
24036	return s
24037}
24038
24039// SetSSES3 sets the SSES3 field's value.
24040func (s *InventoryEncryption) SetSSES3(v *SSES3) *InventoryEncryption {
24041	s.SSES3 = v
24042	return s
24043}
24044
24045// Specifies an inventory filter. The inventory only includes objects that meet
24046// the filter's criteria.
24047type InventoryFilter struct {
24048	_ struct{} `type:"structure"`
24049
24050	// The prefix that an object must have to be included in the inventory results.
24051	//
24052	// Prefix is a required field
24053	Prefix *string `type:"string" required:"true"`
24054}
24055
24056// String returns the string representation.
24057//
24058// API parameter values that are decorated as "sensitive" in the API will not
24059// be included in the string output. The member name will be present, but the
24060// value will be replaced with "sensitive".
24061func (s InventoryFilter) String() string {
24062	return awsutil.Prettify(s)
24063}
24064
24065// GoString returns the string representation.
24066//
24067// API parameter values that are decorated as "sensitive" in the API will not
24068// be included in the string output. The member name will be present, but the
24069// value will be replaced with "sensitive".
24070func (s InventoryFilter) GoString() string {
24071	return s.String()
24072}
24073
24074// Validate inspects the fields of the type to determine if they are valid.
24075func (s *InventoryFilter) Validate() error {
24076	invalidParams := request.ErrInvalidParams{Context: "InventoryFilter"}
24077	if s.Prefix == nil {
24078		invalidParams.Add(request.NewErrParamRequired("Prefix"))
24079	}
24080
24081	if invalidParams.Len() > 0 {
24082		return invalidParams
24083	}
24084	return nil
24085}
24086
24087// SetPrefix sets the Prefix field's value.
24088func (s *InventoryFilter) SetPrefix(v string) *InventoryFilter {
24089	s.Prefix = &v
24090	return s
24091}
24092
24093// Contains the bucket name, file format, bucket owner (optional), and prefix
24094// (optional) where inventory results are published.
24095type InventoryS3BucketDestination struct {
24096	_ struct{} `type:"structure"`
24097
24098	// The account ID that owns the destination S3 bucket. If no account ID is provided,
24099	// the owner is not validated before exporting data.
24100	//
24101	// Although this value is optional, we strongly recommend that you set it to
24102	// help prevent problems if the destination bucket ownership changes.
24103	AccountId *string `type:"string"`
24104
24105	// The Amazon Resource Name (ARN) of the bucket where inventory results will
24106	// be published.
24107	//
24108	// Bucket is a required field
24109	Bucket *string `type:"string" required:"true"`
24110
24111	// Contains the type of server-side encryption used to encrypt the inventory
24112	// results.
24113	Encryption *InventoryEncryption `type:"structure"`
24114
24115	// Specifies the output format of the inventory results.
24116	//
24117	// Format is a required field
24118	Format *string `type:"string" required:"true" enum:"InventoryFormat"`
24119
24120	// The prefix that is prepended to all inventory results.
24121	Prefix *string `type:"string"`
24122}
24123
24124// String returns the string representation.
24125//
24126// API parameter values that are decorated as "sensitive" in the API will not
24127// be included in the string output. The member name will be present, but the
24128// value will be replaced with "sensitive".
24129func (s InventoryS3BucketDestination) String() string {
24130	return awsutil.Prettify(s)
24131}
24132
24133// GoString returns the string representation.
24134//
24135// API parameter values that are decorated as "sensitive" in the API will not
24136// be included in the string output. The member name will be present, but the
24137// value will be replaced with "sensitive".
24138func (s InventoryS3BucketDestination) GoString() string {
24139	return s.String()
24140}
24141
24142// Validate inspects the fields of the type to determine if they are valid.
24143func (s *InventoryS3BucketDestination) Validate() error {
24144	invalidParams := request.ErrInvalidParams{Context: "InventoryS3BucketDestination"}
24145	if s.Bucket == nil {
24146		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24147	}
24148	if s.Format == nil {
24149		invalidParams.Add(request.NewErrParamRequired("Format"))
24150	}
24151	if s.Encryption != nil {
24152		if err := s.Encryption.Validate(); err != nil {
24153			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
24154		}
24155	}
24156
24157	if invalidParams.Len() > 0 {
24158		return invalidParams
24159	}
24160	return nil
24161}
24162
24163// SetAccountId sets the AccountId field's value.
24164func (s *InventoryS3BucketDestination) SetAccountId(v string) *InventoryS3BucketDestination {
24165	s.AccountId = &v
24166	return s
24167}
24168
24169// SetBucket sets the Bucket field's value.
24170func (s *InventoryS3BucketDestination) SetBucket(v string) *InventoryS3BucketDestination {
24171	s.Bucket = &v
24172	return s
24173}
24174
24175func (s *InventoryS3BucketDestination) getBucket() (v string) {
24176	if s.Bucket == nil {
24177		return v
24178	}
24179	return *s.Bucket
24180}
24181
24182// SetEncryption sets the Encryption field's value.
24183func (s *InventoryS3BucketDestination) SetEncryption(v *InventoryEncryption) *InventoryS3BucketDestination {
24184	s.Encryption = v
24185	return s
24186}
24187
24188// SetFormat sets the Format field's value.
24189func (s *InventoryS3BucketDestination) SetFormat(v string) *InventoryS3BucketDestination {
24190	s.Format = &v
24191	return s
24192}
24193
24194// SetPrefix sets the Prefix field's value.
24195func (s *InventoryS3BucketDestination) SetPrefix(v string) *InventoryS3BucketDestination {
24196	s.Prefix = &v
24197	return s
24198}
24199
24200// Specifies the schedule for generating inventory results.
24201type InventorySchedule struct {
24202	_ struct{} `type:"structure"`
24203
24204	// Specifies how frequently inventory results are produced.
24205	//
24206	// Frequency is a required field
24207	Frequency *string `type:"string" required:"true" enum:"InventoryFrequency"`
24208}
24209
24210// String returns the string representation.
24211//
24212// API parameter values that are decorated as "sensitive" in the API will not
24213// be included in the string output. The member name will be present, but the
24214// value will be replaced with "sensitive".
24215func (s InventorySchedule) String() string {
24216	return awsutil.Prettify(s)
24217}
24218
24219// GoString returns the string representation.
24220//
24221// API parameter values that are decorated as "sensitive" in the API will not
24222// be included in the string output. The member name will be present, but the
24223// value will be replaced with "sensitive".
24224func (s InventorySchedule) GoString() string {
24225	return s.String()
24226}
24227
24228// Validate inspects the fields of the type to determine if they are valid.
24229func (s *InventorySchedule) Validate() error {
24230	invalidParams := request.ErrInvalidParams{Context: "InventorySchedule"}
24231	if s.Frequency == nil {
24232		invalidParams.Add(request.NewErrParamRequired("Frequency"))
24233	}
24234
24235	if invalidParams.Len() > 0 {
24236		return invalidParams
24237	}
24238	return nil
24239}
24240
24241// SetFrequency sets the Frequency field's value.
24242func (s *InventorySchedule) SetFrequency(v string) *InventorySchedule {
24243	s.Frequency = &v
24244	return s
24245}
24246
24247// Specifies JSON as object's input serialization format.
24248type JSONInput struct {
24249	_ struct{} `type:"structure"`
24250
24251	// The type of JSON. Valid values: Document, Lines.
24252	Type *string `type:"string" enum:"JSONType"`
24253}
24254
24255// String returns the string representation.
24256//
24257// API parameter values that are decorated as "sensitive" in the API will not
24258// be included in the string output. The member name will be present, but the
24259// value will be replaced with "sensitive".
24260func (s JSONInput) String() string {
24261	return awsutil.Prettify(s)
24262}
24263
24264// GoString returns the string representation.
24265//
24266// API parameter values that are decorated as "sensitive" in the API will not
24267// be included in the string output. The member name will be present, but the
24268// value will be replaced with "sensitive".
24269func (s JSONInput) GoString() string {
24270	return s.String()
24271}
24272
24273// SetType sets the Type field's value.
24274func (s *JSONInput) SetType(v string) *JSONInput {
24275	s.Type = &v
24276	return s
24277}
24278
24279// Specifies JSON as request's output serialization format.
24280type JSONOutput struct {
24281	_ struct{} `type:"structure"`
24282
24283	// The value used to separate individual records in the output. If no value
24284	// is specified, Amazon S3 uses a newline character ('\n').
24285	RecordDelimiter *string `type:"string"`
24286}
24287
24288// String returns the string representation.
24289//
24290// API parameter values that are decorated as "sensitive" in the API will not
24291// be included in the string output. The member name will be present, but the
24292// value will be replaced with "sensitive".
24293func (s JSONOutput) String() string {
24294	return awsutil.Prettify(s)
24295}
24296
24297// GoString returns the string representation.
24298//
24299// API parameter values that are decorated as "sensitive" in the API will not
24300// be included in the string output. The member name will be present, but the
24301// value will be replaced with "sensitive".
24302func (s JSONOutput) GoString() string {
24303	return s.String()
24304}
24305
24306// SetRecordDelimiter sets the RecordDelimiter field's value.
24307func (s *JSONOutput) SetRecordDelimiter(v string) *JSONOutput {
24308	s.RecordDelimiter = &v
24309	return s
24310}
24311
24312// A container for object key name prefix and suffix filtering rules.
24313type KeyFilter struct {
24314	_ struct{} `type:"structure"`
24315
24316	// A list of containers for the key-value pair that defines the criteria for
24317	// the filter rule.
24318	FilterRules []*FilterRule `locationName:"FilterRule" type:"list" flattened:"true"`
24319}
24320
24321// String returns the string representation.
24322//
24323// API parameter values that are decorated as "sensitive" in the API will not
24324// be included in the string output. The member name will be present, but the
24325// value will be replaced with "sensitive".
24326func (s KeyFilter) String() string {
24327	return awsutil.Prettify(s)
24328}
24329
24330// GoString returns the string representation.
24331//
24332// API parameter values that are decorated as "sensitive" in the API will not
24333// be included in the string output. The member name will be present, but the
24334// value will be replaced with "sensitive".
24335func (s KeyFilter) GoString() string {
24336	return s.String()
24337}
24338
24339// SetFilterRules sets the FilterRules field's value.
24340func (s *KeyFilter) SetFilterRules(v []*FilterRule) *KeyFilter {
24341	s.FilterRules = v
24342	return s
24343}
24344
24345// A container for specifying the configuration for Lambda notifications.
24346type LambdaFunctionConfiguration struct {
24347	_ struct{} `type:"structure"`
24348
24349	// The Amazon S3 bucket event for which to invoke the Lambda function. For more
24350	// information, see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
24351	// in the Amazon S3 User Guide.
24352	//
24353	// Events is a required field
24354	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
24355
24356	// Specifies object key name filtering rules. For information about key name
24357	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
24358	// in the Amazon S3 User Guide.
24359	Filter *NotificationConfigurationFilter `type:"structure"`
24360
24361	// An optional unique identifier for configurations in a notification configuration.
24362	// If you don't provide one, Amazon S3 will assign an ID.
24363	Id *string `type:"string"`
24364
24365	// The Amazon Resource Name (ARN) of the Lambda function that Amazon S3 invokes
24366	// when the specified event type occurs.
24367	//
24368	// LambdaFunctionArn is a required field
24369	LambdaFunctionArn *string `locationName:"CloudFunction" type:"string" required:"true"`
24370}
24371
24372// String returns the string representation.
24373//
24374// API parameter values that are decorated as "sensitive" in the API will not
24375// be included in the string output. The member name will be present, but the
24376// value will be replaced with "sensitive".
24377func (s LambdaFunctionConfiguration) String() string {
24378	return awsutil.Prettify(s)
24379}
24380
24381// GoString returns the string representation.
24382//
24383// API parameter values that are decorated as "sensitive" in the API will not
24384// be included in the string output. The member name will be present, but the
24385// value will be replaced with "sensitive".
24386func (s LambdaFunctionConfiguration) GoString() string {
24387	return s.String()
24388}
24389
24390// Validate inspects the fields of the type to determine if they are valid.
24391func (s *LambdaFunctionConfiguration) Validate() error {
24392	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionConfiguration"}
24393	if s.Events == nil {
24394		invalidParams.Add(request.NewErrParamRequired("Events"))
24395	}
24396	if s.LambdaFunctionArn == nil {
24397		invalidParams.Add(request.NewErrParamRequired("LambdaFunctionArn"))
24398	}
24399
24400	if invalidParams.Len() > 0 {
24401		return invalidParams
24402	}
24403	return nil
24404}
24405
24406// SetEvents sets the Events field's value.
24407func (s *LambdaFunctionConfiguration) SetEvents(v []*string) *LambdaFunctionConfiguration {
24408	s.Events = v
24409	return s
24410}
24411
24412// SetFilter sets the Filter field's value.
24413func (s *LambdaFunctionConfiguration) SetFilter(v *NotificationConfigurationFilter) *LambdaFunctionConfiguration {
24414	s.Filter = v
24415	return s
24416}
24417
24418// SetId sets the Id field's value.
24419func (s *LambdaFunctionConfiguration) SetId(v string) *LambdaFunctionConfiguration {
24420	s.Id = &v
24421	return s
24422}
24423
24424// SetLambdaFunctionArn sets the LambdaFunctionArn field's value.
24425func (s *LambdaFunctionConfiguration) SetLambdaFunctionArn(v string) *LambdaFunctionConfiguration {
24426	s.LambdaFunctionArn = &v
24427	return s
24428}
24429
24430// Container for lifecycle rules. You can add as many as 1000 rules.
24431type LifecycleConfiguration struct {
24432	_ struct{} `type:"structure"`
24433
24434	// Specifies lifecycle configuration rules for an Amazon S3 bucket.
24435	//
24436	// Rules is a required field
24437	Rules []*Rule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
24438}
24439
24440// String returns the string representation.
24441//
24442// API parameter values that are decorated as "sensitive" in the API will not
24443// be included in the string output. The member name will be present, but the
24444// value will be replaced with "sensitive".
24445func (s LifecycleConfiguration) String() string {
24446	return awsutil.Prettify(s)
24447}
24448
24449// GoString returns the string representation.
24450//
24451// API parameter values that are decorated as "sensitive" in the API will not
24452// be included in the string output. The member name will be present, but the
24453// value will be replaced with "sensitive".
24454func (s LifecycleConfiguration) GoString() string {
24455	return s.String()
24456}
24457
24458// Validate inspects the fields of the type to determine if they are valid.
24459func (s *LifecycleConfiguration) Validate() error {
24460	invalidParams := request.ErrInvalidParams{Context: "LifecycleConfiguration"}
24461	if s.Rules == nil {
24462		invalidParams.Add(request.NewErrParamRequired("Rules"))
24463	}
24464	if s.Rules != nil {
24465		for i, v := range s.Rules {
24466			if v == nil {
24467				continue
24468			}
24469			if err := v.Validate(); err != nil {
24470				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
24471			}
24472		}
24473	}
24474
24475	if invalidParams.Len() > 0 {
24476		return invalidParams
24477	}
24478	return nil
24479}
24480
24481// SetRules sets the Rules field's value.
24482func (s *LifecycleConfiguration) SetRules(v []*Rule) *LifecycleConfiguration {
24483	s.Rules = v
24484	return s
24485}
24486
24487// Container for the expiration for the lifecycle of the object.
24488type LifecycleExpiration struct {
24489	_ struct{} `type:"structure"`
24490
24491	// Indicates at what date the object is to be moved or deleted. Should be in
24492	// GMT ISO 8601 Format.
24493	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
24494
24495	// Indicates the lifetime, in days, of the objects that are subject to the rule.
24496	// The value must be a non-zero positive integer.
24497	Days *int64 `type:"integer"`
24498
24499	// Indicates whether Amazon S3 will remove a delete marker with no noncurrent
24500	// versions. If set to true, the delete marker will be expired; if set to false
24501	// the policy takes no action. This cannot be specified with Days or Date in
24502	// a Lifecycle Expiration Policy.
24503	ExpiredObjectDeleteMarker *bool `type:"boolean"`
24504}
24505
24506// String returns the string representation.
24507//
24508// API parameter values that are decorated as "sensitive" in the API will not
24509// be included in the string output. The member name will be present, but the
24510// value will be replaced with "sensitive".
24511func (s LifecycleExpiration) String() string {
24512	return awsutil.Prettify(s)
24513}
24514
24515// GoString returns the string representation.
24516//
24517// API parameter values that are decorated as "sensitive" in the API will not
24518// be included in the string output. The member name will be present, but the
24519// value will be replaced with "sensitive".
24520func (s LifecycleExpiration) GoString() string {
24521	return s.String()
24522}
24523
24524// SetDate sets the Date field's value.
24525func (s *LifecycleExpiration) SetDate(v time.Time) *LifecycleExpiration {
24526	s.Date = &v
24527	return s
24528}
24529
24530// SetDays sets the Days field's value.
24531func (s *LifecycleExpiration) SetDays(v int64) *LifecycleExpiration {
24532	s.Days = &v
24533	return s
24534}
24535
24536// SetExpiredObjectDeleteMarker sets the ExpiredObjectDeleteMarker field's value.
24537func (s *LifecycleExpiration) SetExpiredObjectDeleteMarker(v bool) *LifecycleExpiration {
24538	s.ExpiredObjectDeleteMarker = &v
24539	return s
24540}
24541
24542// A lifecycle rule for individual objects in an Amazon S3 bucket.
24543type LifecycleRule struct {
24544	_ struct{} `type:"structure"`
24545
24546	// Specifies the days since the initiation of an incomplete multipart upload
24547	// that Amazon S3 will wait before permanently removing all parts of the upload.
24548	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
24549	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
24550	// in the Amazon S3 User Guide.
24551	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
24552
24553	// Specifies the expiration for the lifecycle of the object in the form of date,
24554	// days and, whether the object has a delete marker.
24555	Expiration *LifecycleExpiration `type:"structure"`
24556
24557	// The Filter is used to identify objects that a Lifecycle Rule applies to.
24558	// A Filter must have exactly one of Prefix, Tag, or And specified. Filter is
24559	// required if the LifecycleRule does not containt a Prefix element.
24560	Filter *LifecycleRuleFilter `type:"structure"`
24561
24562	// Unique identifier for the rule. The value cannot be longer than 255 characters.
24563	ID *string `type:"string"`
24564
24565	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
24566	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
24567	// configuration action on a bucket that has versioning enabled (or suspended)
24568	// to request that Amazon S3 delete noncurrent object versions at a specific
24569	// period in the object's lifetime.
24570	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
24571
24572	// Specifies the transition rule for the lifecycle rule that describes when
24573	// noncurrent objects transition to a specific storage class. If your bucket
24574	// is versioning-enabled (or versioning is suspended), you can set this action
24575	// to request that Amazon S3 transition noncurrent object versions to a specific
24576	// storage class at a set period in the object's lifetime.
24577	NoncurrentVersionTransitions []*NoncurrentVersionTransition `locationName:"NoncurrentVersionTransition" type:"list" flattened:"true"`
24578
24579	// Prefix identifying one or more objects to which the rule applies. This is
24580	// no longer used; use Filter instead.
24581	//
24582	// Replacement must be made for object keys containing special characters (such
24583	// as carriage returns) when using XML requests. For more information, see XML
24584	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
24585	//
24586	// Deprecated: Prefix has been deprecated
24587	Prefix *string `deprecated:"true" type:"string"`
24588
24589	// If 'Enabled', the rule is currently being applied. If 'Disabled', the rule
24590	// is not currently being applied.
24591	//
24592	// Status is a required field
24593	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
24594
24595	// Specifies when an Amazon S3 object transitions to a specified storage class.
24596	Transitions []*Transition `locationName:"Transition" type:"list" flattened:"true"`
24597}
24598
24599// String returns the string representation.
24600//
24601// API parameter values that are decorated as "sensitive" in the API will not
24602// be included in the string output. The member name will be present, but the
24603// value will be replaced with "sensitive".
24604func (s LifecycleRule) String() string {
24605	return awsutil.Prettify(s)
24606}
24607
24608// GoString returns the string representation.
24609//
24610// API parameter values that are decorated as "sensitive" in the API will not
24611// be included in the string output. The member name will be present, but the
24612// value will be replaced with "sensitive".
24613func (s LifecycleRule) GoString() string {
24614	return s.String()
24615}
24616
24617// Validate inspects the fields of the type to determine if they are valid.
24618func (s *LifecycleRule) Validate() error {
24619	invalidParams := request.ErrInvalidParams{Context: "LifecycleRule"}
24620	if s.Status == nil {
24621		invalidParams.Add(request.NewErrParamRequired("Status"))
24622	}
24623	if s.Filter != nil {
24624		if err := s.Filter.Validate(); err != nil {
24625			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
24626		}
24627	}
24628
24629	if invalidParams.Len() > 0 {
24630		return invalidParams
24631	}
24632	return nil
24633}
24634
24635// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
24636func (s *LifecycleRule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *LifecycleRule {
24637	s.AbortIncompleteMultipartUpload = v
24638	return s
24639}
24640
24641// SetExpiration sets the Expiration field's value.
24642func (s *LifecycleRule) SetExpiration(v *LifecycleExpiration) *LifecycleRule {
24643	s.Expiration = v
24644	return s
24645}
24646
24647// SetFilter sets the Filter field's value.
24648func (s *LifecycleRule) SetFilter(v *LifecycleRuleFilter) *LifecycleRule {
24649	s.Filter = v
24650	return s
24651}
24652
24653// SetID sets the ID field's value.
24654func (s *LifecycleRule) SetID(v string) *LifecycleRule {
24655	s.ID = &v
24656	return s
24657}
24658
24659// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
24660func (s *LifecycleRule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *LifecycleRule {
24661	s.NoncurrentVersionExpiration = v
24662	return s
24663}
24664
24665// SetNoncurrentVersionTransitions sets the NoncurrentVersionTransitions field's value.
24666func (s *LifecycleRule) SetNoncurrentVersionTransitions(v []*NoncurrentVersionTransition) *LifecycleRule {
24667	s.NoncurrentVersionTransitions = v
24668	return s
24669}
24670
24671// SetPrefix sets the Prefix field's value.
24672func (s *LifecycleRule) SetPrefix(v string) *LifecycleRule {
24673	s.Prefix = &v
24674	return s
24675}
24676
24677// SetStatus sets the Status field's value.
24678func (s *LifecycleRule) SetStatus(v string) *LifecycleRule {
24679	s.Status = &v
24680	return s
24681}
24682
24683// SetTransitions sets the Transitions field's value.
24684func (s *LifecycleRule) SetTransitions(v []*Transition) *LifecycleRule {
24685	s.Transitions = v
24686	return s
24687}
24688
24689// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
24690// more predicates. The Lifecycle Rule will apply to any object matching all
24691// of the predicates configured inside the And operator.
24692type LifecycleRuleAndOperator struct {
24693	_ struct{} `type:"structure"`
24694
24695	// Prefix identifying one or more objects to which the rule applies.
24696	Prefix *string `type:"string"`
24697
24698	// All of these tags must exist in the object's tag set in order for the rule
24699	// to apply.
24700	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
24701}
24702
24703// String returns the string representation.
24704//
24705// API parameter values that are decorated as "sensitive" in the API will not
24706// be included in the string output. The member name will be present, but the
24707// value will be replaced with "sensitive".
24708func (s LifecycleRuleAndOperator) String() string {
24709	return awsutil.Prettify(s)
24710}
24711
24712// GoString returns the string representation.
24713//
24714// API parameter values that are decorated as "sensitive" in the API will not
24715// be included in the string output. The member name will be present, but the
24716// value will be replaced with "sensitive".
24717func (s LifecycleRuleAndOperator) GoString() string {
24718	return s.String()
24719}
24720
24721// Validate inspects the fields of the type to determine if they are valid.
24722func (s *LifecycleRuleAndOperator) Validate() error {
24723	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleAndOperator"}
24724	if s.Tags != nil {
24725		for i, v := range s.Tags {
24726			if v == nil {
24727				continue
24728			}
24729			if err := v.Validate(); err != nil {
24730				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
24731			}
24732		}
24733	}
24734
24735	if invalidParams.Len() > 0 {
24736		return invalidParams
24737	}
24738	return nil
24739}
24740
24741// SetPrefix sets the Prefix field's value.
24742func (s *LifecycleRuleAndOperator) SetPrefix(v string) *LifecycleRuleAndOperator {
24743	s.Prefix = &v
24744	return s
24745}
24746
24747// SetTags sets the Tags field's value.
24748func (s *LifecycleRuleAndOperator) SetTags(v []*Tag) *LifecycleRuleAndOperator {
24749	s.Tags = v
24750	return s
24751}
24752
24753// The Filter is used to identify objects that a Lifecycle Rule applies to.
24754// A Filter must have exactly one of Prefix, Tag, or And specified.
24755type LifecycleRuleFilter struct {
24756	_ struct{} `type:"structure"`
24757
24758	// This is used in a Lifecycle Rule Filter to apply a logical AND to two or
24759	// more predicates. The Lifecycle Rule will apply to any object matching all
24760	// of the predicates configured inside the And operator.
24761	And *LifecycleRuleAndOperator `type:"structure"`
24762
24763	// Prefix identifying one or more objects to which the rule applies.
24764	//
24765	// Replacement must be made for object keys containing special characters (such
24766	// as carriage returns) when using XML requests. For more information, see XML
24767	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
24768	Prefix *string `type:"string"`
24769
24770	// This tag must exist in the object's tag set in order for the rule to apply.
24771	Tag *Tag `type:"structure"`
24772}
24773
24774// String returns the string representation.
24775//
24776// API parameter values that are decorated as "sensitive" in the API will not
24777// be included in the string output. The member name will be present, but the
24778// value will be replaced with "sensitive".
24779func (s LifecycleRuleFilter) String() string {
24780	return awsutil.Prettify(s)
24781}
24782
24783// GoString returns the string representation.
24784//
24785// API parameter values that are decorated as "sensitive" in the API will not
24786// be included in the string output. The member name will be present, but the
24787// value will be replaced with "sensitive".
24788func (s LifecycleRuleFilter) GoString() string {
24789	return s.String()
24790}
24791
24792// Validate inspects the fields of the type to determine if they are valid.
24793func (s *LifecycleRuleFilter) Validate() error {
24794	invalidParams := request.ErrInvalidParams{Context: "LifecycleRuleFilter"}
24795	if s.And != nil {
24796		if err := s.And.Validate(); err != nil {
24797			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
24798		}
24799	}
24800	if s.Tag != nil {
24801		if err := s.Tag.Validate(); err != nil {
24802			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
24803		}
24804	}
24805
24806	if invalidParams.Len() > 0 {
24807		return invalidParams
24808	}
24809	return nil
24810}
24811
24812// SetAnd sets the And field's value.
24813func (s *LifecycleRuleFilter) SetAnd(v *LifecycleRuleAndOperator) *LifecycleRuleFilter {
24814	s.And = v
24815	return s
24816}
24817
24818// SetPrefix sets the Prefix field's value.
24819func (s *LifecycleRuleFilter) SetPrefix(v string) *LifecycleRuleFilter {
24820	s.Prefix = &v
24821	return s
24822}
24823
24824// SetTag sets the Tag field's value.
24825func (s *LifecycleRuleFilter) SetTag(v *Tag) *LifecycleRuleFilter {
24826	s.Tag = v
24827	return s
24828}
24829
24830type ListBucketAnalyticsConfigurationsInput struct {
24831	_ struct{} `locationName:"ListBucketAnalyticsConfigurationsRequest" type:"structure"`
24832
24833	// The name of the bucket from which analytics configurations are retrieved.
24834	//
24835	// Bucket is a required field
24836	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
24837
24838	// The ContinuationToken that represents a placeholder from where this request
24839	// should begin.
24840	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
24841
24842	// The account ID of the expected bucket owner. If the bucket is owned by a
24843	// different account, the request will fail with an HTTP 403 (Access Denied)
24844	// error.
24845	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
24846}
24847
24848// String returns the string representation.
24849//
24850// API parameter values that are decorated as "sensitive" in the API will not
24851// be included in the string output. The member name will be present, but the
24852// value will be replaced with "sensitive".
24853func (s ListBucketAnalyticsConfigurationsInput) String() string {
24854	return awsutil.Prettify(s)
24855}
24856
24857// GoString returns the string representation.
24858//
24859// API parameter values that are decorated as "sensitive" in the API will not
24860// be included in the string output. The member name will be present, but the
24861// value will be replaced with "sensitive".
24862func (s ListBucketAnalyticsConfigurationsInput) GoString() string {
24863	return s.String()
24864}
24865
24866// Validate inspects the fields of the type to determine if they are valid.
24867func (s *ListBucketAnalyticsConfigurationsInput) Validate() error {
24868	invalidParams := request.ErrInvalidParams{Context: "ListBucketAnalyticsConfigurationsInput"}
24869	if s.Bucket == nil {
24870		invalidParams.Add(request.NewErrParamRequired("Bucket"))
24871	}
24872	if s.Bucket != nil && len(*s.Bucket) < 1 {
24873		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
24874	}
24875
24876	if invalidParams.Len() > 0 {
24877		return invalidParams
24878	}
24879	return nil
24880}
24881
24882// SetBucket sets the Bucket field's value.
24883func (s *ListBucketAnalyticsConfigurationsInput) SetBucket(v string) *ListBucketAnalyticsConfigurationsInput {
24884	s.Bucket = &v
24885	return s
24886}
24887
24888func (s *ListBucketAnalyticsConfigurationsInput) getBucket() (v string) {
24889	if s.Bucket == nil {
24890		return v
24891	}
24892	return *s.Bucket
24893}
24894
24895// SetContinuationToken sets the ContinuationToken field's value.
24896func (s *ListBucketAnalyticsConfigurationsInput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsInput {
24897	s.ContinuationToken = &v
24898	return s
24899}
24900
24901// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
24902func (s *ListBucketAnalyticsConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketAnalyticsConfigurationsInput {
24903	s.ExpectedBucketOwner = &v
24904	return s
24905}
24906
24907func (s *ListBucketAnalyticsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
24908	if s.Bucket == nil {
24909		return nil, fmt.Errorf("member Bucket is nil")
24910	}
24911	return parseEndpointARN(*s.Bucket)
24912}
24913
24914func (s *ListBucketAnalyticsConfigurationsInput) hasEndpointARN() bool {
24915	if s.Bucket == nil {
24916		return false
24917	}
24918	return arn.IsARN(*s.Bucket)
24919}
24920
24921// updateArnableField updates the value of the input field that
24922// takes an ARN as an input. This method is useful to backfill
24923// the parsed resource name from ARN into the input member.
24924// It returns a pointer to a modified copy of input and an error.
24925// Note that original input is not modified.
24926func (s ListBucketAnalyticsConfigurationsInput) updateArnableField(v string) (interface{}, error) {
24927	if s.Bucket == nil {
24928		return nil, fmt.Errorf("member Bucket is nil")
24929	}
24930	s.Bucket = aws.String(v)
24931	return &s, nil
24932}
24933
24934type ListBucketAnalyticsConfigurationsOutput struct {
24935	_ struct{} `type:"structure"`
24936
24937	// The list of analytics configurations for a bucket.
24938	AnalyticsConfigurationList []*AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"list" flattened:"true"`
24939
24940	// The marker that is used as a starting point for this analytics configuration
24941	// list response. This value is present if it was sent in the request.
24942	ContinuationToken *string `type:"string"`
24943
24944	// Indicates whether the returned list of analytics configurations is complete.
24945	// A value of true indicates that the list is not complete and the NextContinuationToken
24946	// will be provided for a subsequent request.
24947	IsTruncated *bool `type:"boolean"`
24948
24949	// NextContinuationToken is sent when isTruncated is true, which indicates that
24950	// there are more analytics configurations to list. The next request must include
24951	// this NextContinuationToken. The token is obfuscated and is not a usable value.
24952	NextContinuationToken *string `type:"string"`
24953}
24954
24955// String returns the string representation.
24956//
24957// API parameter values that are decorated as "sensitive" in the API will not
24958// be included in the string output. The member name will be present, but the
24959// value will be replaced with "sensitive".
24960func (s ListBucketAnalyticsConfigurationsOutput) String() string {
24961	return awsutil.Prettify(s)
24962}
24963
24964// GoString returns the string representation.
24965//
24966// API parameter values that are decorated as "sensitive" in the API will not
24967// be included in the string output. The member name will be present, but the
24968// value will be replaced with "sensitive".
24969func (s ListBucketAnalyticsConfigurationsOutput) GoString() string {
24970	return s.String()
24971}
24972
24973// SetAnalyticsConfigurationList sets the AnalyticsConfigurationList field's value.
24974func (s *ListBucketAnalyticsConfigurationsOutput) SetAnalyticsConfigurationList(v []*AnalyticsConfiguration) *ListBucketAnalyticsConfigurationsOutput {
24975	s.AnalyticsConfigurationList = v
24976	return s
24977}
24978
24979// SetContinuationToken sets the ContinuationToken field's value.
24980func (s *ListBucketAnalyticsConfigurationsOutput) SetContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
24981	s.ContinuationToken = &v
24982	return s
24983}
24984
24985// SetIsTruncated sets the IsTruncated field's value.
24986func (s *ListBucketAnalyticsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketAnalyticsConfigurationsOutput {
24987	s.IsTruncated = &v
24988	return s
24989}
24990
24991// SetNextContinuationToken sets the NextContinuationToken field's value.
24992func (s *ListBucketAnalyticsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketAnalyticsConfigurationsOutput {
24993	s.NextContinuationToken = &v
24994	return s
24995}
24996
24997type ListBucketIntelligentTieringConfigurationsInput struct {
24998	_ struct{} `locationName:"ListBucketIntelligentTieringConfigurationsRequest" type:"structure"`
24999
25000	// The name of the Amazon S3 bucket whose configuration you want to modify or
25001	// retrieve.
25002	//
25003	// Bucket is a required field
25004	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25005
25006	// The ContinuationToken that represents a placeholder from where this request
25007	// should begin.
25008	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
25009}
25010
25011// String returns the string representation.
25012//
25013// API parameter values that are decorated as "sensitive" in the API will not
25014// be included in the string output. The member name will be present, but the
25015// value will be replaced with "sensitive".
25016func (s ListBucketIntelligentTieringConfigurationsInput) String() string {
25017	return awsutil.Prettify(s)
25018}
25019
25020// GoString returns the string representation.
25021//
25022// API parameter values that are decorated as "sensitive" in the API will not
25023// be included in the string output. The member name will be present, but the
25024// value will be replaced with "sensitive".
25025func (s ListBucketIntelligentTieringConfigurationsInput) GoString() string {
25026	return s.String()
25027}
25028
25029// Validate inspects the fields of the type to determine if they are valid.
25030func (s *ListBucketIntelligentTieringConfigurationsInput) Validate() error {
25031	invalidParams := request.ErrInvalidParams{Context: "ListBucketIntelligentTieringConfigurationsInput"}
25032	if s.Bucket == nil {
25033		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25034	}
25035	if s.Bucket != nil && len(*s.Bucket) < 1 {
25036		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25037	}
25038
25039	if invalidParams.Len() > 0 {
25040		return invalidParams
25041	}
25042	return nil
25043}
25044
25045// SetBucket sets the Bucket field's value.
25046func (s *ListBucketIntelligentTieringConfigurationsInput) SetBucket(v string) *ListBucketIntelligentTieringConfigurationsInput {
25047	s.Bucket = &v
25048	return s
25049}
25050
25051func (s *ListBucketIntelligentTieringConfigurationsInput) getBucket() (v string) {
25052	if s.Bucket == nil {
25053		return v
25054	}
25055	return *s.Bucket
25056}
25057
25058// SetContinuationToken sets the ContinuationToken field's value.
25059func (s *ListBucketIntelligentTieringConfigurationsInput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsInput {
25060	s.ContinuationToken = &v
25061	return s
25062}
25063
25064func (s *ListBucketIntelligentTieringConfigurationsInput) getEndpointARN() (arn.Resource, error) {
25065	if s.Bucket == nil {
25066		return nil, fmt.Errorf("member Bucket is nil")
25067	}
25068	return parseEndpointARN(*s.Bucket)
25069}
25070
25071func (s *ListBucketIntelligentTieringConfigurationsInput) hasEndpointARN() bool {
25072	if s.Bucket == nil {
25073		return false
25074	}
25075	return arn.IsARN(*s.Bucket)
25076}
25077
25078// updateArnableField updates the value of the input field that
25079// takes an ARN as an input. This method is useful to backfill
25080// the parsed resource name from ARN into the input member.
25081// It returns a pointer to a modified copy of input and an error.
25082// Note that original input is not modified.
25083func (s ListBucketIntelligentTieringConfigurationsInput) updateArnableField(v string) (interface{}, error) {
25084	if s.Bucket == nil {
25085		return nil, fmt.Errorf("member Bucket is nil")
25086	}
25087	s.Bucket = aws.String(v)
25088	return &s, nil
25089}
25090
25091type ListBucketIntelligentTieringConfigurationsOutput struct {
25092	_ struct{} `type:"structure"`
25093
25094	// The ContinuationToken that represents a placeholder from where this request
25095	// should begin.
25096	ContinuationToken *string `type:"string"`
25097
25098	// The list of S3 Intelligent-Tiering configurations for a bucket.
25099	IntelligentTieringConfigurationList []*IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"list" flattened:"true"`
25100
25101	// Indicates whether the returned list of analytics configurations is complete.
25102	// A value of true indicates that the list is not complete and the NextContinuationToken
25103	// will be provided for a subsequent request.
25104	IsTruncated *bool `type:"boolean"`
25105
25106	// The marker used to continue this inventory configuration listing. Use the
25107	// NextContinuationToken from this response to continue the listing in a subsequent
25108	// request. The continuation token is an opaque value that Amazon S3 understands.
25109	NextContinuationToken *string `type:"string"`
25110}
25111
25112// String returns the string representation.
25113//
25114// API parameter values that are decorated as "sensitive" in the API will not
25115// be included in the string output. The member name will be present, but the
25116// value will be replaced with "sensitive".
25117func (s ListBucketIntelligentTieringConfigurationsOutput) String() string {
25118	return awsutil.Prettify(s)
25119}
25120
25121// GoString returns the string representation.
25122//
25123// API parameter values that are decorated as "sensitive" in the API will not
25124// be included in the string output. The member name will be present, but the
25125// value will be replaced with "sensitive".
25126func (s ListBucketIntelligentTieringConfigurationsOutput) GoString() string {
25127	return s.String()
25128}
25129
25130// SetContinuationToken sets the ContinuationToken field's value.
25131func (s *ListBucketIntelligentTieringConfigurationsOutput) SetContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
25132	s.ContinuationToken = &v
25133	return s
25134}
25135
25136// SetIntelligentTieringConfigurationList sets the IntelligentTieringConfigurationList field's value.
25137func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIntelligentTieringConfigurationList(v []*IntelligentTieringConfiguration) *ListBucketIntelligentTieringConfigurationsOutput {
25138	s.IntelligentTieringConfigurationList = v
25139	return s
25140}
25141
25142// SetIsTruncated sets the IsTruncated field's value.
25143func (s *ListBucketIntelligentTieringConfigurationsOutput) SetIsTruncated(v bool) *ListBucketIntelligentTieringConfigurationsOutput {
25144	s.IsTruncated = &v
25145	return s
25146}
25147
25148// SetNextContinuationToken sets the NextContinuationToken field's value.
25149func (s *ListBucketIntelligentTieringConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketIntelligentTieringConfigurationsOutput {
25150	s.NextContinuationToken = &v
25151	return s
25152}
25153
25154type ListBucketInventoryConfigurationsInput struct {
25155	_ struct{} `locationName:"ListBucketInventoryConfigurationsRequest" type:"structure"`
25156
25157	// The name of the bucket containing the inventory configurations to retrieve.
25158	//
25159	// Bucket is a required field
25160	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25161
25162	// The marker used to continue an inventory configuration listing that has been
25163	// truncated. Use the NextContinuationToken from a previously truncated list
25164	// response to continue the listing. The continuation token is an opaque value
25165	// that Amazon S3 understands.
25166	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
25167
25168	// The account ID of the expected bucket owner. If the bucket is owned by a
25169	// different account, the request will fail with an HTTP 403 (Access Denied)
25170	// error.
25171	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25172}
25173
25174// String returns the string representation.
25175//
25176// API parameter values that are decorated as "sensitive" in the API will not
25177// be included in the string output. The member name will be present, but the
25178// value will be replaced with "sensitive".
25179func (s ListBucketInventoryConfigurationsInput) String() string {
25180	return awsutil.Prettify(s)
25181}
25182
25183// GoString returns the string representation.
25184//
25185// API parameter values that are decorated as "sensitive" in the API will not
25186// be included in the string output. The member name will be present, but the
25187// value will be replaced with "sensitive".
25188func (s ListBucketInventoryConfigurationsInput) GoString() string {
25189	return s.String()
25190}
25191
25192// Validate inspects the fields of the type to determine if they are valid.
25193func (s *ListBucketInventoryConfigurationsInput) Validate() error {
25194	invalidParams := request.ErrInvalidParams{Context: "ListBucketInventoryConfigurationsInput"}
25195	if s.Bucket == nil {
25196		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25197	}
25198	if s.Bucket != nil && len(*s.Bucket) < 1 {
25199		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25200	}
25201
25202	if invalidParams.Len() > 0 {
25203		return invalidParams
25204	}
25205	return nil
25206}
25207
25208// SetBucket sets the Bucket field's value.
25209func (s *ListBucketInventoryConfigurationsInput) SetBucket(v string) *ListBucketInventoryConfigurationsInput {
25210	s.Bucket = &v
25211	return s
25212}
25213
25214func (s *ListBucketInventoryConfigurationsInput) getBucket() (v string) {
25215	if s.Bucket == nil {
25216		return v
25217	}
25218	return *s.Bucket
25219}
25220
25221// SetContinuationToken sets the ContinuationToken field's value.
25222func (s *ListBucketInventoryConfigurationsInput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsInput {
25223	s.ContinuationToken = &v
25224	return s
25225}
25226
25227// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
25228func (s *ListBucketInventoryConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketInventoryConfigurationsInput {
25229	s.ExpectedBucketOwner = &v
25230	return s
25231}
25232
25233func (s *ListBucketInventoryConfigurationsInput) getEndpointARN() (arn.Resource, error) {
25234	if s.Bucket == nil {
25235		return nil, fmt.Errorf("member Bucket is nil")
25236	}
25237	return parseEndpointARN(*s.Bucket)
25238}
25239
25240func (s *ListBucketInventoryConfigurationsInput) hasEndpointARN() bool {
25241	if s.Bucket == nil {
25242		return false
25243	}
25244	return arn.IsARN(*s.Bucket)
25245}
25246
25247// updateArnableField updates the value of the input field that
25248// takes an ARN as an input. This method is useful to backfill
25249// the parsed resource name from ARN into the input member.
25250// It returns a pointer to a modified copy of input and an error.
25251// Note that original input is not modified.
25252func (s ListBucketInventoryConfigurationsInput) updateArnableField(v string) (interface{}, error) {
25253	if s.Bucket == nil {
25254		return nil, fmt.Errorf("member Bucket is nil")
25255	}
25256	s.Bucket = aws.String(v)
25257	return &s, nil
25258}
25259
25260type ListBucketInventoryConfigurationsOutput struct {
25261	_ struct{} `type:"structure"`
25262
25263	// If sent in the request, the marker that is used as a starting point for this
25264	// inventory configuration list response.
25265	ContinuationToken *string `type:"string"`
25266
25267	// The list of inventory configurations for a bucket.
25268	InventoryConfigurationList []*InventoryConfiguration `locationName:"InventoryConfiguration" type:"list" flattened:"true"`
25269
25270	// Tells whether the returned list of inventory configurations is complete.
25271	// A value of true indicates that the list is not complete and the NextContinuationToken
25272	// is provided for a subsequent request.
25273	IsTruncated *bool `type:"boolean"`
25274
25275	// The marker used to continue this inventory configuration listing. Use the
25276	// NextContinuationToken from this response to continue the listing in a subsequent
25277	// request. The continuation token is an opaque value that Amazon S3 understands.
25278	NextContinuationToken *string `type:"string"`
25279}
25280
25281// String returns the string representation.
25282//
25283// API parameter values that are decorated as "sensitive" in the API will not
25284// be included in the string output. The member name will be present, but the
25285// value will be replaced with "sensitive".
25286func (s ListBucketInventoryConfigurationsOutput) String() string {
25287	return awsutil.Prettify(s)
25288}
25289
25290// GoString returns the string representation.
25291//
25292// API parameter values that are decorated as "sensitive" in the API will not
25293// be included in the string output. The member name will be present, but the
25294// value will be replaced with "sensitive".
25295func (s ListBucketInventoryConfigurationsOutput) GoString() string {
25296	return s.String()
25297}
25298
25299// SetContinuationToken sets the ContinuationToken field's value.
25300func (s *ListBucketInventoryConfigurationsOutput) SetContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
25301	s.ContinuationToken = &v
25302	return s
25303}
25304
25305// SetInventoryConfigurationList sets the InventoryConfigurationList field's value.
25306func (s *ListBucketInventoryConfigurationsOutput) SetInventoryConfigurationList(v []*InventoryConfiguration) *ListBucketInventoryConfigurationsOutput {
25307	s.InventoryConfigurationList = v
25308	return s
25309}
25310
25311// SetIsTruncated sets the IsTruncated field's value.
25312func (s *ListBucketInventoryConfigurationsOutput) SetIsTruncated(v bool) *ListBucketInventoryConfigurationsOutput {
25313	s.IsTruncated = &v
25314	return s
25315}
25316
25317// SetNextContinuationToken sets the NextContinuationToken field's value.
25318func (s *ListBucketInventoryConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketInventoryConfigurationsOutput {
25319	s.NextContinuationToken = &v
25320	return s
25321}
25322
25323type ListBucketMetricsConfigurationsInput struct {
25324	_ struct{} `locationName:"ListBucketMetricsConfigurationsRequest" type:"structure"`
25325
25326	// The name of the bucket containing the metrics configurations to retrieve.
25327	//
25328	// Bucket is a required field
25329	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25330
25331	// The marker that is used to continue a metrics configuration listing that
25332	// has been truncated. Use the NextContinuationToken from a previously truncated
25333	// list response to continue the listing. The continuation token is an opaque
25334	// value that Amazon S3 understands.
25335	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
25336
25337	// The account ID of the expected bucket owner. If the bucket is owned by a
25338	// different account, the request will fail with an HTTP 403 (Access Denied)
25339	// error.
25340	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25341}
25342
25343// String returns the string representation.
25344//
25345// API parameter values that are decorated as "sensitive" in the API will not
25346// be included in the string output. The member name will be present, but the
25347// value will be replaced with "sensitive".
25348func (s ListBucketMetricsConfigurationsInput) String() string {
25349	return awsutil.Prettify(s)
25350}
25351
25352// GoString returns the string representation.
25353//
25354// API parameter values that are decorated as "sensitive" in the API will not
25355// be included in the string output. The member name will be present, but the
25356// value will be replaced with "sensitive".
25357func (s ListBucketMetricsConfigurationsInput) GoString() string {
25358	return s.String()
25359}
25360
25361// Validate inspects the fields of the type to determine if they are valid.
25362func (s *ListBucketMetricsConfigurationsInput) Validate() error {
25363	invalidParams := request.ErrInvalidParams{Context: "ListBucketMetricsConfigurationsInput"}
25364	if s.Bucket == nil {
25365		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25366	}
25367	if s.Bucket != nil && len(*s.Bucket) < 1 {
25368		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25369	}
25370
25371	if invalidParams.Len() > 0 {
25372		return invalidParams
25373	}
25374	return nil
25375}
25376
25377// SetBucket sets the Bucket field's value.
25378func (s *ListBucketMetricsConfigurationsInput) SetBucket(v string) *ListBucketMetricsConfigurationsInput {
25379	s.Bucket = &v
25380	return s
25381}
25382
25383func (s *ListBucketMetricsConfigurationsInput) getBucket() (v string) {
25384	if s.Bucket == nil {
25385		return v
25386	}
25387	return *s.Bucket
25388}
25389
25390// SetContinuationToken sets the ContinuationToken field's value.
25391func (s *ListBucketMetricsConfigurationsInput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsInput {
25392	s.ContinuationToken = &v
25393	return s
25394}
25395
25396// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
25397func (s *ListBucketMetricsConfigurationsInput) SetExpectedBucketOwner(v string) *ListBucketMetricsConfigurationsInput {
25398	s.ExpectedBucketOwner = &v
25399	return s
25400}
25401
25402func (s *ListBucketMetricsConfigurationsInput) getEndpointARN() (arn.Resource, error) {
25403	if s.Bucket == nil {
25404		return nil, fmt.Errorf("member Bucket is nil")
25405	}
25406	return parseEndpointARN(*s.Bucket)
25407}
25408
25409func (s *ListBucketMetricsConfigurationsInput) hasEndpointARN() bool {
25410	if s.Bucket == nil {
25411		return false
25412	}
25413	return arn.IsARN(*s.Bucket)
25414}
25415
25416// updateArnableField updates the value of the input field that
25417// takes an ARN as an input. This method is useful to backfill
25418// the parsed resource name from ARN into the input member.
25419// It returns a pointer to a modified copy of input and an error.
25420// Note that original input is not modified.
25421func (s ListBucketMetricsConfigurationsInput) updateArnableField(v string) (interface{}, error) {
25422	if s.Bucket == nil {
25423		return nil, fmt.Errorf("member Bucket is nil")
25424	}
25425	s.Bucket = aws.String(v)
25426	return &s, nil
25427}
25428
25429type ListBucketMetricsConfigurationsOutput struct {
25430	_ struct{} `type:"structure"`
25431
25432	// The marker that is used as a starting point for this metrics configuration
25433	// list response. This value is present if it was sent in the request.
25434	ContinuationToken *string `type:"string"`
25435
25436	// Indicates whether the returned list of metrics configurations is complete.
25437	// A value of true indicates that the list is not complete and the NextContinuationToken
25438	// will be provided for a subsequent request.
25439	IsTruncated *bool `type:"boolean"`
25440
25441	// The list of metrics configurations for a bucket.
25442	MetricsConfigurationList []*MetricsConfiguration `locationName:"MetricsConfiguration" type:"list" flattened:"true"`
25443
25444	// The marker used to continue a metrics configuration listing that has been
25445	// truncated. Use the NextContinuationToken from a previously truncated list
25446	// response to continue the listing. The continuation token is an opaque value
25447	// that Amazon S3 understands.
25448	NextContinuationToken *string `type:"string"`
25449}
25450
25451// String returns the string representation.
25452//
25453// API parameter values that are decorated as "sensitive" in the API will not
25454// be included in the string output. The member name will be present, but the
25455// value will be replaced with "sensitive".
25456func (s ListBucketMetricsConfigurationsOutput) String() string {
25457	return awsutil.Prettify(s)
25458}
25459
25460// GoString returns the string representation.
25461//
25462// API parameter values that are decorated as "sensitive" in the API will not
25463// be included in the string output. The member name will be present, but the
25464// value will be replaced with "sensitive".
25465func (s ListBucketMetricsConfigurationsOutput) GoString() string {
25466	return s.String()
25467}
25468
25469// SetContinuationToken sets the ContinuationToken field's value.
25470func (s *ListBucketMetricsConfigurationsOutput) SetContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
25471	s.ContinuationToken = &v
25472	return s
25473}
25474
25475// SetIsTruncated sets the IsTruncated field's value.
25476func (s *ListBucketMetricsConfigurationsOutput) SetIsTruncated(v bool) *ListBucketMetricsConfigurationsOutput {
25477	s.IsTruncated = &v
25478	return s
25479}
25480
25481// SetMetricsConfigurationList sets the MetricsConfigurationList field's value.
25482func (s *ListBucketMetricsConfigurationsOutput) SetMetricsConfigurationList(v []*MetricsConfiguration) *ListBucketMetricsConfigurationsOutput {
25483	s.MetricsConfigurationList = v
25484	return s
25485}
25486
25487// SetNextContinuationToken sets the NextContinuationToken field's value.
25488func (s *ListBucketMetricsConfigurationsOutput) SetNextContinuationToken(v string) *ListBucketMetricsConfigurationsOutput {
25489	s.NextContinuationToken = &v
25490	return s
25491}
25492
25493type ListBucketsInput struct {
25494	_ struct{} `type:"structure"`
25495}
25496
25497// String returns the string representation.
25498//
25499// API parameter values that are decorated as "sensitive" in the API will not
25500// be included in the string output. The member name will be present, but the
25501// value will be replaced with "sensitive".
25502func (s ListBucketsInput) String() string {
25503	return awsutil.Prettify(s)
25504}
25505
25506// GoString returns the string representation.
25507//
25508// API parameter values that are decorated as "sensitive" in the API will not
25509// be included in the string output. The member name will be present, but the
25510// value will be replaced with "sensitive".
25511func (s ListBucketsInput) GoString() string {
25512	return s.String()
25513}
25514
25515type ListBucketsOutput struct {
25516	_ struct{} `type:"structure"`
25517
25518	// The list of buckets owned by the requestor.
25519	Buckets []*Bucket `locationNameList:"Bucket" type:"list"`
25520
25521	// The owner of the buckets listed.
25522	Owner *Owner `type:"structure"`
25523}
25524
25525// String returns the string representation.
25526//
25527// API parameter values that are decorated as "sensitive" in the API will not
25528// be included in the string output. The member name will be present, but the
25529// value will be replaced with "sensitive".
25530func (s ListBucketsOutput) String() string {
25531	return awsutil.Prettify(s)
25532}
25533
25534// GoString returns the string representation.
25535//
25536// API parameter values that are decorated as "sensitive" in the API will not
25537// be included in the string output. The member name will be present, but the
25538// value will be replaced with "sensitive".
25539func (s ListBucketsOutput) GoString() string {
25540	return s.String()
25541}
25542
25543// SetBuckets sets the Buckets field's value.
25544func (s *ListBucketsOutput) SetBuckets(v []*Bucket) *ListBucketsOutput {
25545	s.Buckets = v
25546	return s
25547}
25548
25549// SetOwner sets the Owner field's value.
25550func (s *ListBucketsOutput) SetOwner(v *Owner) *ListBucketsOutput {
25551	s.Owner = v
25552	return s
25553}
25554
25555type ListMultipartUploadsInput struct {
25556	_ struct{} `locationName:"ListMultipartUploadsRequest" type:"structure"`
25557
25558	// The name of the bucket to which the multipart upload was initiated.
25559	//
25560	// When using this action with an access point, you must direct requests to
25561	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
25562	// When using this action with an access point through the Amazon Web Services
25563	// SDKs, you provide the access point ARN in place of the bucket name. For more
25564	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
25565	// in the Amazon S3 User Guide.
25566	//
25567	// When using this action with Amazon S3 on Outposts, you must direct requests
25568	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
25569	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
25570	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
25571	// you provide the Outposts bucket ARN in place of the bucket name. For more
25572	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
25573	// in the Amazon S3 User Guide.
25574	//
25575	// Bucket is a required field
25576	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25577
25578	// Character you use to group keys.
25579	//
25580	// All keys that contain the same string between the prefix, if specified, and
25581	// the first occurrence of the delimiter after the prefix are grouped under
25582	// a single result element, CommonPrefixes. If you don't specify the prefix
25583	// parameter, then the substring starts at the beginning of the key. The keys
25584	// that are grouped under CommonPrefixes result element are not returned elsewhere
25585	// in the response.
25586	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
25587
25588	// Requests Amazon S3 to encode the object keys in the response and specifies
25589	// the encoding method to use. An object key may contain any Unicode character;
25590	// however, XML 1.0 parser cannot parse some characters, such as characters
25591	// with an ASCII value from 0 to 10. For characters that are not supported in
25592	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
25593	// keys in the response.
25594	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
25595
25596	// The account ID of the expected bucket owner. If the bucket is owned by a
25597	// different account, the request will fail with an HTTP 403 (Access Denied)
25598	// error.
25599	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25600
25601	// Together with upload-id-marker, this parameter specifies the multipart upload
25602	// after which listing should begin.
25603	//
25604	// If upload-id-marker is not specified, only the keys lexicographically greater
25605	// than the specified key-marker will be included in the list.
25606	//
25607	// If upload-id-marker is specified, any multipart uploads for a key equal to
25608	// the key-marker might also be included, provided those multipart uploads have
25609	// upload IDs lexicographically greater than the specified upload-id-marker.
25610	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
25611
25612	// Sets the maximum number of multipart uploads, from 1 to 1,000, to return
25613	// in the response body. 1,000 is the maximum number of uploads that can be
25614	// returned in a response.
25615	MaxUploads *int64 `location:"querystring" locationName:"max-uploads" type:"integer"`
25616
25617	// Lists in-progress uploads only for those keys that begin with the specified
25618	// prefix. You can use prefixes to separate a bucket into different grouping
25619	// of keys. (You can think of using prefix to make groups in the same way you'd
25620	// use a folder in a file system.)
25621	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
25622
25623	// Together with key-marker, specifies the multipart upload after which listing
25624	// should begin. If key-marker is not specified, the upload-id-marker parameter
25625	// is ignored. Otherwise, any multipart uploads for a key equal to the key-marker
25626	// might be included in the list only if they have an upload ID lexicographically
25627	// greater than the specified upload-id-marker.
25628	UploadIdMarker *string `location:"querystring" locationName:"upload-id-marker" type:"string"`
25629}
25630
25631// String returns the string representation.
25632//
25633// API parameter values that are decorated as "sensitive" in the API will not
25634// be included in the string output. The member name will be present, but the
25635// value will be replaced with "sensitive".
25636func (s ListMultipartUploadsInput) String() string {
25637	return awsutil.Prettify(s)
25638}
25639
25640// GoString returns the string representation.
25641//
25642// API parameter values that are decorated as "sensitive" in the API will not
25643// be included in the string output. The member name will be present, but the
25644// value will be replaced with "sensitive".
25645func (s ListMultipartUploadsInput) GoString() string {
25646	return s.String()
25647}
25648
25649// Validate inspects the fields of the type to determine if they are valid.
25650func (s *ListMultipartUploadsInput) Validate() error {
25651	invalidParams := request.ErrInvalidParams{Context: "ListMultipartUploadsInput"}
25652	if s.Bucket == nil {
25653		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25654	}
25655	if s.Bucket != nil && len(*s.Bucket) < 1 {
25656		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25657	}
25658
25659	if invalidParams.Len() > 0 {
25660		return invalidParams
25661	}
25662	return nil
25663}
25664
25665// SetBucket sets the Bucket field's value.
25666func (s *ListMultipartUploadsInput) SetBucket(v string) *ListMultipartUploadsInput {
25667	s.Bucket = &v
25668	return s
25669}
25670
25671func (s *ListMultipartUploadsInput) getBucket() (v string) {
25672	if s.Bucket == nil {
25673		return v
25674	}
25675	return *s.Bucket
25676}
25677
25678// SetDelimiter sets the Delimiter field's value.
25679func (s *ListMultipartUploadsInput) SetDelimiter(v string) *ListMultipartUploadsInput {
25680	s.Delimiter = &v
25681	return s
25682}
25683
25684// SetEncodingType sets the EncodingType field's value.
25685func (s *ListMultipartUploadsInput) SetEncodingType(v string) *ListMultipartUploadsInput {
25686	s.EncodingType = &v
25687	return s
25688}
25689
25690// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
25691func (s *ListMultipartUploadsInput) SetExpectedBucketOwner(v string) *ListMultipartUploadsInput {
25692	s.ExpectedBucketOwner = &v
25693	return s
25694}
25695
25696// SetKeyMarker sets the KeyMarker field's value.
25697func (s *ListMultipartUploadsInput) SetKeyMarker(v string) *ListMultipartUploadsInput {
25698	s.KeyMarker = &v
25699	return s
25700}
25701
25702// SetMaxUploads sets the MaxUploads field's value.
25703func (s *ListMultipartUploadsInput) SetMaxUploads(v int64) *ListMultipartUploadsInput {
25704	s.MaxUploads = &v
25705	return s
25706}
25707
25708// SetPrefix sets the Prefix field's value.
25709func (s *ListMultipartUploadsInput) SetPrefix(v string) *ListMultipartUploadsInput {
25710	s.Prefix = &v
25711	return s
25712}
25713
25714// SetUploadIdMarker sets the UploadIdMarker field's value.
25715func (s *ListMultipartUploadsInput) SetUploadIdMarker(v string) *ListMultipartUploadsInput {
25716	s.UploadIdMarker = &v
25717	return s
25718}
25719
25720func (s *ListMultipartUploadsInput) getEndpointARN() (arn.Resource, error) {
25721	if s.Bucket == nil {
25722		return nil, fmt.Errorf("member Bucket is nil")
25723	}
25724	return parseEndpointARN(*s.Bucket)
25725}
25726
25727func (s *ListMultipartUploadsInput) hasEndpointARN() bool {
25728	if s.Bucket == nil {
25729		return false
25730	}
25731	return arn.IsARN(*s.Bucket)
25732}
25733
25734// updateArnableField updates the value of the input field that
25735// takes an ARN as an input. This method is useful to backfill
25736// the parsed resource name from ARN into the input member.
25737// It returns a pointer to a modified copy of input and an error.
25738// Note that original input is not modified.
25739func (s ListMultipartUploadsInput) updateArnableField(v string) (interface{}, error) {
25740	if s.Bucket == nil {
25741		return nil, fmt.Errorf("member Bucket is nil")
25742	}
25743	s.Bucket = aws.String(v)
25744	return &s, nil
25745}
25746
25747type ListMultipartUploadsOutput struct {
25748	_ struct{} `type:"structure"`
25749
25750	// The name of the bucket to which the multipart upload was initiated. Does
25751	// not return the access point ARN or access point alias if used.
25752	Bucket *string `type:"string"`
25753
25754	// If you specify a delimiter in the request, then the result returns each distinct
25755	// key prefix containing the delimiter in a CommonPrefixes element. The distinct
25756	// key prefixes are returned in the Prefix child element.
25757	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
25758
25759	// Contains the delimiter you specified in the request. If you don't specify
25760	// a delimiter in your request, this element is absent from the response.
25761	Delimiter *string `type:"string"`
25762
25763	// Encoding type used by Amazon S3 to encode object keys in the response.
25764	//
25765	// If you specify encoding-type request parameter, Amazon S3 includes this element
25766	// in the response, and returns encoded key name values in the following response
25767	// elements:
25768	//
25769	// Delimiter, KeyMarker, Prefix, NextKeyMarker, Key.
25770	EncodingType *string `type:"string" enum:"EncodingType"`
25771
25772	// Indicates whether the returned list of multipart uploads is truncated. A
25773	// value of true indicates that the list was truncated. The list can be truncated
25774	// if the number of multipart uploads exceeds the limit allowed or specified
25775	// by max uploads.
25776	IsTruncated *bool `type:"boolean"`
25777
25778	// The key at or after which the listing began.
25779	KeyMarker *string `type:"string"`
25780
25781	// Maximum number of multipart uploads that could have been included in the
25782	// response.
25783	MaxUploads *int64 `type:"integer"`
25784
25785	// When a list is truncated, this element specifies the value that should be
25786	// used for the key-marker request parameter in a subsequent request.
25787	NextKeyMarker *string `type:"string"`
25788
25789	// When a list is truncated, this element specifies the value that should be
25790	// used for the upload-id-marker request parameter in a subsequent request.
25791	NextUploadIdMarker *string `type:"string"`
25792
25793	// When a prefix is provided in the request, this field contains the specified
25794	// prefix. The result contains only keys starting with the specified prefix.
25795	Prefix *string `type:"string"`
25796
25797	// Upload ID after which listing began.
25798	UploadIdMarker *string `type:"string"`
25799
25800	// Container for elements related to a particular multipart upload. A response
25801	// can contain zero or more Upload elements.
25802	Uploads []*MultipartUpload `locationName:"Upload" type:"list" flattened:"true"`
25803}
25804
25805// String returns the string representation.
25806//
25807// API parameter values that are decorated as "sensitive" in the API will not
25808// be included in the string output. The member name will be present, but the
25809// value will be replaced with "sensitive".
25810func (s ListMultipartUploadsOutput) String() string {
25811	return awsutil.Prettify(s)
25812}
25813
25814// GoString returns the string representation.
25815//
25816// API parameter values that are decorated as "sensitive" in the API will not
25817// be included in the string output. The member name will be present, but the
25818// value will be replaced with "sensitive".
25819func (s ListMultipartUploadsOutput) GoString() string {
25820	return s.String()
25821}
25822
25823// SetBucket sets the Bucket field's value.
25824func (s *ListMultipartUploadsOutput) SetBucket(v string) *ListMultipartUploadsOutput {
25825	s.Bucket = &v
25826	return s
25827}
25828
25829func (s *ListMultipartUploadsOutput) getBucket() (v string) {
25830	if s.Bucket == nil {
25831		return v
25832	}
25833	return *s.Bucket
25834}
25835
25836// SetCommonPrefixes sets the CommonPrefixes field's value.
25837func (s *ListMultipartUploadsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListMultipartUploadsOutput {
25838	s.CommonPrefixes = v
25839	return s
25840}
25841
25842// SetDelimiter sets the Delimiter field's value.
25843func (s *ListMultipartUploadsOutput) SetDelimiter(v string) *ListMultipartUploadsOutput {
25844	s.Delimiter = &v
25845	return s
25846}
25847
25848// SetEncodingType sets the EncodingType field's value.
25849func (s *ListMultipartUploadsOutput) SetEncodingType(v string) *ListMultipartUploadsOutput {
25850	s.EncodingType = &v
25851	return s
25852}
25853
25854// SetIsTruncated sets the IsTruncated field's value.
25855func (s *ListMultipartUploadsOutput) SetIsTruncated(v bool) *ListMultipartUploadsOutput {
25856	s.IsTruncated = &v
25857	return s
25858}
25859
25860// SetKeyMarker sets the KeyMarker field's value.
25861func (s *ListMultipartUploadsOutput) SetKeyMarker(v string) *ListMultipartUploadsOutput {
25862	s.KeyMarker = &v
25863	return s
25864}
25865
25866// SetMaxUploads sets the MaxUploads field's value.
25867func (s *ListMultipartUploadsOutput) SetMaxUploads(v int64) *ListMultipartUploadsOutput {
25868	s.MaxUploads = &v
25869	return s
25870}
25871
25872// SetNextKeyMarker sets the NextKeyMarker field's value.
25873func (s *ListMultipartUploadsOutput) SetNextKeyMarker(v string) *ListMultipartUploadsOutput {
25874	s.NextKeyMarker = &v
25875	return s
25876}
25877
25878// SetNextUploadIdMarker sets the NextUploadIdMarker field's value.
25879func (s *ListMultipartUploadsOutput) SetNextUploadIdMarker(v string) *ListMultipartUploadsOutput {
25880	s.NextUploadIdMarker = &v
25881	return s
25882}
25883
25884// SetPrefix sets the Prefix field's value.
25885func (s *ListMultipartUploadsOutput) SetPrefix(v string) *ListMultipartUploadsOutput {
25886	s.Prefix = &v
25887	return s
25888}
25889
25890// SetUploadIdMarker sets the UploadIdMarker field's value.
25891func (s *ListMultipartUploadsOutput) SetUploadIdMarker(v string) *ListMultipartUploadsOutput {
25892	s.UploadIdMarker = &v
25893	return s
25894}
25895
25896// SetUploads sets the Uploads field's value.
25897func (s *ListMultipartUploadsOutput) SetUploads(v []*MultipartUpload) *ListMultipartUploadsOutput {
25898	s.Uploads = v
25899	return s
25900}
25901
25902type ListObjectVersionsInput struct {
25903	_ struct{} `locationName:"ListObjectVersionsRequest" type:"structure"`
25904
25905	// The bucket name that contains the objects.
25906	//
25907	// Bucket is a required field
25908	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
25909
25910	// A delimiter is a character that you specify to group keys. All keys that
25911	// contain the same string between the prefix and the first occurrence of the
25912	// delimiter are grouped under a single result element in CommonPrefixes. These
25913	// groups are counted as one result against the max-keys limitation. These keys
25914	// are not returned elsewhere in the response.
25915	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
25916
25917	// Requests Amazon S3 to encode the object keys in the response and specifies
25918	// the encoding method to use. An object key may contain any Unicode character;
25919	// however, XML 1.0 parser cannot parse some characters, such as characters
25920	// with an ASCII value from 0 to 10. For characters that are not supported in
25921	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
25922	// keys in the response.
25923	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
25924
25925	// The account ID of the expected bucket owner. If the bucket is owned by a
25926	// different account, the request will fail with an HTTP 403 (Access Denied)
25927	// error.
25928	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
25929
25930	// Specifies the key to start with when listing objects in a bucket.
25931	KeyMarker *string `location:"querystring" locationName:"key-marker" type:"string"`
25932
25933	// Sets the maximum number of keys returned in the response. By default the
25934	// action returns up to 1,000 key names. The response might contain fewer keys
25935	// but will never contain more. If additional keys satisfy the search criteria,
25936	// but were not returned because max-keys was exceeded, the response contains
25937	// <isTruncated>true</isTruncated>. To return the additional keys, see key-marker
25938	// and version-id-marker.
25939	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
25940
25941	// Use this parameter to select only those keys that begin with the specified
25942	// prefix. You can use prefixes to separate a bucket into different groupings
25943	// of keys. (You can think of using prefix to make groups in the same way you'd
25944	// use a folder in a file system.) You can use prefix with delimiter to roll
25945	// up numerous objects into a single result under CommonPrefixes.
25946	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
25947
25948	// Specifies the object version you want to start listing from.
25949	VersionIdMarker *string `location:"querystring" locationName:"version-id-marker" type:"string"`
25950}
25951
25952// String returns the string representation.
25953//
25954// API parameter values that are decorated as "sensitive" in the API will not
25955// be included in the string output. The member name will be present, but the
25956// value will be replaced with "sensitive".
25957func (s ListObjectVersionsInput) String() string {
25958	return awsutil.Prettify(s)
25959}
25960
25961// GoString returns the string representation.
25962//
25963// API parameter values that are decorated as "sensitive" in the API will not
25964// be included in the string output. The member name will be present, but the
25965// value will be replaced with "sensitive".
25966func (s ListObjectVersionsInput) GoString() string {
25967	return s.String()
25968}
25969
25970// Validate inspects the fields of the type to determine if they are valid.
25971func (s *ListObjectVersionsInput) Validate() error {
25972	invalidParams := request.ErrInvalidParams{Context: "ListObjectVersionsInput"}
25973	if s.Bucket == nil {
25974		invalidParams.Add(request.NewErrParamRequired("Bucket"))
25975	}
25976	if s.Bucket != nil && len(*s.Bucket) < 1 {
25977		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
25978	}
25979
25980	if invalidParams.Len() > 0 {
25981		return invalidParams
25982	}
25983	return nil
25984}
25985
25986// SetBucket sets the Bucket field's value.
25987func (s *ListObjectVersionsInput) SetBucket(v string) *ListObjectVersionsInput {
25988	s.Bucket = &v
25989	return s
25990}
25991
25992func (s *ListObjectVersionsInput) getBucket() (v string) {
25993	if s.Bucket == nil {
25994		return v
25995	}
25996	return *s.Bucket
25997}
25998
25999// SetDelimiter sets the Delimiter field's value.
26000func (s *ListObjectVersionsInput) SetDelimiter(v string) *ListObjectVersionsInput {
26001	s.Delimiter = &v
26002	return s
26003}
26004
26005// SetEncodingType sets the EncodingType field's value.
26006func (s *ListObjectVersionsInput) SetEncodingType(v string) *ListObjectVersionsInput {
26007	s.EncodingType = &v
26008	return s
26009}
26010
26011// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
26012func (s *ListObjectVersionsInput) SetExpectedBucketOwner(v string) *ListObjectVersionsInput {
26013	s.ExpectedBucketOwner = &v
26014	return s
26015}
26016
26017// SetKeyMarker sets the KeyMarker field's value.
26018func (s *ListObjectVersionsInput) SetKeyMarker(v string) *ListObjectVersionsInput {
26019	s.KeyMarker = &v
26020	return s
26021}
26022
26023// SetMaxKeys sets the MaxKeys field's value.
26024func (s *ListObjectVersionsInput) SetMaxKeys(v int64) *ListObjectVersionsInput {
26025	s.MaxKeys = &v
26026	return s
26027}
26028
26029// SetPrefix sets the Prefix field's value.
26030func (s *ListObjectVersionsInput) SetPrefix(v string) *ListObjectVersionsInput {
26031	s.Prefix = &v
26032	return s
26033}
26034
26035// SetVersionIdMarker sets the VersionIdMarker field's value.
26036func (s *ListObjectVersionsInput) SetVersionIdMarker(v string) *ListObjectVersionsInput {
26037	s.VersionIdMarker = &v
26038	return s
26039}
26040
26041func (s *ListObjectVersionsInput) getEndpointARN() (arn.Resource, error) {
26042	if s.Bucket == nil {
26043		return nil, fmt.Errorf("member Bucket is nil")
26044	}
26045	return parseEndpointARN(*s.Bucket)
26046}
26047
26048func (s *ListObjectVersionsInput) hasEndpointARN() bool {
26049	if s.Bucket == nil {
26050		return false
26051	}
26052	return arn.IsARN(*s.Bucket)
26053}
26054
26055// updateArnableField updates the value of the input field that
26056// takes an ARN as an input. This method is useful to backfill
26057// the parsed resource name from ARN into the input member.
26058// It returns a pointer to a modified copy of input and an error.
26059// Note that original input is not modified.
26060func (s ListObjectVersionsInput) updateArnableField(v string) (interface{}, error) {
26061	if s.Bucket == nil {
26062		return nil, fmt.Errorf("member Bucket is nil")
26063	}
26064	s.Bucket = aws.String(v)
26065	return &s, nil
26066}
26067
26068type ListObjectVersionsOutput struct {
26069	_ struct{} `type:"structure"`
26070
26071	// All of the keys rolled up into a common prefix count as a single return when
26072	// calculating the number of returns.
26073	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
26074
26075	// Container for an object that is a delete marker.
26076	DeleteMarkers []*DeleteMarkerEntry `locationName:"DeleteMarker" type:"list" flattened:"true"`
26077
26078	// The delimiter grouping the included keys. A delimiter is a character that
26079	// you specify to group keys. All keys that contain the same string between
26080	// the prefix and the first occurrence of the delimiter are grouped under a
26081	// single result element in CommonPrefixes. These groups are counted as one
26082	// result against the max-keys limitation. These keys are not returned elsewhere
26083	// in the response.
26084	Delimiter *string `type:"string"`
26085
26086	// Encoding type used by Amazon S3 to encode object key names in the XML response.
26087	//
26088	// If you specify encoding-type request parameter, Amazon S3 includes this element
26089	// in the response, and returns encoded key name values in the following response
26090	// elements:
26091	//
26092	// KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.
26093	EncodingType *string `type:"string" enum:"EncodingType"`
26094
26095	// A flag that indicates whether Amazon S3 returned all of the results that
26096	// satisfied the search criteria. If your results were truncated, you can make
26097	// a follow-up paginated request using the NextKeyMarker and NextVersionIdMarker
26098	// response parameters as a starting place in another request to return the
26099	// rest of the results.
26100	IsTruncated *bool `type:"boolean"`
26101
26102	// Marks the last key returned in a truncated response.
26103	KeyMarker *string `type:"string"`
26104
26105	// Specifies the maximum number of objects to return.
26106	MaxKeys *int64 `type:"integer"`
26107
26108	// The bucket name.
26109	Name *string `type:"string"`
26110
26111	// When the number of responses exceeds the value of MaxKeys, NextKeyMarker
26112	// specifies the first key not returned that satisfies the search criteria.
26113	// Use this value for the key-marker request parameter in a subsequent request.
26114	NextKeyMarker *string `type:"string"`
26115
26116	// When the number of responses exceeds the value of MaxKeys, NextVersionIdMarker
26117	// specifies the first object version not returned that satisfies the search
26118	// criteria. Use this value for the version-id-marker request parameter in a
26119	// subsequent request.
26120	NextVersionIdMarker *string `type:"string"`
26121
26122	// Selects objects that start with the value supplied by this parameter.
26123	Prefix *string `type:"string"`
26124
26125	// Marks the last version of the key returned in a truncated response.
26126	VersionIdMarker *string `type:"string"`
26127
26128	// Container for version information.
26129	Versions []*ObjectVersion `locationName:"Version" type:"list" flattened:"true"`
26130}
26131
26132// String returns the string representation.
26133//
26134// API parameter values that are decorated as "sensitive" in the API will not
26135// be included in the string output. The member name will be present, but the
26136// value will be replaced with "sensitive".
26137func (s ListObjectVersionsOutput) String() string {
26138	return awsutil.Prettify(s)
26139}
26140
26141// GoString returns the string representation.
26142//
26143// API parameter values that are decorated as "sensitive" in the API will not
26144// be included in the string output. The member name will be present, but the
26145// value will be replaced with "sensitive".
26146func (s ListObjectVersionsOutput) GoString() string {
26147	return s.String()
26148}
26149
26150// SetCommonPrefixes sets the CommonPrefixes field's value.
26151func (s *ListObjectVersionsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectVersionsOutput {
26152	s.CommonPrefixes = v
26153	return s
26154}
26155
26156// SetDeleteMarkers sets the DeleteMarkers field's value.
26157func (s *ListObjectVersionsOutput) SetDeleteMarkers(v []*DeleteMarkerEntry) *ListObjectVersionsOutput {
26158	s.DeleteMarkers = v
26159	return s
26160}
26161
26162// SetDelimiter sets the Delimiter field's value.
26163func (s *ListObjectVersionsOutput) SetDelimiter(v string) *ListObjectVersionsOutput {
26164	s.Delimiter = &v
26165	return s
26166}
26167
26168// SetEncodingType sets the EncodingType field's value.
26169func (s *ListObjectVersionsOutput) SetEncodingType(v string) *ListObjectVersionsOutput {
26170	s.EncodingType = &v
26171	return s
26172}
26173
26174// SetIsTruncated sets the IsTruncated field's value.
26175func (s *ListObjectVersionsOutput) SetIsTruncated(v bool) *ListObjectVersionsOutput {
26176	s.IsTruncated = &v
26177	return s
26178}
26179
26180// SetKeyMarker sets the KeyMarker field's value.
26181func (s *ListObjectVersionsOutput) SetKeyMarker(v string) *ListObjectVersionsOutput {
26182	s.KeyMarker = &v
26183	return s
26184}
26185
26186// SetMaxKeys sets the MaxKeys field's value.
26187func (s *ListObjectVersionsOutput) SetMaxKeys(v int64) *ListObjectVersionsOutput {
26188	s.MaxKeys = &v
26189	return s
26190}
26191
26192// SetName sets the Name field's value.
26193func (s *ListObjectVersionsOutput) SetName(v string) *ListObjectVersionsOutput {
26194	s.Name = &v
26195	return s
26196}
26197
26198// SetNextKeyMarker sets the NextKeyMarker field's value.
26199func (s *ListObjectVersionsOutput) SetNextKeyMarker(v string) *ListObjectVersionsOutput {
26200	s.NextKeyMarker = &v
26201	return s
26202}
26203
26204// SetNextVersionIdMarker sets the NextVersionIdMarker field's value.
26205func (s *ListObjectVersionsOutput) SetNextVersionIdMarker(v string) *ListObjectVersionsOutput {
26206	s.NextVersionIdMarker = &v
26207	return s
26208}
26209
26210// SetPrefix sets the Prefix field's value.
26211func (s *ListObjectVersionsOutput) SetPrefix(v string) *ListObjectVersionsOutput {
26212	s.Prefix = &v
26213	return s
26214}
26215
26216// SetVersionIdMarker sets the VersionIdMarker field's value.
26217func (s *ListObjectVersionsOutput) SetVersionIdMarker(v string) *ListObjectVersionsOutput {
26218	s.VersionIdMarker = &v
26219	return s
26220}
26221
26222// SetVersions sets the Versions field's value.
26223func (s *ListObjectVersionsOutput) SetVersions(v []*ObjectVersion) *ListObjectVersionsOutput {
26224	s.Versions = v
26225	return s
26226}
26227
26228type ListObjectsInput struct {
26229	_ struct{} `locationName:"ListObjectsRequest" type:"structure"`
26230
26231	// The name of the bucket containing the objects.
26232	//
26233	// When using this action with an access point, you must direct requests to
26234	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26235	// When using this action with an access point through the Amazon Web Services
26236	// SDKs, you provide the access point ARN in place of the bucket name. For more
26237	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26238	// in the Amazon S3 User Guide.
26239	//
26240	// When using this action with Amazon S3 on Outposts, you must direct requests
26241	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26242	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26243	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26244	// you provide the Outposts bucket ARN in place of the bucket name. For more
26245	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26246	// in the Amazon S3 User Guide.
26247	//
26248	// Bucket is a required field
26249	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26250
26251	// A delimiter is a character you use to group keys.
26252	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
26253
26254	// Requests Amazon S3 to encode the object keys in the response and specifies
26255	// the encoding method to use. An object key may contain any Unicode character;
26256	// however, XML 1.0 parser cannot parse some characters, such as characters
26257	// with an ASCII value from 0 to 10. For characters that are not supported in
26258	// XML 1.0, you can add this parameter to request that Amazon S3 encode the
26259	// keys in the response.
26260	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
26261
26262	// The account ID of the expected bucket owner. If the bucket is owned by a
26263	// different account, the request will fail with an HTTP 403 (Access Denied)
26264	// error.
26265	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
26266
26267	// Marker is where you want Amazon S3 to start listing from. Amazon S3 starts
26268	// listing after this specified key. Marker can be any key in the bucket.
26269	Marker *string `location:"querystring" locationName:"marker" type:"string"`
26270
26271	// Sets the maximum number of keys returned in the response. By default the
26272	// action returns up to 1,000 key names. The response might contain fewer keys
26273	// but will never contain more.
26274	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
26275
26276	// Limits the response to keys that begin with the specified prefix.
26277	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
26278
26279	// Confirms that the requester knows that she or he will be charged for the
26280	// list objects request. Bucket owners need not specify this parameter in their
26281	// requests.
26282	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26283}
26284
26285// String returns the string representation.
26286//
26287// API parameter values that are decorated as "sensitive" in the API will not
26288// be included in the string output. The member name will be present, but the
26289// value will be replaced with "sensitive".
26290func (s ListObjectsInput) String() string {
26291	return awsutil.Prettify(s)
26292}
26293
26294// GoString returns the string representation.
26295//
26296// API parameter values that are decorated as "sensitive" in the API will not
26297// be included in the string output. The member name will be present, but the
26298// value will be replaced with "sensitive".
26299func (s ListObjectsInput) GoString() string {
26300	return s.String()
26301}
26302
26303// Validate inspects the fields of the type to determine if they are valid.
26304func (s *ListObjectsInput) Validate() error {
26305	invalidParams := request.ErrInvalidParams{Context: "ListObjectsInput"}
26306	if s.Bucket == nil {
26307		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26308	}
26309	if s.Bucket != nil && len(*s.Bucket) < 1 {
26310		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26311	}
26312
26313	if invalidParams.Len() > 0 {
26314		return invalidParams
26315	}
26316	return nil
26317}
26318
26319// SetBucket sets the Bucket field's value.
26320func (s *ListObjectsInput) SetBucket(v string) *ListObjectsInput {
26321	s.Bucket = &v
26322	return s
26323}
26324
26325func (s *ListObjectsInput) getBucket() (v string) {
26326	if s.Bucket == nil {
26327		return v
26328	}
26329	return *s.Bucket
26330}
26331
26332// SetDelimiter sets the Delimiter field's value.
26333func (s *ListObjectsInput) SetDelimiter(v string) *ListObjectsInput {
26334	s.Delimiter = &v
26335	return s
26336}
26337
26338// SetEncodingType sets the EncodingType field's value.
26339func (s *ListObjectsInput) SetEncodingType(v string) *ListObjectsInput {
26340	s.EncodingType = &v
26341	return s
26342}
26343
26344// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
26345func (s *ListObjectsInput) SetExpectedBucketOwner(v string) *ListObjectsInput {
26346	s.ExpectedBucketOwner = &v
26347	return s
26348}
26349
26350// SetMarker sets the Marker field's value.
26351func (s *ListObjectsInput) SetMarker(v string) *ListObjectsInput {
26352	s.Marker = &v
26353	return s
26354}
26355
26356// SetMaxKeys sets the MaxKeys field's value.
26357func (s *ListObjectsInput) SetMaxKeys(v int64) *ListObjectsInput {
26358	s.MaxKeys = &v
26359	return s
26360}
26361
26362// SetPrefix sets the Prefix field's value.
26363func (s *ListObjectsInput) SetPrefix(v string) *ListObjectsInput {
26364	s.Prefix = &v
26365	return s
26366}
26367
26368// SetRequestPayer sets the RequestPayer field's value.
26369func (s *ListObjectsInput) SetRequestPayer(v string) *ListObjectsInput {
26370	s.RequestPayer = &v
26371	return s
26372}
26373
26374func (s *ListObjectsInput) getEndpointARN() (arn.Resource, error) {
26375	if s.Bucket == nil {
26376		return nil, fmt.Errorf("member Bucket is nil")
26377	}
26378	return parseEndpointARN(*s.Bucket)
26379}
26380
26381func (s *ListObjectsInput) hasEndpointARN() bool {
26382	if s.Bucket == nil {
26383		return false
26384	}
26385	return arn.IsARN(*s.Bucket)
26386}
26387
26388// updateArnableField updates the value of the input field that
26389// takes an ARN as an input. This method is useful to backfill
26390// the parsed resource name from ARN into the input member.
26391// It returns a pointer to a modified copy of input and an error.
26392// Note that original input is not modified.
26393func (s ListObjectsInput) updateArnableField(v string) (interface{}, error) {
26394	if s.Bucket == nil {
26395		return nil, fmt.Errorf("member Bucket is nil")
26396	}
26397	s.Bucket = aws.String(v)
26398	return &s, nil
26399}
26400
26401type ListObjectsOutput struct {
26402	_ struct{} `type:"structure"`
26403
26404	// All of the keys (up to 1,000) rolled up in a common prefix count as a single
26405	// return when calculating the number of returns.
26406	//
26407	// A response can contain CommonPrefixes only if you specify a delimiter.
26408	//
26409	// CommonPrefixes contains all (if there are any) keys between Prefix and the
26410	// next occurrence of the string specified by the delimiter.
26411	//
26412	// CommonPrefixes lists keys that act like subdirectories in the directory specified
26413	// by Prefix.
26414	//
26415	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
26416	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
26417	// that roll up into a common prefix count as a single return when calculating
26418	// the number of returns.
26419	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
26420
26421	// Metadata about each object returned.
26422	Contents []*Object `type:"list" flattened:"true"`
26423
26424	// Causes keys that contain the same string between the prefix and the first
26425	// occurrence of the delimiter to be rolled up into a single result element
26426	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
26427	// in the response. Each rolled-up result counts as only one return against
26428	// the MaxKeys value.
26429	Delimiter *string `type:"string"`
26430
26431	// Encoding type used by Amazon S3 to encode object keys in the response.
26432	EncodingType *string `type:"string" enum:"EncodingType"`
26433
26434	// A flag that indicates whether Amazon S3 returned all of the results that
26435	// satisfied the search criteria.
26436	IsTruncated *bool `type:"boolean"`
26437
26438	// Indicates where in the bucket listing begins. Marker is included in the response
26439	// if it was sent with the request.
26440	Marker *string `type:"string"`
26441
26442	// The maximum number of keys returned in the response body.
26443	MaxKeys *int64 `type:"integer"`
26444
26445	// The bucket name.
26446	Name *string `type:"string"`
26447
26448	// When response is truncated (the IsTruncated element value in the response
26449	// is true), you can use the key name in this field as marker in the subsequent
26450	// request to get next set of objects. Amazon S3 lists objects in alphabetical
26451	// order Note: This element is returned only if you have delimiter request parameter
26452	// specified. If response does not include the NextMarker and it is truncated,
26453	// you can use the value of the last Key in the response as the marker in the
26454	// subsequent request to get the next set of object keys.
26455	NextMarker *string `type:"string"`
26456
26457	// Keys that begin with the indicated prefix.
26458	Prefix *string `type:"string"`
26459}
26460
26461// String returns the string representation.
26462//
26463// API parameter values that are decorated as "sensitive" in the API will not
26464// be included in the string output. The member name will be present, but the
26465// value will be replaced with "sensitive".
26466func (s ListObjectsOutput) String() string {
26467	return awsutil.Prettify(s)
26468}
26469
26470// GoString returns the string representation.
26471//
26472// API parameter values that are decorated as "sensitive" in the API will not
26473// be included in the string output. The member name will be present, but the
26474// value will be replaced with "sensitive".
26475func (s ListObjectsOutput) GoString() string {
26476	return s.String()
26477}
26478
26479// SetCommonPrefixes sets the CommonPrefixes field's value.
26480func (s *ListObjectsOutput) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsOutput {
26481	s.CommonPrefixes = v
26482	return s
26483}
26484
26485// SetContents sets the Contents field's value.
26486func (s *ListObjectsOutput) SetContents(v []*Object) *ListObjectsOutput {
26487	s.Contents = v
26488	return s
26489}
26490
26491// SetDelimiter sets the Delimiter field's value.
26492func (s *ListObjectsOutput) SetDelimiter(v string) *ListObjectsOutput {
26493	s.Delimiter = &v
26494	return s
26495}
26496
26497// SetEncodingType sets the EncodingType field's value.
26498func (s *ListObjectsOutput) SetEncodingType(v string) *ListObjectsOutput {
26499	s.EncodingType = &v
26500	return s
26501}
26502
26503// SetIsTruncated sets the IsTruncated field's value.
26504func (s *ListObjectsOutput) SetIsTruncated(v bool) *ListObjectsOutput {
26505	s.IsTruncated = &v
26506	return s
26507}
26508
26509// SetMarker sets the Marker field's value.
26510func (s *ListObjectsOutput) SetMarker(v string) *ListObjectsOutput {
26511	s.Marker = &v
26512	return s
26513}
26514
26515// SetMaxKeys sets the MaxKeys field's value.
26516func (s *ListObjectsOutput) SetMaxKeys(v int64) *ListObjectsOutput {
26517	s.MaxKeys = &v
26518	return s
26519}
26520
26521// SetName sets the Name field's value.
26522func (s *ListObjectsOutput) SetName(v string) *ListObjectsOutput {
26523	s.Name = &v
26524	return s
26525}
26526
26527// SetNextMarker sets the NextMarker field's value.
26528func (s *ListObjectsOutput) SetNextMarker(v string) *ListObjectsOutput {
26529	s.NextMarker = &v
26530	return s
26531}
26532
26533// SetPrefix sets the Prefix field's value.
26534func (s *ListObjectsOutput) SetPrefix(v string) *ListObjectsOutput {
26535	s.Prefix = &v
26536	return s
26537}
26538
26539type ListObjectsV2Input struct {
26540	_ struct{} `locationName:"ListObjectsV2Request" type:"structure"`
26541
26542	// Bucket name to list.
26543	//
26544	// When using this action with an access point, you must direct requests to
26545	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26546	// When using this action with an access point through the Amazon Web Services
26547	// SDKs, you provide the access point ARN in place of the bucket name. For more
26548	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26549	// in the Amazon S3 User Guide.
26550	//
26551	// When using this action with Amazon S3 on Outposts, you must direct requests
26552	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26553	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26554	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26555	// you provide the Outposts bucket ARN in place of the bucket name. For more
26556	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26557	// in the Amazon S3 User Guide.
26558	//
26559	// Bucket is a required field
26560	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26561
26562	// ContinuationToken indicates Amazon S3 that the list is being continued on
26563	// this bucket with a token. ContinuationToken is obfuscated and is not a real
26564	// key.
26565	ContinuationToken *string `location:"querystring" locationName:"continuation-token" type:"string"`
26566
26567	// A delimiter is a character you use to group keys.
26568	Delimiter *string `location:"querystring" locationName:"delimiter" type:"string"`
26569
26570	// Encoding type used by Amazon S3 to encode object keys in the response.
26571	EncodingType *string `location:"querystring" locationName:"encoding-type" type:"string" enum:"EncodingType"`
26572
26573	// The account ID of the expected bucket owner. If the bucket is owned by a
26574	// different account, the request will fail with an HTTP 403 (Access Denied)
26575	// error.
26576	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
26577
26578	// The owner field is not present in listV2 by default, if you want to return
26579	// owner field with each key in the result then set the fetch owner field to
26580	// true.
26581	FetchOwner *bool `location:"querystring" locationName:"fetch-owner" type:"boolean"`
26582
26583	// Sets the maximum number of keys returned in the response. By default the
26584	// action returns up to 1,000 key names. The response might contain fewer keys
26585	// but will never contain more.
26586	MaxKeys *int64 `location:"querystring" locationName:"max-keys" type:"integer"`
26587
26588	// Limits the response to keys that begin with the specified prefix.
26589	Prefix *string `location:"querystring" locationName:"prefix" type:"string"`
26590
26591	// Confirms that the requester knows that she or he will be charged for the
26592	// list objects request in V2 style. Bucket owners need not specify this parameter
26593	// in their requests.
26594	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26595
26596	// StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts
26597	// listing after this specified key. StartAfter can be any key in the bucket.
26598	StartAfter *string `location:"querystring" locationName:"start-after" type:"string"`
26599}
26600
26601// String returns the string representation.
26602//
26603// API parameter values that are decorated as "sensitive" in the API will not
26604// be included in the string output. The member name will be present, but the
26605// value will be replaced with "sensitive".
26606func (s ListObjectsV2Input) String() string {
26607	return awsutil.Prettify(s)
26608}
26609
26610// GoString returns the string representation.
26611//
26612// API parameter values that are decorated as "sensitive" in the API will not
26613// be included in the string output. The member name will be present, but the
26614// value will be replaced with "sensitive".
26615func (s ListObjectsV2Input) GoString() string {
26616	return s.String()
26617}
26618
26619// Validate inspects the fields of the type to determine if they are valid.
26620func (s *ListObjectsV2Input) Validate() error {
26621	invalidParams := request.ErrInvalidParams{Context: "ListObjectsV2Input"}
26622	if s.Bucket == nil {
26623		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26624	}
26625	if s.Bucket != nil && len(*s.Bucket) < 1 {
26626		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26627	}
26628
26629	if invalidParams.Len() > 0 {
26630		return invalidParams
26631	}
26632	return nil
26633}
26634
26635// SetBucket sets the Bucket field's value.
26636func (s *ListObjectsV2Input) SetBucket(v string) *ListObjectsV2Input {
26637	s.Bucket = &v
26638	return s
26639}
26640
26641func (s *ListObjectsV2Input) getBucket() (v string) {
26642	if s.Bucket == nil {
26643		return v
26644	}
26645	return *s.Bucket
26646}
26647
26648// SetContinuationToken sets the ContinuationToken field's value.
26649func (s *ListObjectsV2Input) SetContinuationToken(v string) *ListObjectsV2Input {
26650	s.ContinuationToken = &v
26651	return s
26652}
26653
26654// SetDelimiter sets the Delimiter field's value.
26655func (s *ListObjectsV2Input) SetDelimiter(v string) *ListObjectsV2Input {
26656	s.Delimiter = &v
26657	return s
26658}
26659
26660// SetEncodingType sets the EncodingType field's value.
26661func (s *ListObjectsV2Input) SetEncodingType(v string) *ListObjectsV2Input {
26662	s.EncodingType = &v
26663	return s
26664}
26665
26666// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
26667func (s *ListObjectsV2Input) SetExpectedBucketOwner(v string) *ListObjectsV2Input {
26668	s.ExpectedBucketOwner = &v
26669	return s
26670}
26671
26672// SetFetchOwner sets the FetchOwner field's value.
26673func (s *ListObjectsV2Input) SetFetchOwner(v bool) *ListObjectsV2Input {
26674	s.FetchOwner = &v
26675	return s
26676}
26677
26678// SetMaxKeys sets the MaxKeys field's value.
26679func (s *ListObjectsV2Input) SetMaxKeys(v int64) *ListObjectsV2Input {
26680	s.MaxKeys = &v
26681	return s
26682}
26683
26684// SetPrefix sets the Prefix field's value.
26685func (s *ListObjectsV2Input) SetPrefix(v string) *ListObjectsV2Input {
26686	s.Prefix = &v
26687	return s
26688}
26689
26690// SetRequestPayer sets the RequestPayer field's value.
26691func (s *ListObjectsV2Input) SetRequestPayer(v string) *ListObjectsV2Input {
26692	s.RequestPayer = &v
26693	return s
26694}
26695
26696// SetStartAfter sets the StartAfter field's value.
26697func (s *ListObjectsV2Input) SetStartAfter(v string) *ListObjectsV2Input {
26698	s.StartAfter = &v
26699	return s
26700}
26701
26702func (s *ListObjectsV2Input) getEndpointARN() (arn.Resource, error) {
26703	if s.Bucket == nil {
26704		return nil, fmt.Errorf("member Bucket is nil")
26705	}
26706	return parseEndpointARN(*s.Bucket)
26707}
26708
26709func (s *ListObjectsV2Input) hasEndpointARN() bool {
26710	if s.Bucket == nil {
26711		return false
26712	}
26713	return arn.IsARN(*s.Bucket)
26714}
26715
26716// updateArnableField updates the value of the input field that
26717// takes an ARN as an input. This method is useful to backfill
26718// the parsed resource name from ARN into the input member.
26719// It returns a pointer to a modified copy of input and an error.
26720// Note that original input is not modified.
26721func (s ListObjectsV2Input) updateArnableField(v string) (interface{}, error) {
26722	if s.Bucket == nil {
26723		return nil, fmt.Errorf("member Bucket is nil")
26724	}
26725	s.Bucket = aws.String(v)
26726	return &s, nil
26727}
26728
26729type ListObjectsV2Output struct {
26730	_ struct{} `type:"structure"`
26731
26732	// All of the keys (up to 1,000) rolled up into a common prefix count as a single
26733	// return when calculating the number of returns.
26734	//
26735	// A response can contain CommonPrefixes only if you specify a delimiter.
26736	//
26737	// CommonPrefixes contains all (if there are any) keys between Prefix and the
26738	// next occurrence of the string specified by a delimiter.
26739	//
26740	// CommonPrefixes lists keys that act like subdirectories in the directory specified
26741	// by Prefix.
26742	//
26743	// For example, if the prefix is notes/ and the delimiter is a slash (/) as
26744	// in notes/summer/july, the common prefix is notes/summer/. All of the keys
26745	// that roll up into a common prefix count as a single return when calculating
26746	// the number of returns.
26747	CommonPrefixes []*CommonPrefix `type:"list" flattened:"true"`
26748
26749	// Metadata about each object returned.
26750	Contents []*Object `type:"list" flattened:"true"`
26751
26752	// If ContinuationToken was sent with the request, it is included in the response.
26753	ContinuationToken *string `type:"string"`
26754
26755	// Causes keys that contain the same string between the prefix and the first
26756	// occurrence of the delimiter to be rolled up into a single result element
26757	// in the CommonPrefixes collection. These rolled-up keys are not returned elsewhere
26758	// in the response. Each rolled-up result counts as only one return against
26759	// the MaxKeys value.
26760	Delimiter *string `type:"string"`
26761
26762	// Encoding type used by Amazon S3 to encode object key names in the XML response.
26763	//
26764	// If you specify the encoding-type request parameter, Amazon S3 includes this
26765	// element in the response, and returns encoded key name values in the following
26766	// response elements:
26767	//
26768	// Delimiter, Prefix, Key, and StartAfter.
26769	EncodingType *string `type:"string" enum:"EncodingType"`
26770
26771	// Set to false if all of the results were returned. Set to true if more keys
26772	// are available to return. If the number of results exceeds that specified
26773	// by MaxKeys, all of the results might not be returned.
26774	IsTruncated *bool `type:"boolean"`
26775
26776	// KeyCount is the number of keys returned with this request. KeyCount will
26777	// always be less than or equals to MaxKeys field. Say you ask for 50 keys,
26778	// your result will include less than equals 50 keys
26779	KeyCount *int64 `type:"integer"`
26780
26781	// Sets the maximum number of keys returned in the response. By default the
26782	// action returns up to 1,000 key names. The response might contain fewer keys
26783	// but will never contain more.
26784	MaxKeys *int64 `type:"integer"`
26785
26786	// The bucket name.
26787	//
26788	// When using this action with an access point, you must direct requests to
26789	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26790	// When using this action with an access point through the Amazon Web Services
26791	// SDKs, you provide the access point ARN in place of the bucket name. For more
26792	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26793	// in the Amazon S3 User Guide.
26794	//
26795	// When using this action with Amazon S3 on Outposts, you must direct requests
26796	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26797	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26798	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26799	// you provide the Outposts bucket ARN in place of the bucket name. For more
26800	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26801	// in the Amazon S3 User Guide.
26802	Name *string `type:"string"`
26803
26804	// NextContinuationToken is sent when isTruncated is true, which means there
26805	// are more keys in the bucket that can be listed. The next list requests to
26806	// Amazon S3 can be continued with this NextContinuationToken. NextContinuationToken
26807	// is obfuscated and is not a real key
26808	NextContinuationToken *string `type:"string"`
26809
26810	// Keys that begin with the indicated prefix.
26811	Prefix *string `type:"string"`
26812
26813	// If StartAfter was sent with the request, it is included in the response.
26814	StartAfter *string `type:"string"`
26815}
26816
26817// String returns the string representation.
26818//
26819// API parameter values that are decorated as "sensitive" in the API will not
26820// be included in the string output. The member name will be present, but the
26821// value will be replaced with "sensitive".
26822func (s ListObjectsV2Output) String() string {
26823	return awsutil.Prettify(s)
26824}
26825
26826// GoString returns the string representation.
26827//
26828// API parameter values that are decorated as "sensitive" in the API will not
26829// be included in the string output. The member name will be present, but the
26830// value will be replaced with "sensitive".
26831func (s ListObjectsV2Output) GoString() string {
26832	return s.String()
26833}
26834
26835// SetCommonPrefixes sets the CommonPrefixes field's value.
26836func (s *ListObjectsV2Output) SetCommonPrefixes(v []*CommonPrefix) *ListObjectsV2Output {
26837	s.CommonPrefixes = v
26838	return s
26839}
26840
26841// SetContents sets the Contents field's value.
26842func (s *ListObjectsV2Output) SetContents(v []*Object) *ListObjectsV2Output {
26843	s.Contents = v
26844	return s
26845}
26846
26847// SetContinuationToken sets the ContinuationToken field's value.
26848func (s *ListObjectsV2Output) SetContinuationToken(v string) *ListObjectsV2Output {
26849	s.ContinuationToken = &v
26850	return s
26851}
26852
26853// SetDelimiter sets the Delimiter field's value.
26854func (s *ListObjectsV2Output) SetDelimiter(v string) *ListObjectsV2Output {
26855	s.Delimiter = &v
26856	return s
26857}
26858
26859// SetEncodingType sets the EncodingType field's value.
26860func (s *ListObjectsV2Output) SetEncodingType(v string) *ListObjectsV2Output {
26861	s.EncodingType = &v
26862	return s
26863}
26864
26865// SetIsTruncated sets the IsTruncated field's value.
26866func (s *ListObjectsV2Output) SetIsTruncated(v bool) *ListObjectsV2Output {
26867	s.IsTruncated = &v
26868	return s
26869}
26870
26871// SetKeyCount sets the KeyCount field's value.
26872func (s *ListObjectsV2Output) SetKeyCount(v int64) *ListObjectsV2Output {
26873	s.KeyCount = &v
26874	return s
26875}
26876
26877// SetMaxKeys sets the MaxKeys field's value.
26878func (s *ListObjectsV2Output) SetMaxKeys(v int64) *ListObjectsV2Output {
26879	s.MaxKeys = &v
26880	return s
26881}
26882
26883// SetName sets the Name field's value.
26884func (s *ListObjectsV2Output) SetName(v string) *ListObjectsV2Output {
26885	s.Name = &v
26886	return s
26887}
26888
26889// SetNextContinuationToken sets the NextContinuationToken field's value.
26890func (s *ListObjectsV2Output) SetNextContinuationToken(v string) *ListObjectsV2Output {
26891	s.NextContinuationToken = &v
26892	return s
26893}
26894
26895// SetPrefix sets the Prefix field's value.
26896func (s *ListObjectsV2Output) SetPrefix(v string) *ListObjectsV2Output {
26897	s.Prefix = &v
26898	return s
26899}
26900
26901// SetStartAfter sets the StartAfter field's value.
26902func (s *ListObjectsV2Output) SetStartAfter(v string) *ListObjectsV2Output {
26903	s.StartAfter = &v
26904	return s
26905}
26906
26907type ListPartsInput struct {
26908	_ struct{} `locationName:"ListPartsRequest" type:"structure"`
26909
26910	// The name of the bucket to which the parts are being uploaded.
26911	//
26912	// When using this action with an access point, you must direct requests to
26913	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
26914	// When using this action with an access point through the Amazon Web Services
26915	// SDKs, you provide the access point ARN in place of the bucket name. For more
26916	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
26917	// in the Amazon S3 User Guide.
26918	//
26919	// When using this action with Amazon S3 on Outposts, you must direct requests
26920	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
26921	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
26922	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
26923	// you provide the Outposts bucket ARN in place of the bucket name. For more
26924	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
26925	// in the Amazon S3 User Guide.
26926	//
26927	// Bucket is a required field
26928	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
26929
26930	// The account ID of the expected bucket owner. If the bucket is owned by a
26931	// different account, the request will fail with an HTTP 403 (Access Denied)
26932	// error.
26933	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
26934
26935	// Object key for which the multipart upload was initiated.
26936	//
26937	// Key is a required field
26938	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
26939
26940	// Sets the maximum number of parts to return.
26941	MaxParts *int64 `location:"querystring" locationName:"max-parts" type:"integer"`
26942
26943	// Specifies the part after which listing should begin. Only parts with higher
26944	// part numbers will be listed.
26945	PartNumberMarker *int64 `location:"querystring" locationName:"part-number-marker" type:"integer"`
26946
26947	// Confirms that the requester knows that they will be charged for the request.
26948	// Bucket owners need not specify this parameter in their requests. For information
26949	// about downloading objects from requester pays buckets, see Downloading Objects
26950	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
26951	// in the Amazon S3 User Guide.
26952	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
26953
26954	// Upload ID identifying the multipart upload whose parts are being listed.
26955	//
26956	// UploadId is a required field
26957	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
26958}
26959
26960// String returns the string representation.
26961//
26962// API parameter values that are decorated as "sensitive" in the API will not
26963// be included in the string output. The member name will be present, but the
26964// value will be replaced with "sensitive".
26965func (s ListPartsInput) String() string {
26966	return awsutil.Prettify(s)
26967}
26968
26969// GoString returns the string representation.
26970//
26971// API parameter values that are decorated as "sensitive" in the API will not
26972// be included in the string output. The member name will be present, but the
26973// value will be replaced with "sensitive".
26974func (s ListPartsInput) GoString() string {
26975	return s.String()
26976}
26977
26978// Validate inspects the fields of the type to determine if they are valid.
26979func (s *ListPartsInput) Validate() error {
26980	invalidParams := request.ErrInvalidParams{Context: "ListPartsInput"}
26981	if s.Bucket == nil {
26982		invalidParams.Add(request.NewErrParamRequired("Bucket"))
26983	}
26984	if s.Bucket != nil && len(*s.Bucket) < 1 {
26985		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
26986	}
26987	if s.Key == nil {
26988		invalidParams.Add(request.NewErrParamRequired("Key"))
26989	}
26990	if s.Key != nil && len(*s.Key) < 1 {
26991		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
26992	}
26993	if s.UploadId == nil {
26994		invalidParams.Add(request.NewErrParamRequired("UploadId"))
26995	}
26996
26997	if invalidParams.Len() > 0 {
26998		return invalidParams
26999	}
27000	return nil
27001}
27002
27003// SetBucket sets the Bucket field's value.
27004func (s *ListPartsInput) SetBucket(v string) *ListPartsInput {
27005	s.Bucket = &v
27006	return s
27007}
27008
27009func (s *ListPartsInput) getBucket() (v string) {
27010	if s.Bucket == nil {
27011		return v
27012	}
27013	return *s.Bucket
27014}
27015
27016// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
27017func (s *ListPartsInput) SetExpectedBucketOwner(v string) *ListPartsInput {
27018	s.ExpectedBucketOwner = &v
27019	return s
27020}
27021
27022// SetKey sets the Key field's value.
27023func (s *ListPartsInput) SetKey(v string) *ListPartsInput {
27024	s.Key = &v
27025	return s
27026}
27027
27028// SetMaxParts sets the MaxParts field's value.
27029func (s *ListPartsInput) SetMaxParts(v int64) *ListPartsInput {
27030	s.MaxParts = &v
27031	return s
27032}
27033
27034// SetPartNumberMarker sets the PartNumberMarker field's value.
27035func (s *ListPartsInput) SetPartNumberMarker(v int64) *ListPartsInput {
27036	s.PartNumberMarker = &v
27037	return s
27038}
27039
27040// SetRequestPayer sets the RequestPayer field's value.
27041func (s *ListPartsInput) SetRequestPayer(v string) *ListPartsInput {
27042	s.RequestPayer = &v
27043	return s
27044}
27045
27046// SetUploadId sets the UploadId field's value.
27047func (s *ListPartsInput) SetUploadId(v string) *ListPartsInput {
27048	s.UploadId = &v
27049	return s
27050}
27051
27052func (s *ListPartsInput) getEndpointARN() (arn.Resource, error) {
27053	if s.Bucket == nil {
27054		return nil, fmt.Errorf("member Bucket is nil")
27055	}
27056	return parseEndpointARN(*s.Bucket)
27057}
27058
27059func (s *ListPartsInput) hasEndpointARN() bool {
27060	if s.Bucket == nil {
27061		return false
27062	}
27063	return arn.IsARN(*s.Bucket)
27064}
27065
27066// updateArnableField updates the value of the input field that
27067// takes an ARN as an input. This method is useful to backfill
27068// the parsed resource name from ARN into the input member.
27069// It returns a pointer to a modified copy of input and an error.
27070// Note that original input is not modified.
27071func (s ListPartsInput) updateArnableField(v string) (interface{}, error) {
27072	if s.Bucket == nil {
27073		return nil, fmt.Errorf("member Bucket is nil")
27074	}
27075	s.Bucket = aws.String(v)
27076	return &s, nil
27077}
27078
27079type ListPartsOutput struct {
27080	_ struct{} `type:"structure"`
27081
27082	// If the bucket has a lifecycle rule configured with an action to abort incomplete
27083	// multipart uploads and the prefix in the lifecycle rule matches the object
27084	// name in the request, then the response includes this header indicating when
27085	// the initiated multipart upload will become eligible for abort operation.
27086	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
27087	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config).
27088	//
27089	// The response will also include the x-amz-abort-rule-id header that will provide
27090	// the ID of the lifecycle configuration rule that defines this action.
27091	AbortDate *time.Time `location:"header" locationName:"x-amz-abort-date" type:"timestamp"`
27092
27093	// This header is returned along with the x-amz-abort-date header. It identifies
27094	// applicable lifecycle configuration rule that defines the action to abort
27095	// incomplete multipart uploads.
27096	AbortRuleId *string `location:"header" locationName:"x-amz-abort-rule-id" type:"string"`
27097
27098	// The name of the bucket to which the multipart upload was initiated. Does
27099	// not return the access point ARN or access point alias if used.
27100	Bucket *string `type:"string"`
27101
27102	// Container element that identifies who initiated the multipart upload. If
27103	// the initiator is an Amazon Web Services account, this element provides the
27104	// same information as the Owner element. If the initiator is an IAM User, this
27105	// element provides the user ARN and display name.
27106	Initiator *Initiator `type:"structure"`
27107
27108	// Indicates whether the returned list of parts is truncated. A true value indicates
27109	// that the list was truncated. A list can be truncated if the number of parts
27110	// exceeds the limit returned in the MaxParts element.
27111	IsTruncated *bool `type:"boolean"`
27112
27113	// Object key for which the multipart upload was initiated.
27114	Key *string `min:"1" type:"string"`
27115
27116	// Maximum number of parts that were allowed in the response.
27117	MaxParts *int64 `type:"integer"`
27118
27119	// When a list is truncated, this element specifies the last part in the list,
27120	// as well as the value to use for the part-number-marker request parameter
27121	// in a subsequent request.
27122	NextPartNumberMarker *int64 `type:"integer"`
27123
27124	// Container element that identifies the object owner, after the object is created.
27125	// If multipart upload is initiated by an IAM user, this element provides the
27126	// parent account ID and display name.
27127	Owner *Owner `type:"structure"`
27128
27129	// When a list is truncated, this element specifies the last part in the list,
27130	// as well as the value to use for the part-number-marker request parameter
27131	// in a subsequent request.
27132	PartNumberMarker *int64 `type:"integer"`
27133
27134	// Container for elements related to a particular part. A response can contain
27135	// zero or more Part elements.
27136	Parts []*Part `locationName:"Part" type:"list" flattened:"true"`
27137
27138	// If present, indicates that the requester was successfully charged for the
27139	// request.
27140	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
27141
27142	// Class of storage (STANDARD or REDUCED_REDUNDANCY) used to store the uploaded
27143	// object.
27144	StorageClass *string `type:"string" enum:"StorageClass"`
27145
27146	// Upload ID identifying the multipart upload whose parts are being listed.
27147	UploadId *string `type:"string"`
27148}
27149
27150// String returns the string representation.
27151//
27152// API parameter values that are decorated as "sensitive" in the API will not
27153// be included in the string output. The member name will be present, but the
27154// value will be replaced with "sensitive".
27155func (s ListPartsOutput) String() string {
27156	return awsutil.Prettify(s)
27157}
27158
27159// GoString returns the string representation.
27160//
27161// API parameter values that are decorated as "sensitive" in the API will not
27162// be included in the string output. The member name will be present, but the
27163// value will be replaced with "sensitive".
27164func (s ListPartsOutput) GoString() string {
27165	return s.String()
27166}
27167
27168// SetAbortDate sets the AbortDate field's value.
27169func (s *ListPartsOutput) SetAbortDate(v time.Time) *ListPartsOutput {
27170	s.AbortDate = &v
27171	return s
27172}
27173
27174// SetAbortRuleId sets the AbortRuleId field's value.
27175func (s *ListPartsOutput) SetAbortRuleId(v string) *ListPartsOutput {
27176	s.AbortRuleId = &v
27177	return s
27178}
27179
27180// SetBucket sets the Bucket field's value.
27181func (s *ListPartsOutput) SetBucket(v string) *ListPartsOutput {
27182	s.Bucket = &v
27183	return s
27184}
27185
27186func (s *ListPartsOutput) getBucket() (v string) {
27187	if s.Bucket == nil {
27188		return v
27189	}
27190	return *s.Bucket
27191}
27192
27193// SetInitiator sets the Initiator field's value.
27194func (s *ListPartsOutput) SetInitiator(v *Initiator) *ListPartsOutput {
27195	s.Initiator = v
27196	return s
27197}
27198
27199// SetIsTruncated sets the IsTruncated field's value.
27200func (s *ListPartsOutput) SetIsTruncated(v bool) *ListPartsOutput {
27201	s.IsTruncated = &v
27202	return s
27203}
27204
27205// SetKey sets the Key field's value.
27206func (s *ListPartsOutput) SetKey(v string) *ListPartsOutput {
27207	s.Key = &v
27208	return s
27209}
27210
27211// SetMaxParts sets the MaxParts field's value.
27212func (s *ListPartsOutput) SetMaxParts(v int64) *ListPartsOutput {
27213	s.MaxParts = &v
27214	return s
27215}
27216
27217// SetNextPartNumberMarker sets the NextPartNumberMarker field's value.
27218func (s *ListPartsOutput) SetNextPartNumberMarker(v int64) *ListPartsOutput {
27219	s.NextPartNumberMarker = &v
27220	return s
27221}
27222
27223// SetOwner sets the Owner field's value.
27224func (s *ListPartsOutput) SetOwner(v *Owner) *ListPartsOutput {
27225	s.Owner = v
27226	return s
27227}
27228
27229// SetPartNumberMarker sets the PartNumberMarker field's value.
27230func (s *ListPartsOutput) SetPartNumberMarker(v int64) *ListPartsOutput {
27231	s.PartNumberMarker = &v
27232	return s
27233}
27234
27235// SetParts sets the Parts field's value.
27236func (s *ListPartsOutput) SetParts(v []*Part) *ListPartsOutput {
27237	s.Parts = v
27238	return s
27239}
27240
27241// SetRequestCharged sets the RequestCharged field's value.
27242func (s *ListPartsOutput) SetRequestCharged(v string) *ListPartsOutput {
27243	s.RequestCharged = &v
27244	return s
27245}
27246
27247// SetStorageClass sets the StorageClass field's value.
27248func (s *ListPartsOutput) SetStorageClass(v string) *ListPartsOutput {
27249	s.StorageClass = &v
27250	return s
27251}
27252
27253// SetUploadId sets the UploadId field's value.
27254func (s *ListPartsOutput) SetUploadId(v string) *ListPartsOutput {
27255	s.UploadId = &v
27256	return s
27257}
27258
27259// Describes an Amazon S3 location that will receive the results of the restore
27260// request.
27261type Location struct {
27262	_ struct{} `type:"structure"`
27263
27264	// A list of grants that control access to the staged results.
27265	AccessControlList []*Grant `locationNameList:"Grant" type:"list"`
27266
27267	// The name of the bucket where the restore results will be placed.
27268	//
27269	// BucketName is a required field
27270	BucketName *string `type:"string" required:"true"`
27271
27272	// The canned ACL to apply to the restore results.
27273	CannedACL *string `type:"string" enum:"ObjectCannedACL"`
27274
27275	// Contains the type of server-side encryption used.
27276	Encryption *Encryption `type:"structure"`
27277
27278	// The prefix that is prepended to the restore results for this request.
27279	//
27280	// Prefix is a required field
27281	Prefix *string `type:"string" required:"true"`
27282
27283	// The class of storage used to store the restore results.
27284	StorageClass *string `type:"string" enum:"StorageClass"`
27285
27286	// The tag-set that is applied to the restore results.
27287	Tagging *Tagging `type:"structure"`
27288
27289	// A list of metadata to store with the restore results in S3.
27290	UserMetadata []*MetadataEntry `locationNameList:"MetadataEntry" type:"list"`
27291}
27292
27293// String returns the string representation.
27294//
27295// API parameter values that are decorated as "sensitive" in the API will not
27296// be included in the string output. The member name will be present, but the
27297// value will be replaced with "sensitive".
27298func (s Location) String() string {
27299	return awsutil.Prettify(s)
27300}
27301
27302// GoString returns the string representation.
27303//
27304// API parameter values that are decorated as "sensitive" in the API will not
27305// be included in the string output. The member name will be present, but the
27306// value will be replaced with "sensitive".
27307func (s Location) GoString() string {
27308	return s.String()
27309}
27310
27311// Validate inspects the fields of the type to determine if they are valid.
27312func (s *Location) Validate() error {
27313	invalidParams := request.ErrInvalidParams{Context: "Location"}
27314	if s.BucketName == nil {
27315		invalidParams.Add(request.NewErrParamRequired("BucketName"))
27316	}
27317	if s.Prefix == nil {
27318		invalidParams.Add(request.NewErrParamRequired("Prefix"))
27319	}
27320	if s.AccessControlList != nil {
27321		for i, v := range s.AccessControlList {
27322			if v == nil {
27323				continue
27324			}
27325			if err := v.Validate(); err != nil {
27326				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AccessControlList", i), err.(request.ErrInvalidParams))
27327			}
27328		}
27329	}
27330	if s.Encryption != nil {
27331		if err := s.Encryption.Validate(); err != nil {
27332			invalidParams.AddNested("Encryption", err.(request.ErrInvalidParams))
27333		}
27334	}
27335	if s.Tagging != nil {
27336		if err := s.Tagging.Validate(); err != nil {
27337			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
27338		}
27339	}
27340
27341	if invalidParams.Len() > 0 {
27342		return invalidParams
27343	}
27344	return nil
27345}
27346
27347// SetAccessControlList sets the AccessControlList field's value.
27348func (s *Location) SetAccessControlList(v []*Grant) *Location {
27349	s.AccessControlList = v
27350	return s
27351}
27352
27353// SetBucketName sets the BucketName field's value.
27354func (s *Location) SetBucketName(v string) *Location {
27355	s.BucketName = &v
27356	return s
27357}
27358
27359// SetCannedACL sets the CannedACL field's value.
27360func (s *Location) SetCannedACL(v string) *Location {
27361	s.CannedACL = &v
27362	return s
27363}
27364
27365// SetEncryption sets the Encryption field's value.
27366func (s *Location) SetEncryption(v *Encryption) *Location {
27367	s.Encryption = v
27368	return s
27369}
27370
27371// SetPrefix sets the Prefix field's value.
27372func (s *Location) SetPrefix(v string) *Location {
27373	s.Prefix = &v
27374	return s
27375}
27376
27377// SetStorageClass sets the StorageClass field's value.
27378func (s *Location) SetStorageClass(v string) *Location {
27379	s.StorageClass = &v
27380	return s
27381}
27382
27383// SetTagging sets the Tagging field's value.
27384func (s *Location) SetTagging(v *Tagging) *Location {
27385	s.Tagging = v
27386	return s
27387}
27388
27389// SetUserMetadata sets the UserMetadata field's value.
27390func (s *Location) SetUserMetadata(v []*MetadataEntry) *Location {
27391	s.UserMetadata = v
27392	return s
27393}
27394
27395// Describes where logs are stored and the prefix that Amazon S3 assigns to
27396// all log object keys for a bucket. For more information, see PUT Bucket logging
27397// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlogging.html)
27398// in the Amazon S3 API Reference.
27399type LoggingEnabled struct {
27400	_ struct{} `type:"structure"`
27401
27402	// Specifies the bucket where you want Amazon S3 to store server access logs.
27403	// You can have your logs delivered to any bucket that you own, including the
27404	// same bucket that is being logged. You can also configure multiple buckets
27405	// to deliver their logs to the same target bucket. In this case, you should
27406	// choose a different TargetPrefix for each source bucket so that the delivered
27407	// log files can be distinguished by key.
27408	//
27409	// TargetBucket is a required field
27410	TargetBucket *string `type:"string" required:"true"`
27411
27412	// Container for granting information.
27413	TargetGrants []*TargetGrant `locationNameList:"Grant" type:"list"`
27414
27415	// A prefix for all log object keys. If you store log files from multiple Amazon
27416	// S3 buckets in a single bucket, you can use a prefix to distinguish which
27417	// log files came from which bucket.
27418	//
27419	// TargetPrefix is a required field
27420	TargetPrefix *string `type:"string" required:"true"`
27421}
27422
27423// String returns the string representation.
27424//
27425// API parameter values that are decorated as "sensitive" in the API will not
27426// be included in the string output. The member name will be present, but the
27427// value will be replaced with "sensitive".
27428func (s LoggingEnabled) String() string {
27429	return awsutil.Prettify(s)
27430}
27431
27432// GoString returns the string representation.
27433//
27434// API parameter values that are decorated as "sensitive" in the API will not
27435// be included in the string output. The member name will be present, but the
27436// value will be replaced with "sensitive".
27437func (s LoggingEnabled) GoString() string {
27438	return s.String()
27439}
27440
27441// Validate inspects the fields of the type to determine if they are valid.
27442func (s *LoggingEnabled) Validate() error {
27443	invalidParams := request.ErrInvalidParams{Context: "LoggingEnabled"}
27444	if s.TargetBucket == nil {
27445		invalidParams.Add(request.NewErrParamRequired("TargetBucket"))
27446	}
27447	if s.TargetPrefix == nil {
27448		invalidParams.Add(request.NewErrParamRequired("TargetPrefix"))
27449	}
27450	if s.TargetGrants != nil {
27451		for i, v := range s.TargetGrants {
27452			if v == nil {
27453				continue
27454			}
27455			if err := v.Validate(); err != nil {
27456				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TargetGrants", i), err.(request.ErrInvalidParams))
27457			}
27458		}
27459	}
27460
27461	if invalidParams.Len() > 0 {
27462		return invalidParams
27463	}
27464	return nil
27465}
27466
27467// SetTargetBucket sets the TargetBucket field's value.
27468func (s *LoggingEnabled) SetTargetBucket(v string) *LoggingEnabled {
27469	s.TargetBucket = &v
27470	return s
27471}
27472
27473// SetTargetGrants sets the TargetGrants field's value.
27474func (s *LoggingEnabled) SetTargetGrants(v []*TargetGrant) *LoggingEnabled {
27475	s.TargetGrants = v
27476	return s
27477}
27478
27479// SetTargetPrefix sets the TargetPrefix field's value.
27480func (s *LoggingEnabled) SetTargetPrefix(v string) *LoggingEnabled {
27481	s.TargetPrefix = &v
27482	return s
27483}
27484
27485// A metadata key-value pair to store with an object.
27486type MetadataEntry struct {
27487	_ struct{} `type:"structure"`
27488
27489	// Name of the Object.
27490	Name *string `type:"string"`
27491
27492	// Value of the Object.
27493	Value *string `type:"string"`
27494}
27495
27496// String returns the string representation.
27497//
27498// API parameter values that are decorated as "sensitive" in the API will not
27499// be included in the string output. The member name will be present, but the
27500// value will be replaced with "sensitive".
27501func (s MetadataEntry) String() string {
27502	return awsutil.Prettify(s)
27503}
27504
27505// GoString returns the string representation.
27506//
27507// API parameter values that are decorated as "sensitive" in the API will not
27508// be included in the string output. The member name will be present, but the
27509// value will be replaced with "sensitive".
27510func (s MetadataEntry) GoString() string {
27511	return s.String()
27512}
27513
27514// SetName sets the Name field's value.
27515func (s *MetadataEntry) SetName(v string) *MetadataEntry {
27516	s.Name = &v
27517	return s
27518}
27519
27520// SetValue sets the Value field's value.
27521func (s *MetadataEntry) SetValue(v string) *MetadataEntry {
27522	s.Value = &v
27523	return s
27524}
27525
27526// A container specifying replication metrics-related settings enabling replication
27527// metrics and events.
27528type Metrics struct {
27529	_ struct{} `type:"structure"`
27530
27531	// A container specifying the time threshold for emitting the s3:Replication:OperationMissedThreshold
27532	// event.
27533	EventThreshold *ReplicationTimeValue `type:"structure"`
27534
27535	// Specifies whether the replication metrics are enabled.
27536	//
27537	// Status is a required field
27538	Status *string `type:"string" required:"true" enum:"MetricsStatus"`
27539}
27540
27541// String returns the string representation.
27542//
27543// API parameter values that are decorated as "sensitive" in the API will not
27544// be included in the string output. The member name will be present, but the
27545// value will be replaced with "sensitive".
27546func (s Metrics) String() string {
27547	return awsutil.Prettify(s)
27548}
27549
27550// GoString returns the string representation.
27551//
27552// API parameter values that are decorated as "sensitive" in the API will not
27553// be included in the string output. The member name will be present, but the
27554// value will be replaced with "sensitive".
27555func (s Metrics) GoString() string {
27556	return s.String()
27557}
27558
27559// Validate inspects the fields of the type to determine if they are valid.
27560func (s *Metrics) Validate() error {
27561	invalidParams := request.ErrInvalidParams{Context: "Metrics"}
27562	if s.Status == nil {
27563		invalidParams.Add(request.NewErrParamRequired("Status"))
27564	}
27565
27566	if invalidParams.Len() > 0 {
27567		return invalidParams
27568	}
27569	return nil
27570}
27571
27572// SetEventThreshold sets the EventThreshold field's value.
27573func (s *Metrics) SetEventThreshold(v *ReplicationTimeValue) *Metrics {
27574	s.EventThreshold = v
27575	return s
27576}
27577
27578// SetStatus sets the Status field's value.
27579func (s *Metrics) SetStatus(v string) *Metrics {
27580	s.Status = &v
27581	return s
27582}
27583
27584// A conjunction (logical AND) of predicates, which is used in evaluating a
27585// metrics filter. The operator must have at least two predicates, and an object
27586// must match all of the predicates in order for the filter to apply.
27587type MetricsAndOperator struct {
27588	_ struct{} `type:"structure"`
27589
27590	// The access point ARN used when evaluating an AND predicate.
27591	AccessPointArn *string `type:"string"`
27592
27593	// The prefix used when evaluating an AND predicate.
27594	Prefix *string `type:"string"`
27595
27596	// The list of tags used when evaluating an AND predicate.
27597	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
27598}
27599
27600// String returns the string representation.
27601//
27602// API parameter values that are decorated as "sensitive" in the API will not
27603// be included in the string output. The member name will be present, but the
27604// value will be replaced with "sensitive".
27605func (s MetricsAndOperator) String() string {
27606	return awsutil.Prettify(s)
27607}
27608
27609// GoString returns the string representation.
27610//
27611// API parameter values that are decorated as "sensitive" in the API will not
27612// be included in the string output. The member name will be present, but the
27613// value will be replaced with "sensitive".
27614func (s MetricsAndOperator) GoString() string {
27615	return s.String()
27616}
27617
27618// Validate inspects the fields of the type to determine if they are valid.
27619func (s *MetricsAndOperator) Validate() error {
27620	invalidParams := request.ErrInvalidParams{Context: "MetricsAndOperator"}
27621	if s.Tags != nil {
27622		for i, v := range s.Tags {
27623			if v == nil {
27624				continue
27625			}
27626			if err := v.Validate(); err != nil {
27627				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
27628			}
27629		}
27630	}
27631
27632	if invalidParams.Len() > 0 {
27633		return invalidParams
27634	}
27635	return nil
27636}
27637
27638// SetAccessPointArn sets the AccessPointArn field's value.
27639func (s *MetricsAndOperator) SetAccessPointArn(v string) *MetricsAndOperator {
27640	s.AccessPointArn = &v
27641	return s
27642}
27643
27644// SetPrefix sets the Prefix field's value.
27645func (s *MetricsAndOperator) SetPrefix(v string) *MetricsAndOperator {
27646	s.Prefix = &v
27647	return s
27648}
27649
27650// SetTags sets the Tags field's value.
27651func (s *MetricsAndOperator) SetTags(v []*Tag) *MetricsAndOperator {
27652	s.Tags = v
27653	return s
27654}
27655
27656// Specifies a metrics configuration for the CloudWatch request metrics (specified
27657// by the metrics configuration ID) from an Amazon S3 bucket. If you're updating
27658// an existing metrics configuration, note that this is a full replacement of
27659// the existing metrics configuration. If you don't include the elements you
27660// want to keep, they are erased. For more information, see PutBucketMetricsConfiguration
27661// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTMetricConfiguration.html).
27662type MetricsConfiguration struct {
27663	_ struct{} `type:"structure"`
27664
27665	// Specifies a metrics configuration filter. The metrics configuration will
27666	// only include objects that meet the filter's criteria. A filter must be a
27667	// prefix, an object tag, an access point ARN, or a conjunction (MetricsAndOperator).
27668	Filter *MetricsFilter `type:"structure"`
27669
27670	// The ID used to identify the metrics configuration.
27671	//
27672	// Id is a required field
27673	Id *string `type:"string" required:"true"`
27674}
27675
27676// String returns the string representation.
27677//
27678// API parameter values that are decorated as "sensitive" in the API will not
27679// be included in the string output. The member name will be present, but the
27680// value will be replaced with "sensitive".
27681func (s MetricsConfiguration) String() string {
27682	return awsutil.Prettify(s)
27683}
27684
27685// GoString returns the string representation.
27686//
27687// API parameter values that are decorated as "sensitive" in the API will not
27688// be included in the string output. The member name will be present, but the
27689// value will be replaced with "sensitive".
27690func (s MetricsConfiguration) GoString() string {
27691	return s.String()
27692}
27693
27694// Validate inspects the fields of the type to determine if they are valid.
27695func (s *MetricsConfiguration) Validate() error {
27696	invalidParams := request.ErrInvalidParams{Context: "MetricsConfiguration"}
27697	if s.Id == nil {
27698		invalidParams.Add(request.NewErrParamRequired("Id"))
27699	}
27700	if s.Filter != nil {
27701		if err := s.Filter.Validate(); err != nil {
27702			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
27703		}
27704	}
27705
27706	if invalidParams.Len() > 0 {
27707		return invalidParams
27708	}
27709	return nil
27710}
27711
27712// SetFilter sets the Filter field's value.
27713func (s *MetricsConfiguration) SetFilter(v *MetricsFilter) *MetricsConfiguration {
27714	s.Filter = v
27715	return s
27716}
27717
27718// SetId sets the Id field's value.
27719func (s *MetricsConfiguration) SetId(v string) *MetricsConfiguration {
27720	s.Id = &v
27721	return s
27722}
27723
27724// Specifies a metrics configuration filter. The metrics configuration only
27725// includes objects that meet the filter's criteria. A filter must be a prefix,
27726// an object tag, an access point ARN, or a conjunction (MetricsAndOperator).
27727// For more information, see PutBucketMetricsConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketMetricsConfiguration.html).
27728type MetricsFilter struct {
27729	_ struct{} `type:"structure"`
27730
27731	// The access point ARN used when evaluating a metrics filter.
27732	AccessPointArn *string `type:"string"`
27733
27734	// A conjunction (logical AND) of predicates, which is used in evaluating a
27735	// metrics filter. The operator must have at least two predicates, and an object
27736	// must match all of the predicates in order for the filter to apply.
27737	And *MetricsAndOperator `type:"structure"`
27738
27739	// The prefix used when evaluating a metrics filter.
27740	Prefix *string `type:"string"`
27741
27742	// The tag used when evaluating a metrics filter.
27743	Tag *Tag `type:"structure"`
27744}
27745
27746// String returns the string representation.
27747//
27748// API parameter values that are decorated as "sensitive" in the API will not
27749// be included in the string output. The member name will be present, but the
27750// value will be replaced with "sensitive".
27751func (s MetricsFilter) String() string {
27752	return awsutil.Prettify(s)
27753}
27754
27755// GoString returns the string representation.
27756//
27757// API parameter values that are decorated as "sensitive" in the API will not
27758// be included in the string output. The member name will be present, but the
27759// value will be replaced with "sensitive".
27760func (s MetricsFilter) GoString() string {
27761	return s.String()
27762}
27763
27764// Validate inspects the fields of the type to determine if they are valid.
27765func (s *MetricsFilter) Validate() error {
27766	invalidParams := request.ErrInvalidParams{Context: "MetricsFilter"}
27767	if s.And != nil {
27768		if err := s.And.Validate(); err != nil {
27769			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
27770		}
27771	}
27772	if s.Tag != nil {
27773		if err := s.Tag.Validate(); err != nil {
27774			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
27775		}
27776	}
27777
27778	if invalidParams.Len() > 0 {
27779		return invalidParams
27780	}
27781	return nil
27782}
27783
27784// SetAccessPointArn sets the AccessPointArn field's value.
27785func (s *MetricsFilter) SetAccessPointArn(v string) *MetricsFilter {
27786	s.AccessPointArn = &v
27787	return s
27788}
27789
27790// SetAnd sets the And field's value.
27791func (s *MetricsFilter) SetAnd(v *MetricsAndOperator) *MetricsFilter {
27792	s.And = v
27793	return s
27794}
27795
27796// SetPrefix sets the Prefix field's value.
27797func (s *MetricsFilter) SetPrefix(v string) *MetricsFilter {
27798	s.Prefix = &v
27799	return s
27800}
27801
27802// SetTag sets the Tag field's value.
27803func (s *MetricsFilter) SetTag(v *Tag) *MetricsFilter {
27804	s.Tag = v
27805	return s
27806}
27807
27808// Container for the MultipartUpload for the Amazon S3 object.
27809type MultipartUpload struct {
27810	_ struct{} `type:"structure"`
27811
27812	// Date and time at which the multipart upload was initiated.
27813	Initiated *time.Time `type:"timestamp"`
27814
27815	// Identifies who initiated the multipart upload.
27816	Initiator *Initiator `type:"structure"`
27817
27818	// Key of the object for which the multipart upload was initiated.
27819	Key *string `min:"1" type:"string"`
27820
27821	// Specifies the owner of the object that is part of the multipart upload.
27822	Owner *Owner `type:"structure"`
27823
27824	// The class of storage used to store the object.
27825	StorageClass *string `type:"string" enum:"StorageClass"`
27826
27827	// Upload ID that identifies the multipart upload.
27828	UploadId *string `type:"string"`
27829}
27830
27831// String returns the string representation.
27832//
27833// API parameter values that are decorated as "sensitive" in the API will not
27834// be included in the string output. The member name will be present, but the
27835// value will be replaced with "sensitive".
27836func (s MultipartUpload) String() string {
27837	return awsutil.Prettify(s)
27838}
27839
27840// GoString returns the string representation.
27841//
27842// API parameter values that are decorated as "sensitive" in the API will not
27843// be included in the string output. The member name will be present, but the
27844// value will be replaced with "sensitive".
27845func (s MultipartUpload) GoString() string {
27846	return s.String()
27847}
27848
27849// SetInitiated sets the Initiated field's value.
27850func (s *MultipartUpload) SetInitiated(v time.Time) *MultipartUpload {
27851	s.Initiated = &v
27852	return s
27853}
27854
27855// SetInitiator sets the Initiator field's value.
27856func (s *MultipartUpload) SetInitiator(v *Initiator) *MultipartUpload {
27857	s.Initiator = v
27858	return s
27859}
27860
27861// SetKey sets the Key field's value.
27862func (s *MultipartUpload) SetKey(v string) *MultipartUpload {
27863	s.Key = &v
27864	return s
27865}
27866
27867// SetOwner sets the Owner field's value.
27868func (s *MultipartUpload) SetOwner(v *Owner) *MultipartUpload {
27869	s.Owner = v
27870	return s
27871}
27872
27873// SetStorageClass sets the StorageClass field's value.
27874func (s *MultipartUpload) SetStorageClass(v string) *MultipartUpload {
27875	s.StorageClass = &v
27876	return s
27877}
27878
27879// SetUploadId sets the UploadId field's value.
27880func (s *MultipartUpload) SetUploadId(v string) *MultipartUpload {
27881	s.UploadId = &v
27882	return s
27883}
27884
27885// Specifies when noncurrent object versions expire. Upon expiration, Amazon
27886// S3 permanently deletes the noncurrent object versions. You set this lifecycle
27887// configuration action on a bucket that has versioning enabled (or suspended)
27888// to request that Amazon S3 delete noncurrent object versions at a specific
27889// period in the object's lifetime.
27890type NoncurrentVersionExpiration struct {
27891	_ struct{} `type:"structure"`
27892
27893	// Specifies the number of days an object is noncurrent before Amazon S3 can
27894	// perform the associated action. For information about the noncurrent days
27895	// calculations, see How Amazon S3 Calculates When an Object Became Noncurrent
27896	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
27897	// in the Amazon S3 User Guide.
27898	NoncurrentDays *int64 `type:"integer"`
27899}
27900
27901// String returns the string representation.
27902//
27903// API parameter values that are decorated as "sensitive" in the API will not
27904// be included in the string output. The member name will be present, but the
27905// value will be replaced with "sensitive".
27906func (s NoncurrentVersionExpiration) String() string {
27907	return awsutil.Prettify(s)
27908}
27909
27910// GoString returns the string representation.
27911//
27912// API parameter values that are decorated as "sensitive" in the API will not
27913// be included in the string output. The member name will be present, but the
27914// value will be replaced with "sensitive".
27915func (s NoncurrentVersionExpiration) GoString() string {
27916	return s.String()
27917}
27918
27919// SetNoncurrentDays sets the NoncurrentDays field's value.
27920func (s *NoncurrentVersionExpiration) SetNoncurrentDays(v int64) *NoncurrentVersionExpiration {
27921	s.NoncurrentDays = &v
27922	return s
27923}
27924
27925// Container for the transition rule that describes when noncurrent objects
27926// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
27927// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
27928// is suspended), you can set this action to request that Amazon S3 transition
27929// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
27930// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
27931// lifetime.
27932type NoncurrentVersionTransition struct {
27933	_ struct{} `type:"structure"`
27934
27935	// Specifies the number of days an object is noncurrent before Amazon S3 can
27936	// perform the associated action. For information about the noncurrent days
27937	// calculations, see How Amazon S3 Calculates How Long an Object Has Been Noncurrent
27938	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/intro-lifecycle-rules.html#non-current-days-calculations)
27939	// in the Amazon S3 User Guide.
27940	NoncurrentDays *int64 `type:"integer"`
27941
27942	// The class of storage used to store the object.
27943	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
27944}
27945
27946// String returns the string representation.
27947//
27948// API parameter values that are decorated as "sensitive" in the API will not
27949// be included in the string output. The member name will be present, but the
27950// value will be replaced with "sensitive".
27951func (s NoncurrentVersionTransition) String() string {
27952	return awsutil.Prettify(s)
27953}
27954
27955// GoString returns the string representation.
27956//
27957// API parameter values that are decorated as "sensitive" in the API will not
27958// be included in the string output. The member name will be present, but the
27959// value will be replaced with "sensitive".
27960func (s NoncurrentVersionTransition) GoString() string {
27961	return s.String()
27962}
27963
27964// SetNoncurrentDays sets the NoncurrentDays field's value.
27965func (s *NoncurrentVersionTransition) SetNoncurrentDays(v int64) *NoncurrentVersionTransition {
27966	s.NoncurrentDays = &v
27967	return s
27968}
27969
27970// SetStorageClass sets the StorageClass field's value.
27971func (s *NoncurrentVersionTransition) SetStorageClass(v string) *NoncurrentVersionTransition {
27972	s.StorageClass = &v
27973	return s
27974}
27975
27976// A container for specifying the notification configuration of the bucket.
27977// If this element is empty, notifications are turned off for the bucket.
27978type NotificationConfiguration struct {
27979	_ struct{} `type:"structure"`
27980
27981	// Describes the Lambda functions to invoke and the events for which to invoke
27982	// them.
27983	LambdaFunctionConfigurations []*LambdaFunctionConfiguration `locationName:"CloudFunctionConfiguration" type:"list" flattened:"true"`
27984
27985	// The Amazon Simple Queue Service queues to publish messages to and the events
27986	// for which to publish messages.
27987	QueueConfigurations []*QueueConfiguration `locationName:"QueueConfiguration" type:"list" flattened:"true"`
27988
27989	// The topic to which notifications are sent and the events for which notifications
27990	// are generated.
27991	TopicConfigurations []*TopicConfiguration `locationName:"TopicConfiguration" type:"list" flattened:"true"`
27992}
27993
27994// String returns the string representation.
27995//
27996// API parameter values that are decorated as "sensitive" in the API will not
27997// be included in the string output. The member name will be present, but the
27998// value will be replaced with "sensitive".
27999func (s NotificationConfiguration) String() string {
28000	return awsutil.Prettify(s)
28001}
28002
28003// GoString returns the string representation.
28004//
28005// API parameter values that are decorated as "sensitive" in the API will not
28006// be included in the string output. The member name will be present, but the
28007// value will be replaced with "sensitive".
28008func (s NotificationConfiguration) GoString() string {
28009	return s.String()
28010}
28011
28012// Validate inspects the fields of the type to determine if they are valid.
28013func (s *NotificationConfiguration) Validate() error {
28014	invalidParams := request.ErrInvalidParams{Context: "NotificationConfiguration"}
28015	if s.LambdaFunctionConfigurations != nil {
28016		for i, v := range s.LambdaFunctionConfigurations {
28017			if v == nil {
28018				continue
28019			}
28020			if err := v.Validate(); err != nil {
28021				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "LambdaFunctionConfigurations", i), err.(request.ErrInvalidParams))
28022			}
28023		}
28024	}
28025	if s.QueueConfigurations != nil {
28026		for i, v := range s.QueueConfigurations {
28027			if v == nil {
28028				continue
28029			}
28030			if err := v.Validate(); err != nil {
28031				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "QueueConfigurations", i), err.(request.ErrInvalidParams))
28032			}
28033		}
28034	}
28035	if s.TopicConfigurations != nil {
28036		for i, v := range s.TopicConfigurations {
28037			if v == nil {
28038				continue
28039			}
28040			if err := v.Validate(); err != nil {
28041				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TopicConfigurations", i), err.(request.ErrInvalidParams))
28042			}
28043		}
28044	}
28045
28046	if invalidParams.Len() > 0 {
28047		return invalidParams
28048	}
28049	return nil
28050}
28051
28052// SetLambdaFunctionConfigurations sets the LambdaFunctionConfigurations field's value.
28053func (s *NotificationConfiguration) SetLambdaFunctionConfigurations(v []*LambdaFunctionConfiguration) *NotificationConfiguration {
28054	s.LambdaFunctionConfigurations = v
28055	return s
28056}
28057
28058// SetQueueConfigurations sets the QueueConfigurations field's value.
28059func (s *NotificationConfiguration) SetQueueConfigurations(v []*QueueConfiguration) *NotificationConfiguration {
28060	s.QueueConfigurations = v
28061	return s
28062}
28063
28064// SetTopicConfigurations sets the TopicConfigurations field's value.
28065func (s *NotificationConfiguration) SetTopicConfigurations(v []*TopicConfiguration) *NotificationConfiguration {
28066	s.TopicConfigurations = v
28067	return s
28068}
28069
28070type NotificationConfigurationDeprecated struct {
28071	_ struct{} `type:"structure"`
28072
28073	// Container for specifying the Lambda notification configuration.
28074	CloudFunctionConfiguration *CloudFunctionConfiguration `type:"structure"`
28075
28076	// This data type is deprecated. This data type specifies the configuration
28077	// for publishing messages to an Amazon Simple Queue Service (Amazon SQS) queue
28078	// when Amazon S3 detects specified events.
28079	QueueConfiguration *QueueConfigurationDeprecated `type:"structure"`
28080
28081	// This data type is deprecated. A container for specifying the configuration
28082	// for publication of messages to an Amazon Simple Notification Service (Amazon
28083	// SNS) topic when Amazon S3 detects specified events.
28084	TopicConfiguration *TopicConfigurationDeprecated `type:"structure"`
28085}
28086
28087// String returns the string representation.
28088//
28089// API parameter values that are decorated as "sensitive" in the API will not
28090// be included in the string output. The member name will be present, but the
28091// value will be replaced with "sensitive".
28092func (s NotificationConfigurationDeprecated) String() string {
28093	return awsutil.Prettify(s)
28094}
28095
28096// GoString returns the string representation.
28097//
28098// API parameter values that are decorated as "sensitive" in the API will not
28099// be included in the string output. The member name will be present, but the
28100// value will be replaced with "sensitive".
28101func (s NotificationConfigurationDeprecated) GoString() string {
28102	return s.String()
28103}
28104
28105// SetCloudFunctionConfiguration sets the CloudFunctionConfiguration field's value.
28106func (s *NotificationConfigurationDeprecated) SetCloudFunctionConfiguration(v *CloudFunctionConfiguration) *NotificationConfigurationDeprecated {
28107	s.CloudFunctionConfiguration = v
28108	return s
28109}
28110
28111// SetQueueConfiguration sets the QueueConfiguration field's value.
28112func (s *NotificationConfigurationDeprecated) SetQueueConfiguration(v *QueueConfigurationDeprecated) *NotificationConfigurationDeprecated {
28113	s.QueueConfiguration = v
28114	return s
28115}
28116
28117// SetTopicConfiguration sets the TopicConfiguration field's value.
28118func (s *NotificationConfigurationDeprecated) SetTopicConfiguration(v *TopicConfigurationDeprecated) *NotificationConfigurationDeprecated {
28119	s.TopicConfiguration = v
28120	return s
28121}
28122
28123// Specifies object key name filtering rules. For information about key name
28124// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
28125// in the Amazon S3 User Guide.
28126type NotificationConfigurationFilter struct {
28127	_ struct{} `type:"structure"`
28128
28129	// A container for object key name prefix and suffix filtering rules.
28130	Key *KeyFilter `locationName:"S3Key" type:"structure"`
28131}
28132
28133// String returns the string representation.
28134//
28135// API parameter values that are decorated as "sensitive" in the API will not
28136// be included in the string output. The member name will be present, but the
28137// value will be replaced with "sensitive".
28138func (s NotificationConfigurationFilter) String() string {
28139	return awsutil.Prettify(s)
28140}
28141
28142// GoString returns the string representation.
28143//
28144// API parameter values that are decorated as "sensitive" in the API will not
28145// be included in the string output. The member name will be present, but the
28146// value will be replaced with "sensitive".
28147func (s NotificationConfigurationFilter) GoString() string {
28148	return s.String()
28149}
28150
28151// SetKey sets the Key field's value.
28152func (s *NotificationConfigurationFilter) SetKey(v *KeyFilter) *NotificationConfigurationFilter {
28153	s.Key = v
28154	return s
28155}
28156
28157// An object consists of data and its descriptive metadata.
28158type Object struct {
28159	_ struct{} `type:"structure"`
28160
28161	// The entity tag is a hash of the object. The ETag reflects changes only to
28162	// the contents of an object, not its metadata. The ETag may or may not be an
28163	// MD5 digest of the object data. Whether or not it is depends on how the object
28164	// was created and how it is encrypted as described below:
28165	//
28166	//    * Objects created by the PUT Object, POST Object, or Copy operation, or
28167	//    through the Amazon Web Services Management Console, and are encrypted
28168	//    by SSE-S3 or plaintext, have ETags that are an MD5 digest of their object
28169	//    data.
28170	//
28171	//    * Objects created by the PUT Object, POST Object, or Copy operation, or
28172	//    through the Amazon Web Services Management Console, and are encrypted
28173	//    by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of their object
28174	//    data.
28175	//
28176	//    * If an object is created by either the Multipart Upload or Part Copy
28177	//    operation, the ETag is not an MD5 digest, regardless of the method of
28178	//    encryption.
28179	ETag *string `type:"string"`
28180
28181	// The name that you assign to an object. You use the object key to retrieve
28182	// the object.
28183	Key *string `min:"1" type:"string"`
28184
28185	// Creation date of the object.
28186	LastModified *time.Time `type:"timestamp"`
28187
28188	// The owner of the object
28189	Owner *Owner `type:"structure"`
28190
28191	// Size in bytes of the object
28192	Size *int64 `type:"integer"`
28193
28194	// The class of storage used to store the object.
28195	StorageClass *string `type:"string" enum:"ObjectStorageClass"`
28196}
28197
28198// String returns the string representation.
28199//
28200// API parameter values that are decorated as "sensitive" in the API will not
28201// be included in the string output. The member name will be present, but the
28202// value will be replaced with "sensitive".
28203func (s Object) String() string {
28204	return awsutil.Prettify(s)
28205}
28206
28207// GoString returns the string representation.
28208//
28209// API parameter values that are decorated as "sensitive" in the API will not
28210// be included in the string output. The member name will be present, but the
28211// value will be replaced with "sensitive".
28212func (s Object) GoString() string {
28213	return s.String()
28214}
28215
28216// SetETag sets the ETag field's value.
28217func (s *Object) SetETag(v string) *Object {
28218	s.ETag = &v
28219	return s
28220}
28221
28222// SetKey sets the Key field's value.
28223func (s *Object) SetKey(v string) *Object {
28224	s.Key = &v
28225	return s
28226}
28227
28228// SetLastModified sets the LastModified field's value.
28229func (s *Object) SetLastModified(v time.Time) *Object {
28230	s.LastModified = &v
28231	return s
28232}
28233
28234// SetOwner sets the Owner field's value.
28235func (s *Object) SetOwner(v *Owner) *Object {
28236	s.Owner = v
28237	return s
28238}
28239
28240// SetSize sets the Size field's value.
28241func (s *Object) SetSize(v int64) *Object {
28242	s.Size = &v
28243	return s
28244}
28245
28246// SetStorageClass sets the StorageClass field's value.
28247func (s *Object) SetStorageClass(v string) *Object {
28248	s.StorageClass = &v
28249	return s
28250}
28251
28252// Object Identifier is unique value to identify objects.
28253type ObjectIdentifier struct {
28254	_ struct{} `type:"structure"`
28255
28256	// Key name of the object.
28257	//
28258	// Replacement must be made for object keys containing special characters (such
28259	// as carriage returns) when using XML requests. For more information, see XML
28260	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
28261	//
28262	// Key is a required field
28263	Key *string `min:"1" type:"string" required:"true"`
28264
28265	// VersionId for the specific version of the object to delete.
28266	VersionId *string `type:"string"`
28267}
28268
28269// String returns the string representation.
28270//
28271// API parameter values that are decorated as "sensitive" in the API will not
28272// be included in the string output. The member name will be present, but the
28273// value will be replaced with "sensitive".
28274func (s ObjectIdentifier) String() string {
28275	return awsutil.Prettify(s)
28276}
28277
28278// GoString returns the string representation.
28279//
28280// API parameter values that are decorated as "sensitive" in the API will not
28281// be included in the string output. The member name will be present, but the
28282// value will be replaced with "sensitive".
28283func (s ObjectIdentifier) GoString() string {
28284	return s.String()
28285}
28286
28287// Validate inspects the fields of the type to determine if they are valid.
28288func (s *ObjectIdentifier) Validate() error {
28289	invalidParams := request.ErrInvalidParams{Context: "ObjectIdentifier"}
28290	if s.Key == nil {
28291		invalidParams.Add(request.NewErrParamRequired("Key"))
28292	}
28293	if s.Key != nil && len(*s.Key) < 1 {
28294		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
28295	}
28296
28297	if invalidParams.Len() > 0 {
28298		return invalidParams
28299	}
28300	return nil
28301}
28302
28303// SetKey sets the Key field's value.
28304func (s *ObjectIdentifier) SetKey(v string) *ObjectIdentifier {
28305	s.Key = &v
28306	return s
28307}
28308
28309// SetVersionId sets the VersionId field's value.
28310func (s *ObjectIdentifier) SetVersionId(v string) *ObjectIdentifier {
28311	s.VersionId = &v
28312	return s
28313}
28314
28315// The container element for Object Lock configuration parameters.
28316type ObjectLockConfiguration struct {
28317	_ struct{} `type:"structure"`
28318
28319	// Indicates whether this bucket has an Object Lock configuration enabled. Enable
28320	// ObjectLockEnabled when you apply ObjectLockConfiguration to a bucket.
28321	ObjectLockEnabled *string `type:"string" enum:"ObjectLockEnabled"`
28322
28323	// Specifies the Object Lock rule for the specified object. Enable the this
28324	// rule when you apply ObjectLockConfiguration to a bucket. Bucket settings
28325	// require both a mode and a period. The period can be either Days or Years
28326	// but you must select one. You cannot specify Days and Years at the same time.
28327	Rule *ObjectLockRule `type:"structure"`
28328}
28329
28330// String returns the string representation.
28331//
28332// API parameter values that are decorated as "sensitive" in the API will not
28333// be included in the string output. The member name will be present, but the
28334// value will be replaced with "sensitive".
28335func (s ObjectLockConfiguration) String() string {
28336	return awsutil.Prettify(s)
28337}
28338
28339// GoString returns the string representation.
28340//
28341// API parameter values that are decorated as "sensitive" in the API will not
28342// be included in the string output. The member name will be present, but the
28343// value will be replaced with "sensitive".
28344func (s ObjectLockConfiguration) GoString() string {
28345	return s.String()
28346}
28347
28348// SetObjectLockEnabled sets the ObjectLockEnabled field's value.
28349func (s *ObjectLockConfiguration) SetObjectLockEnabled(v string) *ObjectLockConfiguration {
28350	s.ObjectLockEnabled = &v
28351	return s
28352}
28353
28354// SetRule sets the Rule field's value.
28355func (s *ObjectLockConfiguration) SetRule(v *ObjectLockRule) *ObjectLockConfiguration {
28356	s.Rule = v
28357	return s
28358}
28359
28360// A Legal Hold configuration for an object.
28361type ObjectLockLegalHold struct {
28362	_ struct{} `type:"structure"`
28363
28364	// Indicates whether the specified object has a Legal Hold in place.
28365	Status *string `type:"string" enum:"ObjectLockLegalHoldStatus"`
28366}
28367
28368// String returns the string representation.
28369//
28370// API parameter values that are decorated as "sensitive" in the API will not
28371// be included in the string output. The member name will be present, but the
28372// value will be replaced with "sensitive".
28373func (s ObjectLockLegalHold) String() string {
28374	return awsutil.Prettify(s)
28375}
28376
28377// GoString returns the string representation.
28378//
28379// API parameter values that are decorated as "sensitive" in the API will not
28380// be included in the string output. The member name will be present, but the
28381// value will be replaced with "sensitive".
28382func (s ObjectLockLegalHold) GoString() string {
28383	return s.String()
28384}
28385
28386// SetStatus sets the Status field's value.
28387func (s *ObjectLockLegalHold) SetStatus(v string) *ObjectLockLegalHold {
28388	s.Status = &v
28389	return s
28390}
28391
28392// A Retention configuration for an object.
28393type ObjectLockRetention struct {
28394	_ struct{} `type:"structure"`
28395
28396	// Indicates the Retention mode for the specified object.
28397	Mode *string `type:"string" enum:"ObjectLockRetentionMode"`
28398
28399	// The date on which this Object Lock Retention will expire.
28400	RetainUntilDate *time.Time `type:"timestamp" timestampFormat:"iso8601"`
28401}
28402
28403// String returns the string representation.
28404//
28405// API parameter values that are decorated as "sensitive" in the API will not
28406// be included in the string output. The member name will be present, but the
28407// value will be replaced with "sensitive".
28408func (s ObjectLockRetention) String() string {
28409	return awsutil.Prettify(s)
28410}
28411
28412// GoString returns the string representation.
28413//
28414// API parameter values that are decorated as "sensitive" in the API will not
28415// be included in the string output. The member name will be present, but the
28416// value will be replaced with "sensitive".
28417func (s ObjectLockRetention) GoString() string {
28418	return s.String()
28419}
28420
28421// SetMode sets the Mode field's value.
28422func (s *ObjectLockRetention) SetMode(v string) *ObjectLockRetention {
28423	s.Mode = &v
28424	return s
28425}
28426
28427// SetRetainUntilDate sets the RetainUntilDate field's value.
28428func (s *ObjectLockRetention) SetRetainUntilDate(v time.Time) *ObjectLockRetention {
28429	s.RetainUntilDate = &v
28430	return s
28431}
28432
28433// The container element for an Object Lock rule.
28434type ObjectLockRule struct {
28435	_ struct{} `type:"structure"`
28436
28437	// The default Object Lock retention mode and period that you want to apply
28438	// to new objects placed in the specified bucket. Bucket settings require both
28439	// a mode and a period. The period can be either Days or Years but you must
28440	// select one. You cannot specify Days and Years at the same time.
28441	DefaultRetention *DefaultRetention `type:"structure"`
28442}
28443
28444// String returns the string representation.
28445//
28446// API parameter values that are decorated as "sensitive" in the API will not
28447// be included in the string output. The member name will be present, but the
28448// value will be replaced with "sensitive".
28449func (s ObjectLockRule) String() string {
28450	return awsutil.Prettify(s)
28451}
28452
28453// GoString returns the string representation.
28454//
28455// API parameter values that are decorated as "sensitive" in the API will not
28456// be included in the string output. The member name will be present, but the
28457// value will be replaced with "sensitive".
28458func (s ObjectLockRule) GoString() string {
28459	return s.String()
28460}
28461
28462// SetDefaultRetention sets the DefaultRetention field's value.
28463func (s *ObjectLockRule) SetDefaultRetention(v *DefaultRetention) *ObjectLockRule {
28464	s.DefaultRetention = v
28465	return s
28466}
28467
28468// The version of an object.
28469type ObjectVersion struct {
28470	_ struct{} `type:"structure"`
28471
28472	// The entity tag is an MD5 hash of that version of the object.
28473	ETag *string `type:"string"`
28474
28475	// Specifies whether the object is (true) or is not (false) the latest version
28476	// of an object.
28477	IsLatest *bool `type:"boolean"`
28478
28479	// The object key.
28480	Key *string `min:"1" type:"string"`
28481
28482	// Date and time the object was last modified.
28483	LastModified *time.Time `type:"timestamp"`
28484
28485	// Specifies the owner of the object.
28486	Owner *Owner `type:"structure"`
28487
28488	// Size in bytes of the object.
28489	Size *int64 `type:"integer"`
28490
28491	// The class of storage used to store the object.
28492	StorageClass *string `type:"string" enum:"ObjectVersionStorageClass"`
28493
28494	// Version ID of an object.
28495	VersionId *string `type:"string"`
28496}
28497
28498// String returns the string representation.
28499//
28500// API parameter values that are decorated as "sensitive" in the API will not
28501// be included in the string output. The member name will be present, but the
28502// value will be replaced with "sensitive".
28503func (s ObjectVersion) String() string {
28504	return awsutil.Prettify(s)
28505}
28506
28507// GoString returns the string representation.
28508//
28509// API parameter values that are decorated as "sensitive" in the API will not
28510// be included in the string output. The member name will be present, but the
28511// value will be replaced with "sensitive".
28512func (s ObjectVersion) GoString() string {
28513	return s.String()
28514}
28515
28516// SetETag sets the ETag field's value.
28517func (s *ObjectVersion) SetETag(v string) *ObjectVersion {
28518	s.ETag = &v
28519	return s
28520}
28521
28522// SetIsLatest sets the IsLatest field's value.
28523func (s *ObjectVersion) SetIsLatest(v bool) *ObjectVersion {
28524	s.IsLatest = &v
28525	return s
28526}
28527
28528// SetKey sets the Key field's value.
28529func (s *ObjectVersion) SetKey(v string) *ObjectVersion {
28530	s.Key = &v
28531	return s
28532}
28533
28534// SetLastModified sets the LastModified field's value.
28535func (s *ObjectVersion) SetLastModified(v time.Time) *ObjectVersion {
28536	s.LastModified = &v
28537	return s
28538}
28539
28540// SetOwner sets the Owner field's value.
28541func (s *ObjectVersion) SetOwner(v *Owner) *ObjectVersion {
28542	s.Owner = v
28543	return s
28544}
28545
28546// SetSize sets the Size field's value.
28547func (s *ObjectVersion) SetSize(v int64) *ObjectVersion {
28548	s.Size = &v
28549	return s
28550}
28551
28552// SetStorageClass sets the StorageClass field's value.
28553func (s *ObjectVersion) SetStorageClass(v string) *ObjectVersion {
28554	s.StorageClass = &v
28555	return s
28556}
28557
28558// SetVersionId sets the VersionId field's value.
28559func (s *ObjectVersion) SetVersionId(v string) *ObjectVersion {
28560	s.VersionId = &v
28561	return s
28562}
28563
28564// Describes the location where the restore job's output is stored.
28565type OutputLocation struct {
28566	_ struct{} `type:"structure"`
28567
28568	// Describes an S3 location that will receive the results of the restore request.
28569	S3 *Location `type:"structure"`
28570}
28571
28572// String returns the string representation.
28573//
28574// API parameter values that are decorated as "sensitive" in the API will not
28575// be included in the string output. The member name will be present, but the
28576// value will be replaced with "sensitive".
28577func (s OutputLocation) String() string {
28578	return awsutil.Prettify(s)
28579}
28580
28581// GoString returns the string representation.
28582//
28583// API parameter values that are decorated as "sensitive" in the API will not
28584// be included in the string output. The member name will be present, but the
28585// value will be replaced with "sensitive".
28586func (s OutputLocation) GoString() string {
28587	return s.String()
28588}
28589
28590// Validate inspects the fields of the type to determine if they are valid.
28591func (s *OutputLocation) Validate() error {
28592	invalidParams := request.ErrInvalidParams{Context: "OutputLocation"}
28593	if s.S3 != nil {
28594		if err := s.S3.Validate(); err != nil {
28595			invalidParams.AddNested("S3", err.(request.ErrInvalidParams))
28596		}
28597	}
28598
28599	if invalidParams.Len() > 0 {
28600		return invalidParams
28601	}
28602	return nil
28603}
28604
28605// SetS3 sets the S3 field's value.
28606func (s *OutputLocation) SetS3(v *Location) *OutputLocation {
28607	s.S3 = v
28608	return s
28609}
28610
28611// Describes how results of the Select job are serialized.
28612type OutputSerialization struct {
28613	_ struct{} `type:"structure"`
28614
28615	// Describes the serialization of CSV-encoded Select results.
28616	CSV *CSVOutput `type:"structure"`
28617
28618	// Specifies JSON as request's output serialization format.
28619	JSON *JSONOutput `type:"structure"`
28620}
28621
28622// String returns the string representation.
28623//
28624// API parameter values that are decorated as "sensitive" in the API will not
28625// be included in the string output. The member name will be present, but the
28626// value will be replaced with "sensitive".
28627func (s OutputSerialization) String() string {
28628	return awsutil.Prettify(s)
28629}
28630
28631// GoString returns the string representation.
28632//
28633// API parameter values that are decorated as "sensitive" in the API will not
28634// be included in the string output. The member name will be present, but the
28635// value will be replaced with "sensitive".
28636func (s OutputSerialization) GoString() string {
28637	return s.String()
28638}
28639
28640// SetCSV sets the CSV field's value.
28641func (s *OutputSerialization) SetCSV(v *CSVOutput) *OutputSerialization {
28642	s.CSV = v
28643	return s
28644}
28645
28646// SetJSON sets the JSON field's value.
28647func (s *OutputSerialization) SetJSON(v *JSONOutput) *OutputSerialization {
28648	s.JSON = v
28649	return s
28650}
28651
28652// Container for the owner's display name and ID.
28653type Owner struct {
28654	_ struct{} `type:"structure"`
28655
28656	// Container for the display name of the owner.
28657	DisplayName *string `type:"string"`
28658
28659	// Container for the ID of the owner.
28660	ID *string `type:"string"`
28661}
28662
28663// String returns the string representation.
28664//
28665// API parameter values that are decorated as "sensitive" in the API will not
28666// be included in the string output. The member name will be present, but the
28667// value will be replaced with "sensitive".
28668func (s Owner) String() string {
28669	return awsutil.Prettify(s)
28670}
28671
28672// GoString returns the string representation.
28673//
28674// API parameter values that are decorated as "sensitive" in the API will not
28675// be included in the string output. The member name will be present, but the
28676// value will be replaced with "sensitive".
28677func (s Owner) GoString() string {
28678	return s.String()
28679}
28680
28681// SetDisplayName sets the DisplayName field's value.
28682func (s *Owner) SetDisplayName(v string) *Owner {
28683	s.DisplayName = &v
28684	return s
28685}
28686
28687// SetID sets the ID field's value.
28688func (s *Owner) SetID(v string) *Owner {
28689	s.ID = &v
28690	return s
28691}
28692
28693// The container element for a bucket's ownership controls.
28694type OwnershipControls struct {
28695	_ struct{} `type:"structure"`
28696
28697	// The container element for an ownership control rule.
28698	//
28699	// Rules is a required field
28700	Rules []*OwnershipControlsRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
28701}
28702
28703// String returns the string representation.
28704//
28705// API parameter values that are decorated as "sensitive" in the API will not
28706// be included in the string output. The member name will be present, but the
28707// value will be replaced with "sensitive".
28708func (s OwnershipControls) String() string {
28709	return awsutil.Prettify(s)
28710}
28711
28712// GoString returns the string representation.
28713//
28714// API parameter values that are decorated as "sensitive" in the API will not
28715// be included in the string output. The member name will be present, but the
28716// value will be replaced with "sensitive".
28717func (s OwnershipControls) GoString() string {
28718	return s.String()
28719}
28720
28721// Validate inspects the fields of the type to determine if they are valid.
28722func (s *OwnershipControls) Validate() error {
28723	invalidParams := request.ErrInvalidParams{Context: "OwnershipControls"}
28724	if s.Rules == nil {
28725		invalidParams.Add(request.NewErrParamRequired("Rules"))
28726	}
28727	if s.Rules != nil {
28728		for i, v := range s.Rules {
28729			if v == nil {
28730				continue
28731			}
28732			if err := v.Validate(); err != nil {
28733				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
28734			}
28735		}
28736	}
28737
28738	if invalidParams.Len() > 0 {
28739		return invalidParams
28740	}
28741	return nil
28742}
28743
28744// SetRules sets the Rules field's value.
28745func (s *OwnershipControls) SetRules(v []*OwnershipControlsRule) *OwnershipControls {
28746	s.Rules = v
28747	return s
28748}
28749
28750// The container element for an ownership control rule.
28751type OwnershipControlsRule struct {
28752	_ struct{} `type:"structure"`
28753
28754	// The container element for object ownership for a bucket's ownership controls.
28755	//
28756	// BucketOwnerPreferred - Objects uploaded to the bucket change ownership to
28757	// the bucket owner if the objects are uploaded with the bucket-owner-full-control
28758	// canned ACL.
28759	//
28760	// ObjectWriter - The uploading account will own the object if the object is
28761	// uploaded with the bucket-owner-full-control canned ACL.
28762	//
28763	// ObjectOwnership is a required field
28764	ObjectOwnership *string `type:"string" required:"true" enum:"ObjectOwnership"`
28765}
28766
28767// String returns the string representation.
28768//
28769// API parameter values that are decorated as "sensitive" in the API will not
28770// be included in the string output. The member name will be present, but the
28771// value will be replaced with "sensitive".
28772func (s OwnershipControlsRule) String() string {
28773	return awsutil.Prettify(s)
28774}
28775
28776// GoString returns the string representation.
28777//
28778// API parameter values that are decorated as "sensitive" in the API will not
28779// be included in the string output. The member name will be present, but the
28780// value will be replaced with "sensitive".
28781func (s OwnershipControlsRule) GoString() string {
28782	return s.String()
28783}
28784
28785// Validate inspects the fields of the type to determine if they are valid.
28786func (s *OwnershipControlsRule) Validate() error {
28787	invalidParams := request.ErrInvalidParams{Context: "OwnershipControlsRule"}
28788	if s.ObjectOwnership == nil {
28789		invalidParams.Add(request.NewErrParamRequired("ObjectOwnership"))
28790	}
28791
28792	if invalidParams.Len() > 0 {
28793		return invalidParams
28794	}
28795	return nil
28796}
28797
28798// SetObjectOwnership sets the ObjectOwnership field's value.
28799func (s *OwnershipControlsRule) SetObjectOwnership(v string) *OwnershipControlsRule {
28800	s.ObjectOwnership = &v
28801	return s
28802}
28803
28804// Container for Parquet.
28805type ParquetInput struct {
28806	_ struct{} `type:"structure"`
28807}
28808
28809// String returns the string representation.
28810//
28811// API parameter values that are decorated as "sensitive" in the API will not
28812// be included in the string output. The member name will be present, but the
28813// value will be replaced with "sensitive".
28814func (s ParquetInput) String() string {
28815	return awsutil.Prettify(s)
28816}
28817
28818// GoString returns the string representation.
28819//
28820// API parameter values that are decorated as "sensitive" in the API will not
28821// be included in the string output. The member name will be present, but the
28822// value will be replaced with "sensitive".
28823func (s ParquetInput) GoString() string {
28824	return s.String()
28825}
28826
28827// Container for elements related to a part.
28828type Part struct {
28829	_ struct{} `type:"structure"`
28830
28831	// Entity tag returned when the part was uploaded.
28832	ETag *string `type:"string"`
28833
28834	// Date and time at which the part was uploaded.
28835	LastModified *time.Time `type:"timestamp"`
28836
28837	// Part number identifying the part. This is a positive integer between 1 and
28838	// 10,000.
28839	PartNumber *int64 `type:"integer"`
28840
28841	// Size in bytes of the uploaded part data.
28842	Size *int64 `type:"integer"`
28843}
28844
28845// String returns the string representation.
28846//
28847// API parameter values that are decorated as "sensitive" in the API will not
28848// be included in the string output. The member name will be present, but the
28849// value will be replaced with "sensitive".
28850func (s Part) String() string {
28851	return awsutil.Prettify(s)
28852}
28853
28854// GoString returns the string representation.
28855//
28856// API parameter values that are decorated as "sensitive" in the API will not
28857// be included in the string output. The member name will be present, but the
28858// value will be replaced with "sensitive".
28859func (s Part) GoString() string {
28860	return s.String()
28861}
28862
28863// SetETag sets the ETag field's value.
28864func (s *Part) SetETag(v string) *Part {
28865	s.ETag = &v
28866	return s
28867}
28868
28869// SetLastModified sets the LastModified field's value.
28870func (s *Part) SetLastModified(v time.Time) *Part {
28871	s.LastModified = &v
28872	return s
28873}
28874
28875// SetPartNumber sets the PartNumber field's value.
28876func (s *Part) SetPartNumber(v int64) *Part {
28877	s.PartNumber = &v
28878	return s
28879}
28880
28881// SetSize sets the Size field's value.
28882func (s *Part) SetSize(v int64) *Part {
28883	s.Size = &v
28884	return s
28885}
28886
28887// The container element for a bucket's policy status.
28888type PolicyStatus struct {
28889	_ struct{} `type:"structure"`
28890
28891	// The policy status for this bucket. TRUE indicates that this bucket is public.
28892	// FALSE indicates that the bucket is not public.
28893	IsPublic *bool `locationName:"IsPublic" type:"boolean"`
28894}
28895
28896// String returns the string representation.
28897//
28898// API parameter values that are decorated as "sensitive" in the API will not
28899// be included in the string output. The member name will be present, but the
28900// value will be replaced with "sensitive".
28901func (s PolicyStatus) String() string {
28902	return awsutil.Prettify(s)
28903}
28904
28905// GoString returns the string representation.
28906//
28907// API parameter values that are decorated as "sensitive" in the API will not
28908// be included in the string output. The member name will be present, but the
28909// value will be replaced with "sensitive".
28910func (s PolicyStatus) GoString() string {
28911	return s.String()
28912}
28913
28914// SetIsPublic sets the IsPublic field's value.
28915func (s *PolicyStatus) SetIsPublic(v bool) *PolicyStatus {
28916	s.IsPublic = &v
28917	return s
28918}
28919
28920// This data type contains information about progress of an operation.
28921type Progress struct {
28922	_ struct{} `type:"structure"`
28923
28924	// The current number of uncompressed object bytes processed.
28925	BytesProcessed *int64 `type:"long"`
28926
28927	// The current number of bytes of records payload data returned.
28928	BytesReturned *int64 `type:"long"`
28929
28930	// The current number of object bytes scanned.
28931	BytesScanned *int64 `type:"long"`
28932}
28933
28934// String returns the string representation.
28935//
28936// API parameter values that are decorated as "sensitive" in the API will not
28937// be included in the string output. The member name will be present, but the
28938// value will be replaced with "sensitive".
28939func (s Progress) String() string {
28940	return awsutil.Prettify(s)
28941}
28942
28943// GoString returns the string representation.
28944//
28945// API parameter values that are decorated as "sensitive" in the API will not
28946// be included in the string output. The member name will be present, but the
28947// value will be replaced with "sensitive".
28948func (s Progress) GoString() string {
28949	return s.String()
28950}
28951
28952// SetBytesProcessed sets the BytesProcessed field's value.
28953func (s *Progress) SetBytesProcessed(v int64) *Progress {
28954	s.BytesProcessed = &v
28955	return s
28956}
28957
28958// SetBytesReturned sets the BytesReturned field's value.
28959func (s *Progress) SetBytesReturned(v int64) *Progress {
28960	s.BytesReturned = &v
28961	return s
28962}
28963
28964// SetBytesScanned sets the BytesScanned field's value.
28965func (s *Progress) SetBytesScanned(v int64) *Progress {
28966	s.BytesScanned = &v
28967	return s
28968}
28969
28970// This data type contains information about the progress event of an operation.
28971type ProgressEvent struct {
28972	_ struct{} `locationName:"ProgressEvent" type:"structure" payload:"Details"`
28973
28974	// The Progress event details.
28975	Details *Progress `locationName:"Details" type:"structure"`
28976}
28977
28978// String returns the string representation.
28979//
28980// API parameter values that are decorated as "sensitive" in the API will not
28981// be included in the string output. The member name will be present, but the
28982// value will be replaced with "sensitive".
28983func (s ProgressEvent) String() string {
28984	return awsutil.Prettify(s)
28985}
28986
28987// GoString returns the string representation.
28988//
28989// API parameter values that are decorated as "sensitive" in the API will not
28990// be included in the string output. The member name will be present, but the
28991// value will be replaced with "sensitive".
28992func (s ProgressEvent) GoString() string {
28993	return s.String()
28994}
28995
28996// SetDetails sets the Details field's value.
28997func (s *ProgressEvent) SetDetails(v *Progress) *ProgressEvent {
28998	s.Details = v
28999	return s
29000}
29001
29002// The ProgressEvent is and event in the SelectObjectContentEventStream group of events.
29003func (s *ProgressEvent) eventSelectObjectContentEventStream() {}
29004
29005// UnmarshalEvent unmarshals the EventStream Message into the ProgressEvent value.
29006// This method is only used internally within the SDK's EventStream handling.
29007func (s *ProgressEvent) UnmarshalEvent(
29008	payloadUnmarshaler protocol.PayloadUnmarshaler,
29009	msg eventstream.Message,
29010) error {
29011	if err := payloadUnmarshaler.UnmarshalPayload(
29012		bytes.NewReader(msg.Payload), s,
29013	); err != nil {
29014		return err
29015	}
29016	return nil
29017}
29018
29019// MarshalEvent marshals the type into an stream event value. This method
29020// should only used internally within the SDK's EventStream handling.
29021func (s *ProgressEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
29022	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
29023	var buf bytes.Buffer
29024	if err = pm.MarshalPayload(&buf, s); err != nil {
29025		return eventstream.Message{}, err
29026	}
29027	msg.Payload = buf.Bytes()
29028	return msg, err
29029}
29030
29031// The PublicAccessBlock configuration that you want to apply to this Amazon
29032// S3 bucket. You can enable the configuration options in any combination. For
29033// more information about when Amazon S3 considers a bucket or object public,
29034// 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)
29035// in the Amazon S3 User Guide.
29036type PublicAccessBlockConfiguration struct {
29037	_ struct{} `type:"structure"`
29038
29039	// Specifies whether Amazon S3 should block public access control lists (ACLs)
29040	// for this bucket and objects in this bucket. Setting this element to TRUE
29041	// causes the following behavior:
29042	//
29043	//    * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is
29044	//    public.
29045	//
29046	//    * PUT Object calls fail if the request includes a public ACL.
29047	//
29048	//    * PUT Bucket calls fail if the request includes a public ACL.
29049	//
29050	// Enabling this setting doesn't affect existing policies or ACLs.
29051	BlockPublicAcls *bool `locationName:"BlockPublicAcls" type:"boolean"`
29052
29053	// Specifies whether Amazon S3 should block public bucket policies for this
29054	// bucket. Setting this element to TRUE causes Amazon S3 to reject calls to
29055	// PUT Bucket policy if the specified bucket policy allows public access.
29056	//
29057	// Enabling this setting doesn't affect existing bucket policies.
29058	BlockPublicPolicy *bool `locationName:"BlockPublicPolicy" type:"boolean"`
29059
29060	// Specifies whether Amazon S3 should ignore public ACLs for this bucket and
29061	// objects in this bucket. Setting this element to TRUE causes Amazon S3 to
29062	// ignore all public ACLs on this bucket and objects in this bucket.
29063	//
29064	// Enabling this setting doesn't affect the persistence of any existing ACLs
29065	// and doesn't prevent new public ACLs from being set.
29066	IgnorePublicAcls *bool `locationName:"IgnorePublicAcls" type:"boolean"`
29067
29068	// Specifies whether Amazon S3 should restrict public bucket policies for this
29069	// bucket. Setting this element to TRUE restricts access to this bucket to only
29070	// Amazon Web Service principals and authorized users within this account if
29071	// the bucket has a public policy.
29072	//
29073	// Enabling this setting doesn't affect previously stored bucket policies, except
29074	// that public and cross-account access within any public bucket policy, including
29075	// non-public delegation to specific accounts, is blocked.
29076	RestrictPublicBuckets *bool `locationName:"RestrictPublicBuckets" type:"boolean"`
29077}
29078
29079// String returns the string representation.
29080//
29081// API parameter values that are decorated as "sensitive" in the API will not
29082// be included in the string output. The member name will be present, but the
29083// value will be replaced with "sensitive".
29084func (s PublicAccessBlockConfiguration) String() string {
29085	return awsutil.Prettify(s)
29086}
29087
29088// GoString returns the string representation.
29089//
29090// API parameter values that are decorated as "sensitive" in the API will not
29091// be included in the string output. The member name will be present, but the
29092// value will be replaced with "sensitive".
29093func (s PublicAccessBlockConfiguration) GoString() string {
29094	return s.String()
29095}
29096
29097// SetBlockPublicAcls sets the BlockPublicAcls field's value.
29098func (s *PublicAccessBlockConfiguration) SetBlockPublicAcls(v bool) *PublicAccessBlockConfiguration {
29099	s.BlockPublicAcls = &v
29100	return s
29101}
29102
29103// SetBlockPublicPolicy sets the BlockPublicPolicy field's value.
29104func (s *PublicAccessBlockConfiguration) SetBlockPublicPolicy(v bool) *PublicAccessBlockConfiguration {
29105	s.BlockPublicPolicy = &v
29106	return s
29107}
29108
29109// SetIgnorePublicAcls sets the IgnorePublicAcls field's value.
29110func (s *PublicAccessBlockConfiguration) SetIgnorePublicAcls(v bool) *PublicAccessBlockConfiguration {
29111	s.IgnorePublicAcls = &v
29112	return s
29113}
29114
29115// SetRestrictPublicBuckets sets the RestrictPublicBuckets field's value.
29116func (s *PublicAccessBlockConfiguration) SetRestrictPublicBuckets(v bool) *PublicAccessBlockConfiguration {
29117	s.RestrictPublicBuckets = &v
29118	return s
29119}
29120
29121type PutBucketAccelerateConfigurationInput struct {
29122	_ struct{} `locationName:"PutBucketAccelerateConfigurationRequest" type:"structure" payload:"AccelerateConfiguration"`
29123
29124	// Container for setting the transfer acceleration state.
29125	//
29126	// AccelerateConfiguration is a required field
29127	AccelerateConfiguration *AccelerateConfiguration `locationName:"AccelerateConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29128
29129	// The name of the bucket for which the accelerate configuration is set.
29130	//
29131	// Bucket is a required field
29132	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29133
29134	// The account ID of the expected bucket owner. If the bucket is owned by a
29135	// different account, the request will fail with an HTTP 403 (Access Denied)
29136	// error.
29137	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29138}
29139
29140// String returns the string representation.
29141//
29142// API parameter values that are decorated as "sensitive" in the API will not
29143// be included in the string output. The member name will be present, but the
29144// value will be replaced with "sensitive".
29145func (s PutBucketAccelerateConfigurationInput) String() string {
29146	return awsutil.Prettify(s)
29147}
29148
29149// GoString returns the string representation.
29150//
29151// API parameter values that are decorated as "sensitive" in the API will not
29152// be included in the string output. The member name will be present, but the
29153// value will be replaced with "sensitive".
29154func (s PutBucketAccelerateConfigurationInput) GoString() string {
29155	return s.String()
29156}
29157
29158// Validate inspects the fields of the type to determine if they are valid.
29159func (s *PutBucketAccelerateConfigurationInput) Validate() error {
29160	invalidParams := request.ErrInvalidParams{Context: "PutBucketAccelerateConfigurationInput"}
29161	if s.AccelerateConfiguration == nil {
29162		invalidParams.Add(request.NewErrParamRequired("AccelerateConfiguration"))
29163	}
29164	if s.Bucket == nil {
29165		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29166	}
29167	if s.Bucket != nil && len(*s.Bucket) < 1 {
29168		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29169	}
29170
29171	if invalidParams.Len() > 0 {
29172		return invalidParams
29173	}
29174	return nil
29175}
29176
29177// SetAccelerateConfiguration sets the AccelerateConfiguration field's value.
29178func (s *PutBucketAccelerateConfigurationInput) SetAccelerateConfiguration(v *AccelerateConfiguration) *PutBucketAccelerateConfigurationInput {
29179	s.AccelerateConfiguration = v
29180	return s
29181}
29182
29183// SetBucket sets the Bucket field's value.
29184func (s *PutBucketAccelerateConfigurationInput) SetBucket(v string) *PutBucketAccelerateConfigurationInput {
29185	s.Bucket = &v
29186	return s
29187}
29188
29189func (s *PutBucketAccelerateConfigurationInput) getBucket() (v string) {
29190	if s.Bucket == nil {
29191		return v
29192	}
29193	return *s.Bucket
29194}
29195
29196// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29197func (s *PutBucketAccelerateConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketAccelerateConfigurationInput {
29198	s.ExpectedBucketOwner = &v
29199	return s
29200}
29201
29202func (s *PutBucketAccelerateConfigurationInput) getEndpointARN() (arn.Resource, error) {
29203	if s.Bucket == nil {
29204		return nil, fmt.Errorf("member Bucket is nil")
29205	}
29206	return parseEndpointARN(*s.Bucket)
29207}
29208
29209func (s *PutBucketAccelerateConfigurationInput) hasEndpointARN() bool {
29210	if s.Bucket == nil {
29211		return false
29212	}
29213	return arn.IsARN(*s.Bucket)
29214}
29215
29216// updateArnableField updates the value of the input field that
29217// takes an ARN as an input. This method is useful to backfill
29218// the parsed resource name from ARN into the input member.
29219// It returns a pointer to a modified copy of input and an error.
29220// Note that original input is not modified.
29221func (s PutBucketAccelerateConfigurationInput) updateArnableField(v string) (interface{}, error) {
29222	if s.Bucket == nil {
29223		return nil, fmt.Errorf("member Bucket is nil")
29224	}
29225	s.Bucket = aws.String(v)
29226	return &s, nil
29227}
29228
29229type PutBucketAccelerateConfigurationOutput struct {
29230	_ struct{} `type:"structure"`
29231}
29232
29233// String returns the string representation.
29234//
29235// API parameter values that are decorated as "sensitive" in the API will not
29236// be included in the string output. The member name will be present, but the
29237// value will be replaced with "sensitive".
29238func (s PutBucketAccelerateConfigurationOutput) String() string {
29239	return awsutil.Prettify(s)
29240}
29241
29242// GoString returns the string representation.
29243//
29244// API parameter values that are decorated as "sensitive" in the API will not
29245// be included in the string output. The member name will be present, but the
29246// value will be replaced with "sensitive".
29247func (s PutBucketAccelerateConfigurationOutput) GoString() string {
29248	return s.String()
29249}
29250
29251type PutBucketAclInput struct {
29252	_ struct{} `locationName:"PutBucketAclRequest" type:"structure" payload:"AccessControlPolicy"`
29253
29254	// The canned ACL to apply to the bucket.
29255	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"BucketCannedACL"`
29256
29257	// Contains the elements that set the ACL permissions for an object per grantee.
29258	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29259
29260	// The bucket to which to apply the ACL.
29261	//
29262	// Bucket is a required field
29263	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29264
29265	// The account ID of the expected bucket owner. If the bucket is owned by a
29266	// different account, the request will fail with an HTTP 403 (Access Denied)
29267	// error.
29268	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29269
29270	// Allows grantee the read, write, read ACP, and write ACP permissions on the
29271	// bucket.
29272	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
29273
29274	// Allows grantee to list the objects in the bucket.
29275	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
29276
29277	// Allows grantee to read the bucket ACL.
29278	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
29279
29280	// Allows grantee to create new objects in the bucket.
29281	//
29282	// For the bucket and object owners of existing objects, also allows deletions
29283	// and overwrites of those objects.
29284	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
29285
29286	// Allows grantee to write the ACL for the applicable bucket.
29287	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
29288}
29289
29290// String returns the string representation.
29291//
29292// API parameter values that are decorated as "sensitive" in the API will not
29293// be included in the string output. The member name will be present, but the
29294// value will be replaced with "sensitive".
29295func (s PutBucketAclInput) String() string {
29296	return awsutil.Prettify(s)
29297}
29298
29299// GoString returns the string representation.
29300//
29301// API parameter values that are decorated as "sensitive" in the API will not
29302// be included in the string output. The member name will be present, but the
29303// value will be replaced with "sensitive".
29304func (s PutBucketAclInput) GoString() string {
29305	return s.String()
29306}
29307
29308// Validate inspects the fields of the type to determine if they are valid.
29309func (s *PutBucketAclInput) Validate() error {
29310	invalidParams := request.ErrInvalidParams{Context: "PutBucketAclInput"}
29311	if s.Bucket == nil {
29312		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29313	}
29314	if s.Bucket != nil && len(*s.Bucket) < 1 {
29315		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29316	}
29317	if s.AccessControlPolicy != nil {
29318		if err := s.AccessControlPolicy.Validate(); err != nil {
29319			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
29320		}
29321	}
29322
29323	if invalidParams.Len() > 0 {
29324		return invalidParams
29325	}
29326	return nil
29327}
29328
29329// SetACL sets the ACL field's value.
29330func (s *PutBucketAclInput) SetACL(v string) *PutBucketAclInput {
29331	s.ACL = &v
29332	return s
29333}
29334
29335// SetAccessControlPolicy sets the AccessControlPolicy field's value.
29336func (s *PutBucketAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutBucketAclInput {
29337	s.AccessControlPolicy = v
29338	return s
29339}
29340
29341// SetBucket sets the Bucket field's value.
29342func (s *PutBucketAclInput) SetBucket(v string) *PutBucketAclInput {
29343	s.Bucket = &v
29344	return s
29345}
29346
29347func (s *PutBucketAclInput) getBucket() (v string) {
29348	if s.Bucket == nil {
29349		return v
29350	}
29351	return *s.Bucket
29352}
29353
29354// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29355func (s *PutBucketAclInput) SetExpectedBucketOwner(v string) *PutBucketAclInput {
29356	s.ExpectedBucketOwner = &v
29357	return s
29358}
29359
29360// SetGrantFullControl sets the GrantFullControl field's value.
29361func (s *PutBucketAclInput) SetGrantFullControl(v string) *PutBucketAclInput {
29362	s.GrantFullControl = &v
29363	return s
29364}
29365
29366// SetGrantRead sets the GrantRead field's value.
29367func (s *PutBucketAclInput) SetGrantRead(v string) *PutBucketAclInput {
29368	s.GrantRead = &v
29369	return s
29370}
29371
29372// SetGrantReadACP sets the GrantReadACP field's value.
29373func (s *PutBucketAclInput) SetGrantReadACP(v string) *PutBucketAclInput {
29374	s.GrantReadACP = &v
29375	return s
29376}
29377
29378// SetGrantWrite sets the GrantWrite field's value.
29379func (s *PutBucketAclInput) SetGrantWrite(v string) *PutBucketAclInput {
29380	s.GrantWrite = &v
29381	return s
29382}
29383
29384// SetGrantWriteACP sets the GrantWriteACP field's value.
29385func (s *PutBucketAclInput) SetGrantWriteACP(v string) *PutBucketAclInput {
29386	s.GrantWriteACP = &v
29387	return s
29388}
29389
29390func (s *PutBucketAclInput) getEndpointARN() (arn.Resource, error) {
29391	if s.Bucket == nil {
29392		return nil, fmt.Errorf("member Bucket is nil")
29393	}
29394	return parseEndpointARN(*s.Bucket)
29395}
29396
29397func (s *PutBucketAclInput) hasEndpointARN() bool {
29398	if s.Bucket == nil {
29399		return false
29400	}
29401	return arn.IsARN(*s.Bucket)
29402}
29403
29404// updateArnableField updates the value of the input field that
29405// takes an ARN as an input. This method is useful to backfill
29406// the parsed resource name from ARN into the input member.
29407// It returns a pointer to a modified copy of input and an error.
29408// Note that original input is not modified.
29409func (s PutBucketAclInput) updateArnableField(v string) (interface{}, error) {
29410	if s.Bucket == nil {
29411		return nil, fmt.Errorf("member Bucket is nil")
29412	}
29413	s.Bucket = aws.String(v)
29414	return &s, nil
29415}
29416
29417type PutBucketAclOutput struct {
29418	_ struct{} `type:"structure"`
29419}
29420
29421// String returns the string representation.
29422//
29423// API parameter values that are decorated as "sensitive" in the API will not
29424// be included in the string output. The member name will be present, but the
29425// value will be replaced with "sensitive".
29426func (s PutBucketAclOutput) String() string {
29427	return awsutil.Prettify(s)
29428}
29429
29430// GoString returns the string representation.
29431//
29432// API parameter values that are decorated as "sensitive" in the API will not
29433// be included in the string output. The member name will be present, but the
29434// value will be replaced with "sensitive".
29435func (s PutBucketAclOutput) GoString() string {
29436	return s.String()
29437}
29438
29439type PutBucketAnalyticsConfigurationInput struct {
29440	_ struct{} `locationName:"PutBucketAnalyticsConfigurationRequest" type:"structure" payload:"AnalyticsConfiguration"`
29441
29442	// The configuration and any analyses for the analytics filter.
29443	//
29444	// AnalyticsConfiguration is a required field
29445	AnalyticsConfiguration *AnalyticsConfiguration `locationName:"AnalyticsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29446
29447	// The name of the bucket to which an analytics configuration is stored.
29448	//
29449	// Bucket is a required field
29450	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29451
29452	// The account ID of the expected bucket owner. If the bucket is owned by a
29453	// different account, the request will fail with an HTTP 403 (Access Denied)
29454	// error.
29455	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29456
29457	// The ID that identifies the analytics configuration.
29458	//
29459	// Id is a required field
29460	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
29461}
29462
29463// String returns the string representation.
29464//
29465// API parameter values that are decorated as "sensitive" in the API will not
29466// be included in the string output. The member name will be present, but the
29467// value will be replaced with "sensitive".
29468func (s PutBucketAnalyticsConfigurationInput) String() string {
29469	return awsutil.Prettify(s)
29470}
29471
29472// GoString returns the string representation.
29473//
29474// API parameter values that are decorated as "sensitive" in the API will not
29475// be included in the string output. The member name will be present, but the
29476// value will be replaced with "sensitive".
29477func (s PutBucketAnalyticsConfigurationInput) GoString() string {
29478	return s.String()
29479}
29480
29481// Validate inspects the fields of the type to determine if they are valid.
29482func (s *PutBucketAnalyticsConfigurationInput) Validate() error {
29483	invalidParams := request.ErrInvalidParams{Context: "PutBucketAnalyticsConfigurationInput"}
29484	if s.AnalyticsConfiguration == nil {
29485		invalidParams.Add(request.NewErrParamRequired("AnalyticsConfiguration"))
29486	}
29487	if s.Bucket == nil {
29488		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29489	}
29490	if s.Bucket != nil && len(*s.Bucket) < 1 {
29491		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29492	}
29493	if s.Id == nil {
29494		invalidParams.Add(request.NewErrParamRequired("Id"))
29495	}
29496	if s.AnalyticsConfiguration != nil {
29497		if err := s.AnalyticsConfiguration.Validate(); err != nil {
29498			invalidParams.AddNested("AnalyticsConfiguration", err.(request.ErrInvalidParams))
29499		}
29500	}
29501
29502	if invalidParams.Len() > 0 {
29503		return invalidParams
29504	}
29505	return nil
29506}
29507
29508// SetAnalyticsConfiguration sets the AnalyticsConfiguration field's value.
29509func (s *PutBucketAnalyticsConfigurationInput) SetAnalyticsConfiguration(v *AnalyticsConfiguration) *PutBucketAnalyticsConfigurationInput {
29510	s.AnalyticsConfiguration = v
29511	return s
29512}
29513
29514// SetBucket sets the Bucket field's value.
29515func (s *PutBucketAnalyticsConfigurationInput) SetBucket(v string) *PutBucketAnalyticsConfigurationInput {
29516	s.Bucket = &v
29517	return s
29518}
29519
29520func (s *PutBucketAnalyticsConfigurationInput) getBucket() (v string) {
29521	if s.Bucket == nil {
29522		return v
29523	}
29524	return *s.Bucket
29525}
29526
29527// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29528func (s *PutBucketAnalyticsConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketAnalyticsConfigurationInput {
29529	s.ExpectedBucketOwner = &v
29530	return s
29531}
29532
29533// SetId sets the Id field's value.
29534func (s *PutBucketAnalyticsConfigurationInput) SetId(v string) *PutBucketAnalyticsConfigurationInput {
29535	s.Id = &v
29536	return s
29537}
29538
29539func (s *PutBucketAnalyticsConfigurationInput) getEndpointARN() (arn.Resource, error) {
29540	if s.Bucket == nil {
29541		return nil, fmt.Errorf("member Bucket is nil")
29542	}
29543	return parseEndpointARN(*s.Bucket)
29544}
29545
29546func (s *PutBucketAnalyticsConfigurationInput) hasEndpointARN() bool {
29547	if s.Bucket == nil {
29548		return false
29549	}
29550	return arn.IsARN(*s.Bucket)
29551}
29552
29553// updateArnableField updates the value of the input field that
29554// takes an ARN as an input. This method is useful to backfill
29555// the parsed resource name from ARN into the input member.
29556// It returns a pointer to a modified copy of input and an error.
29557// Note that original input is not modified.
29558func (s PutBucketAnalyticsConfigurationInput) updateArnableField(v string) (interface{}, error) {
29559	if s.Bucket == nil {
29560		return nil, fmt.Errorf("member Bucket is nil")
29561	}
29562	s.Bucket = aws.String(v)
29563	return &s, nil
29564}
29565
29566type PutBucketAnalyticsConfigurationOutput struct {
29567	_ struct{} `type:"structure"`
29568}
29569
29570// String returns the string representation.
29571//
29572// API parameter values that are decorated as "sensitive" in the API will not
29573// be included in the string output. The member name will be present, but the
29574// value will be replaced with "sensitive".
29575func (s PutBucketAnalyticsConfigurationOutput) String() string {
29576	return awsutil.Prettify(s)
29577}
29578
29579// GoString returns the string representation.
29580//
29581// API parameter values that are decorated as "sensitive" in the API will not
29582// be included in the string output. The member name will be present, but the
29583// value will be replaced with "sensitive".
29584func (s PutBucketAnalyticsConfigurationOutput) GoString() string {
29585	return s.String()
29586}
29587
29588type PutBucketCorsInput struct {
29589	_ struct{} `locationName:"PutBucketCorsRequest" type:"structure" payload:"CORSConfiguration"`
29590
29591	// Specifies the bucket impacted by the corsconfiguration.
29592	//
29593	// Bucket is a required field
29594	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29595
29596	// Describes the cross-origin access configuration for objects in an Amazon
29597	// S3 bucket. For more information, see Enabling Cross-Origin Resource Sharing
29598	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) in the Amazon
29599	// S3 User Guide.
29600	//
29601	// CORSConfiguration is a required field
29602	CORSConfiguration *CORSConfiguration `locationName:"CORSConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29603
29604	// The account ID of the expected bucket owner. If the bucket is owned by a
29605	// different account, the request will fail with an HTTP 403 (Access Denied)
29606	// error.
29607	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29608}
29609
29610// String returns the string representation.
29611//
29612// API parameter values that are decorated as "sensitive" in the API will not
29613// be included in the string output. The member name will be present, but the
29614// value will be replaced with "sensitive".
29615func (s PutBucketCorsInput) String() string {
29616	return awsutil.Prettify(s)
29617}
29618
29619// GoString returns the string representation.
29620//
29621// API parameter values that are decorated as "sensitive" in the API will not
29622// be included in the string output. The member name will be present, but the
29623// value will be replaced with "sensitive".
29624func (s PutBucketCorsInput) GoString() string {
29625	return s.String()
29626}
29627
29628// Validate inspects the fields of the type to determine if they are valid.
29629func (s *PutBucketCorsInput) Validate() error {
29630	invalidParams := request.ErrInvalidParams{Context: "PutBucketCorsInput"}
29631	if s.Bucket == nil {
29632		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29633	}
29634	if s.Bucket != nil && len(*s.Bucket) < 1 {
29635		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29636	}
29637	if s.CORSConfiguration == nil {
29638		invalidParams.Add(request.NewErrParamRequired("CORSConfiguration"))
29639	}
29640	if s.CORSConfiguration != nil {
29641		if err := s.CORSConfiguration.Validate(); err != nil {
29642			invalidParams.AddNested("CORSConfiguration", err.(request.ErrInvalidParams))
29643		}
29644	}
29645
29646	if invalidParams.Len() > 0 {
29647		return invalidParams
29648	}
29649	return nil
29650}
29651
29652// SetBucket sets the Bucket field's value.
29653func (s *PutBucketCorsInput) SetBucket(v string) *PutBucketCorsInput {
29654	s.Bucket = &v
29655	return s
29656}
29657
29658func (s *PutBucketCorsInput) getBucket() (v string) {
29659	if s.Bucket == nil {
29660		return v
29661	}
29662	return *s.Bucket
29663}
29664
29665// SetCORSConfiguration sets the CORSConfiguration field's value.
29666func (s *PutBucketCorsInput) SetCORSConfiguration(v *CORSConfiguration) *PutBucketCorsInput {
29667	s.CORSConfiguration = v
29668	return s
29669}
29670
29671// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29672func (s *PutBucketCorsInput) SetExpectedBucketOwner(v string) *PutBucketCorsInput {
29673	s.ExpectedBucketOwner = &v
29674	return s
29675}
29676
29677func (s *PutBucketCorsInput) getEndpointARN() (arn.Resource, error) {
29678	if s.Bucket == nil {
29679		return nil, fmt.Errorf("member Bucket is nil")
29680	}
29681	return parseEndpointARN(*s.Bucket)
29682}
29683
29684func (s *PutBucketCorsInput) hasEndpointARN() bool {
29685	if s.Bucket == nil {
29686		return false
29687	}
29688	return arn.IsARN(*s.Bucket)
29689}
29690
29691// updateArnableField updates the value of the input field that
29692// takes an ARN as an input. This method is useful to backfill
29693// the parsed resource name from ARN into the input member.
29694// It returns a pointer to a modified copy of input and an error.
29695// Note that original input is not modified.
29696func (s PutBucketCorsInput) updateArnableField(v string) (interface{}, error) {
29697	if s.Bucket == nil {
29698		return nil, fmt.Errorf("member Bucket is nil")
29699	}
29700	s.Bucket = aws.String(v)
29701	return &s, nil
29702}
29703
29704type PutBucketCorsOutput struct {
29705	_ struct{} `type:"structure"`
29706}
29707
29708// String returns the string representation.
29709//
29710// API parameter values that are decorated as "sensitive" in the API will not
29711// be included in the string output. The member name will be present, but the
29712// value will be replaced with "sensitive".
29713func (s PutBucketCorsOutput) String() string {
29714	return awsutil.Prettify(s)
29715}
29716
29717// GoString returns the string representation.
29718//
29719// API parameter values that are decorated as "sensitive" in the API will not
29720// be included in the string output. The member name will be present, but the
29721// value will be replaced with "sensitive".
29722func (s PutBucketCorsOutput) GoString() string {
29723	return s.String()
29724}
29725
29726type PutBucketEncryptionInput struct {
29727	_ struct{} `locationName:"PutBucketEncryptionRequest" type:"structure" payload:"ServerSideEncryptionConfiguration"`
29728
29729	// Specifies default encryption for a bucket using server-side encryption with
29730	// Amazon S3-managed keys (SSE-S3) or customer managed keys (SSE-KMS). For information
29731	// about the Amazon S3 default encryption feature, see Amazon S3 Default Bucket
29732	// Encryption (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html)
29733	// in the Amazon S3 User Guide.
29734	//
29735	// Bucket is a required field
29736	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29737
29738	// The account ID of the expected bucket owner. If the bucket is owned by a
29739	// different account, the request will fail with an HTTP 403 (Access Denied)
29740	// error.
29741	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
29742
29743	// Specifies the default server-side-encryption configuration.
29744	//
29745	// ServerSideEncryptionConfiguration is a required field
29746	ServerSideEncryptionConfiguration *ServerSideEncryptionConfiguration `locationName:"ServerSideEncryptionConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29747}
29748
29749// String returns the string representation.
29750//
29751// API parameter values that are decorated as "sensitive" in the API will not
29752// be included in the string output. The member name will be present, but the
29753// value will be replaced with "sensitive".
29754func (s PutBucketEncryptionInput) String() string {
29755	return awsutil.Prettify(s)
29756}
29757
29758// GoString returns the string representation.
29759//
29760// API parameter values that are decorated as "sensitive" in the API will not
29761// be included in the string output. The member name will be present, but the
29762// value will be replaced with "sensitive".
29763func (s PutBucketEncryptionInput) GoString() string {
29764	return s.String()
29765}
29766
29767// Validate inspects the fields of the type to determine if they are valid.
29768func (s *PutBucketEncryptionInput) Validate() error {
29769	invalidParams := request.ErrInvalidParams{Context: "PutBucketEncryptionInput"}
29770	if s.Bucket == nil {
29771		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29772	}
29773	if s.Bucket != nil && len(*s.Bucket) < 1 {
29774		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29775	}
29776	if s.ServerSideEncryptionConfiguration == nil {
29777		invalidParams.Add(request.NewErrParamRequired("ServerSideEncryptionConfiguration"))
29778	}
29779	if s.ServerSideEncryptionConfiguration != nil {
29780		if err := s.ServerSideEncryptionConfiguration.Validate(); err != nil {
29781			invalidParams.AddNested("ServerSideEncryptionConfiguration", err.(request.ErrInvalidParams))
29782		}
29783	}
29784
29785	if invalidParams.Len() > 0 {
29786		return invalidParams
29787	}
29788	return nil
29789}
29790
29791// SetBucket sets the Bucket field's value.
29792func (s *PutBucketEncryptionInput) SetBucket(v string) *PutBucketEncryptionInput {
29793	s.Bucket = &v
29794	return s
29795}
29796
29797func (s *PutBucketEncryptionInput) getBucket() (v string) {
29798	if s.Bucket == nil {
29799		return v
29800	}
29801	return *s.Bucket
29802}
29803
29804// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
29805func (s *PutBucketEncryptionInput) SetExpectedBucketOwner(v string) *PutBucketEncryptionInput {
29806	s.ExpectedBucketOwner = &v
29807	return s
29808}
29809
29810// SetServerSideEncryptionConfiguration sets the ServerSideEncryptionConfiguration field's value.
29811func (s *PutBucketEncryptionInput) SetServerSideEncryptionConfiguration(v *ServerSideEncryptionConfiguration) *PutBucketEncryptionInput {
29812	s.ServerSideEncryptionConfiguration = v
29813	return s
29814}
29815
29816func (s *PutBucketEncryptionInput) getEndpointARN() (arn.Resource, error) {
29817	if s.Bucket == nil {
29818		return nil, fmt.Errorf("member Bucket is nil")
29819	}
29820	return parseEndpointARN(*s.Bucket)
29821}
29822
29823func (s *PutBucketEncryptionInput) hasEndpointARN() bool {
29824	if s.Bucket == nil {
29825		return false
29826	}
29827	return arn.IsARN(*s.Bucket)
29828}
29829
29830// updateArnableField updates the value of the input field that
29831// takes an ARN as an input. This method is useful to backfill
29832// the parsed resource name from ARN into the input member.
29833// It returns a pointer to a modified copy of input and an error.
29834// Note that original input is not modified.
29835func (s PutBucketEncryptionInput) updateArnableField(v string) (interface{}, error) {
29836	if s.Bucket == nil {
29837		return nil, fmt.Errorf("member Bucket is nil")
29838	}
29839	s.Bucket = aws.String(v)
29840	return &s, nil
29841}
29842
29843type PutBucketEncryptionOutput struct {
29844	_ struct{} `type:"structure"`
29845}
29846
29847// String returns the string representation.
29848//
29849// API parameter values that are decorated as "sensitive" in the API will not
29850// be included in the string output. The member name will be present, but the
29851// value will be replaced with "sensitive".
29852func (s PutBucketEncryptionOutput) String() string {
29853	return awsutil.Prettify(s)
29854}
29855
29856// GoString returns the string representation.
29857//
29858// API parameter values that are decorated as "sensitive" in the API will not
29859// be included in the string output. The member name will be present, but the
29860// value will be replaced with "sensitive".
29861func (s PutBucketEncryptionOutput) GoString() string {
29862	return s.String()
29863}
29864
29865type PutBucketIntelligentTieringConfigurationInput struct {
29866	_ struct{} `locationName:"PutBucketIntelligentTieringConfigurationRequest" type:"structure" payload:"IntelligentTieringConfiguration"`
29867
29868	// The name of the Amazon S3 bucket whose configuration you want to modify or
29869	// retrieve.
29870	//
29871	// Bucket is a required field
29872	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
29873
29874	// The ID used to identify the S3 Intelligent-Tiering configuration.
29875	//
29876	// Id is a required field
29877	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
29878
29879	// Container for S3 Intelligent-Tiering configuration.
29880	//
29881	// IntelligentTieringConfiguration is a required field
29882	IntelligentTieringConfiguration *IntelligentTieringConfiguration `locationName:"IntelligentTieringConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
29883}
29884
29885// String returns the string representation.
29886//
29887// API parameter values that are decorated as "sensitive" in the API will not
29888// be included in the string output. The member name will be present, but the
29889// value will be replaced with "sensitive".
29890func (s PutBucketIntelligentTieringConfigurationInput) String() string {
29891	return awsutil.Prettify(s)
29892}
29893
29894// GoString returns the string representation.
29895//
29896// API parameter values that are decorated as "sensitive" in the API will not
29897// be included in the string output. The member name will be present, but the
29898// value will be replaced with "sensitive".
29899func (s PutBucketIntelligentTieringConfigurationInput) GoString() string {
29900	return s.String()
29901}
29902
29903// Validate inspects the fields of the type to determine if they are valid.
29904func (s *PutBucketIntelligentTieringConfigurationInput) Validate() error {
29905	invalidParams := request.ErrInvalidParams{Context: "PutBucketIntelligentTieringConfigurationInput"}
29906	if s.Bucket == nil {
29907		invalidParams.Add(request.NewErrParamRequired("Bucket"))
29908	}
29909	if s.Bucket != nil && len(*s.Bucket) < 1 {
29910		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
29911	}
29912	if s.Id == nil {
29913		invalidParams.Add(request.NewErrParamRequired("Id"))
29914	}
29915	if s.IntelligentTieringConfiguration == nil {
29916		invalidParams.Add(request.NewErrParamRequired("IntelligentTieringConfiguration"))
29917	}
29918	if s.IntelligentTieringConfiguration != nil {
29919		if err := s.IntelligentTieringConfiguration.Validate(); err != nil {
29920			invalidParams.AddNested("IntelligentTieringConfiguration", err.(request.ErrInvalidParams))
29921		}
29922	}
29923
29924	if invalidParams.Len() > 0 {
29925		return invalidParams
29926	}
29927	return nil
29928}
29929
29930// SetBucket sets the Bucket field's value.
29931func (s *PutBucketIntelligentTieringConfigurationInput) SetBucket(v string) *PutBucketIntelligentTieringConfigurationInput {
29932	s.Bucket = &v
29933	return s
29934}
29935
29936func (s *PutBucketIntelligentTieringConfigurationInput) getBucket() (v string) {
29937	if s.Bucket == nil {
29938		return v
29939	}
29940	return *s.Bucket
29941}
29942
29943// SetId sets the Id field's value.
29944func (s *PutBucketIntelligentTieringConfigurationInput) SetId(v string) *PutBucketIntelligentTieringConfigurationInput {
29945	s.Id = &v
29946	return s
29947}
29948
29949// SetIntelligentTieringConfiguration sets the IntelligentTieringConfiguration field's value.
29950func (s *PutBucketIntelligentTieringConfigurationInput) SetIntelligentTieringConfiguration(v *IntelligentTieringConfiguration) *PutBucketIntelligentTieringConfigurationInput {
29951	s.IntelligentTieringConfiguration = v
29952	return s
29953}
29954
29955func (s *PutBucketIntelligentTieringConfigurationInput) getEndpointARN() (arn.Resource, error) {
29956	if s.Bucket == nil {
29957		return nil, fmt.Errorf("member Bucket is nil")
29958	}
29959	return parseEndpointARN(*s.Bucket)
29960}
29961
29962func (s *PutBucketIntelligentTieringConfigurationInput) hasEndpointARN() bool {
29963	if s.Bucket == nil {
29964		return false
29965	}
29966	return arn.IsARN(*s.Bucket)
29967}
29968
29969// updateArnableField updates the value of the input field that
29970// takes an ARN as an input. This method is useful to backfill
29971// the parsed resource name from ARN into the input member.
29972// It returns a pointer to a modified copy of input and an error.
29973// Note that original input is not modified.
29974func (s PutBucketIntelligentTieringConfigurationInput) updateArnableField(v string) (interface{}, error) {
29975	if s.Bucket == nil {
29976		return nil, fmt.Errorf("member Bucket is nil")
29977	}
29978	s.Bucket = aws.String(v)
29979	return &s, nil
29980}
29981
29982type PutBucketIntelligentTieringConfigurationOutput struct {
29983	_ struct{} `type:"structure"`
29984}
29985
29986// String returns the string representation.
29987//
29988// API parameter values that are decorated as "sensitive" in the API will not
29989// be included in the string output. The member name will be present, but the
29990// value will be replaced with "sensitive".
29991func (s PutBucketIntelligentTieringConfigurationOutput) String() string {
29992	return awsutil.Prettify(s)
29993}
29994
29995// GoString returns the string representation.
29996//
29997// API parameter values that are decorated as "sensitive" in the API will not
29998// be included in the string output. The member name will be present, but the
29999// value will be replaced with "sensitive".
30000func (s PutBucketIntelligentTieringConfigurationOutput) GoString() string {
30001	return s.String()
30002}
30003
30004type PutBucketInventoryConfigurationInput struct {
30005	_ struct{} `locationName:"PutBucketInventoryConfigurationRequest" type:"structure" payload:"InventoryConfiguration"`
30006
30007	// The name of the bucket where the inventory configuration will be stored.
30008	//
30009	// Bucket is a required field
30010	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30011
30012	// The account ID of the expected bucket owner. If the bucket is owned by a
30013	// different account, the request will fail with an HTTP 403 (Access Denied)
30014	// error.
30015	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30016
30017	// The ID used to identify the inventory configuration.
30018	//
30019	// Id is a required field
30020	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
30021
30022	// Specifies the inventory configuration.
30023	//
30024	// InventoryConfiguration is a required field
30025	InventoryConfiguration *InventoryConfiguration `locationName:"InventoryConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30026}
30027
30028// String returns the string representation.
30029//
30030// API parameter values that are decorated as "sensitive" in the API will not
30031// be included in the string output. The member name will be present, but the
30032// value will be replaced with "sensitive".
30033func (s PutBucketInventoryConfigurationInput) String() string {
30034	return awsutil.Prettify(s)
30035}
30036
30037// GoString returns the string representation.
30038//
30039// API parameter values that are decorated as "sensitive" in the API will not
30040// be included in the string output. The member name will be present, but the
30041// value will be replaced with "sensitive".
30042func (s PutBucketInventoryConfigurationInput) GoString() string {
30043	return s.String()
30044}
30045
30046// Validate inspects the fields of the type to determine if they are valid.
30047func (s *PutBucketInventoryConfigurationInput) Validate() error {
30048	invalidParams := request.ErrInvalidParams{Context: "PutBucketInventoryConfigurationInput"}
30049	if s.Bucket == nil {
30050		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30051	}
30052	if s.Bucket != nil && len(*s.Bucket) < 1 {
30053		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30054	}
30055	if s.Id == nil {
30056		invalidParams.Add(request.NewErrParamRequired("Id"))
30057	}
30058	if s.InventoryConfiguration == nil {
30059		invalidParams.Add(request.NewErrParamRequired("InventoryConfiguration"))
30060	}
30061	if s.InventoryConfiguration != nil {
30062		if err := s.InventoryConfiguration.Validate(); err != nil {
30063			invalidParams.AddNested("InventoryConfiguration", err.(request.ErrInvalidParams))
30064		}
30065	}
30066
30067	if invalidParams.Len() > 0 {
30068		return invalidParams
30069	}
30070	return nil
30071}
30072
30073// SetBucket sets the Bucket field's value.
30074func (s *PutBucketInventoryConfigurationInput) SetBucket(v string) *PutBucketInventoryConfigurationInput {
30075	s.Bucket = &v
30076	return s
30077}
30078
30079func (s *PutBucketInventoryConfigurationInput) getBucket() (v string) {
30080	if s.Bucket == nil {
30081		return v
30082	}
30083	return *s.Bucket
30084}
30085
30086// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30087func (s *PutBucketInventoryConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketInventoryConfigurationInput {
30088	s.ExpectedBucketOwner = &v
30089	return s
30090}
30091
30092// SetId sets the Id field's value.
30093func (s *PutBucketInventoryConfigurationInput) SetId(v string) *PutBucketInventoryConfigurationInput {
30094	s.Id = &v
30095	return s
30096}
30097
30098// SetInventoryConfiguration sets the InventoryConfiguration field's value.
30099func (s *PutBucketInventoryConfigurationInput) SetInventoryConfiguration(v *InventoryConfiguration) *PutBucketInventoryConfigurationInput {
30100	s.InventoryConfiguration = v
30101	return s
30102}
30103
30104func (s *PutBucketInventoryConfigurationInput) getEndpointARN() (arn.Resource, error) {
30105	if s.Bucket == nil {
30106		return nil, fmt.Errorf("member Bucket is nil")
30107	}
30108	return parseEndpointARN(*s.Bucket)
30109}
30110
30111func (s *PutBucketInventoryConfigurationInput) hasEndpointARN() bool {
30112	if s.Bucket == nil {
30113		return false
30114	}
30115	return arn.IsARN(*s.Bucket)
30116}
30117
30118// updateArnableField updates the value of the input field that
30119// takes an ARN as an input. This method is useful to backfill
30120// the parsed resource name from ARN into the input member.
30121// It returns a pointer to a modified copy of input and an error.
30122// Note that original input is not modified.
30123func (s PutBucketInventoryConfigurationInput) updateArnableField(v string) (interface{}, error) {
30124	if s.Bucket == nil {
30125		return nil, fmt.Errorf("member Bucket is nil")
30126	}
30127	s.Bucket = aws.String(v)
30128	return &s, nil
30129}
30130
30131type PutBucketInventoryConfigurationOutput struct {
30132	_ struct{} `type:"structure"`
30133}
30134
30135// String returns the string representation.
30136//
30137// API parameter values that are decorated as "sensitive" in the API will not
30138// be included in the string output. The member name will be present, but the
30139// value will be replaced with "sensitive".
30140func (s PutBucketInventoryConfigurationOutput) String() string {
30141	return awsutil.Prettify(s)
30142}
30143
30144// GoString returns the string representation.
30145//
30146// API parameter values that are decorated as "sensitive" in the API will not
30147// be included in the string output. The member name will be present, but the
30148// value will be replaced with "sensitive".
30149func (s PutBucketInventoryConfigurationOutput) GoString() string {
30150	return s.String()
30151}
30152
30153type PutBucketLifecycleConfigurationInput struct {
30154	_ struct{} `locationName:"PutBucketLifecycleConfigurationRequest" type:"structure" payload:"LifecycleConfiguration"`
30155
30156	// The name of the bucket for which to set the configuration.
30157	//
30158	// Bucket is a required field
30159	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30160
30161	// The account ID of the expected bucket owner. If the bucket is owned by a
30162	// different account, the request will fail with an HTTP 403 (Access Denied)
30163	// error.
30164	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30165
30166	// Container for lifecycle rules. You can add as many as 1,000 rules.
30167	LifecycleConfiguration *BucketLifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30168}
30169
30170// String returns the string representation.
30171//
30172// API parameter values that are decorated as "sensitive" in the API will not
30173// be included in the string output. The member name will be present, but the
30174// value will be replaced with "sensitive".
30175func (s PutBucketLifecycleConfigurationInput) String() string {
30176	return awsutil.Prettify(s)
30177}
30178
30179// GoString returns the string representation.
30180//
30181// API parameter values that are decorated as "sensitive" in the API will not
30182// be included in the string output. The member name will be present, but the
30183// value will be replaced with "sensitive".
30184func (s PutBucketLifecycleConfigurationInput) GoString() string {
30185	return s.String()
30186}
30187
30188// Validate inspects the fields of the type to determine if they are valid.
30189func (s *PutBucketLifecycleConfigurationInput) Validate() error {
30190	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleConfigurationInput"}
30191	if s.Bucket == nil {
30192		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30193	}
30194	if s.Bucket != nil && len(*s.Bucket) < 1 {
30195		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30196	}
30197	if s.LifecycleConfiguration != nil {
30198		if err := s.LifecycleConfiguration.Validate(); err != nil {
30199			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
30200		}
30201	}
30202
30203	if invalidParams.Len() > 0 {
30204		return invalidParams
30205	}
30206	return nil
30207}
30208
30209// SetBucket sets the Bucket field's value.
30210func (s *PutBucketLifecycleConfigurationInput) SetBucket(v string) *PutBucketLifecycleConfigurationInput {
30211	s.Bucket = &v
30212	return s
30213}
30214
30215func (s *PutBucketLifecycleConfigurationInput) getBucket() (v string) {
30216	if s.Bucket == nil {
30217		return v
30218	}
30219	return *s.Bucket
30220}
30221
30222// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30223func (s *PutBucketLifecycleConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketLifecycleConfigurationInput {
30224	s.ExpectedBucketOwner = &v
30225	return s
30226}
30227
30228// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
30229func (s *PutBucketLifecycleConfigurationInput) SetLifecycleConfiguration(v *BucketLifecycleConfiguration) *PutBucketLifecycleConfigurationInput {
30230	s.LifecycleConfiguration = v
30231	return s
30232}
30233
30234func (s *PutBucketLifecycleConfigurationInput) getEndpointARN() (arn.Resource, error) {
30235	if s.Bucket == nil {
30236		return nil, fmt.Errorf("member Bucket is nil")
30237	}
30238	return parseEndpointARN(*s.Bucket)
30239}
30240
30241func (s *PutBucketLifecycleConfigurationInput) hasEndpointARN() bool {
30242	if s.Bucket == nil {
30243		return false
30244	}
30245	return arn.IsARN(*s.Bucket)
30246}
30247
30248// updateArnableField updates the value of the input field that
30249// takes an ARN as an input. This method is useful to backfill
30250// the parsed resource name from ARN into the input member.
30251// It returns a pointer to a modified copy of input and an error.
30252// Note that original input is not modified.
30253func (s PutBucketLifecycleConfigurationInput) updateArnableField(v string) (interface{}, error) {
30254	if s.Bucket == nil {
30255		return nil, fmt.Errorf("member Bucket is nil")
30256	}
30257	s.Bucket = aws.String(v)
30258	return &s, nil
30259}
30260
30261type PutBucketLifecycleConfigurationOutput struct {
30262	_ struct{} `type:"structure"`
30263}
30264
30265// String returns the string representation.
30266//
30267// API parameter values that are decorated as "sensitive" in the API will not
30268// be included in the string output. The member name will be present, but the
30269// value will be replaced with "sensitive".
30270func (s PutBucketLifecycleConfigurationOutput) String() string {
30271	return awsutil.Prettify(s)
30272}
30273
30274// GoString returns the string representation.
30275//
30276// API parameter values that are decorated as "sensitive" in the API will not
30277// be included in the string output. The member name will be present, but the
30278// value will be replaced with "sensitive".
30279func (s PutBucketLifecycleConfigurationOutput) GoString() string {
30280	return s.String()
30281}
30282
30283type PutBucketLifecycleInput struct {
30284	_ struct{} `locationName:"PutBucketLifecycleRequest" type:"structure" payload:"LifecycleConfiguration"`
30285
30286	// Bucket is a required field
30287	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30288
30289	// The account ID of the expected bucket owner. If the bucket is owned by a
30290	// different account, the request will fail with an HTTP 403 (Access Denied)
30291	// error.
30292	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30293
30294	// Container for lifecycle rules. You can add as many as 1000 rules.
30295	LifecycleConfiguration *LifecycleConfiguration `locationName:"LifecycleConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30296}
30297
30298// String returns the string representation.
30299//
30300// API parameter values that are decorated as "sensitive" in the API will not
30301// be included in the string output. The member name will be present, but the
30302// value will be replaced with "sensitive".
30303func (s PutBucketLifecycleInput) String() string {
30304	return awsutil.Prettify(s)
30305}
30306
30307// GoString returns the string representation.
30308//
30309// API parameter values that are decorated as "sensitive" in the API will not
30310// be included in the string output. The member name will be present, but the
30311// value will be replaced with "sensitive".
30312func (s PutBucketLifecycleInput) GoString() string {
30313	return s.String()
30314}
30315
30316// Validate inspects the fields of the type to determine if they are valid.
30317func (s *PutBucketLifecycleInput) Validate() error {
30318	invalidParams := request.ErrInvalidParams{Context: "PutBucketLifecycleInput"}
30319	if s.Bucket == nil {
30320		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30321	}
30322	if s.Bucket != nil && len(*s.Bucket) < 1 {
30323		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30324	}
30325	if s.LifecycleConfiguration != nil {
30326		if err := s.LifecycleConfiguration.Validate(); err != nil {
30327			invalidParams.AddNested("LifecycleConfiguration", err.(request.ErrInvalidParams))
30328		}
30329	}
30330
30331	if invalidParams.Len() > 0 {
30332		return invalidParams
30333	}
30334	return nil
30335}
30336
30337// SetBucket sets the Bucket field's value.
30338func (s *PutBucketLifecycleInput) SetBucket(v string) *PutBucketLifecycleInput {
30339	s.Bucket = &v
30340	return s
30341}
30342
30343func (s *PutBucketLifecycleInput) getBucket() (v string) {
30344	if s.Bucket == nil {
30345		return v
30346	}
30347	return *s.Bucket
30348}
30349
30350// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30351func (s *PutBucketLifecycleInput) SetExpectedBucketOwner(v string) *PutBucketLifecycleInput {
30352	s.ExpectedBucketOwner = &v
30353	return s
30354}
30355
30356// SetLifecycleConfiguration sets the LifecycleConfiguration field's value.
30357func (s *PutBucketLifecycleInput) SetLifecycleConfiguration(v *LifecycleConfiguration) *PutBucketLifecycleInput {
30358	s.LifecycleConfiguration = v
30359	return s
30360}
30361
30362func (s *PutBucketLifecycleInput) getEndpointARN() (arn.Resource, error) {
30363	if s.Bucket == nil {
30364		return nil, fmt.Errorf("member Bucket is nil")
30365	}
30366	return parseEndpointARN(*s.Bucket)
30367}
30368
30369func (s *PutBucketLifecycleInput) hasEndpointARN() bool {
30370	if s.Bucket == nil {
30371		return false
30372	}
30373	return arn.IsARN(*s.Bucket)
30374}
30375
30376// updateArnableField updates the value of the input field that
30377// takes an ARN as an input. This method is useful to backfill
30378// the parsed resource name from ARN into the input member.
30379// It returns a pointer to a modified copy of input and an error.
30380// Note that original input is not modified.
30381func (s PutBucketLifecycleInput) updateArnableField(v string) (interface{}, error) {
30382	if s.Bucket == nil {
30383		return nil, fmt.Errorf("member Bucket is nil")
30384	}
30385	s.Bucket = aws.String(v)
30386	return &s, nil
30387}
30388
30389type PutBucketLifecycleOutput struct {
30390	_ struct{} `type:"structure"`
30391}
30392
30393// String returns the string representation.
30394//
30395// API parameter values that are decorated as "sensitive" in the API will not
30396// be included in the string output. The member name will be present, but the
30397// value will be replaced with "sensitive".
30398func (s PutBucketLifecycleOutput) String() string {
30399	return awsutil.Prettify(s)
30400}
30401
30402// GoString returns the string representation.
30403//
30404// API parameter values that are decorated as "sensitive" in the API will not
30405// be included in the string output. The member name will be present, but the
30406// value will be replaced with "sensitive".
30407func (s PutBucketLifecycleOutput) GoString() string {
30408	return s.String()
30409}
30410
30411type PutBucketLoggingInput struct {
30412	_ struct{} `locationName:"PutBucketLoggingRequest" type:"structure" payload:"BucketLoggingStatus"`
30413
30414	// The name of the bucket for which to set the logging parameters.
30415	//
30416	// Bucket is a required field
30417	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30418
30419	// Container for logging status information.
30420	//
30421	// BucketLoggingStatus is a required field
30422	BucketLoggingStatus *BucketLoggingStatus `locationName:"BucketLoggingStatus" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30423
30424	// The account ID of the expected bucket owner. If the bucket is owned by a
30425	// different account, the request will fail with an HTTP 403 (Access Denied)
30426	// error.
30427	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30428}
30429
30430// String returns the string representation.
30431//
30432// API parameter values that are decorated as "sensitive" in the API will not
30433// be included in the string output. The member name will be present, but the
30434// value will be replaced with "sensitive".
30435func (s PutBucketLoggingInput) String() string {
30436	return awsutil.Prettify(s)
30437}
30438
30439// GoString returns the string representation.
30440//
30441// API parameter values that are decorated as "sensitive" in the API will not
30442// be included in the string output. The member name will be present, but the
30443// value will be replaced with "sensitive".
30444func (s PutBucketLoggingInput) GoString() string {
30445	return s.String()
30446}
30447
30448// Validate inspects the fields of the type to determine if they are valid.
30449func (s *PutBucketLoggingInput) Validate() error {
30450	invalidParams := request.ErrInvalidParams{Context: "PutBucketLoggingInput"}
30451	if s.Bucket == nil {
30452		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30453	}
30454	if s.Bucket != nil && len(*s.Bucket) < 1 {
30455		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30456	}
30457	if s.BucketLoggingStatus == nil {
30458		invalidParams.Add(request.NewErrParamRequired("BucketLoggingStatus"))
30459	}
30460	if s.BucketLoggingStatus != nil {
30461		if err := s.BucketLoggingStatus.Validate(); err != nil {
30462			invalidParams.AddNested("BucketLoggingStatus", err.(request.ErrInvalidParams))
30463		}
30464	}
30465
30466	if invalidParams.Len() > 0 {
30467		return invalidParams
30468	}
30469	return nil
30470}
30471
30472// SetBucket sets the Bucket field's value.
30473func (s *PutBucketLoggingInput) SetBucket(v string) *PutBucketLoggingInput {
30474	s.Bucket = &v
30475	return s
30476}
30477
30478func (s *PutBucketLoggingInput) getBucket() (v string) {
30479	if s.Bucket == nil {
30480		return v
30481	}
30482	return *s.Bucket
30483}
30484
30485// SetBucketLoggingStatus sets the BucketLoggingStatus field's value.
30486func (s *PutBucketLoggingInput) SetBucketLoggingStatus(v *BucketLoggingStatus) *PutBucketLoggingInput {
30487	s.BucketLoggingStatus = v
30488	return s
30489}
30490
30491// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30492func (s *PutBucketLoggingInput) SetExpectedBucketOwner(v string) *PutBucketLoggingInput {
30493	s.ExpectedBucketOwner = &v
30494	return s
30495}
30496
30497func (s *PutBucketLoggingInput) getEndpointARN() (arn.Resource, error) {
30498	if s.Bucket == nil {
30499		return nil, fmt.Errorf("member Bucket is nil")
30500	}
30501	return parseEndpointARN(*s.Bucket)
30502}
30503
30504func (s *PutBucketLoggingInput) hasEndpointARN() bool {
30505	if s.Bucket == nil {
30506		return false
30507	}
30508	return arn.IsARN(*s.Bucket)
30509}
30510
30511// updateArnableField updates the value of the input field that
30512// takes an ARN as an input. This method is useful to backfill
30513// the parsed resource name from ARN into the input member.
30514// It returns a pointer to a modified copy of input and an error.
30515// Note that original input is not modified.
30516func (s PutBucketLoggingInput) updateArnableField(v string) (interface{}, error) {
30517	if s.Bucket == nil {
30518		return nil, fmt.Errorf("member Bucket is nil")
30519	}
30520	s.Bucket = aws.String(v)
30521	return &s, nil
30522}
30523
30524type PutBucketLoggingOutput struct {
30525	_ struct{} `type:"structure"`
30526}
30527
30528// String returns the string representation.
30529//
30530// API parameter values that are decorated as "sensitive" in the API will not
30531// be included in the string output. The member name will be present, but the
30532// value will be replaced with "sensitive".
30533func (s PutBucketLoggingOutput) String() string {
30534	return awsutil.Prettify(s)
30535}
30536
30537// GoString returns the string representation.
30538//
30539// API parameter values that are decorated as "sensitive" in the API will not
30540// be included in the string output. The member name will be present, but the
30541// value will be replaced with "sensitive".
30542func (s PutBucketLoggingOutput) GoString() string {
30543	return s.String()
30544}
30545
30546type PutBucketMetricsConfigurationInput struct {
30547	_ struct{} `locationName:"PutBucketMetricsConfigurationRequest" type:"structure" payload:"MetricsConfiguration"`
30548
30549	// The name of the bucket for which the metrics configuration is set.
30550	//
30551	// Bucket is a required field
30552	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30553
30554	// The account ID of the expected bucket owner. If the bucket is owned by a
30555	// different account, the request will fail with an HTTP 403 (Access Denied)
30556	// error.
30557	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30558
30559	// The ID used to identify the metrics configuration.
30560	//
30561	// Id is a required field
30562	Id *string `location:"querystring" locationName:"id" type:"string" required:"true"`
30563
30564	// Specifies the metrics configuration.
30565	//
30566	// MetricsConfiguration is a required field
30567	MetricsConfiguration *MetricsConfiguration `locationName:"MetricsConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30568}
30569
30570// String returns the string representation.
30571//
30572// API parameter values that are decorated as "sensitive" in the API will not
30573// be included in the string output. The member name will be present, but the
30574// value will be replaced with "sensitive".
30575func (s PutBucketMetricsConfigurationInput) String() string {
30576	return awsutil.Prettify(s)
30577}
30578
30579// GoString returns the string representation.
30580//
30581// API parameter values that are decorated as "sensitive" in the API will not
30582// be included in the string output. The member name will be present, but the
30583// value will be replaced with "sensitive".
30584func (s PutBucketMetricsConfigurationInput) GoString() string {
30585	return s.String()
30586}
30587
30588// Validate inspects the fields of the type to determine if they are valid.
30589func (s *PutBucketMetricsConfigurationInput) Validate() error {
30590	invalidParams := request.ErrInvalidParams{Context: "PutBucketMetricsConfigurationInput"}
30591	if s.Bucket == nil {
30592		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30593	}
30594	if s.Bucket != nil && len(*s.Bucket) < 1 {
30595		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30596	}
30597	if s.Id == nil {
30598		invalidParams.Add(request.NewErrParamRequired("Id"))
30599	}
30600	if s.MetricsConfiguration == nil {
30601		invalidParams.Add(request.NewErrParamRequired("MetricsConfiguration"))
30602	}
30603	if s.MetricsConfiguration != nil {
30604		if err := s.MetricsConfiguration.Validate(); err != nil {
30605			invalidParams.AddNested("MetricsConfiguration", err.(request.ErrInvalidParams))
30606		}
30607	}
30608
30609	if invalidParams.Len() > 0 {
30610		return invalidParams
30611	}
30612	return nil
30613}
30614
30615// SetBucket sets the Bucket field's value.
30616func (s *PutBucketMetricsConfigurationInput) SetBucket(v string) *PutBucketMetricsConfigurationInput {
30617	s.Bucket = &v
30618	return s
30619}
30620
30621func (s *PutBucketMetricsConfigurationInput) getBucket() (v string) {
30622	if s.Bucket == nil {
30623		return v
30624	}
30625	return *s.Bucket
30626}
30627
30628// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30629func (s *PutBucketMetricsConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketMetricsConfigurationInput {
30630	s.ExpectedBucketOwner = &v
30631	return s
30632}
30633
30634// SetId sets the Id field's value.
30635func (s *PutBucketMetricsConfigurationInput) SetId(v string) *PutBucketMetricsConfigurationInput {
30636	s.Id = &v
30637	return s
30638}
30639
30640// SetMetricsConfiguration sets the MetricsConfiguration field's value.
30641func (s *PutBucketMetricsConfigurationInput) SetMetricsConfiguration(v *MetricsConfiguration) *PutBucketMetricsConfigurationInput {
30642	s.MetricsConfiguration = v
30643	return s
30644}
30645
30646func (s *PutBucketMetricsConfigurationInput) getEndpointARN() (arn.Resource, error) {
30647	if s.Bucket == nil {
30648		return nil, fmt.Errorf("member Bucket is nil")
30649	}
30650	return parseEndpointARN(*s.Bucket)
30651}
30652
30653func (s *PutBucketMetricsConfigurationInput) hasEndpointARN() bool {
30654	if s.Bucket == nil {
30655		return false
30656	}
30657	return arn.IsARN(*s.Bucket)
30658}
30659
30660// updateArnableField updates the value of the input field that
30661// takes an ARN as an input. This method is useful to backfill
30662// the parsed resource name from ARN into the input member.
30663// It returns a pointer to a modified copy of input and an error.
30664// Note that original input is not modified.
30665func (s PutBucketMetricsConfigurationInput) updateArnableField(v string) (interface{}, error) {
30666	if s.Bucket == nil {
30667		return nil, fmt.Errorf("member Bucket is nil")
30668	}
30669	s.Bucket = aws.String(v)
30670	return &s, nil
30671}
30672
30673type PutBucketMetricsConfigurationOutput struct {
30674	_ struct{} `type:"structure"`
30675}
30676
30677// String returns the string representation.
30678//
30679// API parameter values that are decorated as "sensitive" in the API will not
30680// be included in the string output. The member name will be present, but the
30681// value will be replaced with "sensitive".
30682func (s PutBucketMetricsConfigurationOutput) String() string {
30683	return awsutil.Prettify(s)
30684}
30685
30686// GoString returns the string representation.
30687//
30688// API parameter values that are decorated as "sensitive" in the API will not
30689// be included in the string output. The member name will be present, but the
30690// value will be replaced with "sensitive".
30691func (s PutBucketMetricsConfigurationOutput) GoString() string {
30692	return s.String()
30693}
30694
30695type PutBucketNotificationConfigurationInput struct {
30696	_ struct{} `locationName:"PutBucketNotificationConfigurationRequest" type:"structure" payload:"NotificationConfiguration"`
30697
30698	// The name of the bucket.
30699	//
30700	// Bucket is a required field
30701	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30702
30703	// The account ID of the expected bucket owner. If the bucket is owned by a
30704	// different account, the request will fail with an HTTP 403 (Access Denied)
30705	// error.
30706	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30707
30708	// A container for specifying the notification configuration of the bucket.
30709	// If this element is empty, notifications are turned off for the bucket.
30710	//
30711	// NotificationConfiguration is a required field
30712	NotificationConfiguration *NotificationConfiguration `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30713}
30714
30715// String returns the string representation.
30716//
30717// API parameter values that are decorated as "sensitive" in the API will not
30718// be included in the string output. The member name will be present, but the
30719// value will be replaced with "sensitive".
30720func (s PutBucketNotificationConfigurationInput) String() string {
30721	return awsutil.Prettify(s)
30722}
30723
30724// GoString returns the string representation.
30725//
30726// API parameter values that are decorated as "sensitive" in the API will not
30727// be included in the string output. The member name will be present, but the
30728// value will be replaced with "sensitive".
30729func (s PutBucketNotificationConfigurationInput) GoString() string {
30730	return s.String()
30731}
30732
30733// Validate inspects the fields of the type to determine if they are valid.
30734func (s *PutBucketNotificationConfigurationInput) Validate() error {
30735	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationConfigurationInput"}
30736	if s.Bucket == nil {
30737		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30738	}
30739	if s.Bucket != nil && len(*s.Bucket) < 1 {
30740		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30741	}
30742	if s.NotificationConfiguration == nil {
30743		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
30744	}
30745	if s.NotificationConfiguration != nil {
30746		if err := s.NotificationConfiguration.Validate(); err != nil {
30747			invalidParams.AddNested("NotificationConfiguration", err.(request.ErrInvalidParams))
30748		}
30749	}
30750
30751	if invalidParams.Len() > 0 {
30752		return invalidParams
30753	}
30754	return nil
30755}
30756
30757// SetBucket sets the Bucket field's value.
30758func (s *PutBucketNotificationConfigurationInput) SetBucket(v string) *PutBucketNotificationConfigurationInput {
30759	s.Bucket = &v
30760	return s
30761}
30762
30763func (s *PutBucketNotificationConfigurationInput) getBucket() (v string) {
30764	if s.Bucket == nil {
30765		return v
30766	}
30767	return *s.Bucket
30768}
30769
30770// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30771func (s *PutBucketNotificationConfigurationInput) SetExpectedBucketOwner(v string) *PutBucketNotificationConfigurationInput {
30772	s.ExpectedBucketOwner = &v
30773	return s
30774}
30775
30776// SetNotificationConfiguration sets the NotificationConfiguration field's value.
30777func (s *PutBucketNotificationConfigurationInput) SetNotificationConfiguration(v *NotificationConfiguration) *PutBucketNotificationConfigurationInput {
30778	s.NotificationConfiguration = v
30779	return s
30780}
30781
30782func (s *PutBucketNotificationConfigurationInput) getEndpointARN() (arn.Resource, error) {
30783	if s.Bucket == nil {
30784		return nil, fmt.Errorf("member Bucket is nil")
30785	}
30786	return parseEndpointARN(*s.Bucket)
30787}
30788
30789func (s *PutBucketNotificationConfigurationInput) hasEndpointARN() bool {
30790	if s.Bucket == nil {
30791		return false
30792	}
30793	return arn.IsARN(*s.Bucket)
30794}
30795
30796// updateArnableField updates the value of the input field that
30797// takes an ARN as an input. This method is useful to backfill
30798// the parsed resource name from ARN into the input member.
30799// It returns a pointer to a modified copy of input and an error.
30800// Note that original input is not modified.
30801func (s PutBucketNotificationConfigurationInput) updateArnableField(v string) (interface{}, error) {
30802	if s.Bucket == nil {
30803		return nil, fmt.Errorf("member Bucket is nil")
30804	}
30805	s.Bucket = aws.String(v)
30806	return &s, nil
30807}
30808
30809type PutBucketNotificationConfigurationOutput struct {
30810	_ struct{} `type:"structure"`
30811}
30812
30813// String returns the string representation.
30814//
30815// API parameter values that are decorated as "sensitive" in the API will not
30816// be included in the string output. The member name will be present, but the
30817// value will be replaced with "sensitive".
30818func (s PutBucketNotificationConfigurationOutput) String() string {
30819	return awsutil.Prettify(s)
30820}
30821
30822// GoString returns the string representation.
30823//
30824// API parameter values that are decorated as "sensitive" in the API will not
30825// be included in the string output. The member name will be present, but the
30826// value will be replaced with "sensitive".
30827func (s PutBucketNotificationConfigurationOutput) GoString() string {
30828	return s.String()
30829}
30830
30831type PutBucketNotificationInput struct {
30832	_ struct{} `locationName:"PutBucketNotificationRequest" type:"structure" payload:"NotificationConfiguration"`
30833
30834	// The name of the bucket.
30835	//
30836	// Bucket is a required field
30837	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30838
30839	// The account ID of the expected bucket owner. If the bucket is owned by a
30840	// different account, the request will fail with an HTTP 403 (Access Denied)
30841	// error.
30842	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30843
30844	// The container for the configuration.
30845	//
30846	// NotificationConfiguration is a required field
30847	NotificationConfiguration *NotificationConfigurationDeprecated `locationName:"NotificationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30848}
30849
30850// String returns the string representation.
30851//
30852// API parameter values that are decorated as "sensitive" in the API will not
30853// be included in the string output. The member name will be present, but the
30854// value will be replaced with "sensitive".
30855func (s PutBucketNotificationInput) String() string {
30856	return awsutil.Prettify(s)
30857}
30858
30859// GoString returns the string representation.
30860//
30861// API parameter values that are decorated as "sensitive" in the API will not
30862// be included in the string output. The member name will be present, but the
30863// value will be replaced with "sensitive".
30864func (s PutBucketNotificationInput) GoString() string {
30865	return s.String()
30866}
30867
30868// Validate inspects the fields of the type to determine if they are valid.
30869func (s *PutBucketNotificationInput) Validate() error {
30870	invalidParams := request.ErrInvalidParams{Context: "PutBucketNotificationInput"}
30871	if s.Bucket == nil {
30872		invalidParams.Add(request.NewErrParamRequired("Bucket"))
30873	}
30874	if s.Bucket != nil && len(*s.Bucket) < 1 {
30875		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
30876	}
30877	if s.NotificationConfiguration == nil {
30878		invalidParams.Add(request.NewErrParamRequired("NotificationConfiguration"))
30879	}
30880
30881	if invalidParams.Len() > 0 {
30882		return invalidParams
30883	}
30884	return nil
30885}
30886
30887// SetBucket sets the Bucket field's value.
30888func (s *PutBucketNotificationInput) SetBucket(v string) *PutBucketNotificationInput {
30889	s.Bucket = &v
30890	return s
30891}
30892
30893func (s *PutBucketNotificationInput) getBucket() (v string) {
30894	if s.Bucket == nil {
30895		return v
30896	}
30897	return *s.Bucket
30898}
30899
30900// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
30901func (s *PutBucketNotificationInput) SetExpectedBucketOwner(v string) *PutBucketNotificationInput {
30902	s.ExpectedBucketOwner = &v
30903	return s
30904}
30905
30906// SetNotificationConfiguration sets the NotificationConfiguration field's value.
30907func (s *PutBucketNotificationInput) SetNotificationConfiguration(v *NotificationConfigurationDeprecated) *PutBucketNotificationInput {
30908	s.NotificationConfiguration = v
30909	return s
30910}
30911
30912func (s *PutBucketNotificationInput) getEndpointARN() (arn.Resource, error) {
30913	if s.Bucket == nil {
30914		return nil, fmt.Errorf("member Bucket is nil")
30915	}
30916	return parseEndpointARN(*s.Bucket)
30917}
30918
30919func (s *PutBucketNotificationInput) hasEndpointARN() bool {
30920	if s.Bucket == nil {
30921		return false
30922	}
30923	return arn.IsARN(*s.Bucket)
30924}
30925
30926// updateArnableField updates the value of the input field that
30927// takes an ARN as an input. This method is useful to backfill
30928// the parsed resource name from ARN into the input member.
30929// It returns a pointer to a modified copy of input and an error.
30930// Note that original input is not modified.
30931func (s PutBucketNotificationInput) updateArnableField(v string) (interface{}, error) {
30932	if s.Bucket == nil {
30933		return nil, fmt.Errorf("member Bucket is nil")
30934	}
30935	s.Bucket = aws.String(v)
30936	return &s, nil
30937}
30938
30939type PutBucketNotificationOutput struct {
30940	_ struct{} `type:"structure"`
30941}
30942
30943// String returns the string representation.
30944//
30945// API parameter values that are decorated as "sensitive" in the API will not
30946// be included in the string output. The member name will be present, but the
30947// value will be replaced with "sensitive".
30948func (s PutBucketNotificationOutput) String() string {
30949	return awsutil.Prettify(s)
30950}
30951
30952// GoString returns the string representation.
30953//
30954// API parameter values that are decorated as "sensitive" in the API will not
30955// be included in the string output. The member name will be present, but the
30956// value will be replaced with "sensitive".
30957func (s PutBucketNotificationOutput) GoString() string {
30958	return s.String()
30959}
30960
30961type PutBucketOwnershipControlsInput struct {
30962	_ struct{} `locationName:"PutBucketOwnershipControlsRequest" type:"structure" payload:"OwnershipControls"`
30963
30964	// The name of the Amazon S3 bucket whose OwnershipControls you want to set.
30965	//
30966	// Bucket is a required field
30967	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
30968
30969	// The account ID of the expected bucket owner. If the bucket is owned by a
30970	// different account, the request will fail with an HTTP 403 (Access Denied)
30971	// error.
30972	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
30973
30974	// The OwnershipControls (BucketOwnerPreferred or ObjectWriter) that you want
30975	// to apply to this Amazon S3 bucket.
30976	//
30977	// OwnershipControls is a required field
30978	OwnershipControls *OwnershipControls `locationName:"OwnershipControls" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
30979}
30980
30981// String returns the string representation.
30982//
30983// API parameter values that are decorated as "sensitive" in the API will not
30984// be included in the string output. The member name will be present, but the
30985// value will be replaced with "sensitive".
30986func (s PutBucketOwnershipControlsInput) String() string {
30987	return awsutil.Prettify(s)
30988}
30989
30990// GoString returns the string representation.
30991//
30992// API parameter values that are decorated as "sensitive" in the API will not
30993// be included in the string output. The member name will be present, but the
30994// value will be replaced with "sensitive".
30995func (s PutBucketOwnershipControlsInput) GoString() string {
30996	return s.String()
30997}
30998
30999// Validate inspects the fields of the type to determine if they are valid.
31000func (s *PutBucketOwnershipControlsInput) Validate() error {
31001	invalidParams := request.ErrInvalidParams{Context: "PutBucketOwnershipControlsInput"}
31002	if s.Bucket == nil {
31003		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31004	}
31005	if s.Bucket != nil && len(*s.Bucket) < 1 {
31006		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31007	}
31008	if s.OwnershipControls == nil {
31009		invalidParams.Add(request.NewErrParamRequired("OwnershipControls"))
31010	}
31011	if s.OwnershipControls != nil {
31012		if err := s.OwnershipControls.Validate(); err != nil {
31013			invalidParams.AddNested("OwnershipControls", err.(request.ErrInvalidParams))
31014		}
31015	}
31016
31017	if invalidParams.Len() > 0 {
31018		return invalidParams
31019	}
31020	return nil
31021}
31022
31023// SetBucket sets the Bucket field's value.
31024func (s *PutBucketOwnershipControlsInput) SetBucket(v string) *PutBucketOwnershipControlsInput {
31025	s.Bucket = &v
31026	return s
31027}
31028
31029func (s *PutBucketOwnershipControlsInput) getBucket() (v string) {
31030	if s.Bucket == nil {
31031		return v
31032	}
31033	return *s.Bucket
31034}
31035
31036// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31037func (s *PutBucketOwnershipControlsInput) SetExpectedBucketOwner(v string) *PutBucketOwnershipControlsInput {
31038	s.ExpectedBucketOwner = &v
31039	return s
31040}
31041
31042// SetOwnershipControls sets the OwnershipControls field's value.
31043func (s *PutBucketOwnershipControlsInput) SetOwnershipControls(v *OwnershipControls) *PutBucketOwnershipControlsInput {
31044	s.OwnershipControls = v
31045	return s
31046}
31047
31048func (s *PutBucketOwnershipControlsInput) getEndpointARN() (arn.Resource, error) {
31049	if s.Bucket == nil {
31050		return nil, fmt.Errorf("member Bucket is nil")
31051	}
31052	return parseEndpointARN(*s.Bucket)
31053}
31054
31055func (s *PutBucketOwnershipControlsInput) hasEndpointARN() bool {
31056	if s.Bucket == nil {
31057		return false
31058	}
31059	return arn.IsARN(*s.Bucket)
31060}
31061
31062// updateArnableField updates the value of the input field that
31063// takes an ARN as an input. This method is useful to backfill
31064// the parsed resource name from ARN into the input member.
31065// It returns a pointer to a modified copy of input and an error.
31066// Note that original input is not modified.
31067func (s PutBucketOwnershipControlsInput) updateArnableField(v string) (interface{}, error) {
31068	if s.Bucket == nil {
31069		return nil, fmt.Errorf("member Bucket is nil")
31070	}
31071	s.Bucket = aws.String(v)
31072	return &s, nil
31073}
31074
31075type PutBucketOwnershipControlsOutput struct {
31076	_ struct{} `type:"structure"`
31077}
31078
31079// String returns the string representation.
31080//
31081// API parameter values that are decorated as "sensitive" in the API will not
31082// be included in the string output. The member name will be present, but the
31083// value will be replaced with "sensitive".
31084func (s PutBucketOwnershipControlsOutput) String() string {
31085	return awsutil.Prettify(s)
31086}
31087
31088// GoString returns the string representation.
31089//
31090// API parameter values that are decorated as "sensitive" in the API will not
31091// be included in the string output. The member name will be present, but the
31092// value will be replaced with "sensitive".
31093func (s PutBucketOwnershipControlsOutput) GoString() string {
31094	return s.String()
31095}
31096
31097type PutBucketPolicyInput struct {
31098	_ struct{} `locationName:"PutBucketPolicyRequest" type:"structure" payload:"Policy"`
31099
31100	// The name of the bucket.
31101	//
31102	// Bucket is a required field
31103	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31104
31105	// Set this parameter to true to confirm that you want to remove your permissions
31106	// to change this bucket policy in the future.
31107	ConfirmRemoveSelfBucketAccess *bool `location:"header" locationName:"x-amz-confirm-remove-self-bucket-access" type:"boolean"`
31108
31109	// The account ID of the expected bucket owner. If the bucket is owned by a
31110	// different account, the request will fail with an HTTP 403 (Access Denied)
31111	// error.
31112	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31113
31114	// The bucket policy as a JSON document.
31115	//
31116	// Policy is a required field
31117	Policy *string `type:"string" required:"true"`
31118}
31119
31120// String returns the string representation.
31121//
31122// API parameter values that are decorated as "sensitive" in the API will not
31123// be included in the string output. The member name will be present, but the
31124// value will be replaced with "sensitive".
31125func (s PutBucketPolicyInput) String() string {
31126	return awsutil.Prettify(s)
31127}
31128
31129// GoString returns the string representation.
31130//
31131// API parameter values that are decorated as "sensitive" in the API will not
31132// be included in the string output. The member name will be present, but the
31133// value will be replaced with "sensitive".
31134func (s PutBucketPolicyInput) GoString() string {
31135	return s.String()
31136}
31137
31138// Validate inspects the fields of the type to determine if they are valid.
31139func (s *PutBucketPolicyInput) Validate() error {
31140	invalidParams := request.ErrInvalidParams{Context: "PutBucketPolicyInput"}
31141	if s.Bucket == nil {
31142		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31143	}
31144	if s.Bucket != nil && len(*s.Bucket) < 1 {
31145		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31146	}
31147	if s.Policy == nil {
31148		invalidParams.Add(request.NewErrParamRequired("Policy"))
31149	}
31150
31151	if invalidParams.Len() > 0 {
31152		return invalidParams
31153	}
31154	return nil
31155}
31156
31157// SetBucket sets the Bucket field's value.
31158func (s *PutBucketPolicyInput) SetBucket(v string) *PutBucketPolicyInput {
31159	s.Bucket = &v
31160	return s
31161}
31162
31163func (s *PutBucketPolicyInput) getBucket() (v string) {
31164	if s.Bucket == nil {
31165		return v
31166	}
31167	return *s.Bucket
31168}
31169
31170// SetConfirmRemoveSelfBucketAccess sets the ConfirmRemoveSelfBucketAccess field's value.
31171func (s *PutBucketPolicyInput) SetConfirmRemoveSelfBucketAccess(v bool) *PutBucketPolicyInput {
31172	s.ConfirmRemoveSelfBucketAccess = &v
31173	return s
31174}
31175
31176// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31177func (s *PutBucketPolicyInput) SetExpectedBucketOwner(v string) *PutBucketPolicyInput {
31178	s.ExpectedBucketOwner = &v
31179	return s
31180}
31181
31182// SetPolicy sets the Policy field's value.
31183func (s *PutBucketPolicyInput) SetPolicy(v string) *PutBucketPolicyInput {
31184	s.Policy = &v
31185	return s
31186}
31187
31188func (s *PutBucketPolicyInput) getEndpointARN() (arn.Resource, error) {
31189	if s.Bucket == nil {
31190		return nil, fmt.Errorf("member Bucket is nil")
31191	}
31192	return parseEndpointARN(*s.Bucket)
31193}
31194
31195func (s *PutBucketPolicyInput) hasEndpointARN() bool {
31196	if s.Bucket == nil {
31197		return false
31198	}
31199	return arn.IsARN(*s.Bucket)
31200}
31201
31202// updateArnableField updates the value of the input field that
31203// takes an ARN as an input. This method is useful to backfill
31204// the parsed resource name from ARN into the input member.
31205// It returns a pointer to a modified copy of input and an error.
31206// Note that original input is not modified.
31207func (s PutBucketPolicyInput) updateArnableField(v string) (interface{}, error) {
31208	if s.Bucket == nil {
31209		return nil, fmt.Errorf("member Bucket is nil")
31210	}
31211	s.Bucket = aws.String(v)
31212	return &s, nil
31213}
31214
31215type PutBucketPolicyOutput struct {
31216	_ struct{} `type:"structure"`
31217}
31218
31219// String returns the string representation.
31220//
31221// API parameter values that are decorated as "sensitive" in the API will not
31222// be included in the string output. The member name will be present, but the
31223// value will be replaced with "sensitive".
31224func (s PutBucketPolicyOutput) String() string {
31225	return awsutil.Prettify(s)
31226}
31227
31228// GoString returns the string representation.
31229//
31230// API parameter values that are decorated as "sensitive" in the API will not
31231// be included in the string output. The member name will be present, but the
31232// value will be replaced with "sensitive".
31233func (s PutBucketPolicyOutput) GoString() string {
31234	return s.String()
31235}
31236
31237type PutBucketReplicationInput struct {
31238	_ struct{} `locationName:"PutBucketReplicationRequest" type:"structure" payload:"ReplicationConfiguration"`
31239
31240	// The name of the bucket
31241	//
31242	// Bucket is a required field
31243	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31244
31245	// The account ID of the expected bucket owner. If the bucket is owned by a
31246	// different account, the request will fail with an HTTP 403 (Access Denied)
31247	// error.
31248	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31249
31250	// A container for replication rules. You can add up to 1,000 rules. The maximum
31251	// size of a replication configuration is 2 MB.
31252	//
31253	// ReplicationConfiguration is a required field
31254	ReplicationConfiguration *ReplicationConfiguration `locationName:"ReplicationConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31255
31256	// A token to allow Object Lock to be enabled for an existing bucket.
31257	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
31258}
31259
31260// String returns the string representation.
31261//
31262// API parameter values that are decorated as "sensitive" in the API will not
31263// be included in the string output. The member name will be present, but the
31264// value will be replaced with "sensitive".
31265func (s PutBucketReplicationInput) String() string {
31266	return awsutil.Prettify(s)
31267}
31268
31269// GoString returns the string representation.
31270//
31271// API parameter values that are decorated as "sensitive" in the API will not
31272// be included in the string output. The member name will be present, but the
31273// value will be replaced with "sensitive".
31274func (s PutBucketReplicationInput) GoString() string {
31275	return s.String()
31276}
31277
31278// Validate inspects the fields of the type to determine if they are valid.
31279func (s *PutBucketReplicationInput) Validate() error {
31280	invalidParams := request.ErrInvalidParams{Context: "PutBucketReplicationInput"}
31281	if s.Bucket == nil {
31282		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31283	}
31284	if s.Bucket != nil && len(*s.Bucket) < 1 {
31285		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31286	}
31287	if s.ReplicationConfiguration == nil {
31288		invalidParams.Add(request.NewErrParamRequired("ReplicationConfiguration"))
31289	}
31290	if s.ReplicationConfiguration != nil {
31291		if err := s.ReplicationConfiguration.Validate(); err != nil {
31292			invalidParams.AddNested("ReplicationConfiguration", err.(request.ErrInvalidParams))
31293		}
31294	}
31295
31296	if invalidParams.Len() > 0 {
31297		return invalidParams
31298	}
31299	return nil
31300}
31301
31302// SetBucket sets the Bucket field's value.
31303func (s *PutBucketReplicationInput) SetBucket(v string) *PutBucketReplicationInput {
31304	s.Bucket = &v
31305	return s
31306}
31307
31308func (s *PutBucketReplicationInput) getBucket() (v string) {
31309	if s.Bucket == nil {
31310		return v
31311	}
31312	return *s.Bucket
31313}
31314
31315// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31316func (s *PutBucketReplicationInput) SetExpectedBucketOwner(v string) *PutBucketReplicationInput {
31317	s.ExpectedBucketOwner = &v
31318	return s
31319}
31320
31321// SetReplicationConfiguration sets the ReplicationConfiguration field's value.
31322func (s *PutBucketReplicationInput) SetReplicationConfiguration(v *ReplicationConfiguration) *PutBucketReplicationInput {
31323	s.ReplicationConfiguration = v
31324	return s
31325}
31326
31327// SetToken sets the Token field's value.
31328func (s *PutBucketReplicationInput) SetToken(v string) *PutBucketReplicationInput {
31329	s.Token = &v
31330	return s
31331}
31332
31333func (s *PutBucketReplicationInput) getEndpointARN() (arn.Resource, error) {
31334	if s.Bucket == nil {
31335		return nil, fmt.Errorf("member Bucket is nil")
31336	}
31337	return parseEndpointARN(*s.Bucket)
31338}
31339
31340func (s *PutBucketReplicationInput) hasEndpointARN() bool {
31341	if s.Bucket == nil {
31342		return false
31343	}
31344	return arn.IsARN(*s.Bucket)
31345}
31346
31347// updateArnableField updates the value of the input field that
31348// takes an ARN as an input. This method is useful to backfill
31349// the parsed resource name from ARN into the input member.
31350// It returns a pointer to a modified copy of input and an error.
31351// Note that original input is not modified.
31352func (s PutBucketReplicationInput) updateArnableField(v string) (interface{}, error) {
31353	if s.Bucket == nil {
31354		return nil, fmt.Errorf("member Bucket is nil")
31355	}
31356	s.Bucket = aws.String(v)
31357	return &s, nil
31358}
31359
31360type PutBucketReplicationOutput struct {
31361	_ struct{} `type:"structure"`
31362}
31363
31364// String returns the string representation.
31365//
31366// API parameter values that are decorated as "sensitive" in the API will not
31367// be included in the string output. The member name will be present, but the
31368// value will be replaced with "sensitive".
31369func (s PutBucketReplicationOutput) String() string {
31370	return awsutil.Prettify(s)
31371}
31372
31373// GoString returns the string representation.
31374//
31375// API parameter values that are decorated as "sensitive" in the API will not
31376// be included in the string output. The member name will be present, but the
31377// value will be replaced with "sensitive".
31378func (s PutBucketReplicationOutput) GoString() string {
31379	return s.String()
31380}
31381
31382type PutBucketRequestPaymentInput struct {
31383	_ struct{} `locationName:"PutBucketRequestPaymentRequest" type:"structure" payload:"RequestPaymentConfiguration"`
31384
31385	// The bucket name.
31386	//
31387	// Bucket is a required field
31388	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31389
31390	// The account ID of the expected bucket owner. If the bucket is owned by a
31391	// different account, the request will fail with an HTTP 403 (Access Denied)
31392	// error.
31393	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31394
31395	// Container for Payer.
31396	//
31397	// RequestPaymentConfiguration is a required field
31398	RequestPaymentConfiguration *RequestPaymentConfiguration `locationName:"RequestPaymentConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31399}
31400
31401// String returns the string representation.
31402//
31403// API parameter values that are decorated as "sensitive" in the API will not
31404// be included in the string output. The member name will be present, but the
31405// value will be replaced with "sensitive".
31406func (s PutBucketRequestPaymentInput) String() string {
31407	return awsutil.Prettify(s)
31408}
31409
31410// GoString returns the string representation.
31411//
31412// API parameter values that are decorated as "sensitive" in the API will not
31413// be included in the string output. The member name will be present, but the
31414// value will be replaced with "sensitive".
31415func (s PutBucketRequestPaymentInput) GoString() string {
31416	return s.String()
31417}
31418
31419// Validate inspects the fields of the type to determine if they are valid.
31420func (s *PutBucketRequestPaymentInput) Validate() error {
31421	invalidParams := request.ErrInvalidParams{Context: "PutBucketRequestPaymentInput"}
31422	if s.Bucket == nil {
31423		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31424	}
31425	if s.Bucket != nil && len(*s.Bucket) < 1 {
31426		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31427	}
31428	if s.RequestPaymentConfiguration == nil {
31429		invalidParams.Add(request.NewErrParamRequired("RequestPaymentConfiguration"))
31430	}
31431	if s.RequestPaymentConfiguration != nil {
31432		if err := s.RequestPaymentConfiguration.Validate(); err != nil {
31433			invalidParams.AddNested("RequestPaymentConfiguration", err.(request.ErrInvalidParams))
31434		}
31435	}
31436
31437	if invalidParams.Len() > 0 {
31438		return invalidParams
31439	}
31440	return nil
31441}
31442
31443// SetBucket sets the Bucket field's value.
31444func (s *PutBucketRequestPaymentInput) SetBucket(v string) *PutBucketRequestPaymentInput {
31445	s.Bucket = &v
31446	return s
31447}
31448
31449func (s *PutBucketRequestPaymentInput) getBucket() (v string) {
31450	if s.Bucket == nil {
31451		return v
31452	}
31453	return *s.Bucket
31454}
31455
31456// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31457func (s *PutBucketRequestPaymentInput) SetExpectedBucketOwner(v string) *PutBucketRequestPaymentInput {
31458	s.ExpectedBucketOwner = &v
31459	return s
31460}
31461
31462// SetRequestPaymentConfiguration sets the RequestPaymentConfiguration field's value.
31463func (s *PutBucketRequestPaymentInput) SetRequestPaymentConfiguration(v *RequestPaymentConfiguration) *PutBucketRequestPaymentInput {
31464	s.RequestPaymentConfiguration = v
31465	return s
31466}
31467
31468func (s *PutBucketRequestPaymentInput) getEndpointARN() (arn.Resource, error) {
31469	if s.Bucket == nil {
31470		return nil, fmt.Errorf("member Bucket is nil")
31471	}
31472	return parseEndpointARN(*s.Bucket)
31473}
31474
31475func (s *PutBucketRequestPaymentInput) hasEndpointARN() bool {
31476	if s.Bucket == nil {
31477		return false
31478	}
31479	return arn.IsARN(*s.Bucket)
31480}
31481
31482// updateArnableField updates the value of the input field that
31483// takes an ARN as an input. This method is useful to backfill
31484// the parsed resource name from ARN into the input member.
31485// It returns a pointer to a modified copy of input and an error.
31486// Note that original input is not modified.
31487func (s PutBucketRequestPaymentInput) updateArnableField(v string) (interface{}, error) {
31488	if s.Bucket == nil {
31489		return nil, fmt.Errorf("member Bucket is nil")
31490	}
31491	s.Bucket = aws.String(v)
31492	return &s, nil
31493}
31494
31495type PutBucketRequestPaymentOutput struct {
31496	_ struct{} `type:"structure"`
31497}
31498
31499// String returns the string representation.
31500//
31501// API parameter values that are decorated as "sensitive" in the API will not
31502// be included in the string output. The member name will be present, but the
31503// value will be replaced with "sensitive".
31504func (s PutBucketRequestPaymentOutput) String() string {
31505	return awsutil.Prettify(s)
31506}
31507
31508// GoString returns the string representation.
31509//
31510// API parameter values that are decorated as "sensitive" in the API will not
31511// be included in the string output. The member name will be present, but the
31512// value will be replaced with "sensitive".
31513func (s PutBucketRequestPaymentOutput) GoString() string {
31514	return s.String()
31515}
31516
31517type PutBucketTaggingInput struct {
31518	_ struct{} `locationName:"PutBucketTaggingRequest" type:"structure" payload:"Tagging"`
31519
31520	// The bucket name.
31521	//
31522	// Bucket is a required field
31523	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31524
31525	// The account ID of the expected bucket owner. If the bucket is owned by a
31526	// different account, the request will fail with an HTTP 403 (Access Denied)
31527	// error.
31528	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31529
31530	// Container for the TagSet and Tag elements.
31531	//
31532	// Tagging is a required field
31533	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31534}
31535
31536// String returns the string representation.
31537//
31538// API parameter values that are decorated as "sensitive" in the API will not
31539// be included in the string output. The member name will be present, but the
31540// value will be replaced with "sensitive".
31541func (s PutBucketTaggingInput) String() string {
31542	return awsutil.Prettify(s)
31543}
31544
31545// GoString returns the string representation.
31546//
31547// API parameter values that are decorated as "sensitive" in the API will not
31548// be included in the string output. The member name will be present, but the
31549// value will be replaced with "sensitive".
31550func (s PutBucketTaggingInput) GoString() string {
31551	return s.String()
31552}
31553
31554// Validate inspects the fields of the type to determine if they are valid.
31555func (s *PutBucketTaggingInput) Validate() error {
31556	invalidParams := request.ErrInvalidParams{Context: "PutBucketTaggingInput"}
31557	if s.Bucket == nil {
31558		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31559	}
31560	if s.Bucket != nil && len(*s.Bucket) < 1 {
31561		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31562	}
31563	if s.Tagging == nil {
31564		invalidParams.Add(request.NewErrParamRequired("Tagging"))
31565	}
31566	if s.Tagging != nil {
31567		if err := s.Tagging.Validate(); err != nil {
31568			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
31569		}
31570	}
31571
31572	if invalidParams.Len() > 0 {
31573		return invalidParams
31574	}
31575	return nil
31576}
31577
31578// SetBucket sets the Bucket field's value.
31579func (s *PutBucketTaggingInput) SetBucket(v string) *PutBucketTaggingInput {
31580	s.Bucket = &v
31581	return s
31582}
31583
31584func (s *PutBucketTaggingInput) getBucket() (v string) {
31585	if s.Bucket == nil {
31586		return v
31587	}
31588	return *s.Bucket
31589}
31590
31591// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31592func (s *PutBucketTaggingInput) SetExpectedBucketOwner(v string) *PutBucketTaggingInput {
31593	s.ExpectedBucketOwner = &v
31594	return s
31595}
31596
31597// SetTagging sets the Tagging field's value.
31598func (s *PutBucketTaggingInput) SetTagging(v *Tagging) *PutBucketTaggingInput {
31599	s.Tagging = v
31600	return s
31601}
31602
31603func (s *PutBucketTaggingInput) getEndpointARN() (arn.Resource, error) {
31604	if s.Bucket == nil {
31605		return nil, fmt.Errorf("member Bucket is nil")
31606	}
31607	return parseEndpointARN(*s.Bucket)
31608}
31609
31610func (s *PutBucketTaggingInput) hasEndpointARN() bool {
31611	if s.Bucket == nil {
31612		return false
31613	}
31614	return arn.IsARN(*s.Bucket)
31615}
31616
31617// updateArnableField updates the value of the input field that
31618// takes an ARN as an input. This method is useful to backfill
31619// the parsed resource name from ARN into the input member.
31620// It returns a pointer to a modified copy of input and an error.
31621// Note that original input is not modified.
31622func (s PutBucketTaggingInput) updateArnableField(v string) (interface{}, error) {
31623	if s.Bucket == nil {
31624		return nil, fmt.Errorf("member Bucket is nil")
31625	}
31626	s.Bucket = aws.String(v)
31627	return &s, nil
31628}
31629
31630type PutBucketTaggingOutput struct {
31631	_ struct{} `type:"structure"`
31632}
31633
31634// String returns the string representation.
31635//
31636// API parameter values that are decorated as "sensitive" in the API will not
31637// be included in the string output. The member name will be present, but the
31638// value will be replaced with "sensitive".
31639func (s PutBucketTaggingOutput) String() string {
31640	return awsutil.Prettify(s)
31641}
31642
31643// GoString returns the string representation.
31644//
31645// API parameter values that are decorated as "sensitive" in the API will not
31646// be included in the string output. The member name will be present, but the
31647// value will be replaced with "sensitive".
31648func (s PutBucketTaggingOutput) GoString() string {
31649	return s.String()
31650}
31651
31652type PutBucketVersioningInput struct {
31653	_ struct{} `locationName:"PutBucketVersioningRequest" type:"structure" payload:"VersioningConfiguration"`
31654
31655	// The bucket name.
31656	//
31657	// Bucket is a required field
31658	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31659
31660	// The account ID of the expected bucket owner. If the bucket is owned by a
31661	// different account, the request will fail with an HTTP 403 (Access Denied)
31662	// error.
31663	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31664
31665	// The concatenation of the authentication device's serial number, a space,
31666	// and the value that is displayed on your authentication device.
31667	MFA *string `location:"header" locationName:"x-amz-mfa" type:"string"`
31668
31669	// Container for setting the versioning state.
31670	//
31671	// VersioningConfiguration is a required field
31672	VersioningConfiguration *VersioningConfiguration `locationName:"VersioningConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31673}
31674
31675// String returns the string representation.
31676//
31677// API parameter values that are decorated as "sensitive" in the API will not
31678// be included in the string output. The member name will be present, but the
31679// value will be replaced with "sensitive".
31680func (s PutBucketVersioningInput) String() string {
31681	return awsutil.Prettify(s)
31682}
31683
31684// GoString returns the string representation.
31685//
31686// API parameter values that are decorated as "sensitive" in the API will not
31687// be included in the string output. The member name will be present, but the
31688// value will be replaced with "sensitive".
31689func (s PutBucketVersioningInput) GoString() string {
31690	return s.String()
31691}
31692
31693// Validate inspects the fields of the type to determine if they are valid.
31694func (s *PutBucketVersioningInput) Validate() error {
31695	invalidParams := request.ErrInvalidParams{Context: "PutBucketVersioningInput"}
31696	if s.Bucket == nil {
31697		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31698	}
31699	if s.Bucket != nil && len(*s.Bucket) < 1 {
31700		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31701	}
31702	if s.VersioningConfiguration == nil {
31703		invalidParams.Add(request.NewErrParamRequired("VersioningConfiguration"))
31704	}
31705
31706	if invalidParams.Len() > 0 {
31707		return invalidParams
31708	}
31709	return nil
31710}
31711
31712// SetBucket sets the Bucket field's value.
31713func (s *PutBucketVersioningInput) SetBucket(v string) *PutBucketVersioningInput {
31714	s.Bucket = &v
31715	return s
31716}
31717
31718func (s *PutBucketVersioningInput) getBucket() (v string) {
31719	if s.Bucket == nil {
31720		return v
31721	}
31722	return *s.Bucket
31723}
31724
31725// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31726func (s *PutBucketVersioningInput) SetExpectedBucketOwner(v string) *PutBucketVersioningInput {
31727	s.ExpectedBucketOwner = &v
31728	return s
31729}
31730
31731// SetMFA sets the MFA field's value.
31732func (s *PutBucketVersioningInput) SetMFA(v string) *PutBucketVersioningInput {
31733	s.MFA = &v
31734	return s
31735}
31736
31737// SetVersioningConfiguration sets the VersioningConfiguration field's value.
31738func (s *PutBucketVersioningInput) SetVersioningConfiguration(v *VersioningConfiguration) *PutBucketVersioningInput {
31739	s.VersioningConfiguration = v
31740	return s
31741}
31742
31743func (s *PutBucketVersioningInput) getEndpointARN() (arn.Resource, error) {
31744	if s.Bucket == nil {
31745		return nil, fmt.Errorf("member Bucket is nil")
31746	}
31747	return parseEndpointARN(*s.Bucket)
31748}
31749
31750func (s *PutBucketVersioningInput) hasEndpointARN() bool {
31751	if s.Bucket == nil {
31752		return false
31753	}
31754	return arn.IsARN(*s.Bucket)
31755}
31756
31757// updateArnableField updates the value of the input field that
31758// takes an ARN as an input. This method is useful to backfill
31759// the parsed resource name from ARN into the input member.
31760// It returns a pointer to a modified copy of input and an error.
31761// Note that original input is not modified.
31762func (s PutBucketVersioningInput) updateArnableField(v string) (interface{}, error) {
31763	if s.Bucket == nil {
31764		return nil, fmt.Errorf("member Bucket is nil")
31765	}
31766	s.Bucket = aws.String(v)
31767	return &s, nil
31768}
31769
31770type PutBucketVersioningOutput struct {
31771	_ struct{} `type:"structure"`
31772}
31773
31774// String returns the string representation.
31775//
31776// API parameter values that are decorated as "sensitive" in the API will not
31777// be included in the string output. The member name will be present, but the
31778// value will be replaced with "sensitive".
31779func (s PutBucketVersioningOutput) String() string {
31780	return awsutil.Prettify(s)
31781}
31782
31783// GoString returns the string representation.
31784//
31785// API parameter values that are decorated as "sensitive" in the API will not
31786// be included in the string output. The member name will be present, but the
31787// value will be replaced with "sensitive".
31788func (s PutBucketVersioningOutput) GoString() string {
31789	return s.String()
31790}
31791
31792type PutBucketWebsiteInput struct {
31793	_ struct{} `locationName:"PutBucketWebsiteRequest" type:"structure" payload:"WebsiteConfiguration"`
31794
31795	// The bucket name.
31796	//
31797	// Bucket is a required field
31798	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31799
31800	// The account ID of the expected bucket owner. If the bucket is owned by a
31801	// different account, the request will fail with an HTTP 403 (Access Denied)
31802	// error.
31803	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31804
31805	// Container for the request.
31806	//
31807	// WebsiteConfiguration is a required field
31808	WebsiteConfiguration *WebsiteConfiguration `locationName:"WebsiteConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31809}
31810
31811// String returns the string representation.
31812//
31813// API parameter values that are decorated as "sensitive" in the API will not
31814// be included in the string output. The member name will be present, but the
31815// value will be replaced with "sensitive".
31816func (s PutBucketWebsiteInput) String() string {
31817	return awsutil.Prettify(s)
31818}
31819
31820// GoString returns the string representation.
31821//
31822// API parameter values that are decorated as "sensitive" in the API will not
31823// be included in the string output. The member name will be present, but the
31824// value will be replaced with "sensitive".
31825func (s PutBucketWebsiteInput) GoString() string {
31826	return s.String()
31827}
31828
31829// Validate inspects the fields of the type to determine if they are valid.
31830func (s *PutBucketWebsiteInput) Validate() error {
31831	invalidParams := request.ErrInvalidParams{Context: "PutBucketWebsiteInput"}
31832	if s.Bucket == nil {
31833		invalidParams.Add(request.NewErrParamRequired("Bucket"))
31834	}
31835	if s.Bucket != nil && len(*s.Bucket) < 1 {
31836		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
31837	}
31838	if s.WebsiteConfiguration == nil {
31839		invalidParams.Add(request.NewErrParamRequired("WebsiteConfiguration"))
31840	}
31841	if s.WebsiteConfiguration != nil {
31842		if err := s.WebsiteConfiguration.Validate(); err != nil {
31843			invalidParams.AddNested("WebsiteConfiguration", err.(request.ErrInvalidParams))
31844		}
31845	}
31846
31847	if invalidParams.Len() > 0 {
31848		return invalidParams
31849	}
31850	return nil
31851}
31852
31853// SetBucket sets the Bucket field's value.
31854func (s *PutBucketWebsiteInput) SetBucket(v string) *PutBucketWebsiteInput {
31855	s.Bucket = &v
31856	return s
31857}
31858
31859func (s *PutBucketWebsiteInput) getBucket() (v string) {
31860	if s.Bucket == nil {
31861		return v
31862	}
31863	return *s.Bucket
31864}
31865
31866// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
31867func (s *PutBucketWebsiteInput) SetExpectedBucketOwner(v string) *PutBucketWebsiteInput {
31868	s.ExpectedBucketOwner = &v
31869	return s
31870}
31871
31872// SetWebsiteConfiguration sets the WebsiteConfiguration field's value.
31873func (s *PutBucketWebsiteInput) SetWebsiteConfiguration(v *WebsiteConfiguration) *PutBucketWebsiteInput {
31874	s.WebsiteConfiguration = v
31875	return s
31876}
31877
31878func (s *PutBucketWebsiteInput) getEndpointARN() (arn.Resource, error) {
31879	if s.Bucket == nil {
31880		return nil, fmt.Errorf("member Bucket is nil")
31881	}
31882	return parseEndpointARN(*s.Bucket)
31883}
31884
31885func (s *PutBucketWebsiteInput) hasEndpointARN() bool {
31886	if s.Bucket == nil {
31887		return false
31888	}
31889	return arn.IsARN(*s.Bucket)
31890}
31891
31892// updateArnableField updates the value of the input field that
31893// takes an ARN as an input. This method is useful to backfill
31894// the parsed resource name from ARN into the input member.
31895// It returns a pointer to a modified copy of input and an error.
31896// Note that original input is not modified.
31897func (s PutBucketWebsiteInput) updateArnableField(v string) (interface{}, error) {
31898	if s.Bucket == nil {
31899		return nil, fmt.Errorf("member Bucket is nil")
31900	}
31901	s.Bucket = aws.String(v)
31902	return &s, nil
31903}
31904
31905type PutBucketWebsiteOutput struct {
31906	_ struct{} `type:"structure"`
31907}
31908
31909// String returns the string representation.
31910//
31911// API parameter values that are decorated as "sensitive" in the API will not
31912// be included in the string output. The member name will be present, but the
31913// value will be replaced with "sensitive".
31914func (s PutBucketWebsiteOutput) String() string {
31915	return awsutil.Prettify(s)
31916}
31917
31918// GoString returns the string representation.
31919//
31920// API parameter values that are decorated as "sensitive" in the API will not
31921// be included in the string output. The member name will be present, but the
31922// value will be replaced with "sensitive".
31923func (s PutBucketWebsiteOutput) GoString() string {
31924	return s.String()
31925}
31926
31927type PutObjectAclInput struct {
31928	_ struct{} `locationName:"PutObjectAclRequest" type:"structure" payload:"AccessControlPolicy"`
31929
31930	// The canned ACL to apply to the object. For more information, see Canned ACL
31931	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
31932	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
31933
31934	// Contains the elements that set the ACL permissions for an object per grantee.
31935	AccessControlPolicy *AccessControlPolicy `locationName:"AccessControlPolicy" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
31936
31937	// The bucket name that contains the object to which you want to attach the
31938	// ACL.
31939	//
31940	// When using this action with an access point, you must direct requests to
31941	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
31942	// When using this action with an access point through the Amazon Web Services
31943	// SDKs, you provide the access point ARN in place of the bucket name. For more
31944	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
31945	// in the Amazon S3 User Guide.
31946	//
31947	// Bucket is a required field
31948	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
31949
31950	// The account ID of the expected bucket owner. If the bucket is owned by a
31951	// different account, the request will fail with an HTTP 403 (Access Denied)
31952	// error.
31953	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
31954
31955	// Allows grantee the read, write, read ACP, and write ACP permissions on the
31956	// bucket.
31957	//
31958	// This action is not supported by Amazon S3 on Outposts.
31959	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
31960
31961	// Allows grantee to list the objects in the bucket.
31962	//
31963	// This action is not supported by Amazon S3 on Outposts.
31964	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
31965
31966	// Allows grantee to read the bucket ACL.
31967	//
31968	// This action is not supported by Amazon S3 on Outposts.
31969	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
31970
31971	// Allows grantee to create new objects in the bucket.
31972	//
31973	// For the bucket and object owners of existing objects, also allows deletions
31974	// and overwrites of those objects.
31975	GrantWrite *string `location:"header" locationName:"x-amz-grant-write" type:"string"`
31976
31977	// Allows grantee to write the ACL for the applicable bucket.
31978	//
31979	// This action is not supported by Amazon S3 on Outposts.
31980	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
31981
31982	// Key for which the PUT action was initiated.
31983	//
31984	// When using this action with an access point, you must direct requests to
31985	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
31986	// When using this action with an access point through the Amazon Web Services
31987	// SDKs, you provide the access point ARN in place of the bucket name. For more
31988	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
31989	// in the Amazon S3 User Guide.
31990	//
31991	// When using this action with Amazon S3 on Outposts, you must direct requests
31992	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
31993	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
31994	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
31995	// you provide the Outposts bucket ARN in place of the bucket name. For more
31996	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
31997	// in the Amazon S3 User Guide.
31998	//
31999	// Key is a required field
32000	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
32001
32002	// Confirms that the requester knows that they will be charged for the request.
32003	// Bucket owners need not specify this parameter in their requests. For information
32004	// about downloading objects from requester pays buckets, see Downloading Objects
32005	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32006	// in the Amazon S3 User Guide.
32007	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32008
32009	// VersionId used to reference a specific version of the object.
32010	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
32011}
32012
32013// String returns the string representation.
32014//
32015// API parameter values that are decorated as "sensitive" in the API will not
32016// be included in the string output. The member name will be present, but the
32017// value will be replaced with "sensitive".
32018func (s PutObjectAclInput) String() string {
32019	return awsutil.Prettify(s)
32020}
32021
32022// GoString returns the string representation.
32023//
32024// API parameter values that are decorated as "sensitive" in the API will not
32025// be included in the string output. The member name will be present, but the
32026// value will be replaced with "sensitive".
32027func (s PutObjectAclInput) GoString() string {
32028	return s.String()
32029}
32030
32031// Validate inspects the fields of the type to determine if they are valid.
32032func (s *PutObjectAclInput) Validate() error {
32033	invalidParams := request.ErrInvalidParams{Context: "PutObjectAclInput"}
32034	if s.Bucket == nil {
32035		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32036	}
32037	if s.Bucket != nil && len(*s.Bucket) < 1 {
32038		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32039	}
32040	if s.Key == nil {
32041		invalidParams.Add(request.NewErrParamRequired("Key"))
32042	}
32043	if s.Key != nil && len(*s.Key) < 1 {
32044		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
32045	}
32046	if s.AccessControlPolicy != nil {
32047		if err := s.AccessControlPolicy.Validate(); err != nil {
32048			invalidParams.AddNested("AccessControlPolicy", err.(request.ErrInvalidParams))
32049		}
32050	}
32051
32052	if invalidParams.Len() > 0 {
32053		return invalidParams
32054	}
32055	return nil
32056}
32057
32058// SetACL sets the ACL field's value.
32059func (s *PutObjectAclInput) SetACL(v string) *PutObjectAclInput {
32060	s.ACL = &v
32061	return s
32062}
32063
32064// SetAccessControlPolicy sets the AccessControlPolicy field's value.
32065func (s *PutObjectAclInput) SetAccessControlPolicy(v *AccessControlPolicy) *PutObjectAclInput {
32066	s.AccessControlPolicy = v
32067	return s
32068}
32069
32070// SetBucket sets the Bucket field's value.
32071func (s *PutObjectAclInput) SetBucket(v string) *PutObjectAclInput {
32072	s.Bucket = &v
32073	return s
32074}
32075
32076func (s *PutObjectAclInput) getBucket() (v string) {
32077	if s.Bucket == nil {
32078		return v
32079	}
32080	return *s.Bucket
32081}
32082
32083// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32084func (s *PutObjectAclInput) SetExpectedBucketOwner(v string) *PutObjectAclInput {
32085	s.ExpectedBucketOwner = &v
32086	return s
32087}
32088
32089// SetGrantFullControl sets the GrantFullControl field's value.
32090func (s *PutObjectAclInput) SetGrantFullControl(v string) *PutObjectAclInput {
32091	s.GrantFullControl = &v
32092	return s
32093}
32094
32095// SetGrantRead sets the GrantRead field's value.
32096func (s *PutObjectAclInput) SetGrantRead(v string) *PutObjectAclInput {
32097	s.GrantRead = &v
32098	return s
32099}
32100
32101// SetGrantReadACP sets the GrantReadACP field's value.
32102func (s *PutObjectAclInput) SetGrantReadACP(v string) *PutObjectAclInput {
32103	s.GrantReadACP = &v
32104	return s
32105}
32106
32107// SetGrantWrite sets the GrantWrite field's value.
32108func (s *PutObjectAclInput) SetGrantWrite(v string) *PutObjectAclInput {
32109	s.GrantWrite = &v
32110	return s
32111}
32112
32113// SetGrantWriteACP sets the GrantWriteACP field's value.
32114func (s *PutObjectAclInput) SetGrantWriteACP(v string) *PutObjectAclInput {
32115	s.GrantWriteACP = &v
32116	return s
32117}
32118
32119// SetKey sets the Key field's value.
32120func (s *PutObjectAclInput) SetKey(v string) *PutObjectAclInput {
32121	s.Key = &v
32122	return s
32123}
32124
32125// SetRequestPayer sets the RequestPayer field's value.
32126func (s *PutObjectAclInput) SetRequestPayer(v string) *PutObjectAclInput {
32127	s.RequestPayer = &v
32128	return s
32129}
32130
32131// SetVersionId sets the VersionId field's value.
32132func (s *PutObjectAclInput) SetVersionId(v string) *PutObjectAclInput {
32133	s.VersionId = &v
32134	return s
32135}
32136
32137func (s *PutObjectAclInput) getEndpointARN() (arn.Resource, error) {
32138	if s.Bucket == nil {
32139		return nil, fmt.Errorf("member Bucket is nil")
32140	}
32141	return parseEndpointARN(*s.Bucket)
32142}
32143
32144func (s *PutObjectAclInput) hasEndpointARN() bool {
32145	if s.Bucket == nil {
32146		return false
32147	}
32148	return arn.IsARN(*s.Bucket)
32149}
32150
32151// updateArnableField updates the value of the input field that
32152// takes an ARN as an input. This method is useful to backfill
32153// the parsed resource name from ARN into the input member.
32154// It returns a pointer to a modified copy of input and an error.
32155// Note that original input is not modified.
32156func (s PutObjectAclInput) updateArnableField(v string) (interface{}, error) {
32157	if s.Bucket == nil {
32158		return nil, fmt.Errorf("member Bucket is nil")
32159	}
32160	s.Bucket = aws.String(v)
32161	return &s, nil
32162}
32163
32164type PutObjectAclOutput struct {
32165	_ struct{} `type:"structure"`
32166
32167	// If present, indicates that the requester was successfully charged for the
32168	// request.
32169	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
32170}
32171
32172// String returns the string representation.
32173//
32174// API parameter values that are decorated as "sensitive" in the API will not
32175// be included in the string output. The member name will be present, but the
32176// value will be replaced with "sensitive".
32177func (s PutObjectAclOutput) String() string {
32178	return awsutil.Prettify(s)
32179}
32180
32181// GoString returns the string representation.
32182//
32183// API parameter values that are decorated as "sensitive" in the API will not
32184// be included in the string output. The member name will be present, but the
32185// value will be replaced with "sensitive".
32186func (s PutObjectAclOutput) GoString() string {
32187	return s.String()
32188}
32189
32190// SetRequestCharged sets the RequestCharged field's value.
32191func (s *PutObjectAclOutput) SetRequestCharged(v string) *PutObjectAclOutput {
32192	s.RequestCharged = &v
32193	return s
32194}
32195
32196type PutObjectInput struct {
32197	_ struct{} `locationName:"PutObjectRequest" type:"structure" payload:"Body"`
32198
32199	// The canned ACL to apply to the object. For more information, see Canned ACL
32200	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL).
32201	//
32202	// This action is not supported by Amazon S3 on Outposts.
32203	ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
32204
32205	// Object data.
32206	Body io.ReadSeeker `type:"blob"`
32207
32208	// The bucket name to which the PUT action was initiated.
32209	//
32210	// When using this action with an access point, you must direct requests to
32211	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
32212	// When using this action with an access point through the Amazon Web Services
32213	// SDKs, you provide the access point ARN in place of the bucket name. For more
32214	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
32215	// in the Amazon S3 User Guide.
32216	//
32217	// When using this action with Amazon S3 on Outposts, you must direct requests
32218	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
32219	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
32220	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
32221	// you provide the Outposts bucket ARN in place of the bucket name. For more
32222	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
32223	// in the Amazon S3 User Guide.
32224	//
32225	// Bucket is a required field
32226	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32227
32228	// Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption
32229	// with server-side encryption using AWS KMS (SSE-KMS). Setting this header
32230	// to true causes Amazon S3 to use an S3 Bucket Key for object encryption with
32231	// SSE-KMS.
32232	//
32233	// Specifying this header with a PUT action doesn’t affect bucket-level settings
32234	// for S3 Bucket Key.
32235	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
32236
32237	// Can be used to specify caching behavior along the request/reply chain. For
32238	// more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
32239	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9).
32240	CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
32241
32242	// Specifies presentational information for the object. For more information,
32243	// 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).
32244	ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
32245
32246	// Specifies what content encodings have been applied to the object and thus
32247	// what decoding mechanisms must be applied to obtain the media-type referenced
32248	// by the Content-Type header field. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
32249	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11).
32250	ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
32251
32252	// The language the content is in.
32253	ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
32254
32255	// Size of the body in bytes. This parameter is useful when the size of the
32256	// body cannot be determined automatically. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
32257	// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13).
32258	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
32259
32260	// The base64-encoded 128-bit MD5 digest of the message (without the headers)
32261	// according to RFC 1864. This header can be used as a message integrity check
32262	// to verify that the data is the same data that was originally sent. Although
32263	// it is optional, we recommend using the Content-MD5 mechanism as an end-to-end
32264	// integrity check. For more information about REST request authentication,
32265	// see REST Authentication (https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html).
32266	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
32267
32268	// A standard MIME type describing the format of the contents. For more information,
32269	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17).
32270	ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
32271
32272	// The account ID of the expected bucket owner. If the bucket is owned by a
32273	// different account, the request will fail with an HTTP 403 (Access Denied)
32274	// error.
32275	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32276
32277	// The date and time at which the object is no longer cacheable. For more information,
32278	// see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21 (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21).
32279	Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
32280
32281	// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
32282	//
32283	// This action is not supported by Amazon S3 on Outposts.
32284	GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
32285
32286	// Allows grantee to read the object data and its metadata.
32287	//
32288	// This action is not supported by Amazon S3 on Outposts.
32289	GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
32290
32291	// Allows grantee to read the object ACL.
32292	//
32293	// This action is not supported by Amazon S3 on Outposts.
32294	GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
32295
32296	// Allows grantee to write the ACL for the applicable object.
32297	//
32298	// This action is not supported by Amazon S3 on Outposts.
32299	GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
32300
32301	// Object key for which the PUT action was initiated.
32302	//
32303	// Key is a required field
32304	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
32305
32306	// A map of metadata to store with the object in S3.
32307	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
32308
32309	// Specifies whether a legal hold will be applied to this object. For more information
32310	// about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html).
32311	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
32312
32313	// The Object Lock mode that you want to apply to this object.
32314	ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
32315
32316	// The date and time when you want this object's Object Lock to expire. Must
32317	// be formatted as a timestamp parameter.
32318	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
32319
32320	// Confirms that the requester knows that they will be charged for the request.
32321	// Bucket owners need not specify this parameter in their requests. For information
32322	// about downloading objects from requester pays buckets, see Downloading Objects
32323	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32324	// in the Amazon S3 User Guide.
32325	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32326
32327	// Specifies the algorithm to use to when encrypting the object (for example,
32328	// AES256).
32329	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
32330
32331	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
32332	// data. This value is used to store the object and then it is discarded; Amazon
32333	// S3 does not store the encryption key. The key must be appropriate for use
32334	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
32335	// header.
32336	//
32337	// SSECustomerKey is a sensitive parameter and its value will be
32338	// replaced with "sensitive" in string returned by PutObjectInput's
32339	// String and GoString methods.
32340	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
32341
32342	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
32343	// Amazon S3 uses this header for a message integrity check to ensure that the
32344	// encryption key was transmitted without error.
32345	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
32346
32347	// Specifies the Amazon Web Services KMS Encryption Context to use for object
32348	// encryption. The value of this header is a base64-encoded UTF-8 string holding
32349	// JSON with the encryption context key-value pairs.
32350	//
32351	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
32352	// replaced with "sensitive" in string returned by PutObjectInput's
32353	// String and GoString methods.
32354	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
32355
32356	// If x-amz-server-side-encryption is present and has the value of aws:kms,
32357	// this header specifies the ID of the Amazon Web Services Key Management Service
32358	// (Amazon Web Services KMS) symmetrical customer managed key that was used
32359	// for the object. If you specify x-amz-server-side-encryption:aws:kms, but
32360	// do not providex-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses
32361	// the Amazon Web Services managed key to protect the data. If the KMS key does
32362	// not exist in the same account issuing the command, you must use the full
32363	// ARN and not just the ID.
32364	//
32365	// SSEKMSKeyId is a sensitive parameter and its value will be
32366	// replaced with "sensitive" in string returned by PutObjectInput's
32367	// String and GoString methods.
32368	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
32369
32370	// The server-side encryption algorithm used when storing this object in Amazon
32371	// S3 (for example, AES256, aws:kms).
32372	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
32373
32374	// By default, Amazon S3 uses the STANDARD Storage Class to store newly created
32375	// objects. The STANDARD storage class provides high durability and high availability.
32376	// Depending on performance needs, you can specify a different Storage Class.
32377	// Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For more information,
32378	// see Storage Classes (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html)
32379	// in the Amazon S3 User Guide.
32380	StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
32381
32382	// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
32383	// (For example, "Key1=Value1")
32384	Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
32385
32386	// If the bucket is configured as a website, redirects requests for this object
32387	// to another object in the same bucket or to an external URL. Amazon S3 stores
32388	// the value of this header in the object metadata. For information about object
32389	// metadata, see Object Key and Metadata (https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html).
32390	//
32391	// In the following example, the request header sets the redirect to an object
32392	// (anotherPage.html) in the same bucket:
32393	//
32394	// x-amz-website-redirect-location: /anotherPage.html
32395	//
32396	// In the following example, the request header sets the object redirect to
32397	// another website:
32398	//
32399	// x-amz-website-redirect-location: http://www.example.com/
32400	//
32401	// For more information about website hosting in Amazon S3, see Hosting Websites
32402	// on Amazon S3 (https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html)
32403	// and How to Configure Website Page Redirects (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html).
32404	WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
32405}
32406
32407// String returns the string representation.
32408//
32409// API parameter values that are decorated as "sensitive" in the API will not
32410// be included in the string output. The member name will be present, but the
32411// value will be replaced with "sensitive".
32412func (s PutObjectInput) String() string {
32413	return awsutil.Prettify(s)
32414}
32415
32416// GoString returns the string representation.
32417//
32418// API parameter values that are decorated as "sensitive" in the API will not
32419// be included in the string output. The member name will be present, but the
32420// value will be replaced with "sensitive".
32421func (s PutObjectInput) GoString() string {
32422	return s.String()
32423}
32424
32425// Validate inspects the fields of the type to determine if they are valid.
32426func (s *PutObjectInput) Validate() error {
32427	invalidParams := request.ErrInvalidParams{Context: "PutObjectInput"}
32428	if s.Bucket == nil {
32429		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32430	}
32431	if s.Bucket != nil && len(*s.Bucket) < 1 {
32432		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32433	}
32434	if s.Key == nil {
32435		invalidParams.Add(request.NewErrParamRequired("Key"))
32436	}
32437	if s.Key != nil && len(*s.Key) < 1 {
32438		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
32439	}
32440
32441	if invalidParams.Len() > 0 {
32442		return invalidParams
32443	}
32444	return nil
32445}
32446
32447// SetACL sets the ACL field's value.
32448func (s *PutObjectInput) SetACL(v string) *PutObjectInput {
32449	s.ACL = &v
32450	return s
32451}
32452
32453// SetBody sets the Body field's value.
32454func (s *PutObjectInput) SetBody(v io.ReadSeeker) *PutObjectInput {
32455	s.Body = v
32456	return s
32457}
32458
32459// SetBucket sets the Bucket field's value.
32460func (s *PutObjectInput) SetBucket(v string) *PutObjectInput {
32461	s.Bucket = &v
32462	return s
32463}
32464
32465func (s *PutObjectInput) getBucket() (v string) {
32466	if s.Bucket == nil {
32467		return v
32468	}
32469	return *s.Bucket
32470}
32471
32472// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
32473func (s *PutObjectInput) SetBucketKeyEnabled(v bool) *PutObjectInput {
32474	s.BucketKeyEnabled = &v
32475	return s
32476}
32477
32478// SetCacheControl sets the CacheControl field's value.
32479func (s *PutObjectInput) SetCacheControl(v string) *PutObjectInput {
32480	s.CacheControl = &v
32481	return s
32482}
32483
32484// SetContentDisposition sets the ContentDisposition field's value.
32485func (s *PutObjectInput) SetContentDisposition(v string) *PutObjectInput {
32486	s.ContentDisposition = &v
32487	return s
32488}
32489
32490// SetContentEncoding sets the ContentEncoding field's value.
32491func (s *PutObjectInput) SetContentEncoding(v string) *PutObjectInput {
32492	s.ContentEncoding = &v
32493	return s
32494}
32495
32496// SetContentLanguage sets the ContentLanguage field's value.
32497func (s *PutObjectInput) SetContentLanguage(v string) *PutObjectInput {
32498	s.ContentLanguage = &v
32499	return s
32500}
32501
32502// SetContentLength sets the ContentLength field's value.
32503func (s *PutObjectInput) SetContentLength(v int64) *PutObjectInput {
32504	s.ContentLength = &v
32505	return s
32506}
32507
32508// SetContentMD5 sets the ContentMD5 field's value.
32509func (s *PutObjectInput) SetContentMD5(v string) *PutObjectInput {
32510	s.ContentMD5 = &v
32511	return s
32512}
32513
32514// SetContentType sets the ContentType field's value.
32515func (s *PutObjectInput) SetContentType(v string) *PutObjectInput {
32516	s.ContentType = &v
32517	return s
32518}
32519
32520// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32521func (s *PutObjectInput) SetExpectedBucketOwner(v string) *PutObjectInput {
32522	s.ExpectedBucketOwner = &v
32523	return s
32524}
32525
32526// SetExpires sets the Expires field's value.
32527func (s *PutObjectInput) SetExpires(v time.Time) *PutObjectInput {
32528	s.Expires = &v
32529	return s
32530}
32531
32532// SetGrantFullControl sets the GrantFullControl field's value.
32533func (s *PutObjectInput) SetGrantFullControl(v string) *PutObjectInput {
32534	s.GrantFullControl = &v
32535	return s
32536}
32537
32538// SetGrantRead sets the GrantRead field's value.
32539func (s *PutObjectInput) SetGrantRead(v string) *PutObjectInput {
32540	s.GrantRead = &v
32541	return s
32542}
32543
32544// SetGrantReadACP sets the GrantReadACP field's value.
32545func (s *PutObjectInput) SetGrantReadACP(v string) *PutObjectInput {
32546	s.GrantReadACP = &v
32547	return s
32548}
32549
32550// SetGrantWriteACP sets the GrantWriteACP field's value.
32551func (s *PutObjectInput) SetGrantWriteACP(v string) *PutObjectInput {
32552	s.GrantWriteACP = &v
32553	return s
32554}
32555
32556// SetKey sets the Key field's value.
32557func (s *PutObjectInput) SetKey(v string) *PutObjectInput {
32558	s.Key = &v
32559	return s
32560}
32561
32562// SetMetadata sets the Metadata field's value.
32563func (s *PutObjectInput) SetMetadata(v map[string]*string) *PutObjectInput {
32564	s.Metadata = v
32565	return s
32566}
32567
32568// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
32569func (s *PutObjectInput) SetObjectLockLegalHoldStatus(v string) *PutObjectInput {
32570	s.ObjectLockLegalHoldStatus = &v
32571	return s
32572}
32573
32574// SetObjectLockMode sets the ObjectLockMode field's value.
32575func (s *PutObjectInput) SetObjectLockMode(v string) *PutObjectInput {
32576	s.ObjectLockMode = &v
32577	return s
32578}
32579
32580// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
32581func (s *PutObjectInput) SetObjectLockRetainUntilDate(v time.Time) *PutObjectInput {
32582	s.ObjectLockRetainUntilDate = &v
32583	return s
32584}
32585
32586// SetRequestPayer sets the RequestPayer field's value.
32587func (s *PutObjectInput) SetRequestPayer(v string) *PutObjectInput {
32588	s.RequestPayer = &v
32589	return s
32590}
32591
32592// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
32593func (s *PutObjectInput) SetSSECustomerAlgorithm(v string) *PutObjectInput {
32594	s.SSECustomerAlgorithm = &v
32595	return s
32596}
32597
32598// SetSSECustomerKey sets the SSECustomerKey field's value.
32599func (s *PutObjectInput) SetSSECustomerKey(v string) *PutObjectInput {
32600	s.SSECustomerKey = &v
32601	return s
32602}
32603
32604func (s *PutObjectInput) getSSECustomerKey() (v string) {
32605	if s.SSECustomerKey == nil {
32606		return v
32607	}
32608	return *s.SSECustomerKey
32609}
32610
32611// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
32612func (s *PutObjectInput) SetSSECustomerKeyMD5(v string) *PutObjectInput {
32613	s.SSECustomerKeyMD5 = &v
32614	return s
32615}
32616
32617// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
32618func (s *PutObjectInput) SetSSEKMSEncryptionContext(v string) *PutObjectInput {
32619	s.SSEKMSEncryptionContext = &v
32620	return s
32621}
32622
32623// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
32624func (s *PutObjectInput) SetSSEKMSKeyId(v string) *PutObjectInput {
32625	s.SSEKMSKeyId = &v
32626	return s
32627}
32628
32629// SetServerSideEncryption sets the ServerSideEncryption field's value.
32630func (s *PutObjectInput) SetServerSideEncryption(v string) *PutObjectInput {
32631	s.ServerSideEncryption = &v
32632	return s
32633}
32634
32635// SetStorageClass sets the StorageClass field's value.
32636func (s *PutObjectInput) SetStorageClass(v string) *PutObjectInput {
32637	s.StorageClass = &v
32638	return s
32639}
32640
32641// SetTagging sets the Tagging field's value.
32642func (s *PutObjectInput) SetTagging(v string) *PutObjectInput {
32643	s.Tagging = &v
32644	return s
32645}
32646
32647// SetWebsiteRedirectLocation sets the WebsiteRedirectLocation field's value.
32648func (s *PutObjectInput) SetWebsiteRedirectLocation(v string) *PutObjectInput {
32649	s.WebsiteRedirectLocation = &v
32650	return s
32651}
32652
32653func (s *PutObjectInput) getEndpointARN() (arn.Resource, error) {
32654	if s.Bucket == nil {
32655		return nil, fmt.Errorf("member Bucket is nil")
32656	}
32657	return parseEndpointARN(*s.Bucket)
32658}
32659
32660func (s *PutObjectInput) hasEndpointARN() bool {
32661	if s.Bucket == nil {
32662		return false
32663	}
32664	return arn.IsARN(*s.Bucket)
32665}
32666
32667// updateArnableField updates the value of the input field that
32668// takes an ARN as an input. This method is useful to backfill
32669// the parsed resource name from ARN into the input member.
32670// It returns a pointer to a modified copy of input and an error.
32671// Note that original input is not modified.
32672func (s PutObjectInput) updateArnableField(v string) (interface{}, error) {
32673	if s.Bucket == nil {
32674		return nil, fmt.Errorf("member Bucket is nil")
32675	}
32676	s.Bucket = aws.String(v)
32677	return &s, nil
32678}
32679
32680type PutObjectLegalHoldInput struct {
32681	_ struct{} `locationName:"PutObjectLegalHoldRequest" type:"structure" payload:"LegalHold"`
32682
32683	// The bucket name containing the object that you want to place a Legal Hold
32684	// on.
32685	//
32686	// When using this action with an access point, you must direct requests to
32687	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
32688	// When using this action with an access point through the Amazon Web Services
32689	// SDKs, you provide the access point ARN in place of the bucket name. For more
32690	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
32691	// in the Amazon S3 User Guide.
32692	//
32693	// Bucket is a required field
32694	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32695
32696	// The account ID of the expected bucket owner. If the bucket is owned by a
32697	// different account, the request will fail with an HTTP 403 (Access Denied)
32698	// error.
32699	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32700
32701	// The key name for the object that you want to place a Legal Hold on.
32702	//
32703	// Key is a required field
32704	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
32705
32706	// Container element for the Legal Hold configuration you want to apply to the
32707	// specified object.
32708	LegalHold *ObjectLockLegalHold `locationName:"LegalHold" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
32709
32710	// Confirms that the requester knows that they will be charged for the request.
32711	// Bucket owners need not specify this parameter in their requests. For information
32712	// about downloading objects from requester pays buckets, see Downloading Objects
32713	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32714	// in the Amazon S3 User Guide.
32715	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32716
32717	// The version ID of the object that you want to place a Legal Hold on.
32718	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
32719}
32720
32721// String returns the string representation.
32722//
32723// API parameter values that are decorated as "sensitive" in the API will not
32724// be included in the string output. The member name will be present, but the
32725// value will be replaced with "sensitive".
32726func (s PutObjectLegalHoldInput) String() string {
32727	return awsutil.Prettify(s)
32728}
32729
32730// GoString returns the string representation.
32731//
32732// API parameter values that are decorated as "sensitive" in the API will not
32733// be included in the string output. The member name will be present, but the
32734// value will be replaced with "sensitive".
32735func (s PutObjectLegalHoldInput) GoString() string {
32736	return s.String()
32737}
32738
32739// Validate inspects the fields of the type to determine if they are valid.
32740func (s *PutObjectLegalHoldInput) Validate() error {
32741	invalidParams := request.ErrInvalidParams{Context: "PutObjectLegalHoldInput"}
32742	if s.Bucket == nil {
32743		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32744	}
32745	if s.Bucket != nil && len(*s.Bucket) < 1 {
32746		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32747	}
32748	if s.Key == nil {
32749		invalidParams.Add(request.NewErrParamRequired("Key"))
32750	}
32751	if s.Key != nil && len(*s.Key) < 1 {
32752		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
32753	}
32754
32755	if invalidParams.Len() > 0 {
32756		return invalidParams
32757	}
32758	return nil
32759}
32760
32761// SetBucket sets the Bucket field's value.
32762func (s *PutObjectLegalHoldInput) SetBucket(v string) *PutObjectLegalHoldInput {
32763	s.Bucket = &v
32764	return s
32765}
32766
32767func (s *PutObjectLegalHoldInput) getBucket() (v string) {
32768	if s.Bucket == nil {
32769		return v
32770	}
32771	return *s.Bucket
32772}
32773
32774// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32775func (s *PutObjectLegalHoldInput) SetExpectedBucketOwner(v string) *PutObjectLegalHoldInput {
32776	s.ExpectedBucketOwner = &v
32777	return s
32778}
32779
32780// SetKey sets the Key field's value.
32781func (s *PutObjectLegalHoldInput) SetKey(v string) *PutObjectLegalHoldInput {
32782	s.Key = &v
32783	return s
32784}
32785
32786// SetLegalHold sets the LegalHold field's value.
32787func (s *PutObjectLegalHoldInput) SetLegalHold(v *ObjectLockLegalHold) *PutObjectLegalHoldInput {
32788	s.LegalHold = v
32789	return s
32790}
32791
32792// SetRequestPayer sets the RequestPayer field's value.
32793func (s *PutObjectLegalHoldInput) SetRequestPayer(v string) *PutObjectLegalHoldInput {
32794	s.RequestPayer = &v
32795	return s
32796}
32797
32798// SetVersionId sets the VersionId field's value.
32799func (s *PutObjectLegalHoldInput) SetVersionId(v string) *PutObjectLegalHoldInput {
32800	s.VersionId = &v
32801	return s
32802}
32803
32804func (s *PutObjectLegalHoldInput) getEndpointARN() (arn.Resource, error) {
32805	if s.Bucket == nil {
32806		return nil, fmt.Errorf("member Bucket is nil")
32807	}
32808	return parseEndpointARN(*s.Bucket)
32809}
32810
32811func (s *PutObjectLegalHoldInput) hasEndpointARN() bool {
32812	if s.Bucket == nil {
32813		return false
32814	}
32815	return arn.IsARN(*s.Bucket)
32816}
32817
32818// updateArnableField updates the value of the input field that
32819// takes an ARN as an input. This method is useful to backfill
32820// the parsed resource name from ARN into the input member.
32821// It returns a pointer to a modified copy of input and an error.
32822// Note that original input is not modified.
32823func (s PutObjectLegalHoldInput) updateArnableField(v string) (interface{}, error) {
32824	if s.Bucket == nil {
32825		return nil, fmt.Errorf("member Bucket is nil")
32826	}
32827	s.Bucket = aws.String(v)
32828	return &s, nil
32829}
32830
32831type PutObjectLegalHoldOutput struct {
32832	_ struct{} `type:"structure"`
32833
32834	// If present, indicates that the requester was successfully charged for the
32835	// request.
32836	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
32837}
32838
32839// String returns the string representation.
32840//
32841// API parameter values that are decorated as "sensitive" in the API will not
32842// be included in the string output. The member name will be present, but the
32843// value will be replaced with "sensitive".
32844func (s PutObjectLegalHoldOutput) String() string {
32845	return awsutil.Prettify(s)
32846}
32847
32848// GoString returns the string representation.
32849//
32850// API parameter values that are decorated as "sensitive" in the API will not
32851// be included in the string output. The member name will be present, but the
32852// value will be replaced with "sensitive".
32853func (s PutObjectLegalHoldOutput) GoString() string {
32854	return s.String()
32855}
32856
32857// SetRequestCharged sets the RequestCharged field's value.
32858func (s *PutObjectLegalHoldOutput) SetRequestCharged(v string) *PutObjectLegalHoldOutput {
32859	s.RequestCharged = &v
32860	return s
32861}
32862
32863type PutObjectLockConfigurationInput struct {
32864	_ struct{} `locationName:"PutObjectLockConfigurationRequest" type:"structure" payload:"ObjectLockConfiguration"`
32865
32866	// The bucket whose Object Lock configuration you want to create or replace.
32867	//
32868	// Bucket is a required field
32869	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
32870
32871	// The account ID of the expected bucket owner. If the bucket is owned by a
32872	// different account, the request will fail with an HTTP 403 (Access Denied)
32873	// error.
32874	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
32875
32876	// The Object Lock configuration that you want to apply to the specified bucket.
32877	ObjectLockConfiguration *ObjectLockConfiguration `locationName:"ObjectLockConfiguration" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
32878
32879	// Confirms that the requester knows that they will be charged for the request.
32880	// Bucket owners need not specify this parameter in their requests. For information
32881	// about downloading objects from requester pays buckets, see Downloading Objects
32882	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
32883	// in the Amazon S3 User Guide.
32884	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
32885
32886	// A token to allow Object Lock to be enabled for an existing bucket.
32887	Token *string `location:"header" locationName:"x-amz-bucket-object-lock-token" type:"string"`
32888}
32889
32890// String returns the string representation.
32891//
32892// API parameter values that are decorated as "sensitive" in the API will not
32893// be included in the string output. The member name will be present, but the
32894// value will be replaced with "sensitive".
32895func (s PutObjectLockConfigurationInput) String() string {
32896	return awsutil.Prettify(s)
32897}
32898
32899// GoString returns the string representation.
32900//
32901// API parameter values that are decorated as "sensitive" in the API will not
32902// be included in the string output. The member name will be present, but the
32903// value will be replaced with "sensitive".
32904func (s PutObjectLockConfigurationInput) GoString() string {
32905	return s.String()
32906}
32907
32908// Validate inspects the fields of the type to determine if they are valid.
32909func (s *PutObjectLockConfigurationInput) Validate() error {
32910	invalidParams := request.ErrInvalidParams{Context: "PutObjectLockConfigurationInput"}
32911	if s.Bucket == nil {
32912		invalidParams.Add(request.NewErrParamRequired("Bucket"))
32913	}
32914	if s.Bucket != nil && len(*s.Bucket) < 1 {
32915		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
32916	}
32917
32918	if invalidParams.Len() > 0 {
32919		return invalidParams
32920	}
32921	return nil
32922}
32923
32924// SetBucket sets the Bucket field's value.
32925func (s *PutObjectLockConfigurationInput) SetBucket(v string) *PutObjectLockConfigurationInput {
32926	s.Bucket = &v
32927	return s
32928}
32929
32930func (s *PutObjectLockConfigurationInput) getBucket() (v string) {
32931	if s.Bucket == nil {
32932		return v
32933	}
32934	return *s.Bucket
32935}
32936
32937// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
32938func (s *PutObjectLockConfigurationInput) SetExpectedBucketOwner(v string) *PutObjectLockConfigurationInput {
32939	s.ExpectedBucketOwner = &v
32940	return s
32941}
32942
32943// SetObjectLockConfiguration sets the ObjectLockConfiguration field's value.
32944func (s *PutObjectLockConfigurationInput) SetObjectLockConfiguration(v *ObjectLockConfiguration) *PutObjectLockConfigurationInput {
32945	s.ObjectLockConfiguration = v
32946	return s
32947}
32948
32949// SetRequestPayer sets the RequestPayer field's value.
32950func (s *PutObjectLockConfigurationInput) SetRequestPayer(v string) *PutObjectLockConfigurationInput {
32951	s.RequestPayer = &v
32952	return s
32953}
32954
32955// SetToken sets the Token field's value.
32956func (s *PutObjectLockConfigurationInput) SetToken(v string) *PutObjectLockConfigurationInput {
32957	s.Token = &v
32958	return s
32959}
32960
32961func (s *PutObjectLockConfigurationInput) getEndpointARN() (arn.Resource, error) {
32962	if s.Bucket == nil {
32963		return nil, fmt.Errorf("member Bucket is nil")
32964	}
32965	return parseEndpointARN(*s.Bucket)
32966}
32967
32968func (s *PutObjectLockConfigurationInput) hasEndpointARN() bool {
32969	if s.Bucket == nil {
32970		return false
32971	}
32972	return arn.IsARN(*s.Bucket)
32973}
32974
32975// updateArnableField updates the value of the input field that
32976// takes an ARN as an input. This method is useful to backfill
32977// the parsed resource name from ARN into the input member.
32978// It returns a pointer to a modified copy of input and an error.
32979// Note that original input is not modified.
32980func (s PutObjectLockConfigurationInput) updateArnableField(v string) (interface{}, error) {
32981	if s.Bucket == nil {
32982		return nil, fmt.Errorf("member Bucket is nil")
32983	}
32984	s.Bucket = aws.String(v)
32985	return &s, nil
32986}
32987
32988type PutObjectLockConfigurationOutput struct {
32989	_ struct{} `type:"structure"`
32990
32991	// If present, indicates that the requester was successfully charged for the
32992	// request.
32993	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
32994}
32995
32996// String returns the string representation.
32997//
32998// API parameter values that are decorated as "sensitive" in the API will not
32999// be included in the string output. The member name will be present, but the
33000// value will be replaced with "sensitive".
33001func (s PutObjectLockConfigurationOutput) String() string {
33002	return awsutil.Prettify(s)
33003}
33004
33005// GoString returns the string representation.
33006//
33007// API parameter values that are decorated as "sensitive" in the API will not
33008// be included in the string output. The member name will be present, but the
33009// value will be replaced with "sensitive".
33010func (s PutObjectLockConfigurationOutput) GoString() string {
33011	return s.String()
33012}
33013
33014// SetRequestCharged sets the RequestCharged field's value.
33015func (s *PutObjectLockConfigurationOutput) SetRequestCharged(v string) *PutObjectLockConfigurationOutput {
33016	s.RequestCharged = &v
33017	return s
33018}
33019
33020type PutObjectOutput struct {
33021	_ struct{} `type:"structure"`
33022
33023	// Indicates whether the uploaded object uses an S3 Bucket Key for server-side
33024	// encryption with Amazon Web Services KMS (SSE-KMS).
33025	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
33026
33027	// Entity tag for the uploaded object.
33028	ETag *string `location:"header" locationName:"ETag" type:"string"`
33029
33030	// If the expiration is configured for the object (see PutBucketLifecycleConfiguration
33031	// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html)),
33032	// the response includes this header. It includes the expiry-date and rule-id
33033	// key-value pairs that provide information about object expiration. The value
33034	// of the rule-id is URL encoded.
33035	Expiration *string `location:"header" locationName:"x-amz-expiration" type:"string"`
33036
33037	// If present, indicates that the requester was successfully charged for the
33038	// request.
33039	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
33040
33041	// If server-side encryption with a customer-provided encryption key was requested,
33042	// the response will include this header confirming the encryption algorithm
33043	// used.
33044	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
33045
33046	// If server-side encryption with a customer-provided encryption key was requested,
33047	// the response will include this header to provide round-trip message integrity
33048	// verification of the customer-provided encryption key.
33049	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
33050
33051	// If present, specifies the Amazon Web Services KMS Encryption Context to use
33052	// for object encryption. The value of this header is a base64-encoded UTF-8
33053	// string holding JSON with the encryption context key-value pairs.
33054	//
33055	// SSEKMSEncryptionContext is a sensitive parameter and its value will be
33056	// replaced with "sensitive" in string returned by PutObjectOutput's
33057	// String and GoString methods.
33058	SSEKMSEncryptionContext *string `location:"header" locationName:"x-amz-server-side-encryption-context" type:"string" sensitive:"true"`
33059
33060	// If x-amz-server-side-encryption is present and has the value of aws:kms,
33061	// this header specifies the ID of the Amazon Web Services Key Management Service
33062	// (Amazon Web Services KMS) symmetric customer managed key that was used for
33063	// the object.
33064	//
33065	// SSEKMSKeyId is a sensitive parameter and its value will be
33066	// replaced with "sensitive" in string returned by PutObjectOutput's
33067	// String and GoString methods.
33068	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
33069
33070	// If you specified server-side encryption either with an Amazon Web Services
33071	// KMS key or Amazon S3-managed encryption key in your PUT request, the response
33072	// includes this header. It confirms the encryption algorithm that Amazon S3
33073	// used to encrypt the object.
33074	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
33075
33076	// Version of the object.
33077	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
33078}
33079
33080// String returns the string representation.
33081//
33082// API parameter values that are decorated as "sensitive" in the API will not
33083// be included in the string output. The member name will be present, but the
33084// value will be replaced with "sensitive".
33085func (s PutObjectOutput) String() string {
33086	return awsutil.Prettify(s)
33087}
33088
33089// GoString returns the string representation.
33090//
33091// API parameter values that are decorated as "sensitive" in the API will not
33092// be included in the string output. The member name will be present, but the
33093// value will be replaced with "sensitive".
33094func (s PutObjectOutput) GoString() string {
33095	return s.String()
33096}
33097
33098// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
33099func (s *PutObjectOutput) SetBucketKeyEnabled(v bool) *PutObjectOutput {
33100	s.BucketKeyEnabled = &v
33101	return s
33102}
33103
33104// SetETag sets the ETag field's value.
33105func (s *PutObjectOutput) SetETag(v string) *PutObjectOutput {
33106	s.ETag = &v
33107	return s
33108}
33109
33110// SetExpiration sets the Expiration field's value.
33111func (s *PutObjectOutput) SetExpiration(v string) *PutObjectOutput {
33112	s.Expiration = &v
33113	return s
33114}
33115
33116// SetRequestCharged sets the RequestCharged field's value.
33117func (s *PutObjectOutput) SetRequestCharged(v string) *PutObjectOutput {
33118	s.RequestCharged = &v
33119	return s
33120}
33121
33122// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
33123func (s *PutObjectOutput) SetSSECustomerAlgorithm(v string) *PutObjectOutput {
33124	s.SSECustomerAlgorithm = &v
33125	return s
33126}
33127
33128// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
33129func (s *PutObjectOutput) SetSSECustomerKeyMD5(v string) *PutObjectOutput {
33130	s.SSECustomerKeyMD5 = &v
33131	return s
33132}
33133
33134// SetSSEKMSEncryptionContext sets the SSEKMSEncryptionContext field's value.
33135func (s *PutObjectOutput) SetSSEKMSEncryptionContext(v string) *PutObjectOutput {
33136	s.SSEKMSEncryptionContext = &v
33137	return s
33138}
33139
33140// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
33141func (s *PutObjectOutput) SetSSEKMSKeyId(v string) *PutObjectOutput {
33142	s.SSEKMSKeyId = &v
33143	return s
33144}
33145
33146// SetServerSideEncryption sets the ServerSideEncryption field's value.
33147func (s *PutObjectOutput) SetServerSideEncryption(v string) *PutObjectOutput {
33148	s.ServerSideEncryption = &v
33149	return s
33150}
33151
33152// SetVersionId sets the VersionId field's value.
33153func (s *PutObjectOutput) SetVersionId(v string) *PutObjectOutput {
33154	s.VersionId = &v
33155	return s
33156}
33157
33158type PutObjectRetentionInput struct {
33159	_ struct{} `locationName:"PutObjectRetentionRequest" type:"structure" payload:"Retention"`
33160
33161	// The bucket name that contains the object you want to apply this Object Retention
33162	// configuration to.
33163	//
33164	// When using this action with an access point, you must direct requests to
33165	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
33166	// When using this action with an access point through the Amazon Web Services
33167	// SDKs, you provide the access point ARN in place of the bucket name. For more
33168	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
33169	// in the Amazon S3 User Guide.
33170	//
33171	// Bucket is a required field
33172	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
33173
33174	// Indicates whether this action should bypass Governance-mode restrictions.
33175	BypassGovernanceRetention *bool `location:"header" locationName:"x-amz-bypass-governance-retention" type:"boolean"`
33176
33177	// The account ID of the expected bucket owner. If the bucket is owned by a
33178	// different account, the request will fail with an HTTP 403 (Access Denied)
33179	// error.
33180	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
33181
33182	// The key name for the object that you want to apply this Object Retention
33183	// configuration to.
33184	//
33185	// Key is a required field
33186	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
33187
33188	// Confirms that the requester knows that they will be charged for the request.
33189	// Bucket owners need not specify this parameter in their requests. For information
33190	// about downloading objects from requester pays buckets, see Downloading Objects
33191	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
33192	// in the Amazon S3 User Guide.
33193	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
33194
33195	// The container element for the Object Retention configuration.
33196	Retention *ObjectLockRetention `locationName:"Retention" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
33197
33198	// The version ID for the object that you want to apply this Object Retention
33199	// configuration to.
33200	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
33201}
33202
33203// String returns the string representation.
33204//
33205// API parameter values that are decorated as "sensitive" in the API will not
33206// be included in the string output. The member name will be present, but the
33207// value will be replaced with "sensitive".
33208func (s PutObjectRetentionInput) String() string {
33209	return awsutil.Prettify(s)
33210}
33211
33212// GoString returns the string representation.
33213//
33214// API parameter values that are decorated as "sensitive" in the API will not
33215// be included in the string output. The member name will be present, but the
33216// value will be replaced with "sensitive".
33217func (s PutObjectRetentionInput) GoString() string {
33218	return s.String()
33219}
33220
33221// Validate inspects the fields of the type to determine if they are valid.
33222func (s *PutObjectRetentionInput) Validate() error {
33223	invalidParams := request.ErrInvalidParams{Context: "PutObjectRetentionInput"}
33224	if s.Bucket == nil {
33225		invalidParams.Add(request.NewErrParamRequired("Bucket"))
33226	}
33227	if s.Bucket != nil && len(*s.Bucket) < 1 {
33228		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
33229	}
33230	if s.Key == nil {
33231		invalidParams.Add(request.NewErrParamRequired("Key"))
33232	}
33233	if s.Key != nil && len(*s.Key) < 1 {
33234		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
33235	}
33236
33237	if invalidParams.Len() > 0 {
33238		return invalidParams
33239	}
33240	return nil
33241}
33242
33243// SetBucket sets the Bucket field's value.
33244func (s *PutObjectRetentionInput) SetBucket(v string) *PutObjectRetentionInput {
33245	s.Bucket = &v
33246	return s
33247}
33248
33249func (s *PutObjectRetentionInput) getBucket() (v string) {
33250	if s.Bucket == nil {
33251		return v
33252	}
33253	return *s.Bucket
33254}
33255
33256// SetBypassGovernanceRetention sets the BypassGovernanceRetention field's value.
33257func (s *PutObjectRetentionInput) SetBypassGovernanceRetention(v bool) *PutObjectRetentionInput {
33258	s.BypassGovernanceRetention = &v
33259	return s
33260}
33261
33262// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33263func (s *PutObjectRetentionInput) SetExpectedBucketOwner(v string) *PutObjectRetentionInput {
33264	s.ExpectedBucketOwner = &v
33265	return s
33266}
33267
33268// SetKey sets the Key field's value.
33269func (s *PutObjectRetentionInput) SetKey(v string) *PutObjectRetentionInput {
33270	s.Key = &v
33271	return s
33272}
33273
33274// SetRequestPayer sets the RequestPayer field's value.
33275func (s *PutObjectRetentionInput) SetRequestPayer(v string) *PutObjectRetentionInput {
33276	s.RequestPayer = &v
33277	return s
33278}
33279
33280// SetRetention sets the Retention field's value.
33281func (s *PutObjectRetentionInput) SetRetention(v *ObjectLockRetention) *PutObjectRetentionInput {
33282	s.Retention = v
33283	return s
33284}
33285
33286// SetVersionId sets the VersionId field's value.
33287func (s *PutObjectRetentionInput) SetVersionId(v string) *PutObjectRetentionInput {
33288	s.VersionId = &v
33289	return s
33290}
33291
33292func (s *PutObjectRetentionInput) getEndpointARN() (arn.Resource, error) {
33293	if s.Bucket == nil {
33294		return nil, fmt.Errorf("member Bucket is nil")
33295	}
33296	return parseEndpointARN(*s.Bucket)
33297}
33298
33299func (s *PutObjectRetentionInput) hasEndpointARN() bool {
33300	if s.Bucket == nil {
33301		return false
33302	}
33303	return arn.IsARN(*s.Bucket)
33304}
33305
33306// updateArnableField updates the value of the input field that
33307// takes an ARN as an input. This method is useful to backfill
33308// the parsed resource name from ARN into the input member.
33309// It returns a pointer to a modified copy of input and an error.
33310// Note that original input is not modified.
33311func (s PutObjectRetentionInput) updateArnableField(v string) (interface{}, error) {
33312	if s.Bucket == nil {
33313		return nil, fmt.Errorf("member Bucket is nil")
33314	}
33315	s.Bucket = aws.String(v)
33316	return &s, nil
33317}
33318
33319type PutObjectRetentionOutput struct {
33320	_ struct{} `type:"structure"`
33321
33322	// If present, indicates that the requester was successfully charged for the
33323	// request.
33324	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
33325}
33326
33327// String returns the string representation.
33328//
33329// API parameter values that are decorated as "sensitive" in the API will not
33330// be included in the string output. The member name will be present, but the
33331// value will be replaced with "sensitive".
33332func (s PutObjectRetentionOutput) String() string {
33333	return awsutil.Prettify(s)
33334}
33335
33336// GoString returns the string representation.
33337//
33338// API parameter values that are decorated as "sensitive" in the API will not
33339// be included in the string output. The member name will be present, but the
33340// value will be replaced with "sensitive".
33341func (s PutObjectRetentionOutput) GoString() string {
33342	return s.String()
33343}
33344
33345// SetRequestCharged sets the RequestCharged field's value.
33346func (s *PutObjectRetentionOutput) SetRequestCharged(v string) *PutObjectRetentionOutput {
33347	s.RequestCharged = &v
33348	return s
33349}
33350
33351type PutObjectTaggingInput struct {
33352	_ struct{} `locationName:"PutObjectTaggingRequest" type:"structure" payload:"Tagging"`
33353
33354	// The bucket name containing the object.
33355	//
33356	// When using this action with an access point, you must direct requests to
33357	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
33358	// When using this action with an access point through the Amazon Web Services
33359	// SDKs, you provide the access point ARN in place of the bucket name. For more
33360	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
33361	// in the Amazon S3 User Guide.
33362	//
33363	// When using this action with Amazon S3 on Outposts, you must direct requests
33364	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
33365	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
33366	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
33367	// you provide the Outposts bucket ARN in place of the bucket name. For more
33368	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
33369	// in the Amazon S3 User Guide.
33370	//
33371	// Bucket is a required field
33372	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
33373
33374	// The account ID of the expected bucket owner. If the bucket is owned by a
33375	// different account, the request will fail with an HTTP 403 (Access Denied)
33376	// error.
33377	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
33378
33379	// Name of the object key.
33380	//
33381	// Key is a required field
33382	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
33383
33384	// Confirms that the requester knows that they will be charged for the request.
33385	// Bucket owners need not specify this parameter in their requests. For information
33386	// about downloading objects from requester pays buckets, see Downloading Objects
33387	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
33388	// in the Amazon S3 User Guide.
33389	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
33390
33391	// Container for the TagSet and Tag elements
33392	//
33393	// Tagging is a required field
33394	Tagging *Tagging `locationName:"Tagging" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
33395
33396	// The versionId of the object that the tag-set will be added to.
33397	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
33398}
33399
33400// String returns the string representation.
33401//
33402// API parameter values that are decorated as "sensitive" in the API will not
33403// be included in the string output. The member name will be present, but the
33404// value will be replaced with "sensitive".
33405func (s PutObjectTaggingInput) String() string {
33406	return awsutil.Prettify(s)
33407}
33408
33409// GoString returns the string representation.
33410//
33411// API parameter values that are decorated as "sensitive" in the API will not
33412// be included in the string output. The member name will be present, but the
33413// value will be replaced with "sensitive".
33414func (s PutObjectTaggingInput) GoString() string {
33415	return s.String()
33416}
33417
33418// Validate inspects the fields of the type to determine if they are valid.
33419func (s *PutObjectTaggingInput) Validate() error {
33420	invalidParams := request.ErrInvalidParams{Context: "PutObjectTaggingInput"}
33421	if s.Bucket == nil {
33422		invalidParams.Add(request.NewErrParamRequired("Bucket"))
33423	}
33424	if s.Bucket != nil && len(*s.Bucket) < 1 {
33425		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
33426	}
33427	if s.Key == nil {
33428		invalidParams.Add(request.NewErrParamRequired("Key"))
33429	}
33430	if s.Key != nil && len(*s.Key) < 1 {
33431		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
33432	}
33433	if s.Tagging == nil {
33434		invalidParams.Add(request.NewErrParamRequired("Tagging"))
33435	}
33436	if s.Tagging != nil {
33437		if err := s.Tagging.Validate(); err != nil {
33438			invalidParams.AddNested("Tagging", err.(request.ErrInvalidParams))
33439		}
33440	}
33441
33442	if invalidParams.Len() > 0 {
33443		return invalidParams
33444	}
33445	return nil
33446}
33447
33448// SetBucket sets the Bucket field's value.
33449func (s *PutObjectTaggingInput) SetBucket(v string) *PutObjectTaggingInput {
33450	s.Bucket = &v
33451	return s
33452}
33453
33454func (s *PutObjectTaggingInput) getBucket() (v string) {
33455	if s.Bucket == nil {
33456		return v
33457	}
33458	return *s.Bucket
33459}
33460
33461// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33462func (s *PutObjectTaggingInput) SetExpectedBucketOwner(v string) *PutObjectTaggingInput {
33463	s.ExpectedBucketOwner = &v
33464	return s
33465}
33466
33467// SetKey sets the Key field's value.
33468func (s *PutObjectTaggingInput) SetKey(v string) *PutObjectTaggingInput {
33469	s.Key = &v
33470	return s
33471}
33472
33473// SetRequestPayer sets the RequestPayer field's value.
33474func (s *PutObjectTaggingInput) SetRequestPayer(v string) *PutObjectTaggingInput {
33475	s.RequestPayer = &v
33476	return s
33477}
33478
33479// SetTagging sets the Tagging field's value.
33480func (s *PutObjectTaggingInput) SetTagging(v *Tagging) *PutObjectTaggingInput {
33481	s.Tagging = v
33482	return s
33483}
33484
33485// SetVersionId sets the VersionId field's value.
33486func (s *PutObjectTaggingInput) SetVersionId(v string) *PutObjectTaggingInput {
33487	s.VersionId = &v
33488	return s
33489}
33490
33491func (s *PutObjectTaggingInput) getEndpointARN() (arn.Resource, error) {
33492	if s.Bucket == nil {
33493		return nil, fmt.Errorf("member Bucket is nil")
33494	}
33495	return parseEndpointARN(*s.Bucket)
33496}
33497
33498func (s *PutObjectTaggingInput) hasEndpointARN() bool {
33499	if s.Bucket == nil {
33500		return false
33501	}
33502	return arn.IsARN(*s.Bucket)
33503}
33504
33505// updateArnableField updates the value of the input field that
33506// takes an ARN as an input. This method is useful to backfill
33507// the parsed resource name from ARN into the input member.
33508// It returns a pointer to a modified copy of input and an error.
33509// Note that original input is not modified.
33510func (s PutObjectTaggingInput) updateArnableField(v string) (interface{}, error) {
33511	if s.Bucket == nil {
33512		return nil, fmt.Errorf("member Bucket is nil")
33513	}
33514	s.Bucket = aws.String(v)
33515	return &s, nil
33516}
33517
33518type PutObjectTaggingOutput struct {
33519	_ struct{} `type:"structure"`
33520
33521	// The versionId of the object the tag-set was added to.
33522	VersionId *string `location:"header" locationName:"x-amz-version-id" type:"string"`
33523}
33524
33525// String returns the string representation.
33526//
33527// API parameter values that are decorated as "sensitive" in the API will not
33528// be included in the string output. The member name will be present, but the
33529// value will be replaced with "sensitive".
33530func (s PutObjectTaggingOutput) String() string {
33531	return awsutil.Prettify(s)
33532}
33533
33534// GoString returns the string representation.
33535//
33536// API parameter values that are decorated as "sensitive" in the API will not
33537// be included in the string output. The member name will be present, but the
33538// value will be replaced with "sensitive".
33539func (s PutObjectTaggingOutput) GoString() string {
33540	return s.String()
33541}
33542
33543// SetVersionId sets the VersionId field's value.
33544func (s *PutObjectTaggingOutput) SetVersionId(v string) *PutObjectTaggingOutput {
33545	s.VersionId = &v
33546	return s
33547}
33548
33549type PutPublicAccessBlockInput struct {
33550	_ struct{} `locationName:"PutPublicAccessBlockRequest" type:"structure" payload:"PublicAccessBlockConfiguration"`
33551
33552	// The name of the Amazon S3 bucket whose PublicAccessBlock configuration you
33553	// want to set.
33554	//
33555	// Bucket is a required field
33556	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
33557
33558	// The account ID of the expected bucket owner. If the bucket is owned by a
33559	// different account, the request will fail with an HTTP 403 (Access Denied)
33560	// error.
33561	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
33562
33563	// The PublicAccessBlock configuration that you want to apply to this Amazon
33564	// S3 bucket. You can enable the configuration options in any combination. For
33565	// more information about when Amazon S3 considers a bucket or object public,
33566	// 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)
33567	// in the Amazon S3 User Guide.
33568	//
33569	// PublicAccessBlockConfiguration is a required field
33570	PublicAccessBlockConfiguration *PublicAccessBlockConfiguration `locationName:"PublicAccessBlockConfiguration" type:"structure" required:"true" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
33571}
33572
33573// String returns the string representation.
33574//
33575// API parameter values that are decorated as "sensitive" in the API will not
33576// be included in the string output. The member name will be present, but the
33577// value will be replaced with "sensitive".
33578func (s PutPublicAccessBlockInput) String() string {
33579	return awsutil.Prettify(s)
33580}
33581
33582// GoString returns the string representation.
33583//
33584// API parameter values that are decorated as "sensitive" in the API will not
33585// be included in the string output. The member name will be present, but the
33586// value will be replaced with "sensitive".
33587func (s PutPublicAccessBlockInput) GoString() string {
33588	return s.String()
33589}
33590
33591// Validate inspects the fields of the type to determine if they are valid.
33592func (s *PutPublicAccessBlockInput) Validate() error {
33593	invalidParams := request.ErrInvalidParams{Context: "PutPublicAccessBlockInput"}
33594	if s.Bucket == nil {
33595		invalidParams.Add(request.NewErrParamRequired("Bucket"))
33596	}
33597	if s.Bucket != nil && len(*s.Bucket) < 1 {
33598		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
33599	}
33600	if s.PublicAccessBlockConfiguration == nil {
33601		invalidParams.Add(request.NewErrParamRequired("PublicAccessBlockConfiguration"))
33602	}
33603
33604	if invalidParams.Len() > 0 {
33605		return invalidParams
33606	}
33607	return nil
33608}
33609
33610// SetBucket sets the Bucket field's value.
33611func (s *PutPublicAccessBlockInput) SetBucket(v string) *PutPublicAccessBlockInput {
33612	s.Bucket = &v
33613	return s
33614}
33615
33616func (s *PutPublicAccessBlockInput) getBucket() (v string) {
33617	if s.Bucket == nil {
33618		return v
33619	}
33620	return *s.Bucket
33621}
33622
33623// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
33624func (s *PutPublicAccessBlockInput) SetExpectedBucketOwner(v string) *PutPublicAccessBlockInput {
33625	s.ExpectedBucketOwner = &v
33626	return s
33627}
33628
33629// SetPublicAccessBlockConfiguration sets the PublicAccessBlockConfiguration field's value.
33630func (s *PutPublicAccessBlockInput) SetPublicAccessBlockConfiguration(v *PublicAccessBlockConfiguration) *PutPublicAccessBlockInput {
33631	s.PublicAccessBlockConfiguration = v
33632	return s
33633}
33634
33635func (s *PutPublicAccessBlockInput) getEndpointARN() (arn.Resource, error) {
33636	if s.Bucket == nil {
33637		return nil, fmt.Errorf("member Bucket is nil")
33638	}
33639	return parseEndpointARN(*s.Bucket)
33640}
33641
33642func (s *PutPublicAccessBlockInput) hasEndpointARN() bool {
33643	if s.Bucket == nil {
33644		return false
33645	}
33646	return arn.IsARN(*s.Bucket)
33647}
33648
33649// updateArnableField updates the value of the input field that
33650// takes an ARN as an input. This method is useful to backfill
33651// the parsed resource name from ARN into the input member.
33652// It returns a pointer to a modified copy of input and an error.
33653// Note that original input is not modified.
33654func (s PutPublicAccessBlockInput) updateArnableField(v string) (interface{}, error) {
33655	if s.Bucket == nil {
33656		return nil, fmt.Errorf("member Bucket is nil")
33657	}
33658	s.Bucket = aws.String(v)
33659	return &s, nil
33660}
33661
33662type PutPublicAccessBlockOutput struct {
33663	_ struct{} `type:"structure"`
33664}
33665
33666// String returns the string representation.
33667//
33668// API parameter values that are decorated as "sensitive" in the API will not
33669// be included in the string output. The member name will be present, but the
33670// value will be replaced with "sensitive".
33671func (s PutPublicAccessBlockOutput) String() string {
33672	return awsutil.Prettify(s)
33673}
33674
33675// GoString returns the string representation.
33676//
33677// API parameter values that are decorated as "sensitive" in the API will not
33678// be included in the string output. The member name will be present, but the
33679// value will be replaced with "sensitive".
33680func (s PutPublicAccessBlockOutput) GoString() string {
33681	return s.String()
33682}
33683
33684// Specifies the configuration for publishing messages to an Amazon Simple Queue
33685// Service (Amazon SQS) queue when Amazon S3 detects specified events.
33686type QueueConfiguration struct {
33687	_ struct{} `type:"structure"`
33688
33689	// A collection of bucket events for which to send notifications
33690	//
33691	// Events is a required field
33692	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
33693
33694	// Specifies object key name filtering rules. For information about key name
33695	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
33696	// in the Amazon S3 User Guide.
33697	Filter *NotificationConfigurationFilter `type:"structure"`
33698
33699	// An optional unique identifier for configurations in a notification configuration.
33700	// If you don't provide one, Amazon S3 will assign an ID.
33701	Id *string `type:"string"`
33702
33703	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
33704	// publishes a message when it detects events of the specified type.
33705	//
33706	// QueueArn is a required field
33707	QueueArn *string `locationName:"Queue" type:"string" required:"true"`
33708}
33709
33710// String returns the string representation.
33711//
33712// API parameter values that are decorated as "sensitive" in the API will not
33713// be included in the string output. The member name will be present, but the
33714// value will be replaced with "sensitive".
33715func (s QueueConfiguration) String() string {
33716	return awsutil.Prettify(s)
33717}
33718
33719// GoString returns the string representation.
33720//
33721// API parameter values that are decorated as "sensitive" in the API will not
33722// be included in the string output. The member name will be present, but the
33723// value will be replaced with "sensitive".
33724func (s QueueConfiguration) GoString() string {
33725	return s.String()
33726}
33727
33728// Validate inspects the fields of the type to determine if they are valid.
33729func (s *QueueConfiguration) Validate() error {
33730	invalidParams := request.ErrInvalidParams{Context: "QueueConfiguration"}
33731	if s.Events == nil {
33732		invalidParams.Add(request.NewErrParamRequired("Events"))
33733	}
33734	if s.QueueArn == nil {
33735		invalidParams.Add(request.NewErrParamRequired("QueueArn"))
33736	}
33737
33738	if invalidParams.Len() > 0 {
33739		return invalidParams
33740	}
33741	return nil
33742}
33743
33744// SetEvents sets the Events field's value.
33745func (s *QueueConfiguration) SetEvents(v []*string) *QueueConfiguration {
33746	s.Events = v
33747	return s
33748}
33749
33750// SetFilter sets the Filter field's value.
33751func (s *QueueConfiguration) SetFilter(v *NotificationConfigurationFilter) *QueueConfiguration {
33752	s.Filter = v
33753	return s
33754}
33755
33756// SetId sets the Id field's value.
33757func (s *QueueConfiguration) SetId(v string) *QueueConfiguration {
33758	s.Id = &v
33759	return s
33760}
33761
33762// SetQueueArn sets the QueueArn field's value.
33763func (s *QueueConfiguration) SetQueueArn(v string) *QueueConfiguration {
33764	s.QueueArn = &v
33765	return s
33766}
33767
33768// This data type is deprecated. Use QueueConfiguration (https://docs.aws.amazon.com/AmazonS3/latest/API/API_QueueConfiguration.html)
33769// for the same purposes. This data type specifies the configuration for publishing
33770// messages to an Amazon Simple Queue Service (Amazon SQS) queue when Amazon
33771// S3 detects specified events.
33772type QueueConfigurationDeprecated struct {
33773	_ struct{} `type:"structure"`
33774
33775	// The bucket event for which to send notifications.
33776	//
33777	// Deprecated: Event has been deprecated
33778	Event *string `deprecated:"true" type:"string" enum:"Event"`
33779
33780	// A collection of bucket events for which to send notifications.
33781	Events []*string `locationName:"Event" type:"list" flattened:"true"`
33782
33783	// An optional unique identifier for configurations in a notification configuration.
33784	// If you don't provide one, Amazon S3 will assign an ID.
33785	Id *string `type:"string"`
33786
33787	// The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3
33788	// publishes a message when it detects events of the specified type.
33789	Queue *string `type:"string"`
33790}
33791
33792// String returns the string representation.
33793//
33794// API parameter values that are decorated as "sensitive" in the API will not
33795// be included in the string output. The member name will be present, but the
33796// value will be replaced with "sensitive".
33797func (s QueueConfigurationDeprecated) String() string {
33798	return awsutil.Prettify(s)
33799}
33800
33801// GoString returns the string representation.
33802//
33803// API parameter values that are decorated as "sensitive" in the API will not
33804// be included in the string output. The member name will be present, but the
33805// value will be replaced with "sensitive".
33806func (s QueueConfigurationDeprecated) GoString() string {
33807	return s.String()
33808}
33809
33810// SetEvent sets the Event field's value.
33811func (s *QueueConfigurationDeprecated) SetEvent(v string) *QueueConfigurationDeprecated {
33812	s.Event = &v
33813	return s
33814}
33815
33816// SetEvents sets the Events field's value.
33817func (s *QueueConfigurationDeprecated) SetEvents(v []*string) *QueueConfigurationDeprecated {
33818	s.Events = v
33819	return s
33820}
33821
33822// SetId sets the Id field's value.
33823func (s *QueueConfigurationDeprecated) SetId(v string) *QueueConfigurationDeprecated {
33824	s.Id = &v
33825	return s
33826}
33827
33828// SetQueue sets the Queue field's value.
33829func (s *QueueConfigurationDeprecated) SetQueue(v string) *QueueConfigurationDeprecated {
33830	s.Queue = &v
33831	return s
33832}
33833
33834// The container for the records event.
33835type RecordsEvent struct {
33836	_ struct{} `locationName:"RecordsEvent" type:"structure" payload:"Payload"`
33837
33838	// The byte array of partial, one or more result records.
33839	// Payload is automatically base64 encoded/decoded by the SDK.
33840	Payload []byte `type:"blob"`
33841}
33842
33843// String returns the string representation.
33844//
33845// API parameter values that are decorated as "sensitive" in the API will not
33846// be included in the string output. The member name will be present, but the
33847// value will be replaced with "sensitive".
33848func (s RecordsEvent) String() string {
33849	return awsutil.Prettify(s)
33850}
33851
33852// GoString returns the string representation.
33853//
33854// API parameter values that are decorated as "sensitive" in the API will not
33855// be included in the string output. The member name will be present, but the
33856// value will be replaced with "sensitive".
33857func (s RecordsEvent) GoString() string {
33858	return s.String()
33859}
33860
33861// SetPayload sets the Payload field's value.
33862func (s *RecordsEvent) SetPayload(v []byte) *RecordsEvent {
33863	s.Payload = v
33864	return s
33865}
33866
33867// The RecordsEvent is and event in the SelectObjectContentEventStream group of events.
33868func (s *RecordsEvent) eventSelectObjectContentEventStream() {}
33869
33870// UnmarshalEvent unmarshals the EventStream Message into the RecordsEvent value.
33871// This method is only used internally within the SDK's EventStream handling.
33872func (s *RecordsEvent) UnmarshalEvent(
33873	payloadUnmarshaler protocol.PayloadUnmarshaler,
33874	msg eventstream.Message,
33875) error {
33876	s.Payload = make([]byte, len(msg.Payload))
33877	copy(s.Payload, msg.Payload)
33878	return nil
33879}
33880
33881// MarshalEvent marshals the type into an stream event value. This method
33882// should only used internally within the SDK's EventStream handling.
33883func (s *RecordsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
33884	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
33885	msg.Headers.Set(":content-type", eventstream.StringValue("application/octet-stream"))
33886	msg.Payload = s.Payload
33887	return msg, err
33888}
33889
33890// Specifies how requests are redirected. In the event of an error, you can
33891// specify a different error code to return.
33892type Redirect struct {
33893	_ struct{} `type:"structure"`
33894
33895	// The host name to use in the redirect request.
33896	HostName *string `type:"string"`
33897
33898	// The HTTP redirect code to use on the response. Not required if one of the
33899	// siblings is present.
33900	HttpRedirectCode *string `type:"string"`
33901
33902	// Protocol to use when redirecting requests. The default is the protocol that
33903	// is used in the original request.
33904	Protocol *string `type:"string" enum:"Protocol"`
33905
33906	// The object key prefix to use in the redirect request. For example, to redirect
33907	// requests for all pages with prefix docs/ (objects in the docs/ folder) to
33908	// documents/, you can set a condition block with KeyPrefixEquals set to docs/
33909	// and in the Redirect set ReplaceKeyPrefixWith to /documents. Not required
33910	// if one of the siblings is present. Can be present only if ReplaceKeyWith
33911	// is not provided.
33912	//
33913	// Replacement must be made for object keys containing special characters (such
33914	// as carriage returns) when using XML requests. For more information, see XML
33915	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
33916	ReplaceKeyPrefixWith *string `type:"string"`
33917
33918	// The specific object key to use in the redirect request. For example, redirect
33919	// request to error.html. Not required if one of the siblings is present. Can
33920	// be present only if ReplaceKeyPrefixWith is not provided.
33921	//
33922	// Replacement must be made for object keys containing special characters (such
33923	// as carriage returns) when using XML requests. For more information, see XML
33924	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
33925	ReplaceKeyWith *string `type:"string"`
33926}
33927
33928// String returns the string representation.
33929//
33930// API parameter values that are decorated as "sensitive" in the API will not
33931// be included in the string output. The member name will be present, but the
33932// value will be replaced with "sensitive".
33933func (s Redirect) String() string {
33934	return awsutil.Prettify(s)
33935}
33936
33937// GoString returns the string representation.
33938//
33939// API parameter values that are decorated as "sensitive" in the API will not
33940// be included in the string output. The member name will be present, but the
33941// value will be replaced with "sensitive".
33942func (s Redirect) GoString() string {
33943	return s.String()
33944}
33945
33946// SetHostName sets the HostName field's value.
33947func (s *Redirect) SetHostName(v string) *Redirect {
33948	s.HostName = &v
33949	return s
33950}
33951
33952// SetHttpRedirectCode sets the HttpRedirectCode field's value.
33953func (s *Redirect) SetHttpRedirectCode(v string) *Redirect {
33954	s.HttpRedirectCode = &v
33955	return s
33956}
33957
33958// SetProtocol sets the Protocol field's value.
33959func (s *Redirect) SetProtocol(v string) *Redirect {
33960	s.Protocol = &v
33961	return s
33962}
33963
33964// SetReplaceKeyPrefixWith sets the ReplaceKeyPrefixWith field's value.
33965func (s *Redirect) SetReplaceKeyPrefixWith(v string) *Redirect {
33966	s.ReplaceKeyPrefixWith = &v
33967	return s
33968}
33969
33970// SetReplaceKeyWith sets the ReplaceKeyWith field's value.
33971func (s *Redirect) SetReplaceKeyWith(v string) *Redirect {
33972	s.ReplaceKeyWith = &v
33973	return s
33974}
33975
33976// Specifies the redirect behavior of all requests to a website endpoint of
33977// an Amazon S3 bucket.
33978type RedirectAllRequestsTo struct {
33979	_ struct{} `type:"structure"`
33980
33981	// Name of the host where requests are redirected.
33982	//
33983	// HostName is a required field
33984	HostName *string `type:"string" required:"true"`
33985
33986	// Protocol to use when redirecting requests. The default is the protocol that
33987	// is used in the original request.
33988	Protocol *string `type:"string" enum:"Protocol"`
33989}
33990
33991// String returns the string representation.
33992//
33993// API parameter values that are decorated as "sensitive" in the API will not
33994// be included in the string output. The member name will be present, but the
33995// value will be replaced with "sensitive".
33996func (s RedirectAllRequestsTo) String() string {
33997	return awsutil.Prettify(s)
33998}
33999
34000// GoString returns the string representation.
34001//
34002// API parameter values that are decorated as "sensitive" in the API will not
34003// be included in the string output. The member name will be present, but the
34004// value will be replaced with "sensitive".
34005func (s RedirectAllRequestsTo) GoString() string {
34006	return s.String()
34007}
34008
34009// Validate inspects the fields of the type to determine if they are valid.
34010func (s *RedirectAllRequestsTo) Validate() error {
34011	invalidParams := request.ErrInvalidParams{Context: "RedirectAllRequestsTo"}
34012	if s.HostName == nil {
34013		invalidParams.Add(request.NewErrParamRequired("HostName"))
34014	}
34015
34016	if invalidParams.Len() > 0 {
34017		return invalidParams
34018	}
34019	return nil
34020}
34021
34022// SetHostName sets the HostName field's value.
34023func (s *RedirectAllRequestsTo) SetHostName(v string) *RedirectAllRequestsTo {
34024	s.HostName = &v
34025	return s
34026}
34027
34028// SetProtocol sets the Protocol field's value.
34029func (s *RedirectAllRequestsTo) SetProtocol(v string) *RedirectAllRequestsTo {
34030	s.Protocol = &v
34031	return s
34032}
34033
34034// A filter that you can specify for selection for modifications on replicas.
34035// Amazon S3 doesn't replicate replica modifications by default. In the latest
34036// version of replication configuration (when Filter is specified), you can
34037// specify this element and set the status to Enabled to replicate modifications
34038// on replicas.
34039//
34040// If you don't specify the Filter element, Amazon S3 assumes that the replication
34041// configuration is the earlier version, V1. In the earlier version, this element
34042// is not allowed.
34043type ReplicaModifications struct {
34044	_ struct{} `type:"structure"`
34045
34046	// Specifies whether Amazon S3 replicates modifications on replicas.
34047	//
34048	// Status is a required field
34049	Status *string `type:"string" required:"true" enum:"ReplicaModificationsStatus"`
34050}
34051
34052// String returns the string representation.
34053//
34054// API parameter values that are decorated as "sensitive" in the API will not
34055// be included in the string output. The member name will be present, but the
34056// value will be replaced with "sensitive".
34057func (s ReplicaModifications) String() string {
34058	return awsutil.Prettify(s)
34059}
34060
34061// GoString returns the string representation.
34062//
34063// API parameter values that are decorated as "sensitive" in the API will not
34064// be included in the string output. The member name will be present, but the
34065// value will be replaced with "sensitive".
34066func (s ReplicaModifications) GoString() string {
34067	return s.String()
34068}
34069
34070// Validate inspects the fields of the type to determine if they are valid.
34071func (s *ReplicaModifications) Validate() error {
34072	invalidParams := request.ErrInvalidParams{Context: "ReplicaModifications"}
34073	if s.Status == nil {
34074		invalidParams.Add(request.NewErrParamRequired("Status"))
34075	}
34076
34077	if invalidParams.Len() > 0 {
34078		return invalidParams
34079	}
34080	return nil
34081}
34082
34083// SetStatus sets the Status field's value.
34084func (s *ReplicaModifications) SetStatus(v string) *ReplicaModifications {
34085	s.Status = &v
34086	return s
34087}
34088
34089// A container for replication rules. You can add up to 1,000 rules. The maximum
34090// size of a replication configuration is 2 MB.
34091type ReplicationConfiguration struct {
34092	_ struct{} `type:"structure"`
34093
34094	// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM)
34095	// role that Amazon S3 assumes when replicating objects. For more information,
34096	// see How to Set Up Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-how-setup.html)
34097	// in the Amazon S3 User Guide.
34098	//
34099	// Role is a required field
34100	Role *string `type:"string" required:"true"`
34101
34102	// A container for one or more replication rules. A replication configuration
34103	// must have at least one rule and can contain a maximum of 1,000 rules.
34104	//
34105	// Rules is a required field
34106	Rules []*ReplicationRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
34107}
34108
34109// String returns the string representation.
34110//
34111// API parameter values that are decorated as "sensitive" in the API will not
34112// be included in the string output. The member name will be present, but the
34113// value will be replaced with "sensitive".
34114func (s ReplicationConfiguration) String() string {
34115	return awsutil.Prettify(s)
34116}
34117
34118// GoString returns the string representation.
34119//
34120// API parameter values that are decorated as "sensitive" in the API will not
34121// be included in the string output. The member name will be present, but the
34122// value will be replaced with "sensitive".
34123func (s ReplicationConfiguration) GoString() string {
34124	return s.String()
34125}
34126
34127// Validate inspects the fields of the type to determine if they are valid.
34128func (s *ReplicationConfiguration) Validate() error {
34129	invalidParams := request.ErrInvalidParams{Context: "ReplicationConfiguration"}
34130	if s.Role == nil {
34131		invalidParams.Add(request.NewErrParamRequired("Role"))
34132	}
34133	if s.Rules == nil {
34134		invalidParams.Add(request.NewErrParamRequired("Rules"))
34135	}
34136	if s.Rules != nil {
34137		for i, v := range s.Rules {
34138			if v == nil {
34139				continue
34140			}
34141			if err := v.Validate(); err != nil {
34142				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
34143			}
34144		}
34145	}
34146
34147	if invalidParams.Len() > 0 {
34148		return invalidParams
34149	}
34150	return nil
34151}
34152
34153// SetRole sets the Role field's value.
34154func (s *ReplicationConfiguration) SetRole(v string) *ReplicationConfiguration {
34155	s.Role = &v
34156	return s
34157}
34158
34159// SetRules sets the Rules field's value.
34160func (s *ReplicationConfiguration) SetRules(v []*ReplicationRule) *ReplicationConfiguration {
34161	s.Rules = v
34162	return s
34163}
34164
34165// Specifies which Amazon S3 objects to replicate and where to store the replicas.
34166type ReplicationRule struct {
34167	_ struct{} `type:"structure"`
34168
34169	// Specifies whether Amazon S3 replicates delete markers. If you specify a Filter
34170	// in your replication configuration, you must also include a DeleteMarkerReplication
34171	// element. If your Filter includes a Tag element, the DeleteMarkerReplication
34172	// Status must be set to Disabled, because Amazon S3 does not support replicating
34173	// delete markers for tag-based rules. For an example configuration, see Basic
34174	// Rule Configuration (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-config-min-rule-config).
34175	//
34176	// For more information about delete marker replication, see Basic Rule Configuration
34177	// (https://docs.aws.amazon.com/AmazonS3/latest/dev/delete-marker-replication.html).
34178	//
34179	// If you are using an earlier version of the replication configuration, Amazon
34180	// S3 handles replication of delete markers differently. For more information,
34181	// see Backward Compatibility (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-add-config.html#replication-backward-compat-considerations).
34182	DeleteMarkerReplication *DeleteMarkerReplication `type:"structure"`
34183
34184	// A container for information about the replication destination and its configurations
34185	// including enabling the S3 Replication Time Control (S3 RTC).
34186	//
34187	// Destination is a required field
34188	Destination *Destination `type:"structure" required:"true"`
34189
34190	// Optional configuration to replicate existing source bucket objects. For more
34191	// information, see Replicating Existing Objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication-what-is-isnot-replicated.html#existing-object-replication)
34192	// in the Amazon S3 User Guide.
34193	ExistingObjectReplication *ExistingObjectReplication `type:"structure"`
34194
34195	// A filter that identifies the subset of objects to which the replication rule
34196	// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
34197	Filter *ReplicationRuleFilter `type:"structure"`
34198
34199	// A unique identifier for the rule. The maximum value is 255 characters.
34200	ID *string `type:"string"`
34201
34202	// An object key name prefix that identifies the object or objects to which
34203	// the rule applies. The maximum prefix length is 1,024 characters. To include
34204	// all objects in a bucket, specify an empty string.
34205	//
34206	// Replacement must be made for object keys containing special characters (such
34207	// as carriage returns) when using XML requests. For more information, see XML
34208	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
34209	//
34210	// Deprecated: Prefix has been deprecated
34211	Prefix *string `deprecated:"true" type:"string"`
34212
34213	// The priority indicates which rule has precedence whenever two or more replication
34214	// rules conflict. Amazon S3 will attempt to replicate objects according to
34215	// all replication rules. However, if there are two or more rules with the same
34216	// destination bucket, then objects will be replicated according to the rule
34217	// with the highest priority. The higher the number, the higher the priority.
34218	//
34219	// For more information, see Replication (https://docs.aws.amazon.com/AmazonS3/latest/dev/replication.html)
34220	// in the Amazon S3 User Guide.
34221	Priority *int64 `type:"integer"`
34222
34223	// A container that describes additional filters for identifying the source
34224	// objects that you want to replicate. You can choose to enable or disable the
34225	// replication of these objects. Currently, Amazon S3 supports only the filter
34226	// that you can specify for objects created with server-side encryption using
34227	// a customer managed key stored in Amazon Web Services Key Management Service
34228	// (SSE-KMS).
34229	SourceSelectionCriteria *SourceSelectionCriteria `type:"structure"`
34230
34231	// Specifies whether the rule is enabled.
34232	//
34233	// Status is a required field
34234	Status *string `type:"string" required:"true" enum:"ReplicationRuleStatus"`
34235}
34236
34237// String returns the string representation.
34238//
34239// API parameter values that are decorated as "sensitive" in the API will not
34240// be included in the string output. The member name will be present, but the
34241// value will be replaced with "sensitive".
34242func (s ReplicationRule) String() string {
34243	return awsutil.Prettify(s)
34244}
34245
34246// GoString returns the string representation.
34247//
34248// API parameter values that are decorated as "sensitive" in the API will not
34249// be included in the string output. The member name will be present, but the
34250// value will be replaced with "sensitive".
34251func (s ReplicationRule) GoString() string {
34252	return s.String()
34253}
34254
34255// Validate inspects the fields of the type to determine if they are valid.
34256func (s *ReplicationRule) Validate() error {
34257	invalidParams := request.ErrInvalidParams{Context: "ReplicationRule"}
34258	if s.Destination == nil {
34259		invalidParams.Add(request.NewErrParamRequired("Destination"))
34260	}
34261	if s.Status == nil {
34262		invalidParams.Add(request.NewErrParamRequired("Status"))
34263	}
34264	if s.Destination != nil {
34265		if err := s.Destination.Validate(); err != nil {
34266			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
34267		}
34268	}
34269	if s.ExistingObjectReplication != nil {
34270		if err := s.ExistingObjectReplication.Validate(); err != nil {
34271			invalidParams.AddNested("ExistingObjectReplication", err.(request.ErrInvalidParams))
34272		}
34273	}
34274	if s.Filter != nil {
34275		if err := s.Filter.Validate(); err != nil {
34276			invalidParams.AddNested("Filter", err.(request.ErrInvalidParams))
34277		}
34278	}
34279	if s.SourceSelectionCriteria != nil {
34280		if err := s.SourceSelectionCriteria.Validate(); err != nil {
34281			invalidParams.AddNested("SourceSelectionCriteria", err.(request.ErrInvalidParams))
34282		}
34283	}
34284
34285	if invalidParams.Len() > 0 {
34286		return invalidParams
34287	}
34288	return nil
34289}
34290
34291// SetDeleteMarkerReplication sets the DeleteMarkerReplication field's value.
34292func (s *ReplicationRule) SetDeleteMarkerReplication(v *DeleteMarkerReplication) *ReplicationRule {
34293	s.DeleteMarkerReplication = v
34294	return s
34295}
34296
34297// SetDestination sets the Destination field's value.
34298func (s *ReplicationRule) SetDestination(v *Destination) *ReplicationRule {
34299	s.Destination = v
34300	return s
34301}
34302
34303// SetExistingObjectReplication sets the ExistingObjectReplication field's value.
34304func (s *ReplicationRule) SetExistingObjectReplication(v *ExistingObjectReplication) *ReplicationRule {
34305	s.ExistingObjectReplication = v
34306	return s
34307}
34308
34309// SetFilter sets the Filter field's value.
34310func (s *ReplicationRule) SetFilter(v *ReplicationRuleFilter) *ReplicationRule {
34311	s.Filter = v
34312	return s
34313}
34314
34315// SetID sets the ID field's value.
34316func (s *ReplicationRule) SetID(v string) *ReplicationRule {
34317	s.ID = &v
34318	return s
34319}
34320
34321// SetPrefix sets the Prefix field's value.
34322func (s *ReplicationRule) SetPrefix(v string) *ReplicationRule {
34323	s.Prefix = &v
34324	return s
34325}
34326
34327// SetPriority sets the Priority field's value.
34328func (s *ReplicationRule) SetPriority(v int64) *ReplicationRule {
34329	s.Priority = &v
34330	return s
34331}
34332
34333// SetSourceSelectionCriteria sets the SourceSelectionCriteria field's value.
34334func (s *ReplicationRule) SetSourceSelectionCriteria(v *SourceSelectionCriteria) *ReplicationRule {
34335	s.SourceSelectionCriteria = v
34336	return s
34337}
34338
34339// SetStatus sets the Status field's value.
34340func (s *ReplicationRule) SetStatus(v string) *ReplicationRule {
34341	s.Status = &v
34342	return s
34343}
34344
34345// A container for specifying rule filters. The filters determine the subset
34346// of objects to which the rule applies. This element is required only if you
34347// specify more than one filter.
34348//
34349// For example:
34350//
34351//    * If you specify both a Prefix and a Tag filter, wrap these filters in
34352//    an And tag.
34353//
34354//    * If you specify a filter based on multiple tags, wrap the Tag elements
34355//    in an And tag.
34356type ReplicationRuleAndOperator struct {
34357	_ struct{} `type:"structure"`
34358
34359	// An object key name prefix that identifies the subset of objects to which
34360	// the rule applies.
34361	Prefix *string `type:"string"`
34362
34363	// An array of tags containing key and value pairs.
34364	Tags []*Tag `locationName:"Tag" locationNameList:"Tag" type:"list" flattened:"true"`
34365}
34366
34367// String returns the string representation.
34368//
34369// API parameter values that are decorated as "sensitive" in the API will not
34370// be included in the string output. The member name will be present, but the
34371// value will be replaced with "sensitive".
34372func (s ReplicationRuleAndOperator) String() string {
34373	return awsutil.Prettify(s)
34374}
34375
34376// GoString returns the string representation.
34377//
34378// API parameter values that are decorated as "sensitive" in the API will not
34379// be included in the string output. The member name will be present, but the
34380// value will be replaced with "sensitive".
34381func (s ReplicationRuleAndOperator) GoString() string {
34382	return s.String()
34383}
34384
34385// Validate inspects the fields of the type to determine if they are valid.
34386func (s *ReplicationRuleAndOperator) Validate() error {
34387	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleAndOperator"}
34388	if s.Tags != nil {
34389		for i, v := range s.Tags {
34390			if v == nil {
34391				continue
34392			}
34393			if err := v.Validate(); err != nil {
34394				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Tags", i), err.(request.ErrInvalidParams))
34395			}
34396		}
34397	}
34398
34399	if invalidParams.Len() > 0 {
34400		return invalidParams
34401	}
34402	return nil
34403}
34404
34405// SetPrefix sets the Prefix field's value.
34406func (s *ReplicationRuleAndOperator) SetPrefix(v string) *ReplicationRuleAndOperator {
34407	s.Prefix = &v
34408	return s
34409}
34410
34411// SetTags sets the Tags field's value.
34412func (s *ReplicationRuleAndOperator) SetTags(v []*Tag) *ReplicationRuleAndOperator {
34413	s.Tags = v
34414	return s
34415}
34416
34417// A filter that identifies the subset of objects to which the replication rule
34418// applies. A Filter must specify exactly one Prefix, Tag, or an And child element.
34419type ReplicationRuleFilter struct {
34420	_ struct{} `type:"structure"`
34421
34422	// A container for specifying rule filters. The filters determine the subset
34423	// of objects to which the rule applies. This element is required only if you
34424	// specify more than one filter. For example:
34425	//
34426	//    * If you specify both a Prefix and a Tag filter, wrap these filters in
34427	//    an And tag.
34428	//
34429	//    * If you specify a filter based on multiple tags, wrap the Tag elements
34430	//    in an And tag.
34431	And *ReplicationRuleAndOperator `type:"structure"`
34432
34433	// An object key name prefix that identifies the subset of objects to which
34434	// the rule applies.
34435	//
34436	// Replacement must be made for object keys containing special characters (such
34437	// as carriage returns) when using XML requests. For more information, see XML
34438	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
34439	Prefix *string `type:"string"`
34440
34441	// A container for specifying a tag key and value.
34442	//
34443	// The rule applies only to objects that have the tag in their tag set.
34444	Tag *Tag `type:"structure"`
34445}
34446
34447// String returns the string representation.
34448//
34449// API parameter values that are decorated as "sensitive" in the API will not
34450// be included in the string output. The member name will be present, but the
34451// value will be replaced with "sensitive".
34452func (s ReplicationRuleFilter) String() string {
34453	return awsutil.Prettify(s)
34454}
34455
34456// GoString returns the string representation.
34457//
34458// API parameter values that are decorated as "sensitive" in the API will not
34459// be included in the string output. The member name will be present, but the
34460// value will be replaced with "sensitive".
34461func (s ReplicationRuleFilter) GoString() string {
34462	return s.String()
34463}
34464
34465// Validate inspects the fields of the type to determine if they are valid.
34466func (s *ReplicationRuleFilter) Validate() error {
34467	invalidParams := request.ErrInvalidParams{Context: "ReplicationRuleFilter"}
34468	if s.And != nil {
34469		if err := s.And.Validate(); err != nil {
34470			invalidParams.AddNested("And", err.(request.ErrInvalidParams))
34471		}
34472	}
34473	if s.Tag != nil {
34474		if err := s.Tag.Validate(); err != nil {
34475			invalidParams.AddNested("Tag", err.(request.ErrInvalidParams))
34476		}
34477	}
34478
34479	if invalidParams.Len() > 0 {
34480		return invalidParams
34481	}
34482	return nil
34483}
34484
34485// SetAnd sets the And field's value.
34486func (s *ReplicationRuleFilter) SetAnd(v *ReplicationRuleAndOperator) *ReplicationRuleFilter {
34487	s.And = v
34488	return s
34489}
34490
34491// SetPrefix sets the Prefix field's value.
34492func (s *ReplicationRuleFilter) SetPrefix(v string) *ReplicationRuleFilter {
34493	s.Prefix = &v
34494	return s
34495}
34496
34497// SetTag sets the Tag field's value.
34498func (s *ReplicationRuleFilter) SetTag(v *Tag) *ReplicationRuleFilter {
34499	s.Tag = v
34500	return s
34501}
34502
34503// A container specifying S3 Replication Time Control (S3 RTC) related information,
34504// including whether S3 RTC is enabled and the time when all objects and operations
34505// on objects must be replicated. Must be specified together with a Metrics
34506// block.
34507type ReplicationTime struct {
34508	_ struct{} `type:"structure"`
34509
34510	// Specifies whether the replication time is enabled.
34511	//
34512	// Status is a required field
34513	Status *string `type:"string" required:"true" enum:"ReplicationTimeStatus"`
34514
34515	// A container specifying the time by which replication should be complete for
34516	// all objects and operations on objects.
34517	//
34518	// Time is a required field
34519	Time *ReplicationTimeValue `type:"structure" required:"true"`
34520}
34521
34522// String returns the string representation.
34523//
34524// API parameter values that are decorated as "sensitive" in the API will not
34525// be included in the string output. The member name will be present, but the
34526// value will be replaced with "sensitive".
34527func (s ReplicationTime) String() string {
34528	return awsutil.Prettify(s)
34529}
34530
34531// GoString returns the string representation.
34532//
34533// API parameter values that are decorated as "sensitive" in the API will not
34534// be included in the string output. The member name will be present, but the
34535// value will be replaced with "sensitive".
34536func (s ReplicationTime) GoString() string {
34537	return s.String()
34538}
34539
34540// Validate inspects the fields of the type to determine if they are valid.
34541func (s *ReplicationTime) Validate() error {
34542	invalidParams := request.ErrInvalidParams{Context: "ReplicationTime"}
34543	if s.Status == nil {
34544		invalidParams.Add(request.NewErrParamRequired("Status"))
34545	}
34546	if s.Time == nil {
34547		invalidParams.Add(request.NewErrParamRequired("Time"))
34548	}
34549
34550	if invalidParams.Len() > 0 {
34551		return invalidParams
34552	}
34553	return nil
34554}
34555
34556// SetStatus sets the Status field's value.
34557func (s *ReplicationTime) SetStatus(v string) *ReplicationTime {
34558	s.Status = &v
34559	return s
34560}
34561
34562// SetTime sets the Time field's value.
34563func (s *ReplicationTime) SetTime(v *ReplicationTimeValue) *ReplicationTime {
34564	s.Time = v
34565	return s
34566}
34567
34568// A container specifying the time value for S3 Replication Time Control (S3
34569// RTC) and replication metrics EventThreshold.
34570type ReplicationTimeValue struct {
34571	_ struct{} `type:"structure"`
34572
34573	// Contains an integer specifying time in minutes.
34574	//
34575	// Valid value: 15
34576	Minutes *int64 `type:"integer"`
34577}
34578
34579// String returns the string representation.
34580//
34581// API parameter values that are decorated as "sensitive" in the API will not
34582// be included in the string output. The member name will be present, but the
34583// value will be replaced with "sensitive".
34584func (s ReplicationTimeValue) String() string {
34585	return awsutil.Prettify(s)
34586}
34587
34588// GoString returns the string representation.
34589//
34590// API parameter values that are decorated as "sensitive" in the API will not
34591// be included in the string output. The member name will be present, but the
34592// value will be replaced with "sensitive".
34593func (s ReplicationTimeValue) GoString() string {
34594	return s.String()
34595}
34596
34597// SetMinutes sets the Minutes field's value.
34598func (s *ReplicationTimeValue) SetMinutes(v int64) *ReplicationTimeValue {
34599	s.Minutes = &v
34600	return s
34601}
34602
34603// Container for Payer.
34604type RequestPaymentConfiguration struct {
34605	_ struct{} `type:"structure"`
34606
34607	// Specifies who pays for the download and request fees.
34608	//
34609	// Payer is a required field
34610	Payer *string `type:"string" required:"true" enum:"Payer"`
34611}
34612
34613// String returns the string representation.
34614//
34615// API parameter values that are decorated as "sensitive" in the API will not
34616// be included in the string output. The member name will be present, but the
34617// value will be replaced with "sensitive".
34618func (s RequestPaymentConfiguration) String() string {
34619	return awsutil.Prettify(s)
34620}
34621
34622// GoString returns the string representation.
34623//
34624// API parameter values that are decorated as "sensitive" in the API will not
34625// be included in the string output. The member name will be present, but the
34626// value will be replaced with "sensitive".
34627func (s RequestPaymentConfiguration) GoString() string {
34628	return s.String()
34629}
34630
34631// Validate inspects the fields of the type to determine if they are valid.
34632func (s *RequestPaymentConfiguration) Validate() error {
34633	invalidParams := request.ErrInvalidParams{Context: "RequestPaymentConfiguration"}
34634	if s.Payer == nil {
34635		invalidParams.Add(request.NewErrParamRequired("Payer"))
34636	}
34637
34638	if invalidParams.Len() > 0 {
34639		return invalidParams
34640	}
34641	return nil
34642}
34643
34644// SetPayer sets the Payer field's value.
34645func (s *RequestPaymentConfiguration) SetPayer(v string) *RequestPaymentConfiguration {
34646	s.Payer = &v
34647	return s
34648}
34649
34650// Container for specifying if periodic QueryProgress messages should be sent.
34651type RequestProgress struct {
34652	_ struct{} `type:"structure"`
34653
34654	// Specifies whether periodic QueryProgress frames should be sent. Valid values:
34655	// TRUE, FALSE. Default value: FALSE.
34656	Enabled *bool `type:"boolean"`
34657}
34658
34659// String returns the string representation.
34660//
34661// API parameter values that are decorated as "sensitive" in the API will not
34662// be included in the string output. The member name will be present, but the
34663// value will be replaced with "sensitive".
34664func (s RequestProgress) String() string {
34665	return awsutil.Prettify(s)
34666}
34667
34668// GoString returns the string representation.
34669//
34670// API parameter values that are decorated as "sensitive" in the API will not
34671// be included in the string output. The member name will be present, but the
34672// value will be replaced with "sensitive".
34673func (s RequestProgress) GoString() string {
34674	return s.String()
34675}
34676
34677// SetEnabled sets the Enabled field's value.
34678func (s *RequestProgress) SetEnabled(v bool) *RequestProgress {
34679	s.Enabled = &v
34680	return s
34681}
34682
34683type RestoreObjectInput struct {
34684	_ struct{} `locationName:"RestoreObjectRequest" type:"structure" payload:"RestoreRequest"`
34685
34686	// The bucket name containing the object to restore.
34687	//
34688	// When using this action with an access point, you must direct requests to
34689	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
34690	// When using this action with an access point through the Amazon Web Services
34691	// SDKs, you provide the access point ARN in place of the bucket name. For more
34692	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
34693	// in the Amazon S3 User Guide.
34694	//
34695	// When using this action with Amazon S3 on Outposts, you must direct requests
34696	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
34697	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
34698	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
34699	// you provide the Outposts bucket ARN in place of the bucket name. For more
34700	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
34701	// in the Amazon S3 User Guide.
34702	//
34703	// Bucket is a required field
34704	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
34705
34706	// The account ID of the expected bucket owner. If the bucket is owned by a
34707	// different account, the request will fail with an HTTP 403 (Access Denied)
34708	// error.
34709	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
34710
34711	// Object key for which the action was initiated.
34712	//
34713	// Key is a required field
34714	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
34715
34716	// Confirms that the requester knows that they will be charged for the request.
34717	// Bucket owners need not specify this parameter in their requests. For information
34718	// about downloading objects from requester pays buckets, see Downloading Objects
34719	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
34720	// in the Amazon S3 User Guide.
34721	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
34722
34723	// Container for restore job parameters.
34724	RestoreRequest *RestoreRequest `locationName:"RestoreRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
34725
34726	// VersionId used to reference a specific version of the object.
34727	VersionId *string `location:"querystring" locationName:"versionId" type:"string"`
34728}
34729
34730// String returns the string representation.
34731//
34732// API parameter values that are decorated as "sensitive" in the API will not
34733// be included in the string output. The member name will be present, but the
34734// value will be replaced with "sensitive".
34735func (s RestoreObjectInput) String() string {
34736	return awsutil.Prettify(s)
34737}
34738
34739// GoString returns the string representation.
34740//
34741// API parameter values that are decorated as "sensitive" in the API will not
34742// be included in the string output. The member name will be present, but the
34743// value will be replaced with "sensitive".
34744func (s RestoreObjectInput) GoString() string {
34745	return s.String()
34746}
34747
34748// Validate inspects the fields of the type to determine if they are valid.
34749func (s *RestoreObjectInput) Validate() error {
34750	invalidParams := request.ErrInvalidParams{Context: "RestoreObjectInput"}
34751	if s.Bucket == nil {
34752		invalidParams.Add(request.NewErrParamRequired("Bucket"))
34753	}
34754	if s.Bucket != nil && len(*s.Bucket) < 1 {
34755		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
34756	}
34757	if s.Key == nil {
34758		invalidParams.Add(request.NewErrParamRequired("Key"))
34759	}
34760	if s.Key != nil && len(*s.Key) < 1 {
34761		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
34762	}
34763	if s.RestoreRequest != nil {
34764		if err := s.RestoreRequest.Validate(); err != nil {
34765			invalidParams.AddNested("RestoreRequest", err.(request.ErrInvalidParams))
34766		}
34767	}
34768
34769	if invalidParams.Len() > 0 {
34770		return invalidParams
34771	}
34772	return nil
34773}
34774
34775// SetBucket sets the Bucket field's value.
34776func (s *RestoreObjectInput) SetBucket(v string) *RestoreObjectInput {
34777	s.Bucket = &v
34778	return s
34779}
34780
34781func (s *RestoreObjectInput) getBucket() (v string) {
34782	if s.Bucket == nil {
34783		return v
34784	}
34785	return *s.Bucket
34786}
34787
34788// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
34789func (s *RestoreObjectInput) SetExpectedBucketOwner(v string) *RestoreObjectInput {
34790	s.ExpectedBucketOwner = &v
34791	return s
34792}
34793
34794// SetKey sets the Key field's value.
34795func (s *RestoreObjectInput) SetKey(v string) *RestoreObjectInput {
34796	s.Key = &v
34797	return s
34798}
34799
34800// SetRequestPayer sets the RequestPayer field's value.
34801func (s *RestoreObjectInput) SetRequestPayer(v string) *RestoreObjectInput {
34802	s.RequestPayer = &v
34803	return s
34804}
34805
34806// SetRestoreRequest sets the RestoreRequest field's value.
34807func (s *RestoreObjectInput) SetRestoreRequest(v *RestoreRequest) *RestoreObjectInput {
34808	s.RestoreRequest = v
34809	return s
34810}
34811
34812// SetVersionId sets the VersionId field's value.
34813func (s *RestoreObjectInput) SetVersionId(v string) *RestoreObjectInput {
34814	s.VersionId = &v
34815	return s
34816}
34817
34818func (s *RestoreObjectInput) getEndpointARN() (arn.Resource, error) {
34819	if s.Bucket == nil {
34820		return nil, fmt.Errorf("member Bucket is nil")
34821	}
34822	return parseEndpointARN(*s.Bucket)
34823}
34824
34825func (s *RestoreObjectInput) hasEndpointARN() bool {
34826	if s.Bucket == nil {
34827		return false
34828	}
34829	return arn.IsARN(*s.Bucket)
34830}
34831
34832// updateArnableField updates the value of the input field that
34833// takes an ARN as an input. This method is useful to backfill
34834// the parsed resource name from ARN into the input member.
34835// It returns a pointer to a modified copy of input and an error.
34836// Note that original input is not modified.
34837func (s RestoreObjectInput) updateArnableField(v string) (interface{}, error) {
34838	if s.Bucket == nil {
34839		return nil, fmt.Errorf("member Bucket is nil")
34840	}
34841	s.Bucket = aws.String(v)
34842	return &s, nil
34843}
34844
34845type RestoreObjectOutput struct {
34846	_ struct{} `type:"structure"`
34847
34848	// If present, indicates that the requester was successfully charged for the
34849	// request.
34850	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
34851
34852	// Indicates the path in the provided S3 output location where Select results
34853	// will be restored to.
34854	RestoreOutputPath *string `location:"header" locationName:"x-amz-restore-output-path" type:"string"`
34855}
34856
34857// String returns the string representation.
34858//
34859// API parameter values that are decorated as "sensitive" in the API will not
34860// be included in the string output. The member name will be present, but the
34861// value will be replaced with "sensitive".
34862func (s RestoreObjectOutput) String() string {
34863	return awsutil.Prettify(s)
34864}
34865
34866// GoString returns the string representation.
34867//
34868// API parameter values that are decorated as "sensitive" in the API will not
34869// be included in the string output. The member name will be present, but the
34870// value will be replaced with "sensitive".
34871func (s RestoreObjectOutput) GoString() string {
34872	return s.String()
34873}
34874
34875// SetRequestCharged sets the RequestCharged field's value.
34876func (s *RestoreObjectOutput) SetRequestCharged(v string) *RestoreObjectOutput {
34877	s.RequestCharged = &v
34878	return s
34879}
34880
34881// SetRestoreOutputPath sets the RestoreOutputPath field's value.
34882func (s *RestoreObjectOutput) SetRestoreOutputPath(v string) *RestoreObjectOutput {
34883	s.RestoreOutputPath = &v
34884	return s
34885}
34886
34887// Container for restore job parameters.
34888type RestoreRequest struct {
34889	_ struct{} `type:"structure"`
34890
34891	// Lifetime of the active copy in days. Do not use with restores that specify
34892	// OutputLocation.
34893	//
34894	// The Days element is required for regular restores, and must not be provided
34895	// for select requests.
34896	Days *int64 `type:"integer"`
34897
34898	// The optional description for the job.
34899	Description *string `type:"string"`
34900
34901	// S3 Glacier related parameters pertaining to this job. Do not use with restores
34902	// that specify OutputLocation.
34903	GlacierJobParameters *GlacierJobParameters `type:"structure"`
34904
34905	// Describes the location where the restore job's output is stored.
34906	OutputLocation *OutputLocation `type:"structure"`
34907
34908	// Describes the parameters for Select job types.
34909	SelectParameters *SelectParameters `type:"structure"`
34910
34911	// Retrieval tier at which the restore will be processed.
34912	Tier *string `type:"string" enum:"Tier"`
34913
34914	// Type of restore request.
34915	Type *string `type:"string" enum:"RestoreRequestType"`
34916}
34917
34918// String returns the string representation.
34919//
34920// API parameter values that are decorated as "sensitive" in the API will not
34921// be included in the string output. The member name will be present, but the
34922// value will be replaced with "sensitive".
34923func (s RestoreRequest) String() string {
34924	return awsutil.Prettify(s)
34925}
34926
34927// GoString returns the string representation.
34928//
34929// API parameter values that are decorated as "sensitive" in the API will not
34930// be included in the string output. The member name will be present, but the
34931// value will be replaced with "sensitive".
34932func (s RestoreRequest) GoString() string {
34933	return s.String()
34934}
34935
34936// Validate inspects the fields of the type to determine if they are valid.
34937func (s *RestoreRequest) Validate() error {
34938	invalidParams := request.ErrInvalidParams{Context: "RestoreRequest"}
34939	if s.GlacierJobParameters != nil {
34940		if err := s.GlacierJobParameters.Validate(); err != nil {
34941			invalidParams.AddNested("GlacierJobParameters", err.(request.ErrInvalidParams))
34942		}
34943	}
34944	if s.OutputLocation != nil {
34945		if err := s.OutputLocation.Validate(); err != nil {
34946			invalidParams.AddNested("OutputLocation", err.(request.ErrInvalidParams))
34947		}
34948	}
34949	if s.SelectParameters != nil {
34950		if err := s.SelectParameters.Validate(); err != nil {
34951			invalidParams.AddNested("SelectParameters", err.(request.ErrInvalidParams))
34952		}
34953	}
34954
34955	if invalidParams.Len() > 0 {
34956		return invalidParams
34957	}
34958	return nil
34959}
34960
34961// SetDays sets the Days field's value.
34962func (s *RestoreRequest) SetDays(v int64) *RestoreRequest {
34963	s.Days = &v
34964	return s
34965}
34966
34967// SetDescription sets the Description field's value.
34968func (s *RestoreRequest) SetDescription(v string) *RestoreRequest {
34969	s.Description = &v
34970	return s
34971}
34972
34973// SetGlacierJobParameters sets the GlacierJobParameters field's value.
34974func (s *RestoreRequest) SetGlacierJobParameters(v *GlacierJobParameters) *RestoreRequest {
34975	s.GlacierJobParameters = v
34976	return s
34977}
34978
34979// SetOutputLocation sets the OutputLocation field's value.
34980func (s *RestoreRequest) SetOutputLocation(v *OutputLocation) *RestoreRequest {
34981	s.OutputLocation = v
34982	return s
34983}
34984
34985// SetSelectParameters sets the SelectParameters field's value.
34986func (s *RestoreRequest) SetSelectParameters(v *SelectParameters) *RestoreRequest {
34987	s.SelectParameters = v
34988	return s
34989}
34990
34991// SetTier sets the Tier field's value.
34992func (s *RestoreRequest) SetTier(v string) *RestoreRequest {
34993	s.Tier = &v
34994	return s
34995}
34996
34997// SetType sets the Type field's value.
34998func (s *RestoreRequest) SetType(v string) *RestoreRequest {
34999	s.Type = &v
35000	return s
35001}
35002
35003// Specifies the redirect behavior and when a redirect is applied. For more
35004// information about routing rules, see Configuring advanced conditional redirects
35005// (https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html#advanced-conditional-redirects)
35006// in the Amazon S3 User Guide.
35007type RoutingRule struct {
35008	_ struct{} `type:"structure"`
35009
35010	// A container for describing a condition that must be met for the specified
35011	// redirect to apply. For example, 1. If request is for pages in the /docs folder,
35012	// redirect to the /documents folder. 2. If request results in HTTP error 4xx,
35013	// redirect request to another host where you might process the error.
35014	Condition *Condition `type:"structure"`
35015
35016	// Container for redirect information. You can redirect requests to another
35017	// host, to another page, or with another protocol. In the event of an error,
35018	// you can specify a different error code to return.
35019	//
35020	// Redirect is a required field
35021	Redirect *Redirect `type:"structure" required:"true"`
35022}
35023
35024// String returns the string representation.
35025//
35026// API parameter values that are decorated as "sensitive" in the API will not
35027// be included in the string output. The member name will be present, but the
35028// value will be replaced with "sensitive".
35029func (s RoutingRule) String() string {
35030	return awsutil.Prettify(s)
35031}
35032
35033// GoString returns the string representation.
35034//
35035// API parameter values that are decorated as "sensitive" in the API will not
35036// be included in the string output. The member name will be present, but the
35037// value will be replaced with "sensitive".
35038func (s RoutingRule) GoString() string {
35039	return s.String()
35040}
35041
35042// Validate inspects the fields of the type to determine if they are valid.
35043func (s *RoutingRule) Validate() error {
35044	invalidParams := request.ErrInvalidParams{Context: "RoutingRule"}
35045	if s.Redirect == nil {
35046		invalidParams.Add(request.NewErrParamRequired("Redirect"))
35047	}
35048
35049	if invalidParams.Len() > 0 {
35050		return invalidParams
35051	}
35052	return nil
35053}
35054
35055// SetCondition sets the Condition field's value.
35056func (s *RoutingRule) SetCondition(v *Condition) *RoutingRule {
35057	s.Condition = v
35058	return s
35059}
35060
35061// SetRedirect sets the Redirect field's value.
35062func (s *RoutingRule) SetRedirect(v *Redirect) *RoutingRule {
35063	s.Redirect = v
35064	return s
35065}
35066
35067// Specifies lifecycle rules for an Amazon S3 bucket. For more information,
35068// see Put Bucket Lifecycle Configuration (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTlifecycle.html)
35069// in the Amazon S3 API Reference. For examples, see Put Bucket Lifecycle Configuration
35070// Examples (https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html#API_PutBucketLifecycleConfiguration_Examples).
35071type Rule struct {
35072	_ struct{} `type:"structure"`
35073
35074	// Specifies the days since the initiation of an incomplete multipart upload
35075	// that Amazon S3 will wait before permanently removing all parts of the upload.
35076	// For more information, see Aborting Incomplete Multipart Uploads Using a Bucket
35077	// Lifecycle Policy (https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)
35078	// in the Amazon S3 User Guide.
35079	AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `type:"structure"`
35080
35081	// Specifies the expiration for the lifecycle of the object.
35082	Expiration *LifecycleExpiration `type:"structure"`
35083
35084	// Unique identifier for the rule. The value can't be longer than 255 characters.
35085	ID *string `type:"string"`
35086
35087	// Specifies when noncurrent object versions expire. Upon expiration, Amazon
35088	// S3 permanently deletes the noncurrent object versions. You set this lifecycle
35089	// configuration action on a bucket that has versioning enabled (or suspended)
35090	// to request that Amazon S3 delete noncurrent object versions at a specific
35091	// period in the object's lifetime.
35092	NoncurrentVersionExpiration *NoncurrentVersionExpiration `type:"structure"`
35093
35094	// Container for the transition rule that describes when noncurrent objects
35095	// transition to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER,
35096	// or DEEP_ARCHIVE storage class. If your bucket is versioning-enabled (or versioning
35097	// is suspended), you can set this action to request that Amazon S3 transition
35098	// noncurrent object versions to the STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING,
35099	// GLACIER, or DEEP_ARCHIVE storage class at a specific period in the object's
35100	// lifetime.
35101	NoncurrentVersionTransition *NoncurrentVersionTransition `type:"structure"`
35102
35103	// Object key prefix that identifies one or more objects to which this rule
35104	// applies.
35105	//
35106	// Replacement must be made for object keys containing special characters (such
35107	// as carriage returns) when using XML requests. For more information, see XML
35108	// related object key constraints (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-xml-related-constraints).
35109	//
35110	// Prefix is a required field
35111	Prefix *string `type:"string" required:"true"`
35112
35113	// If Enabled, the rule is currently being applied. If Disabled, the rule is
35114	// not currently being applied.
35115	//
35116	// Status is a required field
35117	Status *string `type:"string" required:"true" enum:"ExpirationStatus"`
35118
35119	// Specifies when an object transitions to a specified storage class. For more
35120	// information about Amazon S3 lifecycle configuration rules, see Transitioning
35121	// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
35122	// in the Amazon S3 User Guide.
35123	Transition *Transition `type:"structure"`
35124}
35125
35126// String returns the string representation.
35127//
35128// API parameter values that are decorated as "sensitive" in the API will not
35129// be included in the string output. The member name will be present, but the
35130// value will be replaced with "sensitive".
35131func (s Rule) String() string {
35132	return awsutil.Prettify(s)
35133}
35134
35135// GoString returns the string representation.
35136//
35137// API parameter values that are decorated as "sensitive" in the API will not
35138// be included in the string output. The member name will be present, but the
35139// value will be replaced with "sensitive".
35140func (s Rule) GoString() string {
35141	return s.String()
35142}
35143
35144// Validate inspects the fields of the type to determine if they are valid.
35145func (s *Rule) Validate() error {
35146	invalidParams := request.ErrInvalidParams{Context: "Rule"}
35147	if s.Prefix == nil {
35148		invalidParams.Add(request.NewErrParamRequired("Prefix"))
35149	}
35150	if s.Status == nil {
35151		invalidParams.Add(request.NewErrParamRequired("Status"))
35152	}
35153
35154	if invalidParams.Len() > 0 {
35155		return invalidParams
35156	}
35157	return nil
35158}
35159
35160// SetAbortIncompleteMultipartUpload sets the AbortIncompleteMultipartUpload field's value.
35161func (s *Rule) SetAbortIncompleteMultipartUpload(v *AbortIncompleteMultipartUpload) *Rule {
35162	s.AbortIncompleteMultipartUpload = v
35163	return s
35164}
35165
35166// SetExpiration sets the Expiration field's value.
35167func (s *Rule) SetExpiration(v *LifecycleExpiration) *Rule {
35168	s.Expiration = v
35169	return s
35170}
35171
35172// SetID sets the ID field's value.
35173func (s *Rule) SetID(v string) *Rule {
35174	s.ID = &v
35175	return s
35176}
35177
35178// SetNoncurrentVersionExpiration sets the NoncurrentVersionExpiration field's value.
35179func (s *Rule) SetNoncurrentVersionExpiration(v *NoncurrentVersionExpiration) *Rule {
35180	s.NoncurrentVersionExpiration = v
35181	return s
35182}
35183
35184// SetNoncurrentVersionTransition sets the NoncurrentVersionTransition field's value.
35185func (s *Rule) SetNoncurrentVersionTransition(v *NoncurrentVersionTransition) *Rule {
35186	s.NoncurrentVersionTransition = v
35187	return s
35188}
35189
35190// SetPrefix sets the Prefix field's value.
35191func (s *Rule) SetPrefix(v string) *Rule {
35192	s.Prefix = &v
35193	return s
35194}
35195
35196// SetStatus sets the Status field's value.
35197func (s *Rule) SetStatus(v string) *Rule {
35198	s.Status = &v
35199	return s
35200}
35201
35202// SetTransition sets the Transition field's value.
35203func (s *Rule) SetTransition(v *Transition) *Rule {
35204	s.Transition = v
35205	return s
35206}
35207
35208// Specifies the use of SSE-KMS to encrypt delivered inventory reports.
35209type SSEKMS struct {
35210	_ struct{} `locationName:"SSE-KMS" type:"structure"`
35211
35212	// Specifies the ID of the Amazon Web Services Key Management Service (Amazon
35213	// Web Services KMS) symmetric customer managed key to use for encrypting inventory
35214	// reports.
35215	//
35216	// KeyId is a sensitive parameter and its value will be
35217	// replaced with "sensitive" in string returned by SSEKMS's
35218	// String and GoString methods.
35219	//
35220	// KeyId is a required field
35221	KeyId *string `type:"string" required:"true" sensitive:"true"`
35222}
35223
35224// String returns the string representation.
35225//
35226// API parameter values that are decorated as "sensitive" in the API will not
35227// be included in the string output. The member name will be present, but the
35228// value will be replaced with "sensitive".
35229func (s SSEKMS) String() string {
35230	return awsutil.Prettify(s)
35231}
35232
35233// GoString returns the string representation.
35234//
35235// API parameter values that are decorated as "sensitive" in the API will not
35236// be included in the string output. The member name will be present, but the
35237// value will be replaced with "sensitive".
35238func (s SSEKMS) GoString() string {
35239	return s.String()
35240}
35241
35242// Validate inspects the fields of the type to determine if they are valid.
35243func (s *SSEKMS) Validate() error {
35244	invalidParams := request.ErrInvalidParams{Context: "SSEKMS"}
35245	if s.KeyId == nil {
35246		invalidParams.Add(request.NewErrParamRequired("KeyId"))
35247	}
35248
35249	if invalidParams.Len() > 0 {
35250		return invalidParams
35251	}
35252	return nil
35253}
35254
35255// SetKeyId sets the KeyId field's value.
35256func (s *SSEKMS) SetKeyId(v string) *SSEKMS {
35257	s.KeyId = &v
35258	return s
35259}
35260
35261// Specifies the use of SSE-S3 to encrypt delivered inventory reports.
35262type SSES3 struct {
35263	_ struct{} `locationName:"SSE-S3" type:"structure"`
35264}
35265
35266// String returns the string representation.
35267//
35268// API parameter values that are decorated as "sensitive" in the API will not
35269// be included in the string output. The member name will be present, but the
35270// value will be replaced with "sensitive".
35271func (s SSES3) String() string {
35272	return awsutil.Prettify(s)
35273}
35274
35275// GoString returns the string representation.
35276//
35277// API parameter values that are decorated as "sensitive" in the API will not
35278// be included in the string output. The member name will be present, but the
35279// value will be replaced with "sensitive".
35280func (s SSES3) GoString() string {
35281	return s.String()
35282}
35283
35284// Specifies the byte range of the object to get the records from. A record
35285// is processed when its first byte is contained by the range. This parameter
35286// is optional, but when specified, it must not be empty. See RFC 2616, Section
35287// 14.35.1 about how to specify the start and end of the range.
35288type ScanRange struct {
35289	_ struct{} `type:"structure"`
35290
35291	// Specifies the end of the byte range. This parameter is optional. Valid values:
35292	// non-negative integers. The default value is one less than the size of the
35293	// object being queried. If only the End parameter is supplied, it is interpreted
35294	// to mean scan the last N bytes of the file. For example, <scanrange><end>50</end></scanrange>
35295	// means scan the last 50 bytes.
35296	End *int64 `type:"long"`
35297
35298	// Specifies the start of the byte range. This parameter is optional. Valid
35299	// values: non-negative integers. The default value is 0. If only start is supplied,
35300	// it means scan from that point to the end of the file.For example; <scanrange><start>50</start></scanrange>
35301	// means scan from byte 50 until the end of the file.
35302	Start *int64 `type:"long"`
35303}
35304
35305// String returns the string representation.
35306//
35307// API parameter values that are decorated as "sensitive" in the API will not
35308// be included in the string output. The member name will be present, but the
35309// value will be replaced with "sensitive".
35310func (s ScanRange) String() string {
35311	return awsutil.Prettify(s)
35312}
35313
35314// GoString returns the string representation.
35315//
35316// API parameter values that are decorated as "sensitive" in the API will not
35317// be included in the string output. The member name will be present, but the
35318// value will be replaced with "sensitive".
35319func (s ScanRange) GoString() string {
35320	return s.String()
35321}
35322
35323// SetEnd sets the End field's value.
35324func (s *ScanRange) SetEnd(v int64) *ScanRange {
35325	s.End = &v
35326	return s
35327}
35328
35329// SetStart sets the Start field's value.
35330func (s *ScanRange) SetStart(v int64) *ScanRange {
35331	s.Start = &v
35332	return s
35333}
35334
35335// SelectObjectContentEventStreamEvent groups together all EventStream
35336// events writes for SelectObjectContentEventStream.
35337//
35338// These events are:
35339//
35340//     * ContinuationEvent
35341//     * EndEvent
35342//     * ProgressEvent
35343//     * RecordsEvent
35344//     * StatsEvent
35345type SelectObjectContentEventStreamEvent interface {
35346	eventSelectObjectContentEventStream()
35347	eventstreamapi.Marshaler
35348	eventstreamapi.Unmarshaler
35349}
35350
35351// SelectObjectContentEventStreamReader provides the interface for reading to the stream. The
35352// default implementation for this interface will be SelectObjectContentEventStreamData.
35353//
35354// The reader's Close method must allow multiple concurrent calls.
35355//
35356// These events are:
35357//
35358//     * ContinuationEvent
35359//     * EndEvent
35360//     * ProgressEvent
35361//     * RecordsEvent
35362//     * StatsEvent
35363//     * SelectObjectContentEventStreamUnknownEvent
35364type SelectObjectContentEventStreamReader interface {
35365	// Returns a channel of events as they are read from the event stream.
35366	Events() <-chan SelectObjectContentEventStreamEvent
35367
35368	// Close will stop the reader reading events from the stream.
35369	Close() error
35370
35371	// Returns any error that has occurred while reading from the event stream.
35372	Err() error
35373}
35374
35375type readSelectObjectContentEventStream struct {
35376	eventReader *eventstreamapi.EventReader
35377	stream      chan SelectObjectContentEventStreamEvent
35378	err         *eventstreamapi.OnceError
35379
35380	done      chan struct{}
35381	closeOnce sync.Once
35382}
35383
35384func newReadSelectObjectContentEventStream(eventReader *eventstreamapi.EventReader) *readSelectObjectContentEventStream {
35385	r := &readSelectObjectContentEventStream{
35386		eventReader: eventReader,
35387		stream:      make(chan SelectObjectContentEventStreamEvent),
35388		done:        make(chan struct{}),
35389		err:         eventstreamapi.NewOnceError(),
35390	}
35391	go r.readEventStream()
35392
35393	return r
35394}
35395
35396// Close will close the underlying event stream reader.
35397func (r *readSelectObjectContentEventStream) Close() error {
35398	r.closeOnce.Do(r.safeClose)
35399	return r.Err()
35400}
35401
35402func (r *readSelectObjectContentEventStream) ErrorSet() <-chan struct{} {
35403	return r.err.ErrorSet()
35404}
35405
35406func (r *readSelectObjectContentEventStream) Closed() <-chan struct{} {
35407	return r.done
35408}
35409
35410func (r *readSelectObjectContentEventStream) safeClose() {
35411	close(r.done)
35412}
35413
35414func (r *readSelectObjectContentEventStream) Err() error {
35415	return r.err.Err()
35416}
35417
35418func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
35419	return r.stream
35420}
35421
35422func (r *readSelectObjectContentEventStream) readEventStream() {
35423	defer r.Close()
35424	defer close(r.stream)
35425
35426	for {
35427		event, err := r.eventReader.ReadEvent()
35428		if err != nil {
35429			if err == io.EOF {
35430				return
35431			}
35432			select {
35433			case <-r.done:
35434				// If closed already ignore the error
35435				return
35436			default:
35437			}
35438			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
35439				continue
35440			}
35441			r.err.SetError(err)
35442			return
35443		}
35444
35445		select {
35446		case r.stream <- event.(SelectObjectContentEventStreamEvent):
35447		case <-r.done:
35448			return
35449		}
35450	}
35451}
35452
35453type unmarshalerForSelectObjectContentEventStreamEvent struct {
35454	metadata protocol.ResponseMetadata
35455}
35456
35457func (u unmarshalerForSelectObjectContentEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
35458	switch eventType {
35459	case "Cont":
35460		return &ContinuationEvent{}, nil
35461	case "End":
35462		return &EndEvent{}, nil
35463	case "Progress":
35464		return &ProgressEvent{}, nil
35465	case "Records":
35466		return &RecordsEvent{}, nil
35467	case "Stats":
35468		return &StatsEvent{}, nil
35469	default:
35470		return &SelectObjectContentEventStreamUnknownEvent{Type: eventType}, nil
35471	}
35472}
35473
35474// SelectObjectContentEventStreamUnknownEvent provides a failsafe event for the
35475// SelectObjectContentEventStream group of events when an unknown event is received.
35476type SelectObjectContentEventStreamUnknownEvent struct {
35477	Type    string
35478	Message eventstream.Message
35479}
35480
35481// The SelectObjectContentEventStreamUnknownEvent is and event in the SelectObjectContentEventStream
35482// group of events.
35483func (s *SelectObjectContentEventStreamUnknownEvent) eventSelectObjectContentEventStream() {}
35484
35485// MarshalEvent marshals the type into an stream event value. This method
35486// should only used internally within the SDK's EventStream handling.
35487func (e *SelectObjectContentEventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
35488	msg eventstream.Message, err error,
35489) {
35490	return e.Message.Clone(), nil
35491}
35492
35493// UnmarshalEvent unmarshals the EventStream Message into the SelectObjectContentEventStreamData value.
35494// This method is only used internally within the SDK's EventStream handling.
35495func (e *SelectObjectContentEventStreamUnknownEvent) UnmarshalEvent(
35496	payloadUnmarshaler protocol.PayloadUnmarshaler,
35497	msg eventstream.Message,
35498) error {
35499	e.Message = msg.Clone()
35500	return nil
35501}
35502
35503// Request to filter the contents of an Amazon S3 object based on a simple Structured
35504// Query Language (SQL) statement. In the request, along with the SQL expression,
35505// you must specify a data serialization format (JSON or CSV) of the object.
35506// Amazon S3 uses this to parse object data into records. It returns only records
35507// that match the specified SQL expression. You must also specify the data serialization
35508// format for the response. For more information, see S3Select API Documentation
35509// (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html).
35510type SelectObjectContentInput struct {
35511	_ struct{} `locationName:"SelectObjectContentRequest" type:"structure" xmlURI:"http://s3.amazonaws.com/doc/2006-03-01/"`
35512
35513	// The S3 bucket.
35514	//
35515	// Bucket is a required field
35516	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
35517
35518	// The account ID of the expected bucket owner. If the bucket is owned by a
35519	// different account, the request will fail with an HTTP 403 (Access Denied)
35520	// error.
35521	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
35522
35523	// The expression that is used to query the object.
35524	//
35525	// Expression is a required field
35526	Expression *string `type:"string" required:"true"`
35527
35528	// The type of the provided expression (for example, SQL).
35529	//
35530	// ExpressionType is a required field
35531	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
35532
35533	// Describes the format of the data in the object that is being queried.
35534	//
35535	// InputSerialization is a required field
35536	InputSerialization *InputSerialization `type:"structure" required:"true"`
35537
35538	// The object key.
35539	//
35540	// Key is a required field
35541	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
35542
35543	// Describes the format of the data that you want Amazon S3 to return in response.
35544	//
35545	// OutputSerialization is a required field
35546	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
35547
35548	// Specifies if periodic request progress information should be enabled.
35549	RequestProgress *RequestProgress `type:"structure"`
35550
35551	// The SSE Algorithm used to encrypt the object. For more information, see Server-Side
35552	// Encryption (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
35553	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
35554
35555	// The SSE Customer Key. For more information, see Server-Side Encryption (Using
35556	// Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
35557	//
35558	// SSECustomerKey is a sensitive parameter and its value will be
35559	// replaced with "sensitive" in string returned by SelectObjectContentInput's
35560	// String and GoString methods.
35561	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
35562
35563	// The SSE Customer Key MD5. For more information, see Server-Side Encryption
35564	// (Using Customer-Provided Encryption Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html).
35565	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
35566
35567	// Specifies the byte range of the object to get the records from. A record
35568	// is processed when its first byte is contained by the range. This parameter
35569	// is optional, but when specified, it must not be empty. See RFC 2616, Section
35570	// 14.35.1 about how to specify the start and end of the range.
35571	//
35572	// ScanRangemay be used in the following ways:
35573	//
35574	//    * <scanrange><start>50</start><end>100</end></scanrange> - process only
35575	//    the records starting between the bytes 50 and 100 (inclusive, counting
35576	//    from zero)
35577	//
35578	//    * <scanrange><start>50</start></scanrange> - process only the records
35579	//    starting after the byte 50
35580	//
35581	//    * <scanrange><end>50</end></scanrange> - process only the records within
35582	//    the last 50 bytes of the file.
35583	ScanRange *ScanRange `type:"structure"`
35584}
35585
35586// String returns the string representation.
35587//
35588// API parameter values that are decorated as "sensitive" in the API will not
35589// be included in the string output. The member name will be present, but the
35590// value will be replaced with "sensitive".
35591func (s SelectObjectContentInput) String() string {
35592	return awsutil.Prettify(s)
35593}
35594
35595// GoString returns the string representation.
35596//
35597// API parameter values that are decorated as "sensitive" in the API will not
35598// be included in the string output. The member name will be present, but the
35599// value will be replaced with "sensitive".
35600func (s SelectObjectContentInput) GoString() string {
35601	return s.String()
35602}
35603
35604// Validate inspects the fields of the type to determine if they are valid.
35605func (s *SelectObjectContentInput) Validate() error {
35606	invalidParams := request.ErrInvalidParams{Context: "SelectObjectContentInput"}
35607	if s.Bucket == nil {
35608		invalidParams.Add(request.NewErrParamRequired("Bucket"))
35609	}
35610	if s.Bucket != nil && len(*s.Bucket) < 1 {
35611		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
35612	}
35613	if s.Expression == nil {
35614		invalidParams.Add(request.NewErrParamRequired("Expression"))
35615	}
35616	if s.ExpressionType == nil {
35617		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
35618	}
35619	if s.InputSerialization == nil {
35620		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
35621	}
35622	if s.Key == nil {
35623		invalidParams.Add(request.NewErrParamRequired("Key"))
35624	}
35625	if s.Key != nil && len(*s.Key) < 1 {
35626		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
35627	}
35628	if s.OutputSerialization == nil {
35629		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
35630	}
35631
35632	if invalidParams.Len() > 0 {
35633		return invalidParams
35634	}
35635	return nil
35636}
35637
35638// SetBucket sets the Bucket field's value.
35639func (s *SelectObjectContentInput) SetBucket(v string) *SelectObjectContentInput {
35640	s.Bucket = &v
35641	return s
35642}
35643
35644func (s *SelectObjectContentInput) getBucket() (v string) {
35645	if s.Bucket == nil {
35646		return v
35647	}
35648	return *s.Bucket
35649}
35650
35651// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
35652func (s *SelectObjectContentInput) SetExpectedBucketOwner(v string) *SelectObjectContentInput {
35653	s.ExpectedBucketOwner = &v
35654	return s
35655}
35656
35657// SetExpression sets the Expression field's value.
35658func (s *SelectObjectContentInput) SetExpression(v string) *SelectObjectContentInput {
35659	s.Expression = &v
35660	return s
35661}
35662
35663// SetExpressionType sets the ExpressionType field's value.
35664func (s *SelectObjectContentInput) SetExpressionType(v string) *SelectObjectContentInput {
35665	s.ExpressionType = &v
35666	return s
35667}
35668
35669// SetInputSerialization sets the InputSerialization field's value.
35670func (s *SelectObjectContentInput) SetInputSerialization(v *InputSerialization) *SelectObjectContentInput {
35671	s.InputSerialization = v
35672	return s
35673}
35674
35675// SetKey sets the Key field's value.
35676func (s *SelectObjectContentInput) SetKey(v string) *SelectObjectContentInput {
35677	s.Key = &v
35678	return s
35679}
35680
35681// SetOutputSerialization sets the OutputSerialization field's value.
35682func (s *SelectObjectContentInput) SetOutputSerialization(v *OutputSerialization) *SelectObjectContentInput {
35683	s.OutputSerialization = v
35684	return s
35685}
35686
35687// SetRequestProgress sets the RequestProgress field's value.
35688func (s *SelectObjectContentInput) SetRequestProgress(v *RequestProgress) *SelectObjectContentInput {
35689	s.RequestProgress = v
35690	return s
35691}
35692
35693// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
35694func (s *SelectObjectContentInput) SetSSECustomerAlgorithm(v string) *SelectObjectContentInput {
35695	s.SSECustomerAlgorithm = &v
35696	return s
35697}
35698
35699// SetSSECustomerKey sets the SSECustomerKey field's value.
35700func (s *SelectObjectContentInput) SetSSECustomerKey(v string) *SelectObjectContentInput {
35701	s.SSECustomerKey = &v
35702	return s
35703}
35704
35705func (s *SelectObjectContentInput) getSSECustomerKey() (v string) {
35706	if s.SSECustomerKey == nil {
35707		return v
35708	}
35709	return *s.SSECustomerKey
35710}
35711
35712// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
35713func (s *SelectObjectContentInput) SetSSECustomerKeyMD5(v string) *SelectObjectContentInput {
35714	s.SSECustomerKeyMD5 = &v
35715	return s
35716}
35717
35718// SetScanRange sets the ScanRange field's value.
35719func (s *SelectObjectContentInput) SetScanRange(v *ScanRange) *SelectObjectContentInput {
35720	s.ScanRange = v
35721	return s
35722}
35723
35724func (s *SelectObjectContentInput) getEndpointARN() (arn.Resource, error) {
35725	if s.Bucket == nil {
35726		return nil, fmt.Errorf("member Bucket is nil")
35727	}
35728	return parseEndpointARN(*s.Bucket)
35729}
35730
35731func (s *SelectObjectContentInput) hasEndpointARN() bool {
35732	if s.Bucket == nil {
35733		return false
35734	}
35735	return arn.IsARN(*s.Bucket)
35736}
35737
35738// updateArnableField updates the value of the input field that
35739// takes an ARN as an input. This method is useful to backfill
35740// the parsed resource name from ARN into the input member.
35741// It returns a pointer to a modified copy of input and an error.
35742// Note that original input is not modified.
35743func (s SelectObjectContentInput) updateArnableField(v string) (interface{}, error) {
35744	if s.Bucket == nil {
35745		return nil, fmt.Errorf("member Bucket is nil")
35746	}
35747	s.Bucket = aws.String(v)
35748	return &s, nil
35749}
35750
35751type SelectObjectContentOutput struct {
35752	_ struct{} `type:"structure" payload:"Payload"`
35753
35754	EventStream *SelectObjectContentEventStream
35755}
35756
35757// String returns the string representation.
35758//
35759// API parameter values that are decorated as "sensitive" in the API will not
35760// be included in the string output. The member name will be present, but the
35761// value will be replaced with "sensitive".
35762func (s SelectObjectContentOutput) String() string {
35763	return awsutil.Prettify(s)
35764}
35765
35766// GoString returns the string representation.
35767//
35768// API parameter values that are decorated as "sensitive" in the API will not
35769// be included in the string output. The member name will be present, but the
35770// value will be replaced with "sensitive".
35771func (s SelectObjectContentOutput) GoString() string {
35772	return s.String()
35773}
35774
35775func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
35776	s.EventStream = v
35777	return s
35778}
35779func (s *SelectObjectContentOutput) GetEventStream() *SelectObjectContentEventStream {
35780	return s.EventStream
35781}
35782
35783// GetStream returns the type to interact with the event stream.
35784func (s *SelectObjectContentOutput) GetStream() *SelectObjectContentEventStream {
35785	return s.EventStream
35786}
35787
35788// Describes the parameters for Select job types.
35789type SelectParameters struct {
35790	_ struct{} `type:"structure"`
35791
35792	// The expression that is used to query the object.
35793	//
35794	// Expression is a required field
35795	Expression *string `type:"string" required:"true"`
35796
35797	// The type of the provided expression (for example, SQL).
35798	//
35799	// ExpressionType is a required field
35800	ExpressionType *string `type:"string" required:"true" enum:"ExpressionType"`
35801
35802	// Describes the serialization format of the object.
35803	//
35804	// InputSerialization is a required field
35805	InputSerialization *InputSerialization `type:"structure" required:"true"`
35806
35807	// Describes how the results of the Select job are serialized.
35808	//
35809	// OutputSerialization is a required field
35810	OutputSerialization *OutputSerialization `type:"structure" required:"true"`
35811}
35812
35813// String returns the string representation.
35814//
35815// API parameter values that are decorated as "sensitive" in the API will not
35816// be included in the string output. The member name will be present, but the
35817// value will be replaced with "sensitive".
35818func (s SelectParameters) String() string {
35819	return awsutil.Prettify(s)
35820}
35821
35822// GoString returns the string representation.
35823//
35824// API parameter values that are decorated as "sensitive" in the API will not
35825// be included in the string output. The member name will be present, but the
35826// value will be replaced with "sensitive".
35827func (s SelectParameters) GoString() string {
35828	return s.String()
35829}
35830
35831// Validate inspects the fields of the type to determine if they are valid.
35832func (s *SelectParameters) Validate() error {
35833	invalidParams := request.ErrInvalidParams{Context: "SelectParameters"}
35834	if s.Expression == nil {
35835		invalidParams.Add(request.NewErrParamRequired("Expression"))
35836	}
35837	if s.ExpressionType == nil {
35838		invalidParams.Add(request.NewErrParamRequired("ExpressionType"))
35839	}
35840	if s.InputSerialization == nil {
35841		invalidParams.Add(request.NewErrParamRequired("InputSerialization"))
35842	}
35843	if s.OutputSerialization == nil {
35844		invalidParams.Add(request.NewErrParamRequired("OutputSerialization"))
35845	}
35846
35847	if invalidParams.Len() > 0 {
35848		return invalidParams
35849	}
35850	return nil
35851}
35852
35853// SetExpression sets the Expression field's value.
35854func (s *SelectParameters) SetExpression(v string) *SelectParameters {
35855	s.Expression = &v
35856	return s
35857}
35858
35859// SetExpressionType sets the ExpressionType field's value.
35860func (s *SelectParameters) SetExpressionType(v string) *SelectParameters {
35861	s.ExpressionType = &v
35862	return s
35863}
35864
35865// SetInputSerialization sets the InputSerialization field's value.
35866func (s *SelectParameters) SetInputSerialization(v *InputSerialization) *SelectParameters {
35867	s.InputSerialization = v
35868	return s
35869}
35870
35871// SetOutputSerialization sets the OutputSerialization field's value.
35872func (s *SelectParameters) SetOutputSerialization(v *OutputSerialization) *SelectParameters {
35873	s.OutputSerialization = v
35874	return s
35875}
35876
35877// Describes the default server-side encryption to apply to new objects in the
35878// bucket. If a PUT Object request doesn't specify any server-side encryption,
35879// this default encryption will be applied. For more information, see PUT Bucket
35880// encryption (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTencryption.html)
35881// in the Amazon S3 API Reference.
35882type ServerSideEncryptionByDefault struct {
35883	_ struct{} `type:"structure"`
35884
35885	// Amazon Web Services Key Management Service (KMS) customer Amazon Web Services
35886	// KMS key ID to use for the default encryption. This parameter is allowed if
35887	// and only if SSEAlgorithm is set to aws:kms.
35888	//
35889	// You can specify the key ID or the Amazon Resource Name (ARN) of the KMS key.
35890	// However, if you are using encryption with cross-account operations, you must
35891	// use a fully qualified KMS key ARN. For more information, see Using encryption
35892	// for cross-account operations (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html#bucket-encryption-update-bucket-policy).
35893	//
35894	// For example:
35895	//
35896	//    * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
35897	//
35898	//    * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
35899	//
35900	// Amazon S3 only supports symmetric KMS keys and not asymmetric KMS keys. For
35901	// more information, see Using symmetric and asymmetric keys (https://docs.aws.amazon.com/kms/latest/developerguide/symmetric-asymmetric.html)
35902	// in the Amazon Web Services Key Management Service Developer Guide.
35903	//
35904	// KMSMasterKeyID is a sensitive parameter and its value will be
35905	// replaced with "sensitive" in string returned by ServerSideEncryptionByDefault's
35906	// String and GoString methods.
35907	KMSMasterKeyID *string `type:"string" sensitive:"true"`
35908
35909	// Server-side encryption algorithm to use for the default encryption.
35910	//
35911	// SSEAlgorithm is a required field
35912	SSEAlgorithm *string `type:"string" required:"true" enum:"ServerSideEncryption"`
35913}
35914
35915// String returns the string representation.
35916//
35917// API parameter values that are decorated as "sensitive" in the API will not
35918// be included in the string output. The member name will be present, but the
35919// value will be replaced with "sensitive".
35920func (s ServerSideEncryptionByDefault) String() string {
35921	return awsutil.Prettify(s)
35922}
35923
35924// GoString returns the string representation.
35925//
35926// API parameter values that are decorated as "sensitive" in the API will not
35927// be included in the string output. The member name will be present, but the
35928// value will be replaced with "sensitive".
35929func (s ServerSideEncryptionByDefault) GoString() string {
35930	return s.String()
35931}
35932
35933// Validate inspects the fields of the type to determine if they are valid.
35934func (s *ServerSideEncryptionByDefault) Validate() error {
35935	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionByDefault"}
35936	if s.SSEAlgorithm == nil {
35937		invalidParams.Add(request.NewErrParamRequired("SSEAlgorithm"))
35938	}
35939
35940	if invalidParams.Len() > 0 {
35941		return invalidParams
35942	}
35943	return nil
35944}
35945
35946// SetKMSMasterKeyID sets the KMSMasterKeyID field's value.
35947func (s *ServerSideEncryptionByDefault) SetKMSMasterKeyID(v string) *ServerSideEncryptionByDefault {
35948	s.KMSMasterKeyID = &v
35949	return s
35950}
35951
35952// SetSSEAlgorithm sets the SSEAlgorithm field's value.
35953func (s *ServerSideEncryptionByDefault) SetSSEAlgorithm(v string) *ServerSideEncryptionByDefault {
35954	s.SSEAlgorithm = &v
35955	return s
35956}
35957
35958// Specifies the default server-side-encryption configuration.
35959type ServerSideEncryptionConfiguration struct {
35960	_ struct{} `type:"structure"`
35961
35962	// Container for information about a particular server-side encryption configuration
35963	// rule.
35964	//
35965	// Rules is a required field
35966	Rules []*ServerSideEncryptionRule `locationName:"Rule" type:"list" flattened:"true" required:"true"`
35967}
35968
35969// String returns the string representation.
35970//
35971// API parameter values that are decorated as "sensitive" in the API will not
35972// be included in the string output. The member name will be present, but the
35973// value will be replaced with "sensitive".
35974func (s ServerSideEncryptionConfiguration) String() string {
35975	return awsutil.Prettify(s)
35976}
35977
35978// GoString returns the string representation.
35979//
35980// API parameter values that are decorated as "sensitive" in the API will not
35981// be included in the string output. The member name will be present, but the
35982// value will be replaced with "sensitive".
35983func (s ServerSideEncryptionConfiguration) GoString() string {
35984	return s.String()
35985}
35986
35987// Validate inspects the fields of the type to determine if they are valid.
35988func (s *ServerSideEncryptionConfiguration) Validate() error {
35989	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionConfiguration"}
35990	if s.Rules == nil {
35991		invalidParams.Add(request.NewErrParamRequired("Rules"))
35992	}
35993	if s.Rules != nil {
35994		for i, v := range s.Rules {
35995			if v == nil {
35996				continue
35997			}
35998			if err := v.Validate(); err != nil {
35999				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Rules", i), err.(request.ErrInvalidParams))
36000			}
36001		}
36002	}
36003
36004	if invalidParams.Len() > 0 {
36005		return invalidParams
36006	}
36007	return nil
36008}
36009
36010// SetRules sets the Rules field's value.
36011func (s *ServerSideEncryptionConfiguration) SetRules(v []*ServerSideEncryptionRule) *ServerSideEncryptionConfiguration {
36012	s.Rules = v
36013	return s
36014}
36015
36016// Specifies the default server-side encryption configuration.
36017type ServerSideEncryptionRule struct {
36018	_ struct{} `type:"structure"`
36019
36020	// Specifies the default server-side encryption to apply to new objects in the
36021	// bucket. If a PUT Object request doesn't specify any server-side encryption,
36022	// this default encryption will be applied.
36023	ApplyServerSideEncryptionByDefault *ServerSideEncryptionByDefault `type:"structure"`
36024
36025	// Specifies whether Amazon S3 should use an S3 Bucket Key with server-side
36026	// encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects
36027	// are not affected. Setting the BucketKeyEnabled element to true causes Amazon
36028	// S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.
36029	//
36030	// For more information, see Amazon S3 Bucket Keys (https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html)
36031	// in the Amazon S3 User Guide.
36032	BucketKeyEnabled *bool `type:"boolean"`
36033}
36034
36035// String returns the string representation.
36036//
36037// API parameter values that are decorated as "sensitive" in the API will not
36038// be included in the string output. The member name will be present, but the
36039// value will be replaced with "sensitive".
36040func (s ServerSideEncryptionRule) String() string {
36041	return awsutil.Prettify(s)
36042}
36043
36044// GoString returns the string representation.
36045//
36046// API parameter values that are decorated as "sensitive" in the API will not
36047// be included in the string output. The member name will be present, but the
36048// value will be replaced with "sensitive".
36049func (s ServerSideEncryptionRule) GoString() string {
36050	return s.String()
36051}
36052
36053// Validate inspects the fields of the type to determine if they are valid.
36054func (s *ServerSideEncryptionRule) Validate() error {
36055	invalidParams := request.ErrInvalidParams{Context: "ServerSideEncryptionRule"}
36056	if s.ApplyServerSideEncryptionByDefault != nil {
36057		if err := s.ApplyServerSideEncryptionByDefault.Validate(); err != nil {
36058			invalidParams.AddNested("ApplyServerSideEncryptionByDefault", err.(request.ErrInvalidParams))
36059		}
36060	}
36061
36062	if invalidParams.Len() > 0 {
36063		return invalidParams
36064	}
36065	return nil
36066}
36067
36068// SetApplyServerSideEncryptionByDefault sets the ApplyServerSideEncryptionByDefault field's value.
36069func (s *ServerSideEncryptionRule) SetApplyServerSideEncryptionByDefault(v *ServerSideEncryptionByDefault) *ServerSideEncryptionRule {
36070	s.ApplyServerSideEncryptionByDefault = v
36071	return s
36072}
36073
36074// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
36075func (s *ServerSideEncryptionRule) SetBucketKeyEnabled(v bool) *ServerSideEncryptionRule {
36076	s.BucketKeyEnabled = &v
36077	return s
36078}
36079
36080// A container that describes additional filters for identifying the source
36081// objects that you want to replicate. You can choose to enable or disable the
36082// replication of these objects. Currently, Amazon S3 supports only the filter
36083// that you can specify for objects created with server-side encryption using
36084// a customer managed key stored in Amazon Web Services Key Management Service
36085// (SSE-KMS).
36086type SourceSelectionCriteria struct {
36087	_ struct{} `type:"structure"`
36088
36089	// A filter that you can specify for selections for modifications on replicas.
36090	// Amazon S3 doesn't replicate replica modifications by default. In the latest
36091	// version of replication configuration (when Filter is specified), you can
36092	// specify this element and set the status to Enabled to replicate modifications
36093	// on replicas.
36094	//
36095	// If you don't specify the Filter element, Amazon S3 assumes that the replication
36096	// configuration is the earlier version, V1. In the earlier version, this element
36097	// is not allowed
36098	ReplicaModifications *ReplicaModifications `type:"structure"`
36099
36100	// A container for filter information for the selection of Amazon S3 objects
36101	// encrypted with Amazon Web Services KMS. If you include SourceSelectionCriteria
36102	// in the replication configuration, this element is required.
36103	SseKmsEncryptedObjects *SseKmsEncryptedObjects `type:"structure"`
36104}
36105
36106// String returns the string representation.
36107//
36108// API parameter values that are decorated as "sensitive" in the API will not
36109// be included in the string output. The member name will be present, but the
36110// value will be replaced with "sensitive".
36111func (s SourceSelectionCriteria) String() string {
36112	return awsutil.Prettify(s)
36113}
36114
36115// GoString returns the string representation.
36116//
36117// API parameter values that are decorated as "sensitive" in the API will not
36118// be included in the string output. The member name will be present, but the
36119// value will be replaced with "sensitive".
36120func (s SourceSelectionCriteria) GoString() string {
36121	return s.String()
36122}
36123
36124// Validate inspects the fields of the type to determine if they are valid.
36125func (s *SourceSelectionCriteria) Validate() error {
36126	invalidParams := request.ErrInvalidParams{Context: "SourceSelectionCriteria"}
36127	if s.ReplicaModifications != nil {
36128		if err := s.ReplicaModifications.Validate(); err != nil {
36129			invalidParams.AddNested("ReplicaModifications", err.(request.ErrInvalidParams))
36130		}
36131	}
36132	if s.SseKmsEncryptedObjects != nil {
36133		if err := s.SseKmsEncryptedObjects.Validate(); err != nil {
36134			invalidParams.AddNested("SseKmsEncryptedObjects", err.(request.ErrInvalidParams))
36135		}
36136	}
36137
36138	if invalidParams.Len() > 0 {
36139		return invalidParams
36140	}
36141	return nil
36142}
36143
36144// SetReplicaModifications sets the ReplicaModifications field's value.
36145func (s *SourceSelectionCriteria) SetReplicaModifications(v *ReplicaModifications) *SourceSelectionCriteria {
36146	s.ReplicaModifications = v
36147	return s
36148}
36149
36150// SetSseKmsEncryptedObjects sets the SseKmsEncryptedObjects field's value.
36151func (s *SourceSelectionCriteria) SetSseKmsEncryptedObjects(v *SseKmsEncryptedObjects) *SourceSelectionCriteria {
36152	s.SseKmsEncryptedObjects = v
36153	return s
36154}
36155
36156// A container for filter information for the selection of S3 objects encrypted
36157// with Amazon Web Services KMS.
36158type SseKmsEncryptedObjects struct {
36159	_ struct{} `type:"structure"`
36160
36161	// Specifies whether Amazon S3 replicates objects created with server-side encryption
36162	// using an Amazon Web Services KMS key stored in Amazon Web Services Key Management
36163	// Service.
36164	//
36165	// Status is a required field
36166	Status *string `type:"string" required:"true" enum:"SseKmsEncryptedObjectsStatus"`
36167}
36168
36169// String returns the string representation.
36170//
36171// API parameter values that are decorated as "sensitive" in the API will not
36172// be included in the string output. The member name will be present, but the
36173// value will be replaced with "sensitive".
36174func (s SseKmsEncryptedObjects) String() string {
36175	return awsutil.Prettify(s)
36176}
36177
36178// GoString returns the string representation.
36179//
36180// API parameter values that are decorated as "sensitive" in the API will not
36181// be included in the string output. The member name will be present, but the
36182// value will be replaced with "sensitive".
36183func (s SseKmsEncryptedObjects) GoString() string {
36184	return s.String()
36185}
36186
36187// Validate inspects the fields of the type to determine if they are valid.
36188func (s *SseKmsEncryptedObjects) Validate() error {
36189	invalidParams := request.ErrInvalidParams{Context: "SseKmsEncryptedObjects"}
36190	if s.Status == nil {
36191		invalidParams.Add(request.NewErrParamRequired("Status"))
36192	}
36193
36194	if invalidParams.Len() > 0 {
36195		return invalidParams
36196	}
36197	return nil
36198}
36199
36200// SetStatus sets the Status field's value.
36201func (s *SseKmsEncryptedObjects) SetStatus(v string) *SseKmsEncryptedObjects {
36202	s.Status = &v
36203	return s
36204}
36205
36206// Container for the stats details.
36207type Stats struct {
36208	_ struct{} `type:"structure"`
36209
36210	// The total number of uncompressed object bytes processed.
36211	BytesProcessed *int64 `type:"long"`
36212
36213	// The total number of bytes of records payload data returned.
36214	BytesReturned *int64 `type:"long"`
36215
36216	// The total number of object bytes scanned.
36217	BytesScanned *int64 `type:"long"`
36218}
36219
36220// String returns the string representation.
36221//
36222// API parameter values that are decorated as "sensitive" in the API will not
36223// be included in the string output. The member name will be present, but the
36224// value will be replaced with "sensitive".
36225func (s Stats) String() string {
36226	return awsutil.Prettify(s)
36227}
36228
36229// GoString returns the string representation.
36230//
36231// API parameter values that are decorated as "sensitive" in the API will not
36232// be included in the string output. The member name will be present, but the
36233// value will be replaced with "sensitive".
36234func (s Stats) GoString() string {
36235	return s.String()
36236}
36237
36238// SetBytesProcessed sets the BytesProcessed field's value.
36239func (s *Stats) SetBytesProcessed(v int64) *Stats {
36240	s.BytesProcessed = &v
36241	return s
36242}
36243
36244// SetBytesReturned sets the BytesReturned field's value.
36245func (s *Stats) SetBytesReturned(v int64) *Stats {
36246	s.BytesReturned = &v
36247	return s
36248}
36249
36250// SetBytesScanned sets the BytesScanned field's value.
36251func (s *Stats) SetBytesScanned(v int64) *Stats {
36252	s.BytesScanned = &v
36253	return s
36254}
36255
36256// Container for the Stats Event.
36257type StatsEvent struct {
36258	_ struct{} `locationName:"StatsEvent" type:"structure" payload:"Details"`
36259
36260	// The Stats event details.
36261	Details *Stats `locationName:"Details" type:"structure"`
36262}
36263
36264// String returns the string representation.
36265//
36266// API parameter values that are decorated as "sensitive" in the API will not
36267// be included in the string output. The member name will be present, but the
36268// value will be replaced with "sensitive".
36269func (s StatsEvent) String() string {
36270	return awsutil.Prettify(s)
36271}
36272
36273// GoString returns the string representation.
36274//
36275// API parameter values that are decorated as "sensitive" in the API will not
36276// be included in the string output. The member name will be present, but the
36277// value will be replaced with "sensitive".
36278func (s StatsEvent) GoString() string {
36279	return s.String()
36280}
36281
36282// SetDetails sets the Details field's value.
36283func (s *StatsEvent) SetDetails(v *Stats) *StatsEvent {
36284	s.Details = v
36285	return s
36286}
36287
36288// The StatsEvent is and event in the SelectObjectContentEventStream group of events.
36289func (s *StatsEvent) eventSelectObjectContentEventStream() {}
36290
36291// UnmarshalEvent unmarshals the EventStream Message into the StatsEvent value.
36292// This method is only used internally within the SDK's EventStream handling.
36293func (s *StatsEvent) UnmarshalEvent(
36294	payloadUnmarshaler protocol.PayloadUnmarshaler,
36295	msg eventstream.Message,
36296) error {
36297	if err := payloadUnmarshaler.UnmarshalPayload(
36298		bytes.NewReader(msg.Payload), s,
36299	); err != nil {
36300		return err
36301	}
36302	return nil
36303}
36304
36305// MarshalEvent marshals the type into an stream event value. This method
36306// should only used internally within the SDK's EventStream handling.
36307func (s *StatsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
36308	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
36309	var buf bytes.Buffer
36310	if err = pm.MarshalPayload(&buf, s); err != nil {
36311		return eventstream.Message{}, err
36312	}
36313	msg.Payload = buf.Bytes()
36314	return msg, err
36315}
36316
36317// Specifies data related to access patterns to be collected and made available
36318// to analyze the tradeoffs between different storage classes for an Amazon
36319// S3 bucket.
36320type StorageClassAnalysis struct {
36321	_ struct{} `type:"structure"`
36322
36323	// Specifies how data related to the storage class analysis for an Amazon S3
36324	// bucket should be exported.
36325	DataExport *StorageClassAnalysisDataExport `type:"structure"`
36326}
36327
36328// String returns the string representation.
36329//
36330// API parameter values that are decorated as "sensitive" in the API will not
36331// be included in the string output. The member name will be present, but the
36332// value will be replaced with "sensitive".
36333func (s StorageClassAnalysis) String() string {
36334	return awsutil.Prettify(s)
36335}
36336
36337// GoString returns the string representation.
36338//
36339// API parameter values that are decorated as "sensitive" in the API will not
36340// be included in the string output. The member name will be present, but the
36341// value will be replaced with "sensitive".
36342func (s StorageClassAnalysis) GoString() string {
36343	return s.String()
36344}
36345
36346// Validate inspects the fields of the type to determine if they are valid.
36347func (s *StorageClassAnalysis) Validate() error {
36348	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysis"}
36349	if s.DataExport != nil {
36350		if err := s.DataExport.Validate(); err != nil {
36351			invalidParams.AddNested("DataExport", err.(request.ErrInvalidParams))
36352		}
36353	}
36354
36355	if invalidParams.Len() > 0 {
36356		return invalidParams
36357	}
36358	return nil
36359}
36360
36361// SetDataExport sets the DataExport field's value.
36362func (s *StorageClassAnalysis) SetDataExport(v *StorageClassAnalysisDataExport) *StorageClassAnalysis {
36363	s.DataExport = v
36364	return s
36365}
36366
36367// Container for data related to the storage class analysis for an Amazon S3
36368// bucket for export.
36369type StorageClassAnalysisDataExport struct {
36370	_ struct{} `type:"structure"`
36371
36372	// The place to store the data for an analysis.
36373	//
36374	// Destination is a required field
36375	Destination *AnalyticsExportDestination `type:"structure" required:"true"`
36376
36377	// The version of the output schema to use when exporting data. Must be V_1.
36378	//
36379	// OutputSchemaVersion is a required field
36380	OutputSchemaVersion *string `type:"string" required:"true" enum:"StorageClassAnalysisSchemaVersion"`
36381}
36382
36383// String returns the string representation.
36384//
36385// API parameter values that are decorated as "sensitive" in the API will not
36386// be included in the string output. The member name will be present, but the
36387// value will be replaced with "sensitive".
36388func (s StorageClassAnalysisDataExport) String() string {
36389	return awsutil.Prettify(s)
36390}
36391
36392// GoString returns the string representation.
36393//
36394// API parameter values that are decorated as "sensitive" in the API will not
36395// be included in the string output. The member name will be present, but the
36396// value will be replaced with "sensitive".
36397func (s StorageClassAnalysisDataExport) GoString() string {
36398	return s.String()
36399}
36400
36401// Validate inspects the fields of the type to determine if they are valid.
36402func (s *StorageClassAnalysisDataExport) Validate() error {
36403	invalidParams := request.ErrInvalidParams{Context: "StorageClassAnalysisDataExport"}
36404	if s.Destination == nil {
36405		invalidParams.Add(request.NewErrParamRequired("Destination"))
36406	}
36407	if s.OutputSchemaVersion == nil {
36408		invalidParams.Add(request.NewErrParamRequired("OutputSchemaVersion"))
36409	}
36410	if s.Destination != nil {
36411		if err := s.Destination.Validate(); err != nil {
36412			invalidParams.AddNested("Destination", err.(request.ErrInvalidParams))
36413		}
36414	}
36415
36416	if invalidParams.Len() > 0 {
36417		return invalidParams
36418	}
36419	return nil
36420}
36421
36422// SetDestination sets the Destination field's value.
36423func (s *StorageClassAnalysisDataExport) SetDestination(v *AnalyticsExportDestination) *StorageClassAnalysisDataExport {
36424	s.Destination = v
36425	return s
36426}
36427
36428// SetOutputSchemaVersion sets the OutputSchemaVersion field's value.
36429func (s *StorageClassAnalysisDataExport) SetOutputSchemaVersion(v string) *StorageClassAnalysisDataExport {
36430	s.OutputSchemaVersion = &v
36431	return s
36432}
36433
36434// A container of a key value name pair.
36435type Tag struct {
36436	_ struct{} `type:"structure"`
36437
36438	// Name of the object key.
36439	//
36440	// Key is a required field
36441	Key *string `min:"1" type:"string" required:"true"`
36442
36443	// Value of the tag.
36444	//
36445	// Value is a required field
36446	Value *string `type:"string" required:"true"`
36447}
36448
36449// String returns the string representation.
36450//
36451// API parameter values that are decorated as "sensitive" in the API will not
36452// be included in the string output. The member name will be present, but the
36453// value will be replaced with "sensitive".
36454func (s Tag) String() string {
36455	return awsutil.Prettify(s)
36456}
36457
36458// GoString returns the string representation.
36459//
36460// API parameter values that are decorated as "sensitive" in the API will not
36461// be included in the string output. The member name will be present, but the
36462// value will be replaced with "sensitive".
36463func (s Tag) GoString() string {
36464	return s.String()
36465}
36466
36467// Validate inspects the fields of the type to determine if they are valid.
36468func (s *Tag) Validate() error {
36469	invalidParams := request.ErrInvalidParams{Context: "Tag"}
36470	if s.Key == nil {
36471		invalidParams.Add(request.NewErrParamRequired("Key"))
36472	}
36473	if s.Key != nil && len(*s.Key) < 1 {
36474		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
36475	}
36476	if s.Value == nil {
36477		invalidParams.Add(request.NewErrParamRequired("Value"))
36478	}
36479
36480	if invalidParams.Len() > 0 {
36481		return invalidParams
36482	}
36483	return nil
36484}
36485
36486// SetKey sets the Key field's value.
36487func (s *Tag) SetKey(v string) *Tag {
36488	s.Key = &v
36489	return s
36490}
36491
36492// SetValue sets the Value field's value.
36493func (s *Tag) SetValue(v string) *Tag {
36494	s.Value = &v
36495	return s
36496}
36497
36498// Container for TagSet elements.
36499type Tagging struct {
36500	_ struct{} `type:"structure"`
36501
36502	// A collection for a set of tags
36503	//
36504	// TagSet is a required field
36505	TagSet []*Tag `locationNameList:"Tag" type:"list" required:"true"`
36506}
36507
36508// String returns the string representation.
36509//
36510// API parameter values that are decorated as "sensitive" in the API will not
36511// be included in the string output. The member name will be present, but the
36512// value will be replaced with "sensitive".
36513func (s Tagging) String() string {
36514	return awsutil.Prettify(s)
36515}
36516
36517// GoString returns the string representation.
36518//
36519// API parameter values that are decorated as "sensitive" in the API will not
36520// be included in the string output. The member name will be present, but the
36521// value will be replaced with "sensitive".
36522func (s Tagging) GoString() string {
36523	return s.String()
36524}
36525
36526// Validate inspects the fields of the type to determine if they are valid.
36527func (s *Tagging) Validate() error {
36528	invalidParams := request.ErrInvalidParams{Context: "Tagging"}
36529	if s.TagSet == nil {
36530		invalidParams.Add(request.NewErrParamRequired("TagSet"))
36531	}
36532	if s.TagSet != nil {
36533		for i, v := range s.TagSet {
36534			if v == nil {
36535				continue
36536			}
36537			if err := v.Validate(); err != nil {
36538				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "TagSet", i), err.(request.ErrInvalidParams))
36539			}
36540		}
36541	}
36542
36543	if invalidParams.Len() > 0 {
36544		return invalidParams
36545	}
36546	return nil
36547}
36548
36549// SetTagSet sets the TagSet field's value.
36550func (s *Tagging) SetTagSet(v []*Tag) *Tagging {
36551	s.TagSet = v
36552	return s
36553}
36554
36555// Container for granting information.
36556type TargetGrant struct {
36557	_ struct{} `type:"structure"`
36558
36559	// Container for the person being granted permissions.
36560	Grantee *Grantee `type:"structure" xmlPrefix:"xsi" xmlURI:"http://www.w3.org/2001/XMLSchema-instance"`
36561
36562	// Logging permissions assigned to the grantee for the bucket.
36563	Permission *string `type:"string" enum:"BucketLogsPermission"`
36564}
36565
36566// String returns the string representation.
36567//
36568// API parameter values that are decorated as "sensitive" in the API will not
36569// be included in the string output. The member name will be present, but the
36570// value will be replaced with "sensitive".
36571func (s TargetGrant) String() string {
36572	return awsutil.Prettify(s)
36573}
36574
36575// GoString returns the string representation.
36576//
36577// API parameter values that are decorated as "sensitive" in the API will not
36578// be included in the string output. The member name will be present, but the
36579// value will be replaced with "sensitive".
36580func (s TargetGrant) GoString() string {
36581	return s.String()
36582}
36583
36584// Validate inspects the fields of the type to determine if they are valid.
36585func (s *TargetGrant) Validate() error {
36586	invalidParams := request.ErrInvalidParams{Context: "TargetGrant"}
36587	if s.Grantee != nil {
36588		if err := s.Grantee.Validate(); err != nil {
36589			invalidParams.AddNested("Grantee", err.(request.ErrInvalidParams))
36590		}
36591	}
36592
36593	if invalidParams.Len() > 0 {
36594		return invalidParams
36595	}
36596	return nil
36597}
36598
36599// SetGrantee sets the Grantee field's value.
36600func (s *TargetGrant) SetGrantee(v *Grantee) *TargetGrant {
36601	s.Grantee = v
36602	return s
36603}
36604
36605// SetPermission sets the Permission field's value.
36606func (s *TargetGrant) SetPermission(v string) *TargetGrant {
36607	s.Permission = &v
36608	return s
36609}
36610
36611// The S3 Intelligent-Tiering storage class is designed to optimize storage
36612// costs by automatically moving data to the most cost-effective storage access
36613// tier, without additional operational overhead.
36614type Tiering struct {
36615	_ struct{} `type:"structure"`
36616
36617	// S3 Intelligent-Tiering access tier. See Storage class for automatically optimizing
36618	// frequently and infrequently accessed objects (https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html#sc-dynamic-data-access)
36619	// for a list of access tiers in the S3 Intelligent-Tiering storage class.
36620	//
36621	// AccessTier is a required field
36622	AccessTier *string `type:"string" required:"true" enum:"IntelligentTieringAccessTier"`
36623
36624	// The number of consecutive days of no access after which an object will be
36625	// eligible to be transitioned to the corresponding tier. The minimum number
36626	// of days specified for Archive Access tier must be at least 90 days and Deep
36627	// Archive Access tier must be at least 180 days. The maximum can be up to 2
36628	// years (730 days).
36629	//
36630	// Days is a required field
36631	Days *int64 `type:"integer" required:"true"`
36632}
36633
36634// String returns the string representation.
36635//
36636// API parameter values that are decorated as "sensitive" in the API will not
36637// be included in the string output. The member name will be present, but the
36638// value will be replaced with "sensitive".
36639func (s Tiering) String() string {
36640	return awsutil.Prettify(s)
36641}
36642
36643// GoString returns the string representation.
36644//
36645// API parameter values that are decorated as "sensitive" in the API will not
36646// be included in the string output. The member name will be present, but the
36647// value will be replaced with "sensitive".
36648func (s Tiering) GoString() string {
36649	return s.String()
36650}
36651
36652// Validate inspects the fields of the type to determine if they are valid.
36653func (s *Tiering) Validate() error {
36654	invalidParams := request.ErrInvalidParams{Context: "Tiering"}
36655	if s.AccessTier == nil {
36656		invalidParams.Add(request.NewErrParamRequired("AccessTier"))
36657	}
36658	if s.Days == nil {
36659		invalidParams.Add(request.NewErrParamRequired("Days"))
36660	}
36661
36662	if invalidParams.Len() > 0 {
36663		return invalidParams
36664	}
36665	return nil
36666}
36667
36668// SetAccessTier sets the AccessTier field's value.
36669func (s *Tiering) SetAccessTier(v string) *Tiering {
36670	s.AccessTier = &v
36671	return s
36672}
36673
36674// SetDays sets the Days field's value.
36675func (s *Tiering) SetDays(v int64) *Tiering {
36676	s.Days = &v
36677	return s
36678}
36679
36680// A container for specifying the configuration for publication of messages
36681// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
36682// detects specified events.
36683type TopicConfiguration struct {
36684	_ struct{} `type:"structure"`
36685
36686	// The Amazon S3 bucket event about which to send notifications. For more information,
36687	// see Supported Event Types (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
36688	// in the Amazon S3 User Guide.
36689	//
36690	// Events is a required field
36691	Events []*string `locationName:"Event" type:"list" flattened:"true" required:"true"`
36692
36693	// Specifies object key name filtering rules. For information about key name
36694	// filtering, see Configuring Event Notifications (https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html)
36695	// in the Amazon S3 User Guide.
36696	Filter *NotificationConfigurationFilter `type:"structure"`
36697
36698	// An optional unique identifier for configurations in a notification configuration.
36699	// If you don't provide one, Amazon S3 will assign an ID.
36700	Id *string `type:"string"`
36701
36702	// The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3
36703	// publishes a message when it detects events of the specified type.
36704	//
36705	// TopicArn is a required field
36706	TopicArn *string `locationName:"Topic" type:"string" required:"true"`
36707}
36708
36709// String returns the string representation.
36710//
36711// API parameter values that are decorated as "sensitive" in the API will not
36712// be included in the string output. The member name will be present, but the
36713// value will be replaced with "sensitive".
36714func (s TopicConfiguration) String() string {
36715	return awsutil.Prettify(s)
36716}
36717
36718// GoString returns the string representation.
36719//
36720// API parameter values that are decorated as "sensitive" in the API will not
36721// be included in the string output. The member name will be present, but the
36722// value will be replaced with "sensitive".
36723func (s TopicConfiguration) GoString() string {
36724	return s.String()
36725}
36726
36727// Validate inspects the fields of the type to determine if they are valid.
36728func (s *TopicConfiguration) Validate() error {
36729	invalidParams := request.ErrInvalidParams{Context: "TopicConfiguration"}
36730	if s.Events == nil {
36731		invalidParams.Add(request.NewErrParamRequired("Events"))
36732	}
36733	if s.TopicArn == nil {
36734		invalidParams.Add(request.NewErrParamRequired("TopicArn"))
36735	}
36736
36737	if invalidParams.Len() > 0 {
36738		return invalidParams
36739	}
36740	return nil
36741}
36742
36743// SetEvents sets the Events field's value.
36744func (s *TopicConfiguration) SetEvents(v []*string) *TopicConfiguration {
36745	s.Events = v
36746	return s
36747}
36748
36749// SetFilter sets the Filter field's value.
36750func (s *TopicConfiguration) SetFilter(v *NotificationConfigurationFilter) *TopicConfiguration {
36751	s.Filter = v
36752	return s
36753}
36754
36755// SetId sets the Id field's value.
36756func (s *TopicConfiguration) SetId(v string) *TopicConfiguration {
36757	s.Id = &v
36758	return s
36759}
36760
36761// SetTopicArn sets the TopicArn field's value.
36762func (s *TopicConfiguration) SetTopicArn(v string) *TopicConfiguration {
36763	s.TopicArn = &v
36764	return s
36765}
36766
36767// A container for specifying the configuration for publication of messages
36768// to an Amazon Simple Notification Service (Amazon SNS) topic when Amazon S3
36769// detects specified events. This data type is deprecated. Use TopicConfiguration
36770// (https://docs.aws.amazon.com/AmazonS3/latest/API/API_TopicConfiguration.html)
36771// instead.
36772type TopicConfigurationDeprecated struct {
36773	_ struct{} `type:"structure"`
36774
36775	// Bucket event for which to send notifications.
36776	//
36777	// Deprecated: Event has been deprecated
36778	Event *string `deprecated:"true" type:"string" enum:"Event"`
36779
36780	// A collection of events related to objects
36781	Events []*string `locationName:"Event" type:"list" flattened:"true"`
36782
36783	// An optional unique identifier for configurations in a notification configuration.
36784	// If you don't provide one, Amazon S3 will assign an ID.
36785	Id *string `type:"string"`
36786
36787	// Amazon SNS topic to which Amazon S3 will publish a message to report the
36788	// specified events for the bucket.
36789	Topic *string `type:"string"`
36790}
36791
36792// String returns the string representation.
36793//
36794// API parameter values that are decorated as "sensitive" in the API will not
36795// be included in the string output. The member name will be present, but the
36796// value will be replaced with "sensitive".
36797func (s TopicConfigurationDeprecated) String() string {
36798	return awsutil.Prettify(s)
36799}
36800
36801// GoString returns the string representation.
36802//
36803// API parameter values that are decorated as "sensitive" in the API will not
36804// be included in the string output. The member name will be present, but the
36805// value will be replaced with "sensitive".
36806func (s TopicConfigurationDeprecated) GoString() string {
36807	return s.String()
36808}
36809
36810// SetEvent sets the Event field's value.
36811func (s *TopicConfigurationDeprecated) SetEvent(v string) *TopicConfigurationDeprecated {
36812	s.Event = &v
36813	return s
36814}
36815
36816// SetEvents sets the Events field's value.
36817func (s *TopicConfigurationDeprecated) SetEvents(v []*string) *TopicConfigurationDeprecated {
36818	s.Events = v
36819	return s
36820}
36821
36822// SetId sets the Id field's value.
36823func (s *TopicConfigurationDeprecated) SetId(v string) *TopicConfigurationDeprecated {
36824	s.Id = &v
36825	return s
36826}
36827
36828// SetTopic sets the Topic field's value.
36829func (s *TopicConfigurationDeprecated) SetTopic(v string) *TopicConfigurationDeprecated {
36830	s.Topic = &v
36831	return s
36832}
36833
36834// Specifies when an object transitions to a specified storage class. For more
36835// information about Amazon S3 lifecycle configuration rules, see Transitioning
36836// Objects Using Amazon S3 Lifecycle (https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-transition-general-considerations.html)
36837// in the Amazon S3 User Guide.
36838type Transition struct {
36839	_ struct{} `type:"structure"`
36840
36841	// Indicates when objects are transitioned to the specified storage class. The
36842	// date value must be in ISO 8601 format. The time is always midnight UTC.
36843	Date *time.Time `type:"timestamp" timestampFormat:"iso8601"`
36844
36845	// Indicates the number of days after creation when objects are transitioned
36846	// to the specified storage class. The value must be a positive integer.
36847	Days *int64 `type:"integer"`
36848
36849	// The storage class to which you want the object to transition.
36850	StorageClass *string `type:"string" enum:"TransitionStorageClass"`
36851}
36852
36853// String returns the string representation.
36854//
36855// API parameter values that are decorated as "sensitive" in the API will not
36856// be included in the string output. The member name will be present, but the
36857// value will be replaced with "sensitive".
36858func (s Transition) String() string {
36859	return awsutil.Prettify(s)
36860}
36861
36862// GoString returns the string representation.
36863//
36864// API parameter values that are decorated as "sensitive" in the API will not
36865// be included in the string output. The member name will be present, but the
36866// value will be replaced with "sensitive".
36867func (s Transition) GoString() string {
36868	return s.String()
36869}
36870
36871// SetDate sets the Date field's value.
36872func (s *Transition) SetDate(v time.Time) *Transition {
36873	s.Date = &v
36874	return s
36875}
36876
36877// SetDays sets the Days field's value.
36878func (s *Transition) SetDays(v int64) *Transition {
36879	s.Days = &v
36880	return s
36881}
36882
36883// SetStorageClass sets the StorageClass field's value.
36884func (s *Transition) SetStorageClass(v string) *Transition {
36885	s.StorageClass = &v
36886	return s
36887}
36888
36889type UploadPartCopyInput struct {
36890	_ struct{} `locationName:"UploadPartCopyRequest" type:"structure"`
36891
36892	// The bucket name.
36893	//
36894	// When using this action with an access point, you must direct requests to
36895	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
36896	// When using this action with an access point through the Amazon Web Services
36897	// SDKs, you provide the access point ARN in place of the bucket name. For more
36898	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
36899	// in the Amazon S3 User Guide.
36900	//
36901	// When using this action with Amazon S3 on Outposts, you must direct requests
36902	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
36903	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
36904	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
36905	// you provide the Outposts bucket ARN in place of the bucket name. For more
36906	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
36907	// in the Amazon S3 User Guide.
36908	//
36909	// Bucket is a required field
36910	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
36911
36912	// Specifies the source object for the copy operation. You specify the value
36913	// in one of two formats, depending on whether you want to access the source
36914	// object through an access point (https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html):
36915	//
36916	//    * For objects not accessed through an access point, specify the name of
36917	//    the source bucket and key of the source object, separated by a slash (/).
36918	//    For example, to copy the object reports/january.pdf from the bucket awsexamplebucket,
36919	//    use awsexamplebucket/reports/january.pdf. The value must be URL encoded.
36920	//
36921	//    * For objects accessed through access points, specify the Amazon Resource
36922	//    Name (ARN) of the object as accessed through the access point, in the
36923	//    format arn:aws:s3:<Region>:<account-id>:accesspoint/<access-point-name>/object/<key>.
36924	//    For example, to copy the object reports/january.pdf through access point
36925	//    my-access-point owned by account 123456789012 in Region us-west-2, use
36926	//    the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf.
36927	//    The value must be URL encoded. Amazon S3 supports copy operations using
36928	//    access points only when the source and destination buckets are in the
36929	//    same Amazon Web Services Region. Alternatively, for objects accessed through
36930	//    Amazon S3 on Outposts, specify the ARN of the object as accessed in the
36931	//    format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/object/<key>.
36932	//    For example, to copy the object reports/january.pdf through outpost my-outpost
36933	//    owned by account 123456789012 in Region us-west-2, use the URL encoding
36934	//    of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf.
36935	//    The value must be URL encoded.
36936	//
36937	// To copy a specific version of an object, append ?versionId=<version-id> to
36938	// the value (for example, awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).
36939	// If you don't specify a version ID, Amazon S3 copies the latest version of
36940	// the source object.
36941	//
36942	// CopySource is a required field
36943	CopySource *string `location:"header" locationName:"x-amz-copy-source" type:"string" required:"true"`
36944
36945	// Copies the object if its entity tag (ETag) matches the specified tag.
36946	CopySourceIfMatch *string `location:"header" locationName:"x-amz-copy-source-if-match" type:"string"`
36947
36948	// Copies the object if it has been modified since the specified time.
36949	CopySourceIfModifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-modified-since" type:"timestamp"`
36950
36951	// Copies the object if its entity tag (ETag) is different than the specified
36952	// ETag.
36953	CopySourceIfNoneMatch *string `location:"header" locationName:"x-amz-copy-source-if-none-match" type:"string"`
36954
36955	// Copies the object if it hasn't been modified since the specified time.
36956	CopySourceIfUnmodifiedSince *time.Time `location:"header" locationName:"x-amz-copy-source-if-unmodified-since" type:"timestamp"`
36957
36958	// The range of bytes to copy from the source object. The range value must use
36959	// the form bytes=first-last, where the first and last are the zero-based byte
36960	// offsets to copy. For example, bytes=0-9 indicates that you want to copy the
36961	// first 10 bytes of the source. You can copy a range only if the source object
36962	// is greater than 5 MB.
36963	CopySourceRange *string `location:"header" locationName:"x-amz-copy-source-range" type:"string"`
36964
36965	// Specifies the algorithm to use when decrypting the source object (for example,
36966	// AES256).
36967	CopySourceSSECustomerAlgorithm *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm" type:"string"`
36968
36969	// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt
36970	// the source object. The encryption key provided in this header must be one
36971	// that was used when the source object was created.
36972	//
36973	// CopySourceSSECustomerKey is a sensitive parameter and its value will be
36974	// replaced with "sensitive" in string returned by UploadPartCopyInput's
36975	// String and GoString methods.
36976	CopySourceSSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key" type:"string" sensitive:"true"`
36977
36978	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
36979	// Amazon S3 uses this header for a message integrity check to ensure that the
36980	// encryption key was transmitted without error.
36981	CopySourceSSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5" type:"string"`
36982
36983	// The account ID of the expected destination bucket owner. If the destination
36984	// bucket is owned by a different account, the request will fail with an HTTP
36985	// 403 (Access Denied) error.
36986	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
36987
36988	// The account ID of the expected source bucket owner. If the source bucket
36989	// is owned by a different account, the request will fail with an HTTP 403 (Access
36990	// Denied) error.
36991	ExpectedSourceBucketOwner *string `location:"header" locationName:"x-amz-source-expected-bucket-owner" type:"string"`
36992
36993	// Object key for which the multipart upload was initiated.
36994	//
36995	// Key is a required field
36996	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
36997
36998	// Part number of part being copied. This is a positive integer between 1 and
36999	// 10,000.
37000	//
37001	// PartNumber is a required field
37002	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
37003
37004	// Confirms that the requester knows that they will be charged for the request.
37005	// Bucket owners need not specify this parameter in their requests. For information
37006	// about downloading objects from requester pays buckets, see Downloading Objects
37007	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
37008	// in the Amazon S3 User Guide.
37009	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
37010
37011	// Specifies the algorithm to use to when encrypting the object (for example,
37012	// AES256).
37013	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37014
37015	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
37016	// data. This value is used to store the object and then it is discarded; Amazon
37017	// S3 does not store the encryption key. The key must be appropriate for use
37018	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
37019	// header. This must be the same encryption key specified in the initiate multipart
37020	// upload request.
37021	//
37022	// SSECustomerKey is a sensitive parameter and its value will be
37023	// replaced with "sensitive" in string returned by UploadPartCopyInput's
37024	// String and GoString methods.
37025	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
37026
37027	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
37028	// Amazon S3 uses this header for a message integrity check to ensure that the
37029	// encryption key was transmitted without error.
37030	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37031
37032	// Upload ID identifying the multipart upload whose part is being copied.
37033	//
37034	// UploadId is a required field
37035	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
37036}
37037
37038// String returns the string representation.
37039//
37040// API parameter values that are decorated as "sensitive" in the API will not
37041// be included in the string output. The member name will be present, but the
37042// value will be replaced with "sensitive".
37043func (s UploadPartCopyInput) String() string {
37044	return awsutil.Prettify(s)
37045}
37046
37047// GoString returns the string representation.
37048//
37049// API parameter values that are decorated as "sensitive" in the API will not
37050// be included in the string output. The member name will be present, but the
37051// value will be replaced with "sensitive".
37052func (s UploadPartCopyInput) GoString() string {
37053	return s.String()
37054}
37055
37056// Validate inspects the fields of the type to determine if they are valid.
37057func (s *UploadPartCopyInput) Validate() error {
37058	invalidParams := request.ErrInvalidParams{Context: "UploadPartCopyInput"}
37059	if s.Bucket == nil {
37060		invalidParams.Add(request.NewErrParamRequired("Bucket"))
37061	}
37062	if s.Bucket != nil && len(*s.Bucket) < 1 {
37063		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
37064	}
37065	if s.CopySource == nil {
37066		invalidParams.Add(request.NewErrParamRequired("CopySource"))
37067	}
37068	if s.Key == nil {
37069		invalidParams.Add(request.NewErrParamRequired("Key"))
37070	}
37071	if s.Key != nil && len(*s.Key) < 1 {
37072		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
37073	}
37074	if s.PartNumber == nil {
37075		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
37076	}
37077	if s.UploadId == nil {
37078		invalidParams.Add(request.NewErrParamRequired("UploadId"))
37079	}
37080
37081	if invalidParams.Len() > 0 {
37082		return invalidParams
37083	}
37084	return nil
37085}
37086
37087// SetBucket sets the Bucket field's value.
37088func (s *UploadPartCopyInput) SetBucket(v string) *UploadPartCopyInput {
37089	s.Bucket = &v
37090	return s
37091}
37092
37093func (s *UploadPartCopyInput) getBucket() (v string) {
37094	if s.Bucket == nil {
37095		return v
37096	}
37097	return *s.Bucket
37098}
37099
37100// SetCopySource sets the CopySource field's value.
37101func (s *UploadPartCopyInput) SetCopySource(v string) *UploadPartCopyInput {
37102	s.CopySource = &v
37103	return s
37104}
37105
37106// SetCopySourceIfMatch sets the CopySourceIfMatch field's value.
37107func (s *UploadPartCopyInput) SetCopySourceIfMatch(v string) *UploadPartCopyInput {
37108	s.CopySourceIfMatch = &v
37109	return s
37110}
37111
37112// SetCopySourceIfModifiedSince sets the CopySourceIfModifiedSince field's value.
37113func (s *UploadPartCopyInput) SetCopySourceIfModifiedSince(v time.Time) *UploadPartCopyInput {
37114	s.CopySourceIfModifiedSince = &v
37115	return s
37116}
37117
37118// SetCopySourceIfNoneMatch sets the CopySourceIfNoneMatch field's value.
37119func (s *UploadPartCopyInput) SetCopySourceIfNoneMatch(v string) *UploadPartCopyInput {
37120	s.CopySourceIfNoneMatch = &v
37121	return s
37122}
37123
37124// SetCopySourceIfUnmodifiedSince sets the CopySourceIfUnmodifiedSince field's value.
37125func (s *UploadPartCopyInput) SetCopySourceIfUnmodifiedSince(v time.Time) *UploadPartCopyInput {
37126	s.CopySourceIfUnmodifiedSince = &v
37127	return s
37128}
37129
37130// SetCopySourceRange sets the CopySourceRange field's value.
37131func (s *UploadPartCopyInput) SetCopySourceRange(v string) *UploadPartCopyInput {
37132	s.CopySourceRange = &v
37133	return s
37134}
37135
37136// SetCopySourceSSECustomerAlgorithm sets the CopySourceSSECustomerAlgorithm field's value.
37137func (s *UploadPartCopyInput) SetCopySourceSSECustomerAlgorithm(v string) *UploadPartCopyInput {
37138	s.CopySourceSSECustomerAlgorithm = &v
37139	return s
37140}
37141
37142// SetCopySourceSSECustomerKey sets the CopySourceSSECustomerKey field's value.
37143func (s *UploadPartCopyInput) SetCopySourceSSECustomerKey(v string) *UploadPartCopyInput {
37144	s.CopySourceSSECustomerKey = &v
37145	return s
37146}
37147
37148func (s *UploadPartCopyInput) getCopySourceSSECustomerKey() (v string) {
37149	if s.CopySourceSSECustomerKey == nil {
37150		return v
37151	}
37152	return *s.CopySourceSSECustomerKey
37153}
37154
37155// SetCopySourceSSECustomerKeyMD5 sets the CopySourceSSECustomerKeyMD5 field's value.
37156func (s *UploadPartCopyInput) SetCopySourceSSECustomerKeyMD5(v string) *UploadPartCopyInput {
37157	s.CopySourceSSECustomerKeyMD5 = &v
37158	return s
37159}
37160
37161// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
37162func (s *UploadPartCopyInput) SetExpectedBucketOwner(v string) *UploadPartCopyInput {
37163	s.ExpectedBucketOwner = &v
37164	return s
37165}
37166
37167// SetExpectedSourceBucketOwner sets the ExpectedSourceBucketOwner field's value.
37168func (s *UploadPartCopyInput) SetExpectedSourceBucketOwner(v string) *UploadPartCopyInput {
37169	s.ExpectedSourceBucketOwner = &v
37170	return s
37171}
37172
37173// SetKey sets the Key field's value.
37174func (s *UploadPartCopyInput) SetKey(v string) *UploadPartCopyInput {
37175	s.Key = &v
37176	return s
37177}
37178
37179// SetPartNumber sets the PartNumber field's value.
37180func (s *UploadPartCopyInput) SetPartNumber(v int64) *UploadPartCopyInput {
37181	s.PartNumber = &v
37182	return s
37183}
37184
37185// SetRequestPayer sets the RequestPayer field's value.
37186func (s *UploadPartCopyInput) SetRequestPayer(v string) *UploadPartCopyInput {
37187	s.RequestPayer = &v
37188	return s
37189}
37190
37191// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37192func (s *UploadPartCopyInput) SetSSECustomerAlgorithm(v string) *UploadPartCopyInput {
37193	s.SSECustomerAlgorithm = &v
37194	return s
37195}
37196
37197// SetSSECustomerKey sets the SSECustomerKey field's value.
37198func (s *UploadPartCopyInput) SetSSECustomerKey(v string) *UploadPartCopyInput {
37199	s.SSECustomerKey = &v
37200	return s
37201}
37202
37203func (s *UploadPartCopyInput) getSSECustomerKey() (v string) {
37204	if s.SSECustomerKey == nil {
37205		return v
37206	}
37207	return *s.SSECustomerKey
37208}
37209
37210// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37211func (s *UploadPartCopyInput) SetSSECustomerKeyMD5(v string) *UploadPartCopyInput {
37212	s.SSECustomerKeyMD5 = &v
37213	return s
37214}
37215
37216// SetUploadId sets the UploadId field's value.
37217func (s *UploadPartCopyInput) SetUploadId(v string) *UploadPartCopyInput {
37218	s.UploadId = &v
37219	return s
37220}
37221
37222func (s *UploadPartCopyInput) getEndpointARN() (arn.Resource, error) {
37223	if s.Bucket == nil {
37224		return nil, fmt.Errorf("member Bucket is nil")
37225	}
37226	return parseEndpointARN(*s.Bucket)
37227}
37228
37229func (s *UploadPartCopyInput) hasEndpointARN() bool {
37230	if s.Bucket == nil {
37231		return false
37232	}
37233	return arn.IsARN(*s.Bucket)
37234}
37235
37236// updateArnableField updates the value of the input field that
37237// takes an ARN as an input. This method is useful to backfill
37238// the parsed resource name from ARN into the input member.
37239// It returns a pointer to a modified copy of input and an error.
37240// Note that original input is not modified.
37241func (s UploadPartCopyInput) updateArnableField(v string) (interface{}, error) {
37242	if s.Bucket == nil {
37243		return nil, fmt.Errorf("member Bucket is nil")
37244	}
37245	s.Bucket = aws.String(v)
37246	return &s, nil
37247}
37248
37249type UploadPartCopyOutput struct {
37250	_ struct{} `type:"structure" payload:"CopyPartResult"`
37251
37252	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
37253	// encryption with Amazon Web Services KMS (SSE-KMS).
37254	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
37255
37256	// Container for all response elements.
37257	CopyPartResult *CopyPartResult `type:"structure"`
37258
37259	// The version of the source object that was copied, if you have enabled versioning
37260	// on the source bucket.
37261	CopySourceVersionId *string `location:"header" locationName:"x-amz-copy-source-version-id" type:"string"`
37262
37263	// If present, indicates that the requester was successfully charged for the
37264	// request.
37265	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
37266
37267	// If server-side encryption with a customer-provided encryption key was requested,
37268	// the response will include this header confirming the encryption algorithm
37269	// used.
37270	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37271
37272	// If server-side encryption with a customer-provided encryption key was requested,
37273	// the response will include this header to provide round-trip message integrity
37274	// verification of the customer-provided encryption key.
37275	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37276
37277	// If present, specifies the ID of the Amazon Web Services Key Management Service
37278	// (Amazon Web Services KMS) symmetric customer managed key that was used for
37279	// the object.
37280	//
37281	// SSEKMSKeyId is a sensitive parameter and its value will be
37282	// replaced with "sensitive" in string returned by UploadPartCopyOutput's
37283	// String and GoString methods.
37284	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
37285
37286	// The server-side encryption algorithm used when storing this object in Amazon
37287	// S3 (for example, AES256, aws:kms).
37288	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
37289}
37290
37291// String returns the string representation.
37292//
37293// API parameter values that are decorated as "sensitive" in the API will not
37294// be included in the string output. The member name will be present, but the
37295// value will be replaced with "sensitive".
37296func (s UploadPartCopyOutput) String() string {
37297	return awsutil.Prettify(s)
37298}
37299
37300// GoString returns the string representation.
37301//
37302// API parameter values that are decorated as "sensitive" in the API will not
37303// be included in the string output. The member name will be present, but the
37304// value will be replaced with "sensitive".
37305func (s UploadPartCopyOutput) GoString() string {
37306	return s.String()
37307}
37308
37309// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
37310func (s *UploadPartCopyOutput) SetBucketKeyEnabled(v bool) *UploadPartCopyOutput {
37311	s.BucketKeyEnabled = &v
37312	return s
37313}
37314
37315// SetCopyPartResult sets the CopyPartResult field's value.
37316func (s *UploadPartCopyOutput) SetCopyPartResult(v *CopyPartResult) *UploadPartCopyOutput {
37317	s.CopyPartResult = v
37318	return s
37319}
37320
37321// SetCopySourceVersionId sets the CopySourceVersionId field's value.
37322func (s *UploadPartCopyOutput) SetCopySourceVersionId(v string) *UploadPartCopyOutput {
37323	s.CopySourceVersionId = &v
37324	return s
37325}
37326
37327// SetRequestCharged sets the RequestCharged field's value.
37328func (s *UploadPartCopyOutput) SetRequestCharged(v string) *UploadPartCopyOutput {
37329	s.RequestCharged = &v
37330	return s
37331}
37332
37333// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37334func (s *UploadPartCopyOutput) SetSSECustomerAlgorithm(v string) *UploadPartCopyOutput {
37335	s.SSECustomerAlgorithm = &v
37336	return s
37337}
37338
37339// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37340func (s *UploadPartCopyOutput) SetSSECustomerKeyMD5(v string) *UploadPartCopyOutput {
37341	s.SSECustomerKeyMD5 = &v
37342	return s
37343}
37344
37345// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
37346func (s *UploadPartCopyOutput) SetSSEKMSKeyId(v string) *UploadPartCopyOutput {
37347	s.SSEKMSKeyId = &v
37348	return s
37349}
37350
37351// SetServerSideEncryption sets the ServerSideEncryption field's value.
37352func (s *UploadPartCopyOutput) SetServerSideEncryption(v string) *UploadPartCopyOutput {
37353	s.ServerSideEncryption = &v
37354	return s
37355}
37356
37357type UploadPartInput struct {
37358	_ struct{} `locationName:"UploadPartRequest" type:"structure" payload:"Body"`
37359
37360	// Object data.
37361	Body io.ReadSeeker `type:"blob"`
37362
37363	// The name of the bucket to which the multipart upload was initiated.
37364	//
37365	// When using this action with an access point, you must direct requests to
37366	// the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com.
37367	// When using this action with an access point through the Amazon Web Services
37368	// SDKs, you provide the access point ARN in place of the bucket name. For more
37369	// information about access point ARNs, see Using access points (https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)
37370	// in the Amazon S3 User Guide.
37371	//
37372	// When using this action with Amazon S3 on Outposts, you must direct requests
37373	// to the S3 on Outposts hostname. The S3 on Outposts hostname takes the form
37374	// AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When
37375	// using this action using S3 on Outposts through the Amazon Web Services SDKs,
37376	// you provide the Outposts bucket ARN in place of the bucket name. For more
37377	// information about S3 on Outposts ARNs, see Using S3 on Outposts (https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3onOutposts.html)
37378	// in the Amazon S3 User Guide.
37379	//
37380	// Bucket is a required field
37381	Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
37382
37383	// Size of the body in bytes. This parameter is useful when the size of the
37384	// body cannot be determined automatically.
37385	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
37386
37387	// The base64-encoded 128-bit MD5 digest of the part data. This parameter is
37388	// auto-populated when using the command from the CLI. This parameter is required
37389	// if object lock parameters are specified.
37390	ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
37391
37392	// The account ID of the expected bucket owner. If the bucket is owned by a
37393	// different account, the request will fail with an HTTP 403 (Access Denied)
37394	// error.
37395	ExpectedBucketOwner *string `location:"header" locationName:"x-amz-expected-bucket-owner" type:"string"`
37396
37397	// Object key for which the multipart upload was initiated.
37398	//
37399	// Key is a required field
37400	Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
37401
37402	// Part number of part being uploaded. This is a positive integer between 1
37403	// and 10,000.
37404	//
37405	// PartNumber is a required field
37406	PartNumber *int64 `location:"querystring" locationName:"partNumber" type:"integer" required:"true"`
37407
37408	// Confirms that the requester knows that they will be charged for the request.
37409	// Bucket owners need not specify this parameter in their requests. For information
37410	// about downloading objects from requester pays buckets, see Downloading Objects
37411	// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
37412	// in the Amazon S3 User Guide.
37413	RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
37414
37415	// Specifies the algorithm to use to when encrypting the object (for example,
37416	// AES256).
37417	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37418
37419	// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
37420	// data. This value is used to store the object and then it is discarded; Amazon
37421	// S3 does not store the encryption key. The key must be appropriate for use
37422	// with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
37423	// header. This must be the same encryption key specified in the initiate multipart
37424	// upload request.
37425	//
37426	// SSECustomerKey is a sensitive parameter and its value will be
37427	// replaced with "sensitive" in string returned by UploadPartInput's
37428	// String and GoString methods.
37429	SSECustomerKey *string `marshal-as:"blob" location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
37430
37431	// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
37432	// Amazon S3 uses this header for a message integrity check to ensure that the
37433	// encryption key was transmitted without error.
37434	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37435
37436	// Upload ID identifying the multipart upload whose part is being uploaded.
37437	//
37438	// UploadId is a required field
37439	UploadId *string `location:"querystring" locationName:"uploadId" type:"string" required:"true"`
37440}
37441
37442// String returns the string representation.
37443//
37444// API parameter values that are decorated as "sensitive" in the API will not
37445// be included in the string output. The member name will be present, but the
37446// value will be replaced with "sensitive".
37447func (s UploadPartInput) String() string {
37448	return awsutil.Prettify(s)
37449}
37450
37451// GoString returns the string representation.
37452//
37453// API parameter values that are decorated as "sensitive" in the API will not
37454// be included in the string output. The member name will be present, but the
37455// value will be replaced with "sensitive".
37456func (s UploadPartInput) GoString() string {
37457	return s.String()
37458}
37459
37460// Validate inspects the fields of the type to determine if they are valid.
37461func (s *UploadPartInput) Validate() error {
37462	invalidParams := request.ErrInvalidParams{Context: "UploadPartInput"}
37463	if s.Bucket == nil {
37464		invalidParams.Add(request.NewErrParamRequired("Bucket"))
37465	}
37466	if s.Bucket != nil && len(*s.Bucket) < 1 {
37467		invalidParams.Add(request.NewErrParamMinLen("Bucket", 1))
37468	}
37469	if s.Key == nil {
37470		invalidParams.Add(request.NewErrParamRequired("Key"))
37471	}
37472	if s.Key != nil && len(*s.Key) < 1 {
37473		invalidParams.Add(request.NewErrParamMinLen("Key", 1))
37474	}
37475	if s.PartNumber == nil {
37476		invalidParams.Add(request.NewErrParamRequired("PartNumber"))
37477	}
37478	if s.UploadId == nil {
37479		invalidParams.Add(request.NewErrParamRequired("UploadId"))
37480	}
37481
37482	if invalidParams.Len() > 0 {
37483		return invalidParams
37484	}
37485	return nil
37486}
37487
37488// SetBody sets the Body field's value.
37489func (s *UploadPartInput) SetBody(v io.ReadSeeker) *UploadPartInput {
37490	s.Body = v
37491	return s
37492}
37493
37494// SetBucket sets the Bucket field's value.
37495func (s *UploadPartInput) SetBucket(v string) *UploadPartInput {
37496	s.Bucket = &v
37497	return s
37498}
37499
37500func (s *UploadPartInput) getBucket() (v string) {
37501	if s.Bucket == nil {
37502		return v
37503	}
37504	return *s.Bucket
37505}
37506
37507// SetContentLength sets the ContentLength field's value.
37508func (s *UploadPartInput) SetContentLength(v int64) *UploadPartInput {
37509	s.ContentLength = &v
37510	return s
37511}
37512
37513// SetContentMD5 sets the ContentMD5 field's value.
37514func (s *UploadPartInput) SetContentMD5(v string) *UploadPartInput {
37515	s.ContentMD5 = &v
37516	return s
37517}
37518
37519// SetExpectedBucketOwner sets the ExpectedBucketOwner field's value.
37520func (s *UploadPartInput) SetExpectedBucketOwner(v string) *UploadPartInput {
37521	s.ExpectedBucketOwner = &v
37522	return s
37523}
37524
37525// SetKey sets the Key field's value.
37526func (s *UploadPartInput) SetKey(v string) *UploadPartInput {
37527	s.Key = &v
37528	return s
37529}
37530
37531// SetPartNumber sets the PartNumber field's value.
37532func (s *UploadPartInput) SetPartNumber(v int64) *UploadPartInput {
37533	s.PartNumber = &v
37534	return s
37535}
37536
37537// SetRequestPayer sets the RequestPayer field's value.
37538func (s *UploadPartInput) SetRequestPayer(v string) *UploadPartInput {
37539	s.RequestPayer = &v
37540	return s
37541}
37542
37543// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37544func (s *UploadPartInput) SetSSECustomerAlgorithm(v string) *UploadPartInput {
37545	s.SSECustomerAlgorithm = &v
37546	return s
37547}
37548
37549// SetSSECustomerKey sets the SSECustomerKey field's value.
37550func (s *UploadPartInput) SetSSECustomerKey(v string) *UploadPartInput {
37551	s.SSECustomerKey = &v
37552	return s
37553}
37554
37555func (s *UploadPartInput) getSSECustomerKey() (v string) {
37556	if s.SSECustomerKey == nil {
37557		return v
37558	}
37559	return *s.SSECustomerKey
37560}
37561
37562// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37563func (s *UploadPartInput) SetSSECustomerKeyMD5(v string) *UploadPartInput {
37564	s.SSECustomerKeyMD5 = &v
37565	return s
37566}
37567
37568// SetUploadId sets the UploadId field's value.
37569func (s *UploadPartInput) SetUploadId(v string) *UploadPartInput {
37570	s.UploadId = &v
37571	return s
37572}
37573
37574func (s *UploadPartInput) getEndpointARN() (arn.Resource, error) {
37575	if s.Bucket == nil {
37576		return nil, fmt.Errorf("member Bucket is nil")
37577	}
37578	return parseEndpointARN(*s.Bucket)
37579}
37580
37581func (s *UploadPartInput) hasEndpointARN() bool {
37582	if s.Bucket == nil {
37583		return false
37584	}
37585	return arn.IsARN(*s.Bucket)
37586}
37587
37588// updateArnableField updates the value of the input field that
37589// takes an ARN as an input. This method is useful to backfill
37590// the parsed resource name from ARN into the input member.
37591// It returns a pointer to a modified copy of input and an error.
37592// Note that original input is not modified.
37593func (s UploadPartInput) updateArnableField(v string) (interface{}, error) {
37594	if s.Bucket == nil {
37595		return nil, fmt.Errorf("member Bucket is nil")
37596	}
37597	s.Bucket = aws.String(v)
37598	return &s, nil
37599}
37600
37601type UploadPartOutput struct {
37602	_ struct{} `type:"structure"`
37603
37604	// Indicates whether the multipart upload uses an S3 Bucket Key for server-side
37605	// encryption with Amazon Web Services KMS (SSE-KMS).
37606	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
37607
37608	// Entity tag for the uploaded object.
37609	ETag *string `location:"header" locationName:"ETag" type:"string"`
37610
37611	// If present, indicates that the requester was successfully charged for the
37612	// request.
37613	RequestCharged *string `location:"header" locationName:"x-amz-request-charged" type:"string" enum:"RequestCharged"`
37614
37615	// If server-side encryption with a customer-provided encryption key was requested,
37616	// the response will include this header confirming the encryption algorithm
37617	// used.
37618	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
37619
37620	// If server-side encryption with a customer-provided encryption key was requested,
37621	// the response will include this header to provide round-trip message integrity
37622	// verification of the customer-provided encryption key.
37623	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37624
37625	// If present, specifies the ID of the Amazon Web Services Key Management Service
37626	// (Amazon Web Services KMS) symmetric customer managed key was used for the
37627	// object.
37628	//
37629	// SSEKMSKeyId is a sensitive parameter and its value will be
37630	// replaced with "sensitive" in string returned by UploadPartOutput's
37631	// String and GoString methods.
37632	SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
37633
37634	// The server-side encryption algorithm used when storing this object in Amazon
37635	// S3 (for example, AES256, aws:kms).
37636	ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
37637}
37638
37639// String returns the string representation.
37640//
37641// API parameter values that are decorated as "sensitive" in the API will not
37642// be included in the string output. The member name will be present, but the
37643// value will be replaced with "sensitive".
37644func (s UploadPartOutput) String() string {
37645	return awsutil.Prettify(s)
37646}
37647
37648// GoString returns the string representation.
37649//
37650// API parameter values that are decorated as "sensitive" in the API will not
37651// be included in the string output. The member name will be present, but the
37652// value will be replaced with "sensitive".
37653func (s UploadPartOutput) GoString() string {
37654	return s.String()
37655}
37656
37657// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
37658func (s *UploadPartOutput) SetBucketKeyEnabled(v bool) *UploadPartOutput {
37659	s.BucketKeyEnabled = &v
37660	return s
37661}
37662
37663// SetETag sets the ETag field's value.
37664func (s *UploadPartOutput) SetETag(v string) *UploadPartOutput {
37665	s.ETag = &v
37666	return s
37667}
37668
37669// SetRequestCharged sets the RequestCharged field's value.
37670func (s *UploadPartOutput) SetRequestCharged(v string) *UploadPartOutput {
37671	s.RequestCharged = &v
37672	return s
37673}
37674
37675// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
37676func (s *UploadPartOutput) SetSSECustomerAlgorithm(v string) *UploadPartOutput {
37677	s.SSECustomerAlgorithm = &v
37678	return s
37679}
37680
37681// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
37682func (s *UploadPartOutput) SetSSECustomerKeyMD5(v string) *UploadPartOutput {
37683	s.SSECustomerKeyMD5 = &v
37684	return s
37685}
37686
37687// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
37688func (s *UploadPartOutput) SetSSEKMSKeyId(v string) *UploadPartOutput {
37689	s.SSEKMSKeyId = &v
37690	return s
37691}
37692
37693// SetServerSideEncryption sets the ServerSideEncryption field's value.
37694func (s *UploadPartOutput) SetServerSideEncryption(v string) *UploadPartOutput {
37695	s.ServerSideEncryption = &v
37696	return s
37697}
37698
37699// Describes the versioning state of an Amazon S3 bucket. For more information,
37700// see PUT Bucket versioning (https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTVersioningStatus.html)
37701// in the Amazon S3 API Reference.
37702type VersioningConfiguration struct {
37703	_ struct{} `type:"structure"`
37704
37705	// Specifies whether MFA delete is enabled in the bucket versioning configuration.
37706	// This element is only returned if the bucket has been configured with MFA
37707	// delete. If the bucket has never been so configured, this element is not returned.
37708	MFADelete *string `locationName:"MfaDelete" type:"string" enum:"MFADelete"`
37709
37710	// The versioning state of the bucket.
37711	Status *string `type:"string" enum:"BucketVersioningStatus"`
37712}
37713
37714// String returns the string representation.
37715//
37716// API parameter values that are decorated as "sensitive" in the API will not
37717// be included in the string output. The member name will be present, but the
37718// value will be replaced with "sensitive".
37719func (s VersioningConfiguration) String() string {
37720	return awsutil.Prettify(s)
37721}
37722
37723// GoString returns the string representation.
37724//
37725// API parameter values that are decorated as "sensitive" in the API will not
37726// be included in the string output. The member name will be present, but the
37727// value will be replaced with "sensitive".
37728func (s VersioningConfiguration) GoString() string {
37729	return s.String()
37730}
37731
37732// SetMFADelete sets the MFADelete field's value.
37733func (s *VersioningConfiguration) SetMFADelete(v string) *VersioningConfiguration {
37734	s.MFADelete = &v
37735	return s
37736}
37737
37738// SetStatus sets the Status field's value.
37739func (s *VersioningConfiguration) SetStatus(v string) *VersioningConfiguration {
37740	s.Status = &v
37741	return s
37742}
37743
37744// Specifies website configuration parameters for an Amazon S3 bucket.
37745type WebsiteConfiguration struct {
37746	_ struct{} `type:"structure"`
37747
37748	// The name of the error document for the website.
37749	ErrorDocument *ErrorDocument `type:"structure"`
37750
37751	// The name of the index document for the website.
37752	IndexDocument *IndexDocument `type:"structure"`
37753
37754	// The redirect behavior for every request to this bucket's website endpoint.
37755	//
37756	// If you specify this property, you can't specify any other property.
37757	RedirectAllRequestsTo *RedirectAllRequestsTo `type:"structure"`
37758
37759	// Rules that define when a redirect is applied and the redirect behavior.
37760	RoutingRules []*RoutingRule `locationNameList:"RoutingRule" type:"list"`
37761}
37762
37763// String returns the string representation.
37764//
37765// API parameter values that are decorated as "sensitive" in the API will not
37766// be included in the string output. The member name will be present, but the
37767// value will be replaced with "sensitive".
37768func (s WebsiteConfiguration) String() string {
37769	return awsutil.Prettify(s)
37770}
37771
37772// GoString returns the string representation.
37773//
37774// API parameter values that are decorated as "sensitive" in the API will not
37775// be included in the string output. The member name will be present, but the
37776// value will be replaced with "sensitive".
37777func (s WebsiteConfiguration) GoString() string {
37778	return s.String()
37779}
37780
37781// Validate inspects the fields of the type to determine if they are valid.
37782func (s *WebsiteConfiguration) Validate() error {
37783	invalidParams := request.ErrInvalidParams{Context: "WebsiteConfiguration"}
37784	if s.ErrorDocument != nil {
37785		if err := s.ErrorDocument.Validate(); err != nil {
37786			invalidParams.AddNested("ErrorDocument", err.(request.ErrInvalidParams))
37787		}
37788	}
37789	if s.IndexDocument != nil {
37790		if err := s.IndexDocument.Validate(); err != nil {
37791			invalidParams.AddNested("IndexDocument", err.(request.ErrInvalidParams))
37792		}
37793	}
37794	if s.RedirectAllRequestsTo != nil {
37795		if err := s.RedirectAllRequestsTo.Validate(); err != nil {
37796			invalidParams.AddNested("RedirectAllRequestsTo", err.(request.ErrInvalidParams))
37797		}
37798	}
37799	if s.RoutingRules != nil {
37800		for i, v := range s.RoutingRules {
37801			if v == nil {
37802				continue
37803			}
37804			if err := v.Validate(); err != nil {
37805				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RoutingRules", i), err.(request.ErrInvalidParams))
37806			}
37807		}
37808	}
37809
37810	if invalidParams.Len() > 0 {
37811		return invalidParams
37812	}
37813	return nil
37814}
37815
37816// SetErrorDocument sets the ErrorDocument field's value.
37817func (s *WebsiteConfiguration) SetErrorDocument(v *ErrorDocument) *WebsiteConfiguration {
37818	s.ErrorDocument = v
37819	return s
37820}
37821
37822// SetIndexDocument sets the IndexDocument field's value.
37823func (s *WebsiteConfiguration) SetIndexDocument(v *IndexDocument) *WebsiteConfiguration {
37824	s.IndexDocument = v
37825	return s
37826}
37827
37828// SetRedirectAllRequestsTo sets the RedirectAllRequestsTo field's value.
37829func (s *WebsiteConfiguration) SetRedirectAllRequestsTo(v *RedirectAllRequestsTo) *WebsiteConfiguration {
37830	s.RedirectAllRequestsTo = v
37831	return s
37832}
37833
37834// SetRoutingRules sets the RoutingRules field's value.
37835func (s *WebsiteConfiguration) SetRoutingRules(v []*RoutingRule) *WebsiteConfiguration {
37836	s.RoutingRules = v
37837	return s
37838}
37839
37840type WriteGetObjectResponseInput struct {
37841	_ struct{} `locationName:"WriteGetObjectResponseRequest" type:"structure" payload:"Body"`
37842
37843	// Indicates that a range of bytes was specified.
37844	AcceptRanges *string `location:"header" locationName:"x-amz-fwd-header-accept-ranges" type:"string"`
37845
37846	// The object data.
37847	//
37848	// To use an non-seekable io.Reader for this request wrap the io.Reader with
37849	// "aws.ReadSeekCloser". The SDK will not retry request errors for non-seekable
37850	// readers. This will allow the SDK to send the reader's payload as chunked
37851	// transfer encoding.
37852	Body io.ReadSeeker `type:"blob"`
37853
37854	// Indicates whether the object stored in Amazon S3 uses an S3 bucket key for
37855	// server-side encryption with Amazon Web Services KMS (SSE-KMS).
37856	BucketKeyEnabled *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled" type:"boolean"`
37857
37858	// Specifies caching behavior along the request/reply chain.
37859	CacheControl *string `location:"header" locationName:"x-amz-fwd-header-Cache-Control" type:"string"`
37860
37861	// Specifies presentational information for the object.
37862	ContentDisposition *string `location:"header" locationName:"x-amz-fwd-header-Content-Disposition" type:"string"`
37863
37864	// Specifies what content encodings have been applied to the object and thus
37865	// what decoding mechanisms must be applied to obtain the media-type referenced
37866	// by the Content-Type header field.
37867	ContentEncoding *string `location:"header" locationName:"x-amz-fwd-header-Content-Encoding" type:"string"`
37868
37869	// The language the content is in.
37870	ContentLanguage *string `location:"header" locationName:"x-amz-fwd-header-Content-Language" type:"string"`
37871
37872	// The size of the content body in bytes.
37873	ContentLength *int64 `location:"header" locationName:"Content-Length" type:"long"`
37874
37875	// The portion of the object returned in the response.
37876	ContentRange *string `location:"header" locationName:"x-amz-fwd-header-Content-Range" type:"string"`
37877
37878	// A standard MIME type describing the format of the object data.
37879	ContentType *string `location:"header" locationName:"x-amz-fwd-header-Content-Type" type:"string"`
37880
37881	// Specifies whether an object stored in Amazon S3 is (true) or is not (false)
37882	// a delete marker.
37883	DeleteMarker *bool `location:"header" locationName:"x-amz-fwd-header-x-amz-delete-marker" type:"boolean"`
37884
37885	// An opaque identifier assigned by a web server to a specific version of a
37886	// resource found at a URL.
37887	ETag *string `location:"header" locationName:"x-amz-fwd-header-ETag" type:"string"`
37888
37889	// A string that uniquely identifies an error condition. Returned in the <Code>
37890	// tag of the error XML response for a corresponding GetObject call. Cannot
37891	// be used with a successful StatusCode header or when the transformed object
37892	// is provided in the body. All error codes from S3 are sentence-cased. Regex
37893	// value is "^[A-Z][a-zA-Z]+$".
37894	ErrorCode *string `location:"header" locationName:"x-amz-fwd-error-code" type:"string"`
37895
37896	// Contains a generic description of the error condition. Returned in the <Message>
37897	// tag of the error XML response for a corresponding GetObject call. Cannot
37898	// be used with a successful StatusCode header or when the transformed object
37899	// is provided in body.
37900	ErrorMessage *string `location:"header" locationName:"x-amz-fwd-error-message" type:"string"`
37901
37902	// If object stored in Amazon S3 expiration is configured (see PUT Bucket lifecycle)
37903	// it includes expiry-date and rule-id key-value pairs providing object expiration
37904	// information. The value of the rule-id is URL encoded.
37905	Expiration *string `location:"header" locationName:"x-amz-fwd-header-x-amz-expiration" type:"string"`
37906
37907	// The date and time at which the object is no longer cacheable.
37908	Expires *time.Time `location:"header" locationName:"x-amz-fwd-header-Expires" type:"timestamp"`
37909
37910	// The date and time that the object was last modified.
37911	LastModified *time.Time `location:"header" locationName:"x-amz-fwd-header-Last-Modified" type:"timestamp"`
37912
37913	// A map of metadata to store with the object in S3.
37914	Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
37915
37916	// Set to the number of metadata entries not returned in x-amz-meta headers.
37917	// This can happen if you create metadata using an API like SOAP that supports
37918	// more flexible metadata than the REST API. For example, using SOAP, you can
37919	// create metadata whose values are not legal HTTP headers.
37920	MissingMeta *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-missing-meta" type:"integer"`
37921
37922	// Indicates whether an object stored in Amazon S3 has an active legal hold.
37923	ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
37924
37925	// Indicates whether an object stored in Amazon S3 has Object Lock enabled.
37926	// For more information about S3 Object Lock, see Object Lock (https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html).
37927	ObjectLockMode *string `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
37928
37929	// The date and time when Object Lock is configured to expire.
37930	ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-fwd-header-x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
37931
37932	// The count of parts this object has.
37933	PartsCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-mp-parts-count" type:"integer"`
37934
37935	// Indicates if request involves bucket that is either a source or destination
37936	// in a Replication rule. For more information about S3 Replication, see Replication
37937	// (https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html).
37938	ReplicationStatus *string `location:"header" locationName:"x-amz-fwd-header-x-amz-replication-status" type:"string" enum:"ReplicationStatus"`
37939
37940	// If present, indicates that the requester was successfully charged for the
37941	// request.
37942	RequestCharged *string `location:"header" locationName:"x-amz-fwd-header-x-amz-request-charged" type:"string" enum:"RequestCharged"`
37943
37944	// Route prefix to the HTTP URL generated.
37945	//
37946	// RequestRoute is a required field
37947	RequestRoute *string `location:"header" locationName:"x-amz-request-route" type:"string" required:"true"`
37948
37949	// A single use encrypted token that maps WriteGetObjectResponse to the end
37950	// user GetObject request.
37951	//
37952	// RequestToken is a required field
37953	RequestToken *string `location:"header" locationName:"x-amz-request-token" type:"string" required:"true"`
37954
37955	// Provides information about object restoration operation and expiration time
37956	// of the restored object copy.
37957	Restore *string `location:"header" locationName:"x-amz-fwd-header-x-amz-restore" type:"string"`
37958
37959	// Encryption algorithm used if server-side encryption with a customer-provided
37960	// encryption key was specified for object stored in Amazon S3.
37961	SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm" type:"string"`
37962
37963	// 128-bit MD5 digest of customer-provided encryption key used in Amazon S3
37964	// to encrypt data stored in S3. For more information, see Protecting data using
37965	// server-side encryption with customer-provided encryption keys (SSE-C) (https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html).
37966	SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5" type:"string"`
37967
37968	// If present, specifies the ID of the Amazon Web Services Key Management Service
37969	// (Amazon Web Services KMS) symmetric customer managed key that was used for
37970	// stored in Amazon S3 object.
37971	//
37972	// SSEKMSKeyId is a sensitive parameter and its value will be
37973	// replaced with "sensitive" in string returned by WriteGetObjectResponseInput's
37974	// String and GoString methods.
37975	SSEKMSKeyId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
37976
37977	// The server-side encryption algorithm used when storing requested object in
37978	// Amazon S3 (for example, AES256, aws:kms).
37979	ServerSideEncryption *string `location:"header" locationName:"x-amz-fwd-header-x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
37980
37981	// The integer status code for an HTTP response of a corresponding GetObject
37982	// request.
37983	//
37984	// Status Codes
37985	//
37986	//    * 200 - OK
37987	//
37988	//    * 206 - Partial Content
37989	//
37990	//    * 304 - Not Modified
37991	//
37992	//    * 400 - Bad Request
37993	//
37994	//    * 401 - Unauthorized
37995	//
37996	//    * 403 - Forbidden
37997	//
37998	//    * 404 - Not Found
37999	//
38000	//    * 405 - Method Not Allowed
38001	//
38002	//    * 409 - Conflict
38003	//
38004	//    * 411 - Length Required
38005	//
38006	//    * 412 - Precondition Failed
38007	//
38008	//    * 416 - Range Not Satisfiable
38009	//
38010	//    * 500 - Internal Server Error
38011	//
38012	//    * 503 - Service Unavailable
38013	StatusCode *int64 `location:"header" locationName:"x-amz-fwd-status" type:"integer"`
38014
38015	// The class of storage used to store object in Amazon S3.
38016	StorageClass *string `location:"header" locationName:"x-amz-fwd-header-x-amz-storage-class" type:"string" enum:"StorageClass"`
38017
38018	// The number of tags, if any, on the object.
38019	TagCount *int64 `location:"header" locationName:"x-amz-fwd-header-x-amz-tagging-count" type:"integer"`
38020
38021	// An ID used to reference a specific version of the object.
38022	VersionId *string `location:"header" locationName:"x-amz-fwd-header-x-amz-version-id" type:"string"`
38023}
38024
38025// String returns the string representation.
38026//
38027// API parameter values that are decorated as "sensitive" in the API will not
38028// be included in the string output. The member name will be present, but the
38029// value will be replaced with "sensitive".
38030func (s WriteGetObjectResponseInput) String() string {
38031	return awsutil.Prettify(s)
38032}
38033
38034// GoString returns the string representation.
38035//
38036// API parameter values that are decorated as "sensitive" in the API will not
38037// be included in the string output. The member name will be present, but the
38038// value will be replaced with "sensitive".
38039func (s WriteGetObjectResponseInput) GoString() string {
38040	return s.String()
38041}
38042
38043// Validate inspects the fields of the type to determine if they are valid.
38044func (s *WriteGetObjectResponseInput) Validate() error {
38045	invalidParams := request.ErrInvalidParams{Context: "WriteGetObjectResponseInput"}
38046	if s.RequestRoute == nil {
38047		invalidParams.Add(request.NewErrParamRequired("RequestRoute"))
38048	}
38049	if s.RequestRoute != nil && len(*s.RequestRoute) < 1 {
38050		invalidParams.Add(request.NewErrParamMinLen("RequestRoute", 1))
38051	}
38052	if s.RequestToken == nil {
38053		invalidParams.Add(request.NewErrParamRequired("RequestToken"))
38054	}
38055
38056	if invalidParams.Len() > 0 {
38057		return invalidParams
38058	}
38059	return nil
38060}
38061
38062// SetAcceptRanges sets the AcceptRanges field's value.
38063func (s *WriteGetObjectResponseInput) SetAcceptRanges(v string) *WriteGetObjectResponseInput {
38064	s.AcceptRanges = &v
38065	return s
38066}
38067
38068// SetBody sets the Body field's value.
38069func (s *WriteGetObjectResponseInput) SetBody(v io.ReadSeeker) *WriteGetObjectResponseInput {
38070	s.Body = v
38071	return s
38072}
38073
38074// SetBucketKeyEnabled sets the BucketKeyEnabled field's value.
38075func (s *WriteGetObjectResponseInput) SetBucketKeyEnabled(v bool) *WriteGetObjectResponseInput {
38076	s.BucketKeyEnabled = &v
38077	return s
38078}
38079
38080// SetCacheControl sets the CacheControl field's value.
38081func (s *WriteGetObjectResponseInput) SetCacheControl(v string) *WriteGetObjectResponseInput {
38082	s.CacheControl = &v
38083	return s
38084}
38085
38086// SetContentDisposition sets the ContentDisposition field's value.
38087func (s *WriteGetObjectResponseInput) SetContentDisposition(v string) *WriteGetObjectResponseInput {
38088	s.ContentDisposition = &v
38089	return s
38090}
38091
38092// SetContentEncoding sets the ContentEncoding field's value.
38093func (s *WriteGetObjectResponseInput) SetContentEncoding(v string) *WriteGetObjectResponseInput {
38094	s.ContentEncoding = &v
38095	return s
38096}
38097
38098// SetContentLanguage sets the ContentLanguage field's value.
38099func (s *WriteGetObjectResponseInput) SetContentLanguage(v string) *WriteGetObjectResponseInput {
38100	s.ContentLanguage = &v
38101	return s
38102}
38103
38104// SetContentLength sets the ContentLength field's value.
38105func (s *WriteGetObjectResponseInput) SetContentLength(v int64) *WriteGetObjectResponseInput {
38106	s.ContentLength = &v
38107	return s
38108}
38109
38110// SetContentRange sets the ContentRange field's value.
38111func (s *WriteGetObjectResponseInput) SetContentRange(v string) *WriteGetObjectResponseInput {
38112	s.ContentRange = &v
38113	return s
38114}
38115
38116// SetContentType sets the ContentType field's value.
38117func (s *WriteGetObjectResponseInput) SetContentType(v string) *WriteGetObjectResponseInput {
38118	s.ContentType = &v
38119	return s
38120}
38121
38122// SetDeleteMarker sets the DeleteMarker field's value.
38123func (s *WriteGetObjectResponseInput) SetDeleteMarker(v bool) *WriteGetObjectResponseInput {
38124	s.DeleteMarker = &v
38125	return s
38126}
38127
38128// SetETag sets the ETag field's value.
38129func (s *WriteGetObjectResponseInput) SetETag(v string) *WriteGetObjectResponseInput {
38130	s.ETag = &v
38131	return s
38132}
38133
38134// SetErrorCode sets the ErrorCode field's value.
38135func (s *WriteGetObjectResponseInput) SetErrorCode(v string) *WriteGetObjectResponseInput {
38136	s.ErrorCode = &v
38137	return s
38138}
38139
38140// SetErrorMessage sets the ErrorMessage field's value.
38141func (s *WriteGetObjectResponseInput) SetErrorMessage(v string) *WriteGetObjectResponseInput {
38142	s.ErrorMessage = &v
38143	return s
38144}
38145
38146// SetExpiration sets the Expiration field's value.
38147func (s *WriteGetObjectResponseInput) SetExpiration(v string) *WriteGetObjectResponseInput {
38148	s.Expiration = &v
38149	return s
38150}
38151
38152// SetExpires sets the Expires field's value.
38153func (s *WriteGetObjectResponseInput) SetExpires(v time.Time) *WriteGetObjectResponseInput {
38154	s.Expires = &v
38155	return s
38156}
38157
38158// SetLastModified sets the LastModified field's value.
38159func (s *WriteGetObjectResponseInput) SetLastModified(v time.Time) *WriteGetObjectResponseInput {
38160	s.LastModified = &v
38161	return s
38162}
38163
38164// SetMetadata sets the Metadata field's value.
38165func (s *WriteGetObjectResponseInput) SetMetadata(v map[string]*string) *WriteGetObjectResponseInput {
38166	s.Metadata = v
38167	return s
38168}
38169
38170// SetMissingMeta sets the MissingMeta field's value.
38171func (s *WriteGetObjectResponseInput) SetMissingMeta(v int64) *WriteGetObjectResponseInput {
38172	s.MissingMeta = &v
38173	return s
38174}
38175
38176// SetObjectLockLegalHoldStatus sets the ObjectLockLegalHoldStatus field's value.
38177func (s *WriteGetObjectResponseInput) SetObjectLockLegalHoldStatus(v string) *WriteGetObjectResponseInput {
38178	s.ObjectLockLegalHoldStatus = &v
38179	return s
38180}
38181
38182// SetObjectLockMode sets the ObjectLockMode field's value.
38183func (s *WriteGetObjectResponseInput) SetObjectLockMode(v string) *WriteGetObjectResponseInput {
38184	s.ObjectLockMode = &v
38185	return s
38186}
38187
38188// SetObjectLockRetainUntilDate sets the ObjectLockRetainUntilDate field's value.
38189func (s *WriteGetObjectResponseInput) SetObjectLockRetainUntilDate(v time.Time) *WriteGetObjectResponseInput {
38190	s.ObjectLockRetainUntilDate = &v
38191	return s
38192}
38193
38194// SetPartsCount sets the PartsCount field's value.
38195func (s *WriteGetObjectResponseInput) SetPartsCount(v int64) *WriteGetObjectResponseInput {
38196	s.PartsCount = &v
38197	return s
38198}
38199
38200// SetReplicationStatus sets the ReplicationStatus field's value.
38201func (s *WriteGetObjectResponseInput) SetReplicationStatus(v string) *WriteGetObjectResponseInput {
38202	s.ReplicationStatus = &v
38203	return s
38204}
38205
38206// SetRequestCharged sets the RequestCharged field's value.
38207func (s *WriteGetObjectResponseInput) SetRequestCharged(v string) *WriteGetObjectResponseInput {
38208	s.RequestCharged = &v
38209	return s
38210}
38211
38212// SetRequestRoute sets the RequestRoute field's value.
38213func (s *WriteGetObjectResponseInput) SetRequestRoute(v string) *WriteGetObjectResponseInput {
38214	s.RequestRoute = &v
38215	return s
38216}
38217
38218// SetRequestToken sets the RequestToken field's value.
38219func (s *WriteGetObjectResponseInput) SetRequestToken(v string) *WriteGetObjectResponseInput {
38220	s.RequestToken = &v
38221	return s
38222}
38223
38224// SetRestore sets the Restore field's value.
38225func (s *WriteGetObjectResponseInput) SetRestore(v string) *WriteGetObjectResponseInput {
38226	s.Restore = &v
38227	return s
38228}
38229
38230// SetSSECustomerAlgorithm sets the SSECustomerAlgorithm field's value.
38231func (s *WriteGetObjectResponseInput) SetSSECustomerAlgorithm(v string) *WriteGetObjectResponseInput {
38232	s.SSECustomerAlgorithm = &v
38233	return s
38234}
38235
38236// SetSSECustomerKeyMD5 sets the SSECustomerKeyMD5 field's value.
38237func (s *WriteGetObjectResponseInput) SetSSECustomerKeyMD5(v string) *WriteGetObjectResponseInput {
38238	s.SSECustomerKeyMD5 = &v
38239	return s
38240}
38241
38242// SetSSEKMSKeyId sets the SSEKMSKeyId field's value.
38243func (s *WriteGetObjectResponseInput) SetSSEKMSKeyId(v string) *WriteGetObjectResponseInput {
38244	s.SSEKMSKeyId = &v
38245	return s
38246}
38247
38248// SetServerSideEncryption sets the ServerSideEncryption field's value.
38249func (s *WriteGetObjectResponseInput) SetServerSideEncryption(v string) *WriteGetObjectResponseInput {
38250	s.ServerSideEncryption = &v
38251	return s
38252}
38253
38254// SetStatusCode sets the StatusCode field's value.
38255func (s *WriteGetObjectResponseInput) SetStatusCode(v int64) *WriteGetObjectResponseInput {
38256	s.StatusCode = &v
38257	return s
38258}
38259
38260// SetStorageClass sets the StorageClass field's value.
38261func (s *WriteGetObjectResponseInput) SetStorageClass(v string) *WriteGetObjectResponseInput {
38262	s.StorageClass = &v
38263	return s
38264}
38265
38266// SetTagCount sets the TagCount field's value.
38267func (s *WriteGetObjectResponseInput) SetTagCount(v int64) *WriteGetObjectResponseInput {
38268	s.TagCount = &v
38269	return s
38270}
38271
38272// SetVersionId sets the VersionId field's value.
38273func (s *WriteGetObjectResponseInput) SetVersionId(v string) *WriteGetObjectResponseInput {
38274	s.VersionId = &v
38275	return s
38276}
38277
38278func (s *WriteGetObjectResponseInput) hostLabels() map[string]string {
38279	return map[string]string{
38280		"RequestRoute": aws.StringValue(s.RequestRoute),
38281	}
38282}
38283
38284type WriteGetObjectResponseOutput struct {
38285	_ struct{} `type:"structure"`
38286}
38287
38288// String returns the string representation.
38289//
38290// API parameter values that are decorated as "sensitive" in the API will not
38291// be included in the string output. The member name will be present, but the
38292// value will be replaced with "sensitive".
38293func (s WriteGetObjectResponseOutput) String() string {
38294	return awsutil.Prettify(s)
38295}
38296
38297// GoString returns the string representation.
38298//
38299// API parameter values that are decorated as "sensitive" in the API will not
38300// be included in the string output. The member name will be present, but the
38301// value will be replaced with "sensitive".
38302func (s WriteGetObjectResponseOutput) GoString() string {
38303	return s.String()
38304}
38305
38306const (
38307	// AnalyticsS3ExportFileFormatCsv is a AnalyticsS3ExportFileFormat enum value
38308	AnalyticsS3ExportFileFormatCsv = "CSV"
38309)
38310
38311// AnalyticsS3ExportFileFormat_Values returns all elements of the AnalyticsS3ExportFileFormat enum
38312func AnalyticsS3ExportFileFormat_Values() []string {
38313	return []string{
38314		AnalyticsS3ExportFileFormatCsv,
38315	}
38316}
38317
38318const (
38319	// ArchiveStatusArchiveAccess is a ArchiveStatus enum value
38320	ArchiveStatusArchiveAccess = "ARCHIVE_ACCESS"
38321
38322	// ArchiveStatusDeepArchiveAccess is a ArchiveStatus enum value
38323	ArchiveStatusDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
38324)
38325
38326// ArchiveStatus_Values returns all elements of the ArchiveStatus enum
38327func ArchiveStatus_Values() []string {
38328	return []string{
38329		ArchiveStatusArchiveAccess,
38330		ArchiveStatusDeepArchiveAccess,
38331	}
38332}
38333
38334const (
38335	// BucketAccelerateStatusEnabled is a BucketAccelerateStatus enum value
38336	BucketAccelerateStatusEnabled = "Enabled"
38337
38338	// BucketAccelerateStatusSuspended is a BucketAccelerateStatus enum value
38339	BucketAccelerateStatusSuspended = "Suspended"
38340)
38341
38342// BucketAccelerateStatus_Values returns all elements of the BucketAccelerateStatus enum
38343func BucketAccelerateStatus_Values() []string {
38344	return []string{
38345		BucketAccelerateStatusEnabled,
38346		BucketAccelerateStatusSuspended,
38347	}
38348}
38349
38350const (
38351	// BucketCannedACLPrivate is a BucketCannedACL enum value
38352	BucketCannedACLPrivate = "private"
38353
38354	// BucketCannedACLPublicRead is a BucketCannedACL enum value
38355	BucketCannedACLPublicRead = "public-read"
38356
38357	// BucketCannedACLPublicReadWrite is a BucketCannedACL enum value
38358	BucketCannedACLPublicReadWrite = "public-read-write"
38359
38360	// BucketCannedACLAuthenticatedRead is a BucketCannedACL enum value
38361	BucketCannedACLAuthenticatedRead = "authenticated-read"
38362)
38363
38364// BucketCannedACL_Values returns all elements of the BucketCannedACL enum
38365func BucketCannedACL_Values() []string {
38366	return []string{
38367		BucketCannedACLPrivate,
38368		BucketCannedACLPublicRead,
38369		BucketCannedACLPublicReadWrite,
38370		BucketCannedACLAuthenticatedRead,
38371	}
38372}
38373
38374const (
38375	// BucketLocationConstraintAfSouth1 is a BucketLocationConstraint enum value
38376	BucketLocationConstraintAfSouth1 = "af-south-1"
38377
38378	// BucketLocationConstraintApEast1 is a BucketLocationConstraint enum value
38379	BucketLocationConstraintApEast1 = "ap-east-1"
38380
38381	// BucketLocationConstraintApNortheast1 is a BucketLocationConstraint enum value
38382	BucketLocationConstraintApNortheast1 = "ap-northeast-1"
38383
38384	// BucketLocationConstraintApNortheast2 is a BucketLocationConstraint enum value
38385	BucketLocationConstraintApNortheast2 = "ap-northeast-2"
38386
38387	// BucketLocationConstraintApNortheast3 is a BucketLocationConstraint enum value
38388	BucketLocationConstraintApNortheast3 = "ap-northeast-3"
38389
38390	// BucketLocationConstraintApSouth1 is a BucketLocationConstraint enum value
38391	BucketLocationConstraintApSouth1 = "ap-south-1"
38392
38393	// BucketLocationConstraintApSoutheast1 is a BucketLocationConstraint enum value
38394	BucketLocationConstraintApSoutheast1 = "ap-southeast-1"
38395
38396	// BucketLocationConstraintApSoutheast2 is a BucketLocationConstraint enum value
38397	BucketLocationConstraintApSoutheast2 = "ap-southeast-2"
38398
38399	// BucketLocationConstraintCaCentral1 is a BucketLocationConstraint enum value
38400	BucketLocationConstraintCaCentral1 = "ca-central-1"
38401
38402	// BucketLocationConstraintCnNorth1 is a BucketLocationConstraint enum value
38403	BucketLocationConstraintCnNorth1 = "cn-north-1"
38404
38405	// BucketLocationConstraintCnNorthwest1 is a BucketLocationConstraint enum value
38406	BucketLocationConstraintCnNorthwest1 = "cn-northwest-1"
38407
38408	// BucketLocationConstraintEu is a BucketLocationConstraint enum value
38409	BucketLocationConstraintEu = "EU"
38410
38411	// BucketLocationConstraintEuCentral1 is a BucketLocationConstraint enum value
38412	BucketLocationConstraintEuCentral1 = "eu-central-1"
38413
38414	// BucketLocationConstraintEuNorth1 is a BucketLocationConstraint enum value
38415	BucketLocationConstraintEuNorth1 = "eu-north-1"
38416
38417	// BucketLocationConstraintEuSouth1 is a BucketLocationConstraint enum value
38418	BucketLocationConstraintEuSouth1 = "eu-south-1"
38419
38420	// BucketLocationConstraintEuWest1 is a BucketLocationConstraint enum value
38421	BucketLocationConstraintEuWest1 = "eu-west-1"
38422
38423	// BucketLocationConstraintEuWest2 is a BucketLocationConstraint enum value
38424	BucketLocationConstraintEuWest2 = "eu-west-2"
38425
38426	// BucketLocationConstraintEuWest3 is a BucketLocationConstraint enum value
38427	BucketLocationConstraintEuWest3 = "eu-west-3"
38428
38429	// BucketLocationConstraintMeSouth1 is a BucketLocationConstraint enum value
38430	BucketLocationConstraintMeSouth1 = "me-south-1"
38431
38432	// BucketLocationConstraintSaEast1 is a BucketLocationConstraint enum value
38433	BucketLocationConstraintSaEast1 = "sa-east-1"
38434
38435	// BucketLocationConstraintUsEast2 is a BucketLocationConstraint enum value
38436	BucketLocationConstraintUsEast2 = "us-east-2"
38437
38438	// BucketLocationConstraintUsGovEast1 is a BucketLocationConstraint enum value
38439	BucketLocationConstraintUsGovEast1 = "us-gov-east-1"
38440
38441	// BucketLocationConstraintUsGovWest1 is a BucketLocationConstraint enum value
38442	BucketLocationConstraintUsGovWest1 = "us-gov-west-1"
38443
38444	// BucketLocationConstraintUsWest1 is a BucketLocationConstraint enum value
38445	BucketLocationConstraintUsWest1 = "us-west-1"
38446
38447	// BucketLocationConstraintUsWest2 is a BucketLocationConstraint enum value
38448	BucketLocationConstraintUsWest2 = "us-west-2"
38449)
38450
38451// BucketLocationConstraint_Values returns all elements of the BucketLocationConstraint enum
38452func BucketLocationConstraint_Values() []string {
38453	return []string{
38454		BucketLocationConstraintAfSouth1,
38455		BucketLocationConstraintApEast1,
38456		BucketLocationConstraintApNortheast1,
38457		BucketLocationConstraintApNortheast2,
38458		BucketLocationConstraintApNortheast3,
38459		BucketLocationConstraintApSouth1,
38460		BucketLocationConstraintApSoutheast1,
38461		BucketLocationConstraintApSoutheast2,
38462		BucketLocationConstraintCaCentral1,
38463		BucketLocationConstraintCnNorth1,
38464		BucketLocationConstraintCnNorthwest1,
38465		BucketLocationConstraintEu,
38466		BucketLocationConstraintEuCentral1,
38467		BucketLocationConstraintEuNorth1,
38468		BucketLocationConstraintEuSouth1,
38469		BucketLocationConstraintEuWest1,
38470		BucketLocationConstraintEuWest2,
38471		BucketLocationConstraintEuWest3,
38472		BucketLocationConstraintMeSouth1,
38473		BucketLocationConstraintSaEast1,
38474		BucketLocationConstraintUsEast2,
38475		BucketLocationConstraintUsGovEast1,
38476		BucketLocationConstraintUsGovWest1,
38477		BucketLocationConstraintUsWest1,
38478		BucketLocationConstraintUsWest2,
38479	}
38480}
38481
38482const (
38483	// BucketLogsPermissionFullControl is a BucketLogsPermission enum value
38484	BucketLogsPermissionFullControl = "FULL_CONTROL"
38485
38486	// BucketLogsPermissionRead is a BucketLogsPermission enum value
38487	BucketLogsPermissionRead = "READ"
38488
38489	// BucketLogsPermissionWrite is a BucketLogsPermission enum value
38490	BucketLogsPermissionWrite = "WRITE"
38491)
38492
38493// BucketLogsPermission_Values returns all elements of the BucketLogsPermission enum
38494func BucketLogsPermission_Values() []string {
38495	return []string{
38496		BucketLogsPermissionFullControl,
38497		BucketLogsPermissionRead,
38498		BucketLogsPermissionWrite,
38499	}
38500}
38501
38502const (
38503	// BucketVersioningStatusEnabled is a BucketVersioningStatus enum value
38504	BucketVersioningStatusEnabled = "Enabled"
38505
38506	// BucketVersioningStatusSuspended is a BucketVersioningStatus enum value
38507	BucketVersioningStatusSuspended = "Suspended"
38508)
38509
38510// BucketVersioningStatus_Values returns all elements of the BucketVersioningStatus enum
38511func BucketVersioningStatus_Values() []string {
38512	return []string{
38513		BucketVersioningStatusEnabled,
38514		BucketVersioningStatusSuspended,
38515	}
38516}
38517
38518const (
38519	// CompressionTypeNone is a CompressionType enum value
38520	CompressionTypeNone = "NONE"
38521
38522	// CompressionTypeGzip is a CompressionType enum value
38523	CompressionTypeGzip = "GZIP"
38524
38525	// CompressionTypeBzip2 is a CompressionType enum value
38526	CompressionTypeBzip2 = "BZIP2"
38527)
38528
38529// CompressionType_Values returns all elements of the CompressionType enum
38530func CompressionType_Values() []string {
38531	return []string{
38532		CompressionTypeNone,
38533		CompressionTypeGzip,
38534		CompressionTypeBzip2,
38535	}
38536}
38537
38538const (
38539	// DeleteMarkerReplicationStatusEnabled is a DeleteMarkerReplicationStatus enum value
38540	DeleteMarkerReplicationStatusEnabled = "Enabled"
38541
38542	// DeleteMarkerReplicationStatusDisabled is a DeleteMarkerReplicationStatus enum value
38543	DeleteMarkerReplicationStatusDisabled = "Disabled"
38544)
38545
38546// DeleteMarkerReplicationStatus_Values returns all elements of the DeleteMarkerReplicationStatus enum
38547func DeleteMarkerReplicationStatus_Values() []string {
38548	return []string{
38549		DeleteMarkerReplicationStatusEnabled,
38550		DeleteMarkerReplicationStatusDisabled,
38551	}
38552}
38553
38554// Requests Amazon S3 to encode the object keys in the response and specifies
38555// the encoding method to use. An object key may contain any Unicode character;
38556// however, XML 1.0 parser cannot parse some characters, such as characters
38557// with an ASCII value from 0 to 10. For characters that are not supported in
38558// XML 1.0, you can add this parameter to request that Amazon S3 encode the
38559// keys in the response.
38560const (
38561	// EncodingTypeUrl is a EncodingType enum value
38562	EncodingTypeUrl = "url"
38563)
38564
38565// EncodingType_Values returns all elements of the EncodingType enum
38566func EncodingType_Values() []string {
38567	return []string{
38568		EncodingTypeUrl,
38569	}
38570}
38571
38572// The bucket event for which to send notifications.
38573const (
38574	// EventS3ReducedRedundancyLostObject is a Event enum value
38575	EventS3ReducedRedundancyLostObject = "s3:ReducedRedundancyLostObject"
38576
38577	// EventS3ObjectCreated is a Event enum value
38578	EventS3ObjectCreated = "s3:ObjectCreated:*"
38579
38580	// EventS3ObjectCreatedPut is a Event enum value
38581	EventS3ObjectCreatedPut = "s3:ObjectCreated:Put"
38582
38583	// EventS3ObjectCreatedPost is a Event enum value
38584	EventS3ObjectCreatedPost = "s3:ObjectCreated:Post"
38585
38586	// EventS3ObjectCreatedCopy is a Event enum value
38587	EventS3ObjectCreatedCopy = "s3:ObjectCreated:Copy"
38588
38589	// EventS3ObjectCreatedCompleteMultipartUpload is a Event enum value
38590	EventS3ObjectCreatedCompleteMultipartUpload = "s3:ObjectCreated:CompleteMultipartUpload"
38591
38592	// EventS3ObjectRemoved is a Event enum value
38593	EventS3ObjectRemoved = "s3:ObjectRemoved:*"
38594
38595	// EventS3ObjectRemovedDelete is a Event enum value
38596	EventS3ObjectRemovedDelete = "s3:ObjectRemoved:Delete"
38597
38598	// EventS3ObjectRemovedDeleteMarkerCreated is a Event enum value
38599	EventS3ObjectRemovedDeleteMarkerCreated = "s3:ObjectRemoved:DeleteMarkerCreated"
38600
38601	// EventS3ObjectRestore is a Event enum value
38602	EventS3ObjectRestore = "s3:ObjectRestore:*"
38603
38604	// EventS3ObjectRestorePost is a Event enum value
38605	EventS3ObjectRestorePost = "s3:ObjectRestore:Post"
38606
38607	// EventS3ObjectRestoreCompleted is a Event enum value
38608	EventS3ObjectRestoreCompleted = "s3:ObjectRestore:Completed"
38609
38610	// EventS3Replication is a Event enum value
38611	EventS3Replication = "s3:Replication:*"
38612
38613	// EventS3ReplicationOperationFailedReplication is a Event enum value
38614	EventS3ReplicationOperationFailedReplication = "s3:Replication:OperationFailedReplication"
38615
38616	// EventS3ReplicationOperationNotTracked is a Event enum value
38617	EventS3ReplicationOperationNotTracked = "s3:Replication:OperationNotTracked"
38618
38619	// EventS3ReplicationOperationMissedThreshold is a Event enum value
38620	EventS3ReplicationOperationMissedThreshold = "s3:Replication:OperationMissedThreshold"
38621
38622	// EventS3ReplicationOperationReplicatedAfterThreshold is a Event enum value
38623	EventS3ReplicationOperationReplicatedAfterThreshold = "s3:Replication:OperationReplicatedAfterThreshold"
38624)
38625
38626// Event_Values returns all elements of the Event enum
38627func Event_Values() []string {
38628	return []string{
38629		EventS3ReducedRedundancyLostObject,
38630		EventS3ObjectCreated,
38631		EventS3ObjectCreatedPut,
38632		EventS3ObjectCreatedPost,
38633		EventS3ObjectCreatedCopy,
38634		EventS3ObjectCreatedCompleteMultipartUpload,
38635		EventS3ObjectRemoved,
38636		EventS3ObjectRemovedDelete,
38637		EventS3ObjectRemovedDeleteMarkerCreated,
38638		EventS3ObjectRestore,
38639		EventS3ObjectRestorePost,
38640		EventS3ObjectRestoreCompleted,
38641		EventS3Replication,
38642		EventS3ReplicationOperationFailedReplication,
38643		EventS3ReplicationOperationNotTracked,
38644		EventS3ReplicationOperationMissedThreshold,
38645		EventS3ReplicationOperationReplicatedAfterThreshold,
38646	}
38647}
38648
38649const (
38650	// ExistingObjectReplicationStatusEnabled is a ExistingObjectReplicationStatus enum value
38651	ExistingObjectReplicationStatusEnabled = "Enabled"
38652
38653	// ExistingObjectReplicationStatusDisabled is a ExistingObjectReplicationStatus enum value
38654	ExistingObjectReplicationStatusDisabled = "Disabled"
38655)
38656
38657// ExistingObjectReplicationStatus_Values returns all elements of the ExistingObjectReplicationStatus enum
38658func ExistingObjectReplicationStatus_Values() []string {
38659	return []string{
38660		ExistingObjectReplicationStatusEnabled,
38661		ExistingObjectReplicationStatusDisabled,
38662	}
38663}
38664
38665const (
38666	// ExpirationStatusEnabled is a ExpirationStatus enum value
38667	ExpirationStatusEnabled = "Enabled"
38668
38669	// ExpirationStatusDisabled is a ExpirationStatus enum value
38670	ExpirationStatusDisabled = "Disabled"
38671)
38672
38673// ExpirationStatus_Values returns all elements of the ExpirationStatus enum
38674func ExpirationStatus_Values() []string {
38675	return []string{
38676		ExpirationStatusEnabled,
38677		ExpirationStatusDisabled,
38678	}
38679}
38680
38681const (
38682	// ExpressionTypeSql is a ExpressionType enum value
38683	ExpressionTypeSql = "SQL"
38684)
38685
38686// ExpressionType_Values returns all elements of the ExpressionType enum
38687func ExpressionType_Values() []string {
38688	return []string{
38689		ExpressionTypeSql,
38690	}
38691}
38692
38693const (
38694	// FileHeaderInfoUse is a FileHeaderInfo enum value
38695	FileHeaderInfoUse = "USE"
38696
38697	// FileHeaderInfoIgnore is a FileHeaderInfo enum value
38698	FileHeaderInfoIgnore = "IGNORE"
38699
38700	// FileHeaderInfoNone is a FileHeaderInfo enum value
38701	FileHeaderInfoNone = "NONE"
38702)
38703
38704// FileHeaderInfo_Values returns all elements of the FileHeaderInfo enum
38705func FileHeaderInfo_Values() []string {
38706	return []string{
38707		FileHeaderInfoUse,
38708		FileHeaderInfoIgnore,
38709		FileHeaderInfoNone,
38710	}
38711}
38712
38713const (
38714	// FilterRuleNamePrefix is a FilterRuleName enum value
38715	FilterRuleNamePrefix = "prefix"
38716
38717	// FilterRuleNameSuffix is a FilterRuleName enum value
38718	FilterRuleNameSuffix = "suffix"
38719)
38720
38721// FilterRuleName_Values returns all elements of the FilterRuleName enum
38722func FilterRuleName_Values() []string {
38723	return []string{
38724		FilterRuleNamePrefix,
38725		FilterRuleNameSuffix,
38726	}
38727}
38728
38729const (
38730	// IntelligentTieringAccessTierArchiveAccess is a IntelligentTieringAccessTier enum value
38731	IntelligentTieringAccessTierArchiveAccess = "ARCHIVE_ACCESS"
38732
38733	// IntelligentTieringAccessTierDeepArchiveAccess is a IntelligentTieringAccessTier enum value
38734	IntelligentTieringAccessTierDeepArchiveAccess = "DEEP_ARCHIVE_ACCESS"
38735)
38736
38737// IntelligentTieringAccessTier_Values returns all elements of the IntelligentTieringAccessTier enum
38738func IntelligentTieringAccessTier_Values() []string {
38739	return []string{
38740		IntelligentTieringAccessTierArchiveAccess,
38741		IntelligentTieringAccessTierDeepArchiveAccess,
38742	}
38743}
38744
38745const (
38746	// IntelligentTieringStatusEnabled is a IntelligentTieringStatus enum value
38747	IntelligentTieringStatusEnabled = "Enabled"
38748
38749	// IntelligentTieringStatusDisabled is a IntelligentTieringStatus enum value
38750	IntelligentTieringStatusDisabled = "Disabled"
38751)
38752
38753// IntelligentTieringStatus_Values returns all elements of the IntelligentTieringStatus enum
38754func IntelligentTieringStatus_Values() []string {
38755	return []string{
38756		IntelligentTieringStatusEnabled,
38757		IntelligentTieringStatusDisabled,
38758	}
38759}
38760
38761const (
38762	// InventoryFormatCsv is a InventoryFormat enum value
38763	InventoryFormatCsv = "CSV"
38764
38765	// InventoryFormatOrc is a InventoryFormat enum value
38766	InventoryFormatOrc = "ORC"
38767
38768	// InventoryFormatParquet is a InventoryFormat enum value
38769	InventoryFormatParquet = "Parquet"
38770)
38771
38772// InventoryFormat_Values returns all elements of the InventoryFormat enum
38773func InventoryFormat_Values() []string {
38774	return []string{
38775		InventoryFormatCsv,
38776		InventoryFormatOrc,
38777		InventoryFormatParquet,
38778	}
38779}
38780
38781const (
38782	// InventoryFrequencyDaily is a InventoryFrequency enum value
38783	InventoryFrequencyDaily = "Daily"
38784
38785	// InventoryFrequencyWeekly is a InventoryFrequency enum value
38786	InventoryFrequencyWeekly = "Weekly"
38787)
38788
38789// InventoryFrequency_Values returns all elements of the InventoryFrequency enum
38790func InventoryFrequency_Values() []string {
38791	return []string{
38792		InventoryFrequencyDaily,
38793		InventoryFrequencyWeekly,
38794	}
38795}
38796
38797const (
38798	// InventoryIncludedObjectVersionsAll is a InventoryIncludedObjectVersions enum value
38799	InventoryIncludedObjectVersionsAll = "All"
38800
38801	// InventoryIncludedObjectVersionsCurrent is a InventoryIncludedObjectVersions enum value
38802	InventoryIncludedObjectVersionsCurrent = "Current"
38803)
38804
38805// InventoryIncludedObjectVersions_Values returns all elements of the InventoryIncludedObjectVersions enum
38806func InventoryIncludedObjectVersions_Values() []string {
38807	return []string{
38808		InventoryIncludedObjectVersionsAll,
38809		InventoryIncludedObjectVersionsCurrent,
38810	}
38811}
38812
38813const (
38814	// InventoryOptionalFieldSize is a InventoryOptionalField enum value
38815	InventoryOptionalFieldSize = "Size"
38816
38817	// InventoryOptionalFieldLastModifiedDate is a InventoryOptionalField enum value
38818	InventoryOptionalFieldLastModifiedDate = "LastModifiedDate"
38819
38820	// InventoryOptionalFieldStorageClass is a InventoryOptionalField enum value
38821	InventoryOptionalFieldStorageClass = "StorageClass"
38822
38823	// InventoryOptionalFieldEtag is a InventoryOptionalField enum value
38824	InventoryOptionalFieldEtag = "ETag"
38825
38826	// InventoryOptionalFieldIsMultipartUploaded is a InventoryOptionalField enum value
38827	InventoryOptionalFieldIsMultipartUploaded = "IsMultipartUploaded"
38828
38829	// InventoryOptionalFieldReplicationStatus is a InventoryOptionalField enum value
38830	InventoryOptionalFieldReplicationStatus = "ReplicationStatus"
38831
38832	// InventoryOptionalFieldEncryptionStatus is a InventoryOptionalField enum value
38833	InventoryOptionalFieldEncryptionStatus = "EncryptionStatus"
38834
38835	// InventoryOptionalFieldObjectLockRetainUntilDate is a InventoryOptionalField enum value
38836	InventoryOptionalFieldObjectLockRetainUntilDate = "ObjectLockRetainUntilDate"
38837
38838	// InventoryOptionalFieldObjectLockMode is a InventoryOptionalField enum value
38839	InventoryOptionalFieldObjectLockMode = "ObjectLockMode"
38840
38841	// InventoryOptionalFieldObjectLockLegalHoldStatus is a InventoryOptionalField enum value
38842	InventoryOptionalFieldObjectLockLegalHoldStatus = "ObjectLockLegalHoldStatus"
38843
38844	// InventoryOptionalFieldIntelligentTieringAccessTier is a InventoryOptionalField enum value
38845	InventoryOptionalFieldIntelligentTieringAccessTier = "IntelligentTieringAccessTier"
38846
38847	// InventoryOptionalFieldBucketKeyStatus is a InventoryOptionalField enum value
38848	InventoryOptionalFieldBucketKeyStatus = "BucketKeyStatus"
38849)
38850
38851// InventoryOptionalField_Values returns all elements of the InventoryOptionalField enum
38852func InventoryOptionalField_Values() []string {
38853	return []string{
38854		InventoryOptionalFieldSize,
38855		InventoryOptionalFieldLastModifiedDate,
38856		InventoryOptionalFieldStorageClass,
38857		InventoryOptionalFieldEtag,
38858		InventoryOptionalFieldIsMultipartUploaded,
38859		InventoryOptionalFieldReplicationStatus,
38860		InventoryOptionalFieldEncryptionStatus,
38861		InventoryOptionalFieldObjectLockRetainUntilDate,
38862		InventoryOptionalFieldObjectLockMode,
38863		InventoryOptionalFieldObjectLockLegalHoldStatus,
38864		InventoryOptionalFieldIntelligentTieringAccessTier,
38865		InventoryOptionalFieldBucketKeyStatus,
38866	}
38867}
38868
38869const (
38870	// JSONTypeDocument is a JSONType enum value
38871	JSONTypeDocument = "DOCUMENT"
38872
38873	// JSONTypeLines is a JSONType enum value
38874	JSONTypeLines = "LINES"
38875)
38876
38877// JSONType_Values returns all elements of the JSONType enum
38878func JSONType_Values() []string {
38879	return []string{
38880		JSONTypeDocument,
38881		JSONTypeLines,
38882	}
38883}
38884
38885const (
38886	// MFADeleteEnabled is a MFADelete enum value
38887	MFADeleteEnabled = "Enabled"
38888
38889	// MFADeleteDisabled is a MFADelete enum value
38890	MFADeleteDisabled = "Disabled"
38891)
38892
38893// MFADelete_Values returns all elements of the MFADelete enum
38894func MFADelete_Values() []string {
38895	return []string{
38896		MFADeleteEnabled,
38897		MFADeleteDisabled,
38898	}
38899}
38900
38901const (
38902	// MFADeleteStatusEnabled is a MFADeleteStatus enum value
38903	MFADeleteStatusEnabled = "Enabled"
38904
38905	// MFADeleteStatusDisabled is a MFADeleteStatus enum value
38906	MFADeleteStatusDisabled = "Disabled"
38907)
38908
38909// MFADeleteStatus_Values returns all elements of the MFADeleteStatus enum
38910func MFADeleteStatus_Values() []string {
38911	return []string{
38912		MFADeleteStatusEnabled,
38913		MFADeleteStatusDisabled,
38914	}
38915}
38916
38917const (
38918	// MetadataDirectiveCopy is a MetadataDirective enum value
38919	MetadataDirectiveCopy = "COPY"
38920
38921	// MetadataDirectiveReplace is a MetadataDirective enum value
38922	MetadataDirectiveReplace = "REPLACE"
38923)
38924
38925// MetadataDirective_Values returns all elements of the MetadataDirective enum
38926func MetadataDirective_Values() []string {
38927	return []string{
38928		MetadataDirectiveCopy,
38929		MetadataDirectiveReplace,
38930	}
38931}
38932
38933const (
38934	// MetricsStatusEnabled is a MetricsStatus enum value
38935	MetricsStatusEnabled = "Enabled"
38936
38937	// MetricsStatusDisabled is a MetricsStatus enum value
38938	MetricsStatusDisabled = "Disabled"
38939)
38940
38941// MetricsStatus_Values returns all elements of the MetricsStatus enum
38942func MetricsStatus_Values() []string {
38943	return []string{
38944		MetricsStatusEnabled,
38945		MetricsStatusDisabled,
38946	}
38947}
38948
38949const (
38950	// ObjectCannedACLPrivate is a ObjectCannedACL enum value
38951	ObjectCannedACLPrivate = "private"
38952
38953	// ObjectCannedACLPublicRead is a ObjectCannedACL enum value
38954	ObjectCannedACLPublicRead = "public-read"
38955
38956	// ObjectCannedACLPublicReadWrite is a ObjectCannedACL enum value
38957	ObjectCannedACLPublicReadWrite = "public-read-write"
38958
38959	// ObjectCannedACLAuthenticatedRead is a ObjectCannedACL enum value
38960	ObjectCannedACLAuthenticatedRead = "authenticated-read"
38961
38962	// ObjectCannedACLAwsExecRead is a ObjectCannedACL enum value
38963	ObjectCannedACLAwsExecRead = "aws-exec-read"
38964
38965	// ObjectCannedACLBucketOwnerRead is a ObjectCannedACL enum value
38966	ObjectCannedACLBucketOwnerRead = "bucket-owner-read"
38967
38968	// ObjectCannedACLBucketOwnerFullControl is a ObjectCannedACL enum value
38969	ObjectCannedACLBucketOwnerFullControl = "bucket-owner-full-control"
38970)
38971
38972// ObjectCannedACL_Values returns all elements of the ObjectCannedACL enum
38973func ObjectCannedACL_Values() []string {
38974	return []string{
38975		ObjectCannedACLPrivate,
38976		ObjectCannedACLPublicRead,
38977		ObjectCannedACLPublicReadWrite,
38978		ObjectCannedACLAuthenticatedRead,
38979		ObjectCannedACLAwsExecRead,
38980		ObjectCannedACLBucketOwnerRead,
38981		ObjectCannedACLBucketOwnerFullControl,
38982	}
38983}
38984
38985const (
38986	// ObjectLockEnabledEnabled is a ObjectLockEnabled enum value
38987	ObjectLockEnabledEnabled = "Enabled"
38988)
38989
38990// ObjectLockEnabled_Values returns all elements of the ObjectLockEnabled enum
38991func ObjectLockEnabled_Values() []string {
38992	return []string{
38993		ObjectLockEnabledEnabled,
38994	}
38995}
38996
38997const (
38998	// ObjectLockLegalHoldStatusOn is a ObjectLockLegalHoldStatus enum value
38999	ObjectLockLegalHoldStatusOn = "ON"
39000
39001	// ObjectLockLegalHoldStatusOff is a ObjectLockLegalHoldStatus enum value
39002	ObjectLockLegalHoldStatusOff = "OFF"
39003)
39004
39005// ObjectLockLegalHoldStatus_Values returns all elements of the ObjectLockLegalHoldStatus enum
39006func ObjectLockLegalHoldStatus_Values() []string {
39007	return []string{
39008		ObjectLockLegalHoldStatusOn,
39009		ObjectLockLegalHoldStatusOff,
39010	}
39011}
39012
39013const (
39014	// ObjectLockModeGovernance is a ObjectLockMode enum value
39015	ObjectLockModeGovernance = "GOVERNANCE"
39016
39017	// ObjectLockModeCompliance is a ObjectLockMode enum value
39018	ObjectLockModeCompliance = "COMPLIANCE"
39019)
39020
39021// ObjectLockMode_Values returns all elements of the ObjectLockMode enum
39022func ObjectLockMode_Values() []string {
39023	return []string{
39024		ObjectLockModeGovernance,
39025		ObjectLockModeCompliance,
39026	}
39027}
39028
39029const (
39030	// ObjectLockRetentionModeGovernance is a ObjectLockRetentionMode enum value
39031	ObjectLockRetentionModeGovernance = "GOVERNANCE"
39032
39033	// ObjectLockRetentionModeCompliance is a ObjectLockRetentionMode enum value
39034	ObjectLockRetentionModeCompliance = "COMPLIANCE"
39035)
39036
39037// ObjectLockRetentionMode_Values returns all elements of the ObjectLockRetentionMode enum
39038func ObjectLockRetentionMode_Values() []string {
39039	return []string{
39040		ObjectLockRetentionModeGovernance,
39041		ObjectLockRetentionModeCompliance,
39042	}
39043}
39044
39045// The container element for object ownership for a bucket's ownership controls.
39046//
39047// BucketOwnerPreferred - Objects uploaded to the bucket change ownership to
39048// the bucket owner if the objects are uploaded with the bucket-owner-full-control
39049// canned ACL.
39050//
39051// ObjectWriter - The uploading account will own the object if the object is
39052// uploaded with the bucket-owner-full-control canned ACL.
39053const (
39054	// ObjectOwnershipBucketOwnerPreferred is a ObjectOwnership enum value
39055	ObjectOwnershipBucketOwnerPreferred = "BucketOwnerPreferred"
39056
39057	// ObjectOwnershipObjectWriter is a ObjectOwnership enum value
39058	ObjectOwnershipObjectWriter = "ObjectWriter"
39059)
39060
39061// ObjectOwnership_Values returns all elements of the ObjectOwnership enum
39062func ObjectOwnership_Values() []string {
39063	return []string{
39064		ObjectOwnershipBucketOwnerPreferred,
39065		ObjectOwnershipObjectWriter,
39066	}
39067}
39068
39069const (
39070	// ObjectStorageClassStandard is a ObjectStorageClass enum value
39071	ObjectStorageClassStandard = "STANDARD"
39072
39073	// ObjectStorageClassReducedRedundancy is a ObjectStorageClass enum value
39074	ObjectStorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
39075
39076	// ObjectStorageClassGlacier is a ObjectStorageClass enum value
39077	ObjectStorageClassGlacier = "GLACIER"
39078
39079	// ObjectStorageClassStandardIa is a ObjectStorageClass enum value
39080	ObjectStorageClassStandardIa = "STANDARD_IA"
39081
39082	// ObjectStorageClassOnezoneIa is a ObjectStorageClass enum value
39083	ObjectStorageClassOnezoneIa = "ONEZONE_IA"
39084
39085	// ObjectStorageClassIntelligentTiering is a ObjectStorageClass enum value
39086	ObjectStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
39087
39088	// ObjectStorageClassDeepArchive is a ObjectStorageClass enum value
39089	ObjectStorageClassDeepArchive = "DEEP_ARCHIVE"
39090
39091	// ObjectStorageClassOutposts is a ObjectStorageClass enum value
39092	ObjectStorageClassOutposts = "OUTPOSTS"
39093)
39094
39095// ObjectStorageClass_Values returns all elements of the ObjectStorageClass enum
39096func ObjectStorageClass_Values() []string {
39097	return []string{
39098		ObjectStorageClassStandard,
39099		ObjectStorageClassReducedRedundancy,
39100		ObjectStorageClassGlacier,
39101		ObjectStorageClassStandardIa,
39102		ObjectStorageClassOnezoneIa,
39103		ObjectStorageClassIntelligentTiering,
39104		ObjectStorageClassDeepArchive,
39105		ObjectStorageClassOutposts,
39106	}
39107}
39108
39109const (
39110	// ObjectVersionStorageClassStandard is a ObjectVersionStorageClass enum value
39111	ObjectVersionStorageClassStandard = "STANDARD"
39112)
39113
39114// ObjectVersionStorageClass_Values returns all elements of the ObjectVersionStorageClass enum
39115func ObjectVersionStorageClass_Values() []string {
39116	return []string{
39117		ObjectVersionStorageClassStandard,
39118	}
39119}
39120
39121const (
39122	// OwnerOverrideDestination is a OwnerOverride enum value
39123	OwnerOverrideDestination = "Destination"
39124)
39125
39126// OwnerOverride_Values returns all elements of the OwnerOverride enum
39127func OwnerOverride_Values() []string {
39128	return []string{
39129		OwnerOverrideDestination,
39130	}
39131}
39132
39133const (
39134	// PayerRequester is a Payer enum value
39135	PayerRequester = "Requester"
39136
39137	// PayerBucketOwner is a Payer enum value
39138	PayerBucketOwner = "BucketOwner"
39139)
39140
39141// Payer_Values returns all elements of the Payer enum
39142func Payer_Values() []string {
39143	return []string{
39144		PayerRequester,
39145		PayerBucketOwner,
39146	}
39147}
39148
39149const (
39150	// PermissionFullControl is a Permission enum value
39151	PermissionFullControl = "FULL_CONTROL"
39152
39153	// PermissionWrite is a Permission enum value
39154	PermissionWrite = "WRITE"
39155
39156	// PermissionWriteAcp is a Permission enum value
39157	PermissionWriteAcp = "WRITE_ACP"
39158
39159	// PermissionRead is a Permission enum value
39160	PermissionRead = "READ"
39161
39162	// PermissionReadAcp is a Permission enum value
39163	PermissionReadAcp = "READ_ACP"
39164)
39165
39166// Permission_Values returns all elements of the Permission enum
39167func Permission_Values() []string {
39168	return []string{
39169		PermissionFullControl,
39170		PermissionWrite,
39171		PermissionWriteAcp,
39172		PermissionRead,
39173		PermissionReadAcp,
39174	}
39175}
39176
39177const (
39178	// ProtocolHttp is a Protocol enum value
39179	ProtocolHttp = "http"
39180
39181	// ProtocolHttps is a Protocol enum value
39182	ProtocolHttps = "https"
39183)
39184
39185// Protocol_Values returns all elements of the Protocol enum
39186func Protocol_Values() []string {
39187	return []string{
39188		ProtocolHttp,
39189		ProtocolHttps,
39190	}
39191}
39192
39193const (
39194	// QuoteFieldsAlways is a QuoteFields enum value
39195	QuoteFieldsAlways = "ALWAYS"
39196
39197	// QuoteFieldsAsneeded is a QuoteFields enum value
39198	QuoteFieldsAsneeded = "ASNEEDED"
39199)
39200
39201// QuoteFields_Values returns all elements of the QuoteFields enum
39202func QuoteFields_Values() []string {
39203	return []string{
39204		QuoteFieldsAlways,
39205		QuoteFieldsAsneeded,
39206	}
39207}
39208
39209const (
39210	// ReplicaModificationsStatusEnabled is a ReplicaModificationsStatus enum value
39211	ReplicaModificationsStatusEnabled = "Enabled"
39212
39213	// ReplicaModificationsStatusDisabled is a ReplicaModificationsStatus enum value
39214	ReplicaModificationsStatusDisabled = "Disabled"
39215)
39216
39217// ReplicaModificationsStatus_Values returns all elements of the ReplicaModificationsStatus enum
39218func ReplicaModificationsStatus_Values() []string {
39219	return []string{
39220		ReplicaModificationsStatusEnabled,
39221		ReplicaModificationsStatusDisabled,
39222	}
39223}
39224
39225const (
39226	// ReplicationRuleStatusEnabled is a ReplicationRuleStatus enum value
39227	ReplicationRuleStatusEnabled = "Enabled"
39228
39229	// ReplicationRuleStatusDisabled is a ReplicationRuleStatus enum value
39230	ReplicationRuleStatusDisabled = "Disabled"
39231)
39232
39233// ReplicationRuleStatus_Values returns all elements of the ReplicationRuleStatus enum
39234func ReplicationRuleStatus_Values() []string {
39235	return []string{
39236		ReplicationRuleStatusEnabled,
39237		ReplicationRuleStatusDisabled,
39238	}
39239}
39240
39241const (
39242	// ReplicationStatusComplete is a ReplicationStatus enum value
39243	ReplicationStatusComplete = "COMPLETE"
39244
39245	// ReplicationStatusPending is a ReplicationStatus enum value
39246	ReplicationStatusPending = "PENDING"
39247
39248	// ReplicationStatusFailed is a ReplicationStatus enum value
39249	ReplicationStatusFailed = "FAILED"
39250
39251	// ReplicationStatusReplica is a ReplicationStatus enum value
39252	ReplicationStatusReplica = "REPLICA"
39253)
39254
39255// ReplicationStatus_Values returns all elements of the ReplicationStatus enum
39256func ReplicationStatus_Values() []string {
39257	return []string{
39258		ReplicationStatusComplete,
39259		ReplicationStatusPending,
39260		ReplicationStatusFailed,
39261		ReplicationStatusReplica,
39262	}
39263}
39264
39265const (
39266	// ReplicationTimeStatusEnabled is a ReplicationTimeStatus enum value
39267	ReplicationTimeStatusEnabled = "Enabled"
39268
39269	// ReplicationTimeStatusDisabled is a ReplicationTimeStatus enum value
39270	ReplicationTimeStatusDisabled = "Disabled"
39271)
39272
39273// ReplicationTimeStatus_Values returns all elements of the ReplicationTimeStatus enum
39274func ReplicationTimeStatus_Values() []string {
39275	return []string{
39276		ReplicationTimeStatusEnabled,
39277		ReplicationTimeStatusDisabled,
39278	}
39279}
39280
39281// If present, indicates that the requester was successfully charged for the
39282// request.
39283const (
39284	// RequestChargedRequester is a RequestCharged enum value
39285	RequestChargedRequester = "requester"
39286)
39287
39288// RequestCharged_Values returns all elements of the RequestCharged enum
39289func RequestCharged_Values() []string {
39290	return []string{
39291		RequestChargedRequester,
39292	}
39293}
39294
39295// Confirms that the requester knows that they will be charged for the request.
39296// Bucket owners need not specify this parameter in their requests. For information
39297// about downloading objects from requester pays buckets, see Downloading Objects
39298// in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html)
39299// in the Amazon S3 User Guide.
39300const (
39301	// RequestPayerRequester is a RequestPayer enum value
39302	RequestPayerRequester = "requester"
39303)
39304
39305// RequestPayer_Values returns all elements of the RequestPayer enum
39306func RequestPayer_Values() []string {
39307	return []string{
39308		RequestPayerRequester,
39309	}
39310}
39311
39312const (
39313	// RestoreRequestTypeSelect is a RestoreRequestType enum value
39314	RestoreRequestTypeSelect = "SELECT"
39315)
39316
39317// RestoreRequestType_Values returns all elements of the RestoreRequestType enum
39318func RestoreRequestType_Values() []string {
39319	return []string{
39320		RestoreRequestTypeSelect,
39321	}
39322}
39323
39324const (
39325	// ServerSideEncryptionAes256 is a ServerSideEncryption enum value
39326	ServerSideEncryptionAes256 = "AES256"
39327
39328	// ServerSideEncryptionAwsKms is a ServerSideEncryption enum value
39329	ServerSideEncryptionAwsKms = "aws:kms"
39330)
39331
39332// ServerSideEncryption_Values returns all elements of the ServerSideEncryption enum
39333func ServerSideEncryption_Values() []string {
39334	return []string{
39335		ServerSideEncryptionAes256,
39336		ServerSideEncryptionAwsKms,
39337	}
39338}
39339
39340const (
39341	// SseKmsEncryptedObjectsStatusEnabled is a SseKmsEncryptedObjectsStatus enum value
39342	SseKmsEncryptedObjectsStatusEnabled = "Enabled"
39343
39344	// SseKmsEncryptedObjectsStatusDisabled is a SseKmsEncryptedObjectsStatus enum value
39345	SseKmsEncryptedObjectsStatusDisabled = "Disabled"
39346)
39347
39348// SseKmsEncryptedObjectsStatus_Values returns all elements of the SseKmsEncryptedObjectsStatus enum
39349func SseKmsEncryptedObjectsStatus_Values() []string {
39350	return []string{
39351		SseKmsEncryptedObjectsStatusEnabled,
39352		SseKmsEncryptedObjectsStatusDisabled,
39353	}
39354}
39355
39356const (
39357	// StorageClassStandard is a StorageClass enum value
39358	StorageClassStandard = "STANDARD"
39359
39360	// StorageClassReducedRedundancy is a StorageClass enum value
39361	StorageClassReducedRedundancy = "REDUCED_REDUNDANCY"
39362
39363	// StorageClassStandardIa is a StorageClass enum value
39364	StorageClassStandardIa = "STANDARD_IA"
39365
39366	// StorageClassOnezoneIa is a StorageClass enum value
39367	StorageClassOnezoneIa = "ONEZONE_IA"
39368
39369	// StorageClassIntelligentTiering is a StorageClass enum value
39370	StorageClassIntelligentTiering = "INTELLIGENT_TIERING"
39371
39372	// StorageClassGlacier is a StorageClass enum value
39373	StorageClassGlacier = "GLACIER"
39374
39375	// StorageClassDeepArchive is a StorageClass enum value
39376	StorageClassDeepArchive = "DEEP_ARCHIVE"
39377
39378	// StorageClassOutposts is a StorageClass enum value
39379	StorageClassOutposts = "OUTPOSTS"
39380)
39381
39382// StorageClass_Values returns all elements of the StorageClass enum
39383func StorageClass_Values() []string {
39384	return []string{
39385		StorageClassStandard,
39386		StorageClassReducedRedundancy,
39387		StorageClassStandardIa,
39388		StorageClassOnezoneIa,
39389		StorageClassIntelligentTiering,
39390		StorageClassGlacier,
39391		StorageClassDeepArchive,
39392		StorageClassOutposts,
39393	}
39394}
39395
39396const (
39397	// StorageClassAnalysisSchemaVersionV1 is a StorageClassAnalysisSchemaVersion enum value
39398	StorageClassAnalysisSchemaVersionV1 = "V_1"
39399)
39400
39401// StorageClassAnalysisSchemaVersion_Values returns all elements of the StorageClassAnalysisSchemaVersion enum
39402func StorageClassAnalysisSchemaVersion_Values() []string {
39403	return []string{
39404		StorageClassAnalysisSchemaVersionV1,
39405	}
39406}
39407
39408const (
39409	// TaggingDirectiveCopy is a TaggingDirective enum value
39410	TaggingDirectiveCopy = "COPY"
39411
39412	// TaggingDirectiveReplace is a TaggingDirective enum value
39413	TaggingDirectiveReplace = "REPLACE"
39414)
39415
39416// TaggingDirective_Values returns all elements of the TaggingDirective enum
39417func TaggingDirective_Values() []string {
39418	return []string{
39419		TaggingDirectiveCopy,
39420		TaggingDirectiveReplace,
39421	}
39422}
39423
39424const (
39425	// TierStandard is a Tier enum value
39426	TierStandard = "Standard"
39427
39428	// TierBulk is a Tier enum value
39429	TierBulk = "Bulk"
39430
39431	// TierExpedited is a Tier enum value
39432	TierExpedited = "Expedited"
39433)
39434
39435// Tier_Values returns all elements of the Tier enum
39436func Tier_Values() []string {
39437	return []string{
39438		TierStandard,
39439		TierBulk,
39440		TierExpedited,
39441	}
39442}
39443
39444const (
39445	// TransitionStorageClassGlacier is a TransitionStorageClass enum value
39446	TransitionStorageClassGlacier = "GLACIER"
39447
39448	// TransitionStorageClassStandardIa is a TransitionStorageClass enum value
39449	TransitionStorageClassStandardIa = "STANDARD_IA"
39450
39451	// TransitionStorageClassOnezoneIa is a TransitionStorageClass enum value
39452	TransitionStorageClassOnezoneIa = "ONEZONE_IA"
39453
39454	// TransitionStorageClassIntelligentTiering is a TransitionStorageClass enum value
39455	TransitionStorageClassIntelligentTiering = "INTELLIGENT_TIERING"
39456
39457	// TransitionStorageClassDeepArchive is a TransitionStorageClass enum value
39458	TransitionStorageClassDeepArchive = "DEEP_ARCHIVE"
39459)
39460
39461// TransitionStorageClass_Values returns all elements of the TransitionStorageClass enum
39462func TransitionStorageClass_Values() []string {
39463	return []string{
39464		TransitionStorageClassGlacier,
39465		TransitionStorageClassStandardIa,
39466		TransitionStorageClassOnezoneIa,
39467		TransitionStorageClassIntelligentTiering,
39468		TransitionStorageClassDeepArchive,
39469	}
39470}
39471
39472const (
39473	// TypeCanonicalUser is a Type enum value
39474	TypeCanonicalUser = "CanonicalUser"
39475
39476	// TypeAmazonCustomerByEmail is a Type enum value
39477	TypeAmazonCustomerByEmail = "AmazonCustomerByEmail"
39478
39479	// TypeGroup is a Type enum value
39480	TypeGroup = "Group"
39481)
39482
39483// Type_Values returns all elements of the Type enum
39484func Type_Values() []string {
39485	return []string{
39486		TypeCanonicalUser,
39487		TypeAmazonCustomerByEmail,
39488		TypeGroup,
39489	}
39490}
39491